本文簡要介紹 python 語言中 scipy.optimize.root_scalar
的用法。
用法:
scipy.optimize.root_scalar(f, args=(), method=None, bracket=None, fprime=None, fprime2=None, x0=None, x1=None, xtol=None, rtol=None, maxiter=None, options=None)#
求一個標量函數的根。
- f: 可調用的
查找根的函數。
- args: 元組,可選
傳遞給目標函數及其導數的額外參數。
- method: str,可選
求解器的類型。應該是其中之一
‘bisect’ (see here)
‘brentq’ (see here)
‘brenth’ (see here)
‘ridder’ (see here)
‘toms748’ (see here)
‘newton’ (see here)
‘secant’ (see here)
‘halley’ (see here)
- bracket: A sequence of 2 floats, optional:
包圍根的區間。 f(x, *args) 在兩個端點必須有不同的符號。
- x0: 浮點數,可選
初步猜測。
- x1: 浮點數,可選
第二個猜測。
- fprime: 布爾或可調用,可選
如果 fprime 是布爾值並且為 True,則假定 f 返回目標函數和導數的值。 fprime 也可以是一個可調用的返回 f 的導數。在這種情況下,它必須接受與 f 相同的參數。
- fprime2: 布爾或可調用,可選
如果 fprime2 是布爾值並且為 True,則假定 f 返回目標函數的值以及一階和二階導數的值。 fprime2 也可以是返回 f 的二階導數的可調用函數。在這種情況下,它必須接受與 f 相同的參數。
- xtol: 浮點數,可選
終止公差(絕對)。
- rtol: 浮點數,可選
終止公差(相對)。
- maxiter: 整數,可選
最大迭代次數。
- options: 字典,可選
求解器選項字典。例如,
k
,有關詳細信息,請參閱show_options()
。
- sol: RootResults
該解決方案表示為
RootResults
對象。重要屬性包括:root
解決方案、converged
指示算法是否成功退出的布爾標誌以及說明終止原因的flag
。有關其他屬性的說明,請參閱RootResults
。
參數 ::
返回 ::
注意:
本節介紹可通過 ‘method’ 參數選擇的可用求解器。
默認情況下使用適用於所呈現情況的最佳方法。如果提供了括號,則可以使用其中一種括號方法。如果指定了導數和初始值,它可以選擇基於導數的方法之一。如果沒有方法被判斷為適用,它將引發異常。
每個方法的參數如下(x=必需,o=可選)。
方法
f
參數
括號
x0
x1
fprime
fprime2
xtol
rol
馬克西特
選項
x
o
x
o
o
o
o
x
o
x
o
o
o
o
x
o
x
o
o
o
o
x
o
x
o
o
o
o
x
o
x
o
o
o
o
x
o
x
o
o
o
o
o
x
o
x
o
o
o
o
o
x
o
x
x
x
o
o
o
o
例子:
求一個簡單立方的根
>>> from scipy import optimize >>> def f(x): ... return (x**3 - 1) # only one real root at x = 1
>>> def fprime(x): ... return 3*x**2
brentq
方法將括號作為輸入>>> sol = optimize.root_scalar(f, bracket=[0, 3], method='brentq') >>> sol.root, sol.iterations, sol.function_calls (1.0, 10, 11)
newton
方法將單個點作為輸入並使用導數。>>> sol = optimize.root_scalar(f, x0=0.2, fprime=fprime, method='newton') >>> sol.root, sol.iterations, sol.function_calls (1.0, 11, 22)
該函數可以在一次調用中提供值和導數。
>>> def f_p_pp(x): ... return (x**3 - 1), 3*x**2, 6*x
>>> sol = optimize.root_scalar( ... f_p_pp, x0=0.2, fprime=True, method='newton' ... ) >>> sol.root, sol.iterations, sol.function_calls (1.0, 11, 11)
>>> sol = optimize.root_scalar( ... f_p_pp, x0=0.2, fprime=True, fprime2=True, method='halley' ... ) >>> sol.root, sol.iterations, sol.function_calls (1.0, 7, 8)
相關用法
- Python SciPy optimize.root用法及代碼示例
- Python SciPy optimize.rosen_der用法及代碼示例
- Python SciPy optimize.rosen用法及代碼示例
- Python SciPy optimize.rosen_hess用法及代碼示例
- Python SciPy optimize.rosen_hess_prod用法及代碼示例
- Python SciPy optimize.ridder用法及代碼示例
- Python SciPy optimize.line_search用法及代碼示例
- Python SciPy optimize.shgo用法及代碼示例
- Python SciPy optimize.minimize_scalar用法及代碼示例
- Python SciPy optimize.fmin用法及代碼示例
- Python SciPy optimize.NonlinearConstraint用法及代碼示例
- Python SciPy optimize.KrylovJacobian用法及代碼示例
- Python SciPy optimize.toms748用法及代碼示例
- Python SciPy optimize.linprog_verbose_callback用法及代碼示例
- Python SciPy optimize.bracket用法及代碼示例
- Python SciPy optimize.milp用法及代碼示例
- Python SciPy optimize.diagbroyden用法及代碼示例
- Python SciPy optimize.bisect用法及代碼示例
- Python SciPy optimize.isotonic_regression用法及代碼示例
- Python SciPy optimize.golden用法及代碼示例
- Python SciPy optimize.brute用法及代碼示例
- Python SciPy optimize.newton用法及代碼示例
- Python SciPy optimize.fsolve用法及代碼示例
- Python SciPy optimize.Bounds用法及代碼示例
- Python SciPy optimize.fixed_point用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.root_scalar。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。