Python解决非线性(跨边界)方程
我有一个方程“a*x+logx-b=0,(a和b是常数)”,我想解x。问题是我有很多常数a(相应地有很多b)。如何使用python求解这个方程?您可以查看以下内容Python解决非线性(跨边界)方程,python,solver,nonlinear-functions,equations,Python,Solver,Nonlinear Functions,Equations,我有一个方程“a*x+logx-b=0,(a和b是常数)”,我想解x。问题是我有很多常数a(相应地有很多b)。如何使用python求解这个方程?您可以查看以下内容 它有专门为这类方程设计的工具。酷-今天我学习了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): f
它有专门为这类方程设计的工具。酷-今天我学习了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
这是一个很难解决的问题-请参阅,了解求解跨国界方程的一般方法python中求解跨国界方程的最终数值方法在这里,我们不要太匆忙地结束此问题。。。这实际上是一个有趣的问题,一个一般性的评论,不是专门针对任何人的:根据对数x轴绘制
-log(x)
和a*x-b
,我们可以看到a只有一个真正的解!