[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]