牛顿插值法的matlab编程的m文件

牛顿插值法的matlab编程的m文件,第1张

牛顿插值法matlab的m文件,里面有调用示例,可以直激裤接调用;

%保存文件名为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

结果如示:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12466435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存