%%
% 此代码解决了,利用牛顿差值公式,已知 $sin(0.2) \sin(0.3) \sin(0.4) \sin(0.5) \sin(0.6) \sin(0.7)$的情况下,对
% $\sin(0.55)$ 的差值估计。
clc,clear,close all
%%
% 主程序 | 输入已知量,估计未知量
x_train = [0.2 0.3 0.4 0.5 0.6 0.7];%注意,这里 x_train 应该输入一个行向量
y_train = sin(x_train);
x_test = 0.55;
y_test = myfun(x_test,x_train,y_train)
y_real = sin(0.55)
%%
% 牛顿差值的函数
function y_test=myfun(x_test,x_train,y_train)
x_train=x_train';y_train=y_train';
n = length(x_train);
total_diff = zeros(n);
total_diff(:,1) = y_train;
for i = 2:n
total_diff(:,i) = (total_diff(:,i-1)-total_diff(i-1,i-1))./(x_train-x_train(i-1));
end
% total_diff 表示的是各阶均差,注意:主对角线以上的(不包括主对角线)上的数据请忽略。
a = diag(total_diff);
y_test = 0;
for i = 1:n
r = a(i);
for j = 1:i
if j~=1
r = r*(x_test-x_train(j-1));
end
end
% 利用刚刚计算得到的系数a,得到y_test的估计值
y_test = y_test + r;
end
end
2021年9月23日15:37:51
本文介绍了一种使用牛顿差值公式估计特定点函数值的方法。通过已知正弦函数在几个特定点的值,该代码实现了对任意中间点正弦值的近似计算。
1616

被折叠的 条评论
为什么被折叠?



