algorithm - 我如何评估其他函数句柄中的函数句柄?(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,x,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,x,y) + p_x(f,x,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)$(f 的第 n 个导数,其中 y 取决于 x)
我为解决此问题所遵循的步骤是:
首先,我定义了函数 p_y 和 p_x,它是 f 的偏导数近似。
并且,我定义了函数 g,它是 (p_x + p_y*f(x,y))(这是导数 f 的形式)
最后,我想在同一个函数中对函数 g_k 进行 n 次评估,如下所示:
g_1=@(x,y) f(x,y)*p_y(f,x,y) + p_x(f,x,y);
g_2=@(x,y) g_1(x,y)*p_y(g_1,x,y) + p_x(g_1,x,y);
.
.
.
g_n=@(x,y) g_(n-1)(x,y)*p_y(g_(n-1),x,y) + p_x(g_(n-1),x,y);
g_n(x,y)
或者
但是,当我使用第一个代码时,n>=3 的结果不正确。
尝试代码的示例是使用 f_dora(@((x,y) y -x^2 +1,0,0.5,n),对于 n=1,正确的结果是 1.5。对于 n =2,正确的结果是-0.5,对于n=3,正确的结果是-0.5....
有人可以通过查看我的代码中的错误来帮助我吗?或者有人知道不使用符号来计算偏导数的更好方法吗?
解决方案
推荐阅读
- sql-server - 如何创建用户定义的函数,例如 ISNULL?参数为表达式,返回类型为替换类型
- php - 我选择的字段没有正确填充无脂肪框架
- r - ggmap中基于ID的连接点
- excel - 是否可以使用 Excel VBA 中的另一个宏修改宏代码
- android - 如何确定是否在 MotionEvent.ACTION_SCROLL 之外单击了屏幕?
- java - 我想将 iphone 名称及其价格存储在 excel 表中。对于相同的 iphone 名称在一张 excel 表中疼痛
- java - 数据库“默认”需要进化!尝试使用 play framework 2.7.0 和 Ebean 连接到 MySQL 时
- thingsboard - 我们可以从 Rule Chain 调用 External Rest API 从另一个 API 收集遥测数据吗?
- java - 如何将外部 JAR 插入 Eclipse Luna 中的“插件依赖项”
- azure - 将标签复制到资源组中的资源的策略和倡议