gpt4 book ai didi

maxima - 涉及最大值抽象导数的表达式的化简

转载 作者:行者123 更新时间:2023-12-02 02:53:32 24 4
gpt4 key购买 nike

我试图让 maxima 执行一些“抽象”泰勒级数展开,但我遇到了简化问题。问题的原型(prototype)可能是梯度的有限差分模拟,

g(x1,dx1) := (f(x1+dx1) - f(x1))/dx1;  /* dx1 is small */
taylor(g(x1,dx1), [dx1], [0], 0);

maxima 返回

enter image description here

到目前为止一切顺利。但是现在试试二阶导数(Hessian)的有限差分模拟,

h(x1,dx1) := (f(x1+dx1) - 2*f(x1) + f(x1-dx1))/dx1^2;
taylor(h(x1,dx1), dx1, 0, 0);

我得到了

enter image description here

这几乎没有帮助。

我想解决的“真实”问题的原型(prototype)是计算有限差分近似的低阶误差∂^2 f/(∂x1 ∂x2),

(f(x1+dx1, x2+dx2) - f(x1+dx1, x2) - f(x1, x2+dx2) + f(x1, x2))/(dx1*dx2)

并收集高达二阶的项(这涉及到 f 的四阶导数)。如果没有合理有效的简化,我怀疑用手做会比用计算机代数更容易,所以我想知道可以做些什么来哄 maxima 为我做简化。

最佳答案

考虑这个例子。它使用 Barton Willis 的 pdiff 包。我稍微简化符号:将中心移动到 [0, 0] 并引入偏导数的符号。

(%i1) load("pdiff") $
(%i2) matchdeclare([n, m], integerp) $
(%i3) tellsimpafter(f(0, 0), 'f00) $
(%i4) tellsimpafter(pderivop(f,n,m)(0,0), concat('f, n, m)) $
(%i5) e: (f(dx, dy) - f(dx, -dy) - f(-dx, dy) + f(-dx, -dy))/(4*dx*dy)$
(%i6) taylor(e, [dx, dy], [0, 0], 3);
2 2
f31 dx + f13 dy
(%o6)/T/ f11 + ----------------- + . . .
6

关于maxima - 涉及最大值抽象导数的表达式的化简,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50680906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com