我在这段代码中做错了什么?
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)。
答案 0 :(得分: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)
,但:=
引用它(不是您想要的)。
答案 1 :(得分:0)
原因是你在desolve之后看到的结果并不意味着y被定义为x的函数;实际上,如果在plot2d中使用y(x)
(或任何其他未知函数)更改f(x)
,则会获得相同的错误。看到差异:
(%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
我不知道是否有办法将方程式(结果)自动“转换”为函数定义。如果我找到方法,我会完成答案。