下面的MATLAB牛顿差值法代码给出已知点得到插值函数后,我想画出它的图,应该怎么写这个代码呢??谢谢!!
function f=Newton(x,y,x0,x1)
syms t;
if(length(x)==length(y))
n=length(x);
c(1:n)=0.0;
else
disp('x和y的维数不相等!');
return;
end
f=y(1);
y1=0;
l =1;
for(i=1:n-1)
for(j=i+1:n)
y1(j)=(y(j)-y(i))/(x(j)-x(i));
end
c(i)=y1(i+1);
l=l*(t-x(i));
f=f+c(i)*l;
y=y1;
end
f=simplify(f);
g=subs(f,'t',x0)
g1=subs(f,'t',x1)
A=zeros(n,n-1);
A=[y',A];
for j=2:n
for i=j:n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i+1-j));
end
end
disp('差商表为');
disp(A);
>> x=[0 1 2 3];
>> y=[1 2 17 64];
>> x0=0.5;
>> x1=2.5;
>> f=Newton(x,y,x0,x1)
function f=Newton(x,y,x0,x1)
syms t;
if(length(x)==length(y))
n=length(x);
c(1:n)=0.0;
else
disp('x和y的维数不相等!');
return;
end
f=y(1);
y1=0;
l =1;
for(i=1:n-1)
for(j=i+1:n)
y1(j)=(y(j)-y(i))/(x(j)-x(i));
end
c(i)=y1(i+1);
l=l*(t-x(i));
f=f+c(i)*l;
y=y1;
end
f=simplify(f);
g=subs(f,'t',x0)
g1=subs(f,'t',x1)
A=zeros(n,n-1);
A=[y',A];
for j=2:n
for i=j:n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i+1-j));
end
end
disp('差商表为');
disp(A);
>> x=[0 1 2 3];
>> y=[1 2 17 64];
>> x0=0.5;
>> x1=2.5;
>> f=Newton(x,y,x0,x1)