Я думаю, что нет ничего плохого; 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