查看单个帖子
旧 2009-11-08, 08:20   #1
kevinton
初级会员
 
注册日期: 2009-11-08
住址: 上海
年龄: 37
帖子: 2
声望力: 0
kevinton 正向着好的方向发展
默认 编程请教!!!

我用matlab编程来计算函数
主要用牛顿插值多项式来模拟函数求得函数后再进行画图
程序如下:
function yh=shiyan3(X,n)
h=(X(2)-X(1))/n;
x=X(1):h:X(2);
y=(x.^2+1).^(-1)
x1=(x(1)+x(2))/2:hx(n)+x(n+1))/2;
p( : ,1)=x;
p( : ,2)=y;
for i=3:n+2
p(1:n+3-i,i)=diff(p(1:n+4-i,i-1))./(x(i-1:n+1)-x(1:n+3-i))';
end
for k=1:length(x1)
s=y(1);
for i=3:n+2
q=1;
for j=1:i-2
q=q*(x1(k)-x(j))
end
s=s+p(1,i)*q;
end
y1(k)=s;
end
% 不加余项
for i=1:n
xh(2*i-1)=x(i);xh(2*i)=x1(i);
yh(2*i-1)=y(i);yh(2*i)=y1(i);
end
xh(2*n+1)=x(n+1);
yh(2*n+1)=y(n+1);
plot(xh,yh,'r:',x,(x.^2+1).^(-1),'b-')
hold on
plot(x,y,'b+')

但计算结果完全跑偏
计算差商之前应该没问题
关键在于模拟区间的牛顿多项式
我不知道错在哪里
还望高手指正
感激不尽!!!
kevinton 当前离线   回复时引用此帖