Сюжет Максима не работает

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

atvalue(y(x),[x=0],1)$
desolve(diff(y(x),x)=y(x),y(x));
plot2d(y(x),[x,-6,6]);

Выход:

plot2d: expression evaluates to non-numeric value everywhere in plotting range.
plot2d: nothing to plot
false

Я хочу построить y(x), полученный из дифференциального уравнения.


person BinaryBurst    schedule 30.09.2013    source источник


Ответы (2)


В Maxima y(x) = ... — это уравнение, а y(x) := ... — это функция, и эти две вещи разные. Попробуй это:

atvalue (y(x), [x=0], 1)$
desolve (diff(y(x),x)=y(x), y(x));
define (y(x), rhs(%));
plot2d (y(x), [x, -6, 6]);

Здесь define(y(x), ...) — это другой способ определения функции. define оценивает тело функции rhs(%) как результат exp(x), но := заключает его в кавычки (не то, что вы хотите).

person Robert Dodier    schedule 30.09.2013

Причина в том, что результат, который вы видите после удаления, не означает, что y определяется как функция x; на самом деле вы получите ту же ошибку, если измените y(x) на f(x) (или любую другую неизвестную функцию) в plot2d. Увидеть разницу:

(%i9) atvalue(y(x),[x=0],1)$

(%i10) desolve(diff(y(x),x)=y(x),y(x));
                                           x
(%o10)                            y(x) = %e
(%i11) y(x);
(%o11)                               y(x)
(%i12) y(x):=%e^x;
                                            x
(%o12)                            y(x) := %e
(%i13) y(x);
                                        x
(%o13)                                %e

Я не знаю, есть ли способ автоматически «преобразовать» уравнение (результат) в определение функции. Если я найду способ, я дополню ответ.

person ShinTakezou    schedule 30.09.2013