1

在使用 SyMpy 库后,我收到一个表达式(在yprime变量中)。

from sympy import *
x = Symbol('x')
y = 1 - (0.1 * coeff1) / (x + 2) - sin(x) * (2 * x + coeff1)
yprime = y.diff(x)

然后我尝试在计算中使用yprime,但 Python 将其解释为文本:-( 2*x + 1.0)*cos(x) - 2*sin(x) + 0.1/(x + 2)**2

我如何计算-(2*x + 1.0)*cos(x) - 2*sin(x) + 0.1/(x + 2)**2

根据mtadd进行一些操作后:

from sympy import *
x, coeff1 = symbols('x coeff1')
y = 1 - (0.1 * coeff1) / (x + 2) - sin(x) * (2 * x + coeff1)
yprime = y.diff(x).evalf(subs={x:0,coeff1:1})

我收到了一个数字结果,但它仍然无法使用进一步的逻辑进行操作。它说:

TypeError:无法将表达式转换为浮点数

4

2 回答 2

2

调用subs符号表达式上的方法来计算解析表达式。您可以调用evalf解析表达式以获取 Python 浮点数中的数值解。下面是从上面输入输入后 isympy 的一些示例输出 (coeff1 = 1.0)。

In [18]: yprime
Out[18]:
                                   0.1
-(2⋅x + 1.0)⋅cos(x) - 2⋅sin(x) + ────────
                                        2
                                 (x + 2)

In [19]: yprime.subs(x,2*pi)
Out[19]:
                0.1
-4⋅π - 1.0 + ──────────
                      2
             (2 + 2⋅π)

In [20]: yprime.subs(x,2*pi).evalf()
Out[20]: -13.5649131254944

以下程序:

from sympy import *
x, C1 = symbols('x C1')
y = 1-(0.1*C1)/(x+2)-sin(x)*(2*x+C1)
print y.diff(x).evalf(subs={x:pi/2,C1:1})

使用 sympy 版本 0.7.2 和 python 2.7.3 打印 -1.99215722345589。

于 2013-04-08T00:49:38.943 回答
0

我认为这可能有助于评估字符串中的数学表达式我认为 yprime 被解释为字符串,该帖子的第一个答案描述了如何将字符串评估为算术表达式。

于 2013-04-08T00:36:20.537 回答