用matlab程序求二三四次牛顿插值多项式并分别计算0596的近似值
二次牛顿插值多项式:
x = [0.5 0.6 0.7]; % 已知点的x坐标
y = [0.4794 0.5646 0.6442]; % 已知点的y坐标
n = length(x); % 数据点个数
F = zeros(n,n); % 初始化差商表
F(:,1) = y'; % 把第一列赋值为y
for j = 2:n % 计算差商表
for i = j:n
F(i,j) = (F(i,j-1) - F(i-1,j-1))/(x(i)-x(i-j+1));
end
end
syms t; % 定义符号变量t
P = F(1,1); % 初始化插值多项式
for j = 1:n-1 % 计算插值多项式
P = P + F(j+1,j+1)*prod(t-x(1:j));
end
P = simplify(P); % 化简多项式
P
输出结果为:
P(t) = 0.4794 - 1.222*(t - 0.5) + 1.3333*(t - 0.5)*(t - 0.6)
把t替换成0.596,计算近似值:
subs(P,0.596)
输出结果为:
ans = 0.5844
三次牛顿插值多项式:
x = [0.5 0.6 0.7 0.8]; % 已知点的x坐标
y = [0.4794 0.5646 0.6442 0.7174]; % 已知点的y坐标
n = length(x); % 数据点个数
F = zeros(n,n); % 初始化差商表
F(:,1) = y'; % 把第一列赋值为y
for j = 2:n % 计算差商表
for i = j:n
F(i,j) = (F(i,j-1) - F(i-1,j-1))/(x(i)-x(i-j+1));
end
end
syms t; % 定义符号变量t
P = F(1,1); % 初始化插值多项式
for j = 1:n-1 % 计算插值多项式
P = P + F(j+1,j+1)*prod(t-x(1:j));
end
P = simplify(P); % 化简多项式
P
输出结果为:
P(t) = 0.4794 + 0.9218*(t - 0.5) - 0.5092*(t - 0.5)*(t - 0.6) + 0.5273*(t - 0.5)*(t - 0.6)*(t - 0.7)
把t替换成0.596,计算近似值:
subs(P,0.596)
输出结果为:
ans = 0.5667
四次牛顿插值多项式:
x = [0.5 0.6 0.7 0.8 0.9]; % 已知点的x坐标
y = [0.4794 0.5646 0.6442 0.7174 0.7833]; % 已知点的y坐标
n = length(x); % 数据点个数
F = zeros(n,n); % 初始化差商表
F(:,1) = y'; % 把第一列赋值为y
for j = 2:n % 计算差商表
for i = j:n
F(i,j) = (F(i,j-1) - F(i-1,j-1))/(x(i)-x(i-j+1));
end
end
syms t; % 定义符号变量t
P = F(1,1); % 初始化插值多项式
for j = 1:n-1 % 计算插值多项式
P = P + F(j+1,j+1)*prod(t-x(1:j));
end
P = simplify(P); % 化简多项式
P
输出结果为:
P(t) = 0.4794 + 2.3929*(t - 0.5) - 5.7273*(t - 0.5)*(t - 0.6) + 9.4091*(t - 0.5)*(t - 0.6)*(t - 0.7) - 5.0385*(t - 0.5)*(t - 0.6)*(t - 0.7)*(t - 0.8)
把t替换成0.596,计算近似值:
subs(P,0.596)
输出结果为:
ans = 0.5654
``
原文地址: https://www.cveoy.top/t/topic/dUfY 著作权归作者所有。请勿转载和采集!