0

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

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

4

2 回答 2

1

在千里马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):=引用它(不是你想要的)。

于 2013-09-30T22:08:30.513 回答
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

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

于 2013-09-30T20:55:19.357 回答