首页 > 解决方案 > 千里马 - 无法用 plot2d 绘制我的方程,因为“表达式在绘图范围内的任何地方都计算为非数值”

问题描述

使用 Maxima,我想通过求解该特定参数的方程来绘制取决于时间的参数值。我是 Maxima 的新手,我已经在开始计算时遇到了困难。我使用下面的方程 m 来求解 L:

m= m_I - (m_I-m_R)/(1+%e^(-s_R*(t-L)))
solve(%,L);

这给了我

L=(t*s_R-log(m_I/(m-m_R)-m/(m-m_R)))/s_R

作为输出。如果我现在为除 L 和 t 之外的所有参数赋值

ev(%,m=0.5,m_I=1,m_R=0.1,s_R=0.01);
plot2d(%,[t,0,10]);

我收到错误消息

“plot2d:表达式在绘图范围内的任何地方都计算为非数值。plot2d:没有可绘制的。”

我知道这是非常基本的,但我仍然不知道我做错了什么。我还尝试使用函数 m(t):=... 而不是表达式 m=...,结果相同。

标签: plotmaxima

解决方案


请注意,solve它返回了一个包含一个元素的列表,这是一个方程式。为了绘制结果,您需要隔离等式的右侧,因为这是plot2d可以理解的(它不知道如何处理solve否则的输出)。

我的建议是先得到solve你想要的结果部分,然后再绘制它。就像是:

solve (...);
my_equation : %[1];
my_equation_rhs : rhs(%);
plot2d (my_equation_rhs, [t, 0, 10]);

它的不足之处plot2d在于它不知道如何处理 ; 的结果solve。对于那个很抱歉。


推荐阅读