Python,求解变量的 non-linear 方程
Python, solve non-linear equation for a variable
使用 Python 和 SymPy 我正在尝试为 b:
求解这个方程
我的代码:
From sympy import *
b = Symbol('b')
x = ((b/(2*math.pi*math.e))*((math.pi*b)**(1/b)))**(1/(2*(b-1)))
solve(x-1.0034,b)
我得到这个错误:NotImplementedError:多个生成器...没有实现求解方程的算法...
你知道错在哪里吗?还是说等式太难了,Python都解不出来?谢谢
最好使用来自 sympy 的 pi
和 E
:
In [21]: b = Symbol('b')
In [22]: eq = ((b/(2*math.pi*math.e))*((math.pi*b)**(1/b)))**(1/(2*(b-1))) - 1.0034
In [23]: eq
Out[23]:
1
───────
2⋅b - 2
⎛ b ____________________⎞
⎝0.0585498315243192⋅b⋅╲╱ 3.14159265358979⋅b ⎠ - 1.0034
In [24]: eq = ((b/(2*pi*E))*((pi*b)**(1/b)))**(1/(2*(b-1))) - 1.0034
In [25]: eq
Out[25]:
1
───────
2⋅b - 2
⎛ b _____ -1⎞
⎜b⋅╲╱ π⋅b ⋅ℯ ⎟
⎜─────────────⎟ - 1.0034
⎝ 2⋅π ⎠
方程是超越方程,不太可能存在解析解。可能有一个 Lambert 形式,但 solve
没有找到任何东西。
你可以通过使用 nsolve
:
来计算它
In [29]: sol = nsolve(eq, b, 2)
In [30]: sol
Out[30]: 14.3368885826882
In [31]: eq.n(subs={b:sol})
Out[31]: 7.22915270916583e-19
使用 Python 和 SymPy 我正在尝试为 b:
求解这个方程我的代码:
From sympy import *
b = Symbol('b')
x = ((b/(2*math.pi*math.e))*((math.pi*b)**(1/b)))**(1/(2*(b-1)))
solve(x-1.0034,b)
我得到这个错误:NotImplementedError:多个生成器...没有实现求解方程的算法...
你知道错在哪里吗?还是说等式太难了,Python都解不出来?谢谢
最好使用来自 sympy 的 pi
和 E
:
In [21]: b = Symbol('b')
In [22]: eq = ((b/(2*math.pi*math.e))*((math.pi*b)**(1/b)))**(1/(2*(b-1))) - 1.0034
In [23]: eq
Out[23]:
1
───────
2⋅b - 2
⎛ b ____________________⎞
⎝0.0585498315243192⋅b⋅╲╱ 3.14159265358979⋅b ⎠ - 1.0034
In [24]: eq = ((b/(2*pi*E))*((pi*b)**(1/b)))**(1/(2*(b-1))) - 1.0034
In [25]: eq
Out[25]:
1
───────
2⋅b - 2
⎛ b _____ -1⎞
⎜b⋅╲╱ π⋅b ⋅ℯ ⎟
⎜─────────────⎟ - 1.0034
⎝ 2⋅π ⎠
方程是超越方程,不太可能存在解析解。可能有一个 Lambert 形式,但 solve
没有找到任何东西。
你可以通过使用 nsolve
:
In [29]: sol = nsolve(eq, b, 2)
In [30]: sol
Out[30]: 14.3368885826882
In [31]: eq.n(subs={b:sol})
Out[31]: 7.22915270916583e-19