От символического к собственному дифференцированию в Maxima

Я изо всех сил пытаюсь найти способ переключиться с символического объявления дифференциального оператора на его реализацию.

Я привожу вам пример.

F: (10-'diff(x(t),t)^2 -2*x(t)*'diff(x(t),t) -5*x(t)^2)*%e^(-t);

E: ratsimp(diff(F, x(t)) - diff(diff(F, 'diff(x(t),t)), t));

sol: ode2(E, x(t), t);
sol: ev(sol, [%k1 = C1, %k2=C2]);

trans_cond: diff(F, 'diff(x(t), t));
trans_cond: ev(trans_cond, sol);
trans_cond: at(trans_cond, [t=1]);

Соответствующий вывод поддерживает символическую запись, тогда как я хотел бы оценить diff(), полученный после последней замены.

Давая результат:

% 4*C1-C2^(-2)

person Marco Repetto    schedule 25.11.2018    source источник


Ответы (2)


Другое решение. Опция nouns для ev вызывает оценку символьных производных, а также любых других именных выражений, таких как символьные интегралы, символьные суммы и т. д.

(%i2) 'diff(4*x^2, x);
                            d      2
(%o2)                       -- (4 x )
                            dx
(%i3) ev (%o2, nouns);
(%o3)                          8 x

Более короткая форма ev(..., nouns) распознается интерактивной консолью. Вместо этого вы можете ввести ..., nouns.

(%i5) %o2, nouns;
(%o5)                          8 x

Вот ev(..., nouns), применяемый к символьному интегралу:

(%i6) 'integrate (x^2, x);
                             /
                             [  2
(%o6)                        I x  dx
                             ]
                             /
(%i7) %, nouns;
                                3
                               x
(%o7)                          --
                               3

и здесь, к символическому итогу:

(%i8) 'sum (f(k), k, 1, 3);
                            3
                           ====
                           \
(%o8)                       >    f(k)
                           /
                           ====
                           k = 1
(%i9) %, nouns;
(%o9)                  f(3) + f(2) + f(1)
person Robert Dodier    schedule 26.11.2018

Нашел ответ, ev() содержит опцию diff, которая решает все символьные различия в выражении.

person Marco Repetto    schedule 25.11.2018