千里马情节不起作用

时间:2013-09-30 20:25:58

标签: maxima

我在这段代码中做错了什么?

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)。

2 个答案:

答案 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

我不知道是否有办法将方程式(结果)自动“转换”为函数定义。如果我找到方法,我会完成答案。