максимальная степень дифференцировки

Я пытаюсь определить производную стандартного нормального 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).

Что я делаю неправильно?

Спасибо не

Карл

РЕДАКТИРОВАНИЕ :

К сожалению, оба предложения не работают.


person Karl    schedule 26.11.2018    source источник


Ответы (1)


Я думаю, что нет ничего плохого; Maxima просто оценивает фи в соответствии с определением, которое вы дали при вызове gradef.

Я могу придумать пару вещей, чтобы попробовать. (1) Вызовите gradef перед определением phi. Тогда, возможно, вы получите phi на выходе, когда вызовете diff. Не уверен, что это сработает.

(2) Определите gradef, используя выражение-существительное, т. е. gradef(φ(x),-x*'φ(x)). Обратите внимание на одинарную кавычку ' перед φ(x); это создает так называемое существительное выражение, в котором аргумент x может быть оценен, но функция φ не вызывается. Позже, чтобы оценить функцию, когда вы захотите, вы можете сказать ev(someexpression, nouns), чтобы оценить все существительные выражения в someexpression.

РЕДАКТИРОВАТЬ: Вот еще одна идея. Это работает для меня. Предыдущие идеи не работали, потому что φ оценивается слишком рано; эта новая идея идет на большее, чтобы предотвратить оценку. Обратите внимание, что градация определена для 'φ(x), поэтому вам нужно написать diff('φ(x), x), чтобы применить градеф.

(%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
person Robert Dodier    schedule 26.11.2018
comment
@ Роберт Додье, к сожалению, оба ваших предложения не работают. Любые другие идеи? - person Karl; 27.11.2018