Python“sympy”模块方程求解表达式中的乘法

时间:2016-11-10 08:48:38

标签: python sympy equation

我在下面的代码中进行了sympy.solve的简单测试:

#!/usr/bin/python

from sympy import *

x = Symbol('x', real=True)
#expr = sympify('exp(1 - 10*x) - 15')

expr = exp(1 - x) - 15
print "Expressiong:", expr
out = solve(expr)
for item in out:
    print "Answer:", item

expr = exp(1 - 10*x) - 15
print expr
out = solve(expr)
for item in out:
    print "Answer:", item

输出如下:

Expressiong: exp(-x + 1) - 15
Answer: -log(15) + 1
exp(-10*x + 1) - 15
Answer: log(15**(9/10)*exp(1/10)/15)

等式exp(1 - x) = 15已正确解决(x = -15log(15) + 1)。

但是当我将x更改为10*x时,结果很奇怪。

  1. 如果我在没有x的情况下初始化符号real=True,为什么会有很多复杂的答案?

  2. 即使在初始化符号real=True时使用x,答案仍然不正确。与第一个等式相比,结果应为-3/2*log(15) + 1/10。我把这个等式写错了吗?

  3. 提前致谢。

1 个答案:

答案 0 :(得分:1)

我还可以确认等式solve的{​​{1}}输出显得非常复杂。我建议首先考虑exp(1 - 10*x) - 15 == 0单变量方程。对于此示例,它提供了以下格式良好的解决方案。

sympy.solveset

enter image description here

请注意,由于指数函数是多值的(在复杂域中),因此存在复杂的根。如果您想将解决方案的域限制为实时,import sympy as sp sp.init_printing(pretty_print=True) x = sp.symbols('x') sp.solveset(sp.exp(1 - 10*x) - 15,x) 为此目的提供了方便的选项solveset

domain

enter image description here