equation - 解方程 - 溢出错误

标签 equation sympy

基本上我只想解决k。请注意,等式等于 1.12

import math
from sympy import *

a = 1.45
b = 4.1
c = 14.0

al = math.log(a, 2)
bl = math.log(b, 2)
cl = math.log(c, 2)

k = symbols('k')

print solve(Eq(1/k**al + 1/k**bl + 1/k**cl, 1.12), k)

这会引发 OverflowError: Python int too large to convert to C long

也欢迎使用其他库的解决方案。

最佳答案

由于您使用的是数值,我假设您正在寻找数值解。在这种情况下,您不应使用 solve,因为它会尝试找到符号解。这里的问题是它将这些浮点指数转换为有理指数,它们具有非常大的分子和分母,然后在某个时候尝试生成与这些大数对应的阶多项式,这就是它失败的地方。

要进行数值求解,您可以使用 nsolve

>>> print nsolve(Eq(1/k**al + 1/k**bl + 1/k**cl, 1.12), 2)
1.82427203413783

不过,如果您对数值解感兴趣,最好使用 SciPy 等数值库。您可以使用 lambdify 将 SymPy 表达式转换为更适合使用 NumPy 数组的库(如 SciPy)的函数。

关于equation - 解方程 - 溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754966/

相关文章:

algorithm - 你能检查一下这个替换到目前为止是否正确吗?

仅当我使用减法时,jQuery 才返回数字

python - SymPy - 在 dsolve 中使用多个参数时出现问题

python (sympy) 隐式函数 : get values instead of plot?

sum - 带索引变量的符号求和

math - 使用 sagemath 或 sympy 将 n 阶微分方程简化为一阶方程组

javascript - 如何计算给定发射 Angular 物体行进多远

matlab - 在Matlab中根据从1到n的和创建一个函数

algorithm - Bresenham Integer Equation(不仅仅是算法)

python - 在 Python 中解决符号 boolean 变量