在区分功能时,我常常不清楚,在哪种情况下,枫执行链式区分,而实际情况则不然。
让我们看一个例子:
f := (x, y) -> r(x)*M(y);
g := (x, y) -> h(x, f(x,y));
A := D[2](g);
然后A(a,b)
只提供
D[2](g)(a,b)
问题:为什么枫不通过应用链规则的定义来执行区分?我怎么能让枫树这样做呢?
更令人费解的是,在这个更简单的例子中,枫表现得如我所愿:
f := 'f';
g := (x, y) -> h(x, f(x,y));
A := D[2](g);
然后A(a,b)
返回
D[2](h)(a, f(a, b))*D[2](f)(a, b)
也许这有助于解决问题...
答案 0 :(得分:1)
这有用吗?
restart:
f := (x, y) -> r(x)*M(y):
g := (x, y) -> h(x, f(x,y)):
#diff(g(x,y),y);
#convert(diff(g(x,y),y),D);
unapply(convert(diff(g(x,y),y),D),[x,y]);
(x, y) -> D[2](h)(x, r(x) M(y)) r(x) D(M)(y)