scipy.optimize.fsolve¶
- scipy.optimize.fsolve(func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)[源代码]¶
查找函数的根。
返回由定义的(非线性)方程的根
func(x) = 0
给出了一个起始估计值。- 参数
- func :可调用
f(x, *args)
可调用 接受至少一个(可能是向量)参数并返回相同长度的值的函数。
- x0ndarray
方程根的起始估计
func(x) = 0
。- args元组,可选
是否有任何额外的参数 func 。
- fPrime :可调用
f(x, *args)
,可选可调用 的雅可比矩阵的一个计算函数 func 各行都有导数。默认情况下,将估计雅可比。
- full_output布尔值,可选
如果为True,则返回可选输出。
- col_deriv布尔值,可选
指定Jacobian函数是否计算列中的导数(速度更快,因为没有转置操作)。
- xtol浮动,可选
如果两次连续迭代之间的相对误差最大,则计算将终止 xtol 。
- maxfev整型,可选
对函数的最大调用次数。如果为零,则
100*(N+1)
是最大值,其中N是中的元素数 x0 。- band元组,可选
如果设置为包含雅可比矩阵带内的子对角线和超对角线数量的双序列,则认为雅可比矩阵是带状的(仅适用于
fprime=None
)。- epsfcn浮动,可选
雅可比前向差分近似的合适步长(对于
fprime=None
)。如果 epsfcn 小于机器精度,则假定函数中的相对误差为机器精度的量级。- factor浮动,可选
确定初始步长界限的参数 (
factor * || diag * x||
)。应该在中场休息的时候(0.1, 100)
。- diag序列,可选
N个正条目,用作变量的比例因子。
- func :可调用
- 退货
- xndarray
解决方案(或上次迭代失败调用的结果)。
- infodictDICT
带有键的可选输出字典:
nfev
函数调用数
njev
雅可比呼叫数
fvec
在输出时计算的函数
fjac
通过按列存储的最终近似雅可比矩阵的QR分解产生的正交矩阵Q
r
由同一矩阵的QR分解产生的上三角矩阵
qtf
向量
(transpose(q) * fvec)
- ier集成
整数标志。如果找到解决方案,则设置为1,否则请参阅 mesg 了解更多信息。
- mesg应力
如果没有找到解决方案, mesg 详细说明了故障原因。
参见
root
多变量函数求根算法的接口。请参阅
method=='hybr'
尤其是。
注意事项
fsolve
是MINPACK的hybrd和hybrj算法的包装器。示例
找出方程组的解:
x0*cos(x1) = 4, x1*x0 - x1 = 5
。>>> from scipy.optimize import fsolve >>> def func(x): ... return [x[0] * np.cos(x[1]) - 4, ... x[1] * x[0] - x[1] - 5] >>> root = fsolve(func, [1, 1]) >>> root array([6.50409711, 0.90841421]) >>> np.isclose(func(root), [0.0, 0.0]) # func(root) should be almost 0.0. array([ True, True])