我有一组函数f_t
有几个根(实际上是两个)。我想找到“第一个”根并用fsolve
大部分时间都工作正常。问题是,当 t 趋向无穷大时,两个根会收敛。 (我的功能的一个简单例子是f_t(x) = x^2 - 1/t
)。所以越大t
得到的,错误越多fsolve
使。有没有预定义的函数,类似于fsolve
我可以告诉它应该只在给定的范围内查找(例如,始终找到根[0, inf
)).
这个问题本质上是一样的,但是 Mathematica 有答案,我希望它们是 Python 的。
PS:我现在如何编写自己的算法,但由于这些算法作为内置函数往往会更慢,所以我希望找到一个具有相同功能的内置函数。特别是我读过这篇文章求函数在给定区间内的根
人们普遍认为,对于平稳、性能良好的函数,布伦特法是保证给出根的最快方法。与列出的其他两种方法一样,您必须提供一个区间 [a,b],函数在该区间内连续并改变符号。
Scipy 实现已记录here。您提到的函数的示例用例可能如下所示:
from __future__ import division
import scipy
def func(x,t):
return(x**2 - 1/t)
t0 = 1
min = 0
max = 100000 # set max to some sufficiently large value
root = scipy.optimize.brentq(func, min, max, args = (t0)) # args just supplies any extra
# argument for the function that isn't the varied parameter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)