我如何在其他函数句柄中评估函数句柄?(matlab)

function [v] = f_dora(f,x0,y0,n)

p_y=@(f,x,y) (f(x,y+0.0001) - f(x,y-0.0001))/(2*0.0001);
p_x=@(f,y) (f(x+0.0001,y) - f(x-0.0001,y))/(2*0.0001);



for i=1:n   
    g=@(x,y) f(x,y)*p_y(f,y) + p_x(f,y)
    f=@(x,y) g(x,y)
end
v=f(x0,y0);
end

此函数有一个输入f,例如(f = @((x,y)y -x ^ 2 +1),并且想要具有输出$ f ^ n(x,y)$(第n个导数f,其中y取决于x)

我要解决的步骤如下:

首先,我定义函数p_y和p_x,它们是f的偏导数。

然后,我定义函数g,它是(p_x + p_y * f(x,y))(这是导数f的形式)

最后,我想在同一函数中对函数g_k进行n倍的评估,如下所示:

g_1=@(x,y);    
g_2=@(x,y) g_1(x,y)*p_y(g_1,y) + p_x(g_1,y); 
.
.
.
g_n=@(x,y) g_(n-1)(x,y)*p_y(g_(n-1),y) + p_x(g_(n-1),y); 
g_n(x,y)

Algorithm

但是,当我使用第一个代码时,n> = 3的结果不正确。

尝试代码的示例使用f_dora(@(((x,y)y -x ^ 2 + 1,0.5,n)),对于n = 1,正确的结果为1.5 。对于n = 2,正确的结果是-0.5,对于n = 3。正确的结果是-0.5 ....

有人可以通过查看代码中的错误来帮助我吗?或者有人知道在不使用符号的情况下计算偏导数的更好方法吗?

TYCandy 回答:我如何在其他函数句柄中评估函数句柄?(matlab)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3094356.html

大家都在问