用Matlab编写求牛顿插值多项式函数求解下列问题对区间[-5,5]作n等分,并给出以下三个函数:分别对上述函数计算点上的值,作出插值函数的图形并与的图形比较实验要求:(1)编写求Newton插值
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/18 09:23:37
用Matlab编写求牛顿插值多项式函数求解下列问题对区间[-5,5]作n等分,并给出以下三个函数:分别对上述函数计算点上的值,作出插值函数的图形并与的图形比较实验要求:(1)编写求Newton插值
用Matlab编写求牛顿插值多项式函数求解下列问题
对区间[-5,5]作n等分,并给出以下三个函数:
分别对上述函数计算点上的值,作出插值函数的图形并与的图形比较
实验要求:
(1)编写求Newton插值多项式函数文件函数:
function [c,v]=newtdd(x,y)
% x,y是插值节点,
% c是newton插值多项式的差商系数,
% v是插值节点x,y的差商表
(2)利用上面函数分别求上面三个函数的插值多项式
(3)画出插值多项式的函数图形,同时也作出的图形,对插值曲线和原函数曲线进行比较,观察结果.
用Matlab编写求牛顿插值多项式函数求解下列问题对区间[-5,5]作n等分,并给出以下三个函数:分别对上述函数计算点上的值,作出插值函数的图形并与的图形比较实验要求:(1)编写求Newton插值
% 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
\x09y = func{fi}(x);
\x09[c v] = f(x, y)
\x09
\x09yy = c(n);
\x09for i = n-1:-1:1
\x09\x09yy = yy.*(xx-x(i)) + c(i);
\x09end
\x09subplot(1, 3, fi);
\x09plot(x, y, 'o', xx, [func{fi}(xx) yy]);
end
结果如示: