在python中求解一个简单的符号方程

时间:2018-05-03 21:11:44

标签: python sympy

我正在使用 sympy 来象征性地解决一个非常简单的方程式,但我得到的变量解是一个空矩阵!这是代码:

from sympy import *

x = Symbol('x')
l_x = Symbol('l_x')

x_min = -6
x_max = 6

precision_x = 10**8 

solve(((x_max-x_min)/((2**l_x)-1))/precision_x, l_x)

print(l_x)

我尝试了一些其他简单的方程式,例如:

solve(x**2 = 4, x)

后者完美无缺;我只是不明白为什么前一个不起作用!

2 个答案:

答案 0 :(得分:5)

给予求解的表达式假设的rhs为0l_x的值不能满足。尝试这样的事情:

from sympy import *
q, r, s, t = symbols("q r s t")
eq = (q-r)/(2**s-1)/t
solve(eq-1,s)

输出结果为:

[log((q - r + t)/t)/log(2)]

要显式创建一个非零rhs的方程式对象,您可以执行以下操作:

solve(Eq(eq,1),s)

答案 1 :(得分:5)

很简单:你的等式没有结果。

等式为12/((2**l_x)-1))/1e8 = 0,没有解决方案。

查看y = 12/((2**x)-1))/1e8的外观(copied from wolframalpha):

y = 12/((2**x)-1))/1e8

要进行比较,请尝试解决,例如12/((2**l_x)-1))/1e8 = 1代替:

>>> solve(((x_max-x_min)/((2**l_x)-1))/precision_x - 1, l_x)
[(-log(25000000) + log(25000003))/log(2)]

像魅力一样!