2013-09-30 2 views
0

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

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 

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

ответ

1

В 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), но := цитирует его (не то, что вы хотите).

0

Причина в том, что результат, который вы видите после desolve, не означает, что 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 

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