python中def root的用法_python scipy optimize.root_scalar用法及代码示例
查找標量函數的根。
參數:
f:callable尋找根源的函數。
args:tuple, 可選參數額外的參數傳遞給目標函數及其派生函數。
method:str, 可選參數bracket:A sequence of 2 floats, optional:用括號括起來的間隔。 f(x,* args)在兩個端點處必須具有不同的符號。
x0:float, 可選參數初步猜測。
x1:float, 可選參數第二個猜測。
fprime:bool 或 callable, 可選參數如果fprime是布爾值且為True,則假定f返回目標函數和導數的值。 fprime也可以是可調用的返回f的導數。在這種情況下,它必須接受與f相同的參數。
fprime2:bool 或 callable, 可選參數如果fprime2是布爾值且為True,則假定f返回目標函數以及一階和二階導數的值。 fprime2也可以是可調用的,返回f的二階導數。在這種情況下,它必須接受與f相同的參數。
xtol:float, 可選參數終止的公差(絕對值)。
rtol:float, 可選參數終止的公差(相對)。
maxiter:int, 可選參數最大迭代次數。
options:dict, 可選參數求解器選項字典。例如。k,請參閱show_options()有關詳細信息。
返回值:
sol:根結果解決方案表示為RootResults Object 。重要屬性是:root解決方案 ,converged一個布爾標志,指示算法是否成功退出,以及flag描述終止的原因。看到RootResults用于其他屬性的描述。
注意:
本節介紹可以通過‘method’參數選擇的可用求解器。
默認情況是針對出現的情況使用最佳方法。如果提供了括號,則可以使用其中一種包圍方法。如果指定了導數和初始值,則可以選擇基于導數的方法之一。如果判定沒有方法適用,則將引發Exception。
例子:
找到簡單三次方的根
>>> 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中def root的用法_python scipy optimize.root_scalar用法及代码示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NOI数学之提高级:线性方程组的高斯消元
- 下一篇: python常用函数import_pyt