保存递归函数的中间变量值

时间:2013-12-03 18:21:28

标签: matlab recursion save

我正在尝试编写计算差异商的函数。我需要这个用于多项式插值。给定节点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 ”状态。

1 个答案:

答案 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