Python`symphy`模块在表达式中求解乘法方程

Python`symphy`模块在表达式中求解乘法方程,python,sympy,equation,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 =

下面是一个简单的
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
时,结果很奇怪

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

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


  • 提前感谢。

    我还可以确认,方程式
    exp(1-10*x)-15==0的
    解算
    输出看起来非常复杂。我建议单变量方程首先考虑<代码> Surviv.SoviSeS< <代码>。对于本例,它给出了以下格式良好的解决方案

    import sympy as sp
    sp.init_printing(pretty_print=True)
    
    x = sp.symbols('x')
    
    sp.solveset(sp.exp(1 - 10*x) - 15,x)
    

    请注意,由于指数函数是多值函数(在复数域中),因此存在复数根。如果要将解决方案的域限制为reals,
    solveset
    具有方便的选项
    domain

    sp.solveset(sp.exp(1 - 10*x) - 15,x, domain = sp.S.Reals)