[python]用辛求解代数方程
· 收录于 2023-09-24 05:23:11 · source URL
问题详情
我有这个可以在 WolframAlpha 中求解的代数方程:
但它无法在 Python 中解决。
有这个错误:
NotImplementedError: multiple generators [10**x, 2**x]
No algorithms are implemented to solve equation
(1/2)**(1 - x) - 10**(x - 1)/4 - 3/4
我想知道我的代码有什么问题?
x = symbols('x')
eq1 = Eq(0.5**(1-x)-1-((1/4)*(0.1**(1-x)-1)),0)
sol = solve((eq1),(x))
sol
最佳回答
当求解
失败时,您可以尝试使用 nsolve
找到数值解。首先,您需要找到合理的初始猜测。在这种情况下,一个简单的情节
就足够了:
from sympy import *
x = symbols("x")
eq = 0.5**(1-x)-1-((1/4)*(0.1**(1-x)-1))
plot(eq, ylim=(-5, 5))
似乎在 x=1
处至少有一个根。让我们放大:
plot(eq, (x, 0, 2))
有两个根源。让我们找到它们:
initial_guesses = [1, 1.5]
r = [nsolve(eq, x, i) for i in initial_guesses]
print(r)
# out: [1.00000000000000, 1.21889091552120]