matlab高手近来看下画图问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:04:03
用Neville’s迭代插值算法,对于函数
f( x)=1/(1+25*x^2) ,-1≤x≤1
进行lagrange插值。取不同的等分数n=5,10,将区间
[-1,1]n等分,取等距节点。把f(x)和插值多项式的
曲线画在同一张图上进行比较。

一个关于neville插值的m文件代码如下:
function f= Neville(x,y,x0)
syms t;
if(length(x)==length(y))
n=length(x);
else
disp('x和y维数不相等!');
return;
end
y1(1:n)=t;
for(i=1:n-1)
for(j=i+1:n)
if(j==2)
y1(j)=y(j)+(y(j)-y(j-1))/((t-x(j-1))/(t-x(j)))*(1-(y(j)-y(j-1))/y(j));
else
y1(j)=y(j)+(y(j)-y(j-1))/((t-x(j-1))/(t-x(j)))*(1-(y(j)-y(j-1))/(y(j)-y(j-2)));
end
end
y=y1;
if(i==n-1)
if(nargin==3)
f=subs(y(n-1),'t',x0);
else
f=vpa(y(n-1),6);
end
end
end

然后我在命令窗口输入f=Neville(x,y)
给出的结果是
f = 一个很长很长的表达式 字数太多百度不给发 有matlab的用户自己试一下就知道了,是一个以t为自变量函数

请问如何将这个多项式画出图来

clc
%求lagrange插值多项式
x=[0.4 0.55 0.65 0.80 0.95 1.05];
y=[0.41075 0.57815 0.69675 0.90 1.0 1.25382];
plot(x,y,'o');hold on;
disp([x;y])
n=length(x);%x的长度
v=1;%u的长度,且v的向量
xs=zeros(6);
for k=1:n%一共要的循环
w=1;%w为空的,长度为u
e1=1;
for j=[1:k-1 k+1:n]%少了k的
e=[1 -x(j)];
e1=conv(e1,e);%多项式乘法
w=(x(k)-x(j)).*w; %lagrange系数
end
v=y(k)*e1./w;%总系数
for i=1:n
xs(k,i)=v(i);%系数矩阵
end
end
xs
t=sum(xs)%最后系数矩阵
x=[0.596 0.99];
y2 =t(1)*x.^5+t(2)*x.^4+t(3)*x.^3+t(4)*x.^2+t(5)*x+t(6)
x=0.35:0.01:1.1;
y1 =t(1)*x.^5+t(2)*x.^4+t(3)*x.^3+t(4)*x.^2+t(5)*x+t(6);
%y2=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.08452;
plot(x,y1,'b');%画lagrange图