مكعب خطأ ملين MATLAB نتيجة خاطئة

1

لقد صنعت رمز المفتاح المنحني المكعب. ولكن عندما أضع

f_ = CubicSpline([0,1,2,3],[exp(0),exp(1),exp(2),exp(3)],exp(0),exp(3));

والحصول على إجابة sym2poly(f_(1)) النتيجة مختلفة تمامًا عن محاضرتي. وفي الواقع ، لا تتطابق نتيجة Cubic Spline الخاصة بي حتى مع بداية الحزم ... من فضلك لا أستطيع أن أفهم ما هي المشكلة في التعليمات البرمجية الخاصة بي. هذا ما استخدمته لخوارزمي. Imagen 8364

function [f_] = CubicSpline(x0,f0,FPO,FPN)

syms x;

n = length(x0);
h = zeros(n,1);
alpha = zeros(n,1);
l = zeros(n,1);
u = zeros(n,1);
z = zeros(n,1);

a = zeros(n,1);
b = zeros(n,1);
c = zeros(n,1);
d = zeros(n,1);

for iter = 1:n-1
    h(iter) = x0(iter+1)-x0(iter);
end

alpha(1) = 3*(f0(2)-f0(1))/h(1)-3*FPO;
alpha(n) = 3*FPN-3*(f0(n)-f0(n-1))/h(n-1);

for iter = 1:n
    a(iter) = f0(iter);
end

for iter = 2:n-1
    alpha(iter) = 3/h(iter)*(f0(iter+1)-f0(iter))-3/h(iter-1)*(f0(iter)-f0(iter-1));
end

l(1) = 2*h(1);
u(1) = 0.5;
z(1) = f0(1)/l(1);

for iter = 2:n-1
    l(iter) = 2*(x0(iter+1)-x0(iter-1)) - h(iter-1)*u(iter-1);
    u(iter) = h(iter)/l(iter);
    z(iter) = (alpha(iter)-h(iter-1)*z(iter-1))/l(iter);
end

l(n) = h(n-1)*(2-u(n-1));
z(n) = (alpha(n)-h(n-1)*z(n-1))/l(n);
c(n) = z(n);

for iter = (n-1):-1:1
    c(iter) = z(iter)-u(iter)*c(iter+1);
    b(iter) = (f0(iter+1)-f0(iter))/h(iter)-h(iter)*(c(iter+1)+2*c(iter))/3;
    d(iter) = (c(iter+1)-c(iter))/(3*h(iter));
end

for iter = 1:n-1
    f_(iter) = a(iter) + b(iter)*(x-x0(iter)) + c(iter)*(x-x0(iter))^2 + d(iter)*(x-x0(iter))^3;
end
end

1 إجابة

2
افضل جواب

يوجد خطأ مطبعي في التعليمات البرمجية للخطوة 4

z(1) = f0(1)/l(1);

يجب ان يكون

z(1) = alpha(1)/l(1);
:مؤلف
فوق
قائمة طعام