我正在尝试编写计算差异商的函数。我需要这个用于多项式插值。给定节点x = linspace(a,b,n+1)
,节点y = func(x)
处的函数值我想找到差值商f[x0], f[x_0,x_1], ..., f[x_0,x_1,...,x_n]
的值。要计算f[x_0,x_1,...,x_n]
,我需要f[x_0,x_1,...,x_(n-1)]
等,因此最好在我前往f[x_0,x_1,...,x_n]
的路上保存中间步骤,以便在前往{{1}的路上我将前面的差异商保存为向量的元素。
有人可以告诉我如何更正我的代码以保存适当的差异商数值吗?这是代码:
f[x_0,x_1,...,x_n]
我需要的差异商数属于“function [fx, all_fx] = ilo2(a,b,x,y,fx,all_fx)
if a == b
fx(end+1) = y(a);
if a == 1
all_fx(end+1) = fx(end);
end
return
end
a;
b;
[c, all_fx] = ilo2(a+1,b,x,y,fx,all_fx);
[d, all_fx] = ilo2(a,b-1,x,y,fx,all_fx);
fx(end+1) = (c-d)/(b-a);
if a == 1
all_fx(end+1) = fx(end);
end
end
”状态。
答案 0 :(得分:0)
好的,我想我修好了:
function [all_fx,fx] = ilo(a,b,x,y,all_fx,fx)
if a == b
fx(end+1) = y(a);
if a == 1
all_fx(end+1) = fx(end);
end
return
end
[all_fx,c] = ilo(a+1,b,x,y,all_fx,fx);
[all_fx,d] = ilo(a,b-1,x,y,all_fx,fx);
fx(end+1) = (c-d)/(b-a);
if a == 1
all_fx(end+1) = fx(end);
end
end