максимальная дифференциация - PullRequest
0 голосов
/ 26 ноября 2018

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

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

1 Ответ

0 голосов
/ 26 ноября 2018

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

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

(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)

Graff выдает существительное выражение -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
...