最大分级分化

maxima gradef differentiation

我尝试根据函数定义标准正态pdf的导数:

φ(x) := exp (-x^2/2)/sqrt(2 * %pi); gradef(φ(x),-x*φ(x));

但是如果我输入那么:

diff(φ(x),x);

我得到:

-(x*%e^(-x^2/2))/(sqrt(2)*sqrt(%pi))`

不是我想要的那样-x*φ(x)

我做错了什么?

谢不

卡尔

EDiT :

不幸的是,这两个建议都没有工作。

我觉得没什么问题; Maxima 只是根据您在调用 gradef.

时给出的定义来评估 phi

我能想到一些可以尝试的事情。 (1) 在定义phi之前调用gradef。然后,当您调用 diff 时,您可能会在输出中得到 phi。不确定这是否有效。

(2) 用名词表达式定义gradef,即gradef(φ(x),-x*'φ(x))。注意 φ(x) 之前的单引号 ';这构成了一个所谓的名词表达式,其中可以计算参数 x 但不会调用函数 φ。稍后为了计算函数,当你想要的时候,你可以说 ev(someexpression, nouns) 来计算 someexpression.

中的所有名词表达式

编辑:这是另一个想法。这对我有用。之前的想法没有奏效,因为 φ 被评估得太早了;这个新想法用了更大的篇幅来阻止评估。请注意,gradef 是为 'φ(x) 定义的,因此您必须编写 diff('φ(x), x) 才能应用 gradef。

(%i12) gradef('φ(x), -x*'φ(x));
(%o12)                        φ(x)
(%i13) diff('φ(x), x);
(%o13)                      - x φ(x)

gradef 产生一个名词表达式-x*'φ(x),所以要动词它你可以说:

(%i14) ev(%, nouns);
                                    2
                                   x
                                 - --
                                   2
                             x %e
(%o14)                 - -----------------
                         sqrt(2) sqrt(%pi)

看起来链式规则已按预期应用:

(%i15) diff('φ(x/a), x);
                                  x
                              x φ(-)
                                  a
(%o15)                      - ------
                                 2
                                a
(%i16) ev(%, nouns);
                                    2
                                   x
                                - ----
                                     2
                                  2 a
                            x %e
(%o16)               - --------------------
                                          2
                       sqrt(2) sqrt(%pi) a