MATLAB三次样条系数HW

时间:2019-10-21 10:50:20

标签: matlab matrix coefficients cubic-spline

我是一名远程学习者,目前正在与我的助教来回交流,但对这个问题无济于事。我是一个数学本科生,所以我了解三次样条背后的数学,但是我对编码非常陌生,在将数学转换为MATLAB中的代码时遇到了麻烦。我拥有的代码是我从教科书中提供给我的算法以及我与TA来回往返翻译的总和。

问题:实现三次样条插值。修改算法,使您的程序输出三次样条多项式的系数表。

代码正在返回

A = 2.3000

    2.3000

没有多少应该返回的系数。

到目前为止的代码:

%INPUT The total number of inputs, x, and f(x).

n=13;

x = [0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0];

a = [1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25];

b=zeros(n,1)

c=zeros(n,1)

d=zeros(n,1)

%Step 1

for i = 1:n-1
        h(i) = x(i+1) - x(i);
end

%Step 2

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

%Step 3

l(1) = 1; 
mu(1) = 0;
z(1) = 0;

%Step 4

for i = 2:n-1
    l(i) = 2*(x(i+1) - x(i-1)) - h(i-1)*mu(i-1);
    mu(i) = h(i)/l(i);
    z(i) = (alpha(i) - h(i-1)*z(i-1))/l(i);
end

%Step 5

l(n) = 1;
z(n) = 0;
c(n) = 0;

%Step 6

for j = n:n-1:1
    c(j) = z(j) - mu(j)*c(j+1);
    b(j) = (a(j+1) - a(j))/h(j) - h(j)*(c(j+1) + 2*c(j))/3;
    d(j) = (c(j+1) - c(j))/(3*h(j));
end

%OUTPUT (aj , bj , cj , dj for j = 0, 1, . . . , n - 1)

A(j) = [a(j),b(j),c(j),d(j)]
disp(A)

0 个答案:

没有答案