%保存文件名为New_Int.m
%Newton基本插值公式
%x为向量,全部的插值节点
%y为向量,差值节点处的函数值
%xi为标银铅肆量,是自变量
%yi为xi出的函数估计值
function yi=New_Int(x,y,xi)
n=length(x)
m=length(y)
if n~=m
error('The lengths of X ang Y must be equal!')
return
end
%计算均差表Y
Y=zeros(n)
Y(:,1)=y'
for k=1:n-1
for i=1:n-k
if abs(x(i+k)-x(i))<eps
error('the DATA is error!')
return
end
Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i))
end
end
%计算牛顿插值公式
yi=0
for i=1:n
z=1
锋轿 for k=1:i-1
z=z*(xi-x(k))
end
yi=yi+Y(1,i)*z
end
% newtdd.mm文旁明坦件function [c, v] = f(x, y)
n = length(x)
x = x(:)
v = [y(:) zeros(n, n-1)]
for i = 2:n
v(i:end, i) = (v(i:end, i-1)-v(i-1:end-1, i-1))./(x(i:end)-x(1:end-i+1))
end
c = diag(v)
end % M文件
n = 4 % 这里只取4个点运桐,则插值成三次函数
x = linspace(-5, 5, n)
xx = linspace(-5, 5, 100)'
func = {@(x)5./(1+x.^2), @(x)atan(x), @(x)x./(1+x.^4)}
for fi = 1:3
y = func{fi}(x)
[c v] = f(x, y)
yy = c(n)
for i = n-1:-1:1
yy = yy.*(xx-x(i)) + c(i)
end
subplot(1, 3, fi)
plot(x, y, 'o', 槐陆xx, [func{fi}(xx) yy])
end
结果如示:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)