高分!!急!用Matlab编写求牛顿插值多项式函数求解下列问题

对区间[-5,5]作n等分,并给出以下三个函数:

分别对上述函数计算点上的值,作出插值函数的图形并与的图形比较
实验要求:
(1)编写求Newton插值多项式函数文件函数:
function [c,v]=newtdd(x,y)
% x,y是插值节点,
% c是newton插值多项式的差商系数,
% v是插值节点x,y的差商表
(2)利用上面函数分别求上面三个函数的插值多项式
(3)画出插值多项式的函数图形,同时也作出的图形,对插值曲线和原函数曲线进行比较,观察结果。

% 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

结果如示:

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答