我在这段代码中做错了什么?
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)。
我在这段代码中做错了什么?
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)。
在千里马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)
但:=
引用它(不是你想要的)。
原因是你在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
我不知道是否有办法自动将方程(结果)“转换”为函数定义。如果我找到方法,我会完成答案。