📄 newton.m
字号:
function f = Newton(x,y,x0)
%求已知数据点的均差形式的牛顿插值多项式
%已知数据点的x坐标向量:x
%已知数据点的y坐标向量:y
%插值点的x坐标:x0
%求得的均差形式的牛顿插值多项式或在x0点的插值:f
syms t;
if (length(x) == length(y)) %判断x,y的维数是否相等
n = length(x);
c(1:n) = 0.0; %多项式系数,先赋值为0.0(浮点数)
else
disp('x和y的维数不相等!');
return;
end %检错
f = y(1);
y1 = 0;
l = 1;
for(i=1:n-1)
for(j=i+1:n)
y1(j) = (y(j)-y(i))/(x(j)-x(i)); %均差计算
end
c(i) = y1(i+1); %系数
l = l*(t-x(i)); %多项式的子项
f = f+c(i)*l; %多项式
simplify(f); %化简
y = y1;
if(i == n-1)
if(nargin == 3) %判断输入参数数是否为3
f = subs(f,'t',x0); %计算插值点的函数值
else
f = collect(f); %将插值多项式展开
f = vpa(f, 6); %将多项式的系数化成6位精度的小数
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -