我有一个等式' a * x + logx-b = 0,(a和b是常数)',我想解决x。问题是我有很多常数a(因此很多b)。如何使用python解决这个等式?
答案 0 :(得分:1)
答案 1 :(得分:0)
很酷 - 今天我学习了Python的数值求解器。
from math import log
from scipy.optimize import brentq
def f(x, a, b):
return a * x + log(x) - b
for a in range(1,5):
for b in range(1,5):
result = brentq(lambda x:f(x, a, b), 1e-10, 20)
print a, b, result
brentq
提供函数穿过x轴的估计值。你需要给它两点,一点肯定是负面的,一点肯定是正面的。对于负点,选择小于exp(-B)的数字,其中B是b
的最大值。对于正点,请选择大于B的数字。
如果无法预测b
值的范围,则可以使用求解器。这可能会产生一个解决方案 - 但这不能保证。
from scipy.optimize import fsolve
for a in range(1,5):
for b in range(1,5):
result = fsolve(f, 1, (a,b))
print a, b, result