国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python調用二分法和牛頓法求方程的根

這篇具有很好參考價值的文章主要介紹了Python調用二分法和牛頓法求方程的根。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

二分法

二分法是最簡單的求根算法。

對于方程 f ( x ) = 0 f(x)=0 f(x)=0,如果 f ( a ) ? f ( b ) < 0 f(a)\cdot f(b)<0 f(a)?f(b)<0,則說明 a , b a,b a,b之間必有根,如果按照某個步長對其進行搜索,那么最終一定能夠不斷縮小根的取值范圍,不斷精確化。

二分法就是基于這種思想的一種算法,其實質是對區(qū)間進行快速選取。如果已知 f ( a ) ? f ( b ) < 0 f(a)\cdot f(b)<0 f(a)?f(b)<0,則快速選取 c = a + b 2 c=\frac{a+b}{2} c=2a+b?,如果 f ( a ) ? f ( c ) < 0 f(a)\cdot f(c)<0 f(a)?f(c)<0,則說明根在 ( a , c ) (a,c) (a,c)之間,否則即說明根在 ( a , b ) (a,b) (a,b)之間,然后不斷迭代下去。

scipy提供了二分求根算法bisect,測試如下

from scipy.optimize import bisect

def func(x):
    return x*x - 2

bisect(func, 0, 2)
# 1.4142135623715149

其中,func為待求函數(shù),0,2為下限和上限。

牛頓法

如果 f ( x ) f(x) f(x)=0可以寫成 x = φ ( x ) x=\varphi(x) x=φ(x)的形式,則可以將這個方程的根理解為 y = φ ( x ) y=\varphi(x) y=φ(x) y = x y=x y=x的交點。現(xiàn)給定一個初值 x 0 x_0 x0?,將其代入 φ ( x ) \varphi(x) φ(x)中,則 φ ( x 0 ) \varphi(x_0) φ(x0?)對應一個新的 x x x,記為 x 1 x_1 x1?

如果數(shù)列 { x n } \{x_n\} {xn?}收斂,那么必有 x = lim ? k → ∞ x k x=\lim_{k\to\infty}x_k x=limk?xk?即為方程的根。所以,問題的關鍵在構造合適的 φ ( x ) \varphi(x) φ(x)使得數(shù)列能夠快速收斂。

其最簡單的形式莫過于 x k + 1 = x k + f ( x k ) x_{k+1}=x_k+f(x_k) xk+1?=xk?+f(xk?),不過這種迭代公式看起來十分危險,如果$f(x_k)是一個大于0的單調遞增函數(shù),那么結果就爆炸了。

所以,最好為 f ( x k ) f(x_k) f(xk?)乘以一個系數(shù),當 f ( x k ) f(x_k) f(xk?)增加時使之變小,當其遞減時使之變大。所以一個比較好的形式為

x k + 1 = x k ? f ( x k ) f ′ ( x k ) x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xk+1?=xk??f(xk?)f(xk?)?

此即Newton公式。

除了迭代形式,Newton公式也可以作為二分法的一個升級版本, x k ? f ( x k ) f ′ ( x k ) x_k-\frac{f(x_k)}{f'(x_k)} xk??f(xk?)f(xk?)?可以表示過 ( x k , f ( x k ) ) (x_k,f(x_k)) (xk?,f(xk?))做切線與 x x x軸的交點,通過切線選取新的 x x x值取代了二分法的盲動性,示例如下

from scipy.optimize import newton

newton(func, 0)
# 1.4142135623715149

函數(shù)定義

二分法和牛頓法的參數(shù)定義如下

bisect(f, a, b, args=(), xtol=2e-12, rtol=8.881784197001252e-16, maxiter=100, full_output=False, disp=True)
newton(func, x0, fprime=None, args=(), tol=1.48e-08, maxiter=50, fprime2=None, x1=None, rtol=0.0, full_output=False, disp=True)

其中,f, a, b以及func, x0已經(jīng)在演示的時候調用了,分別是求根函數(shù)和初值;args為待求根函數(shù)中可能包含的其他參數(shù);maxiter為最大迭代步長。文章來源地址http://www.zghlxwxcb.cn/news/detail-433407.html

到了這里,關于Python調用二分法和牛頓法求方程的根的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 二分法MATLAB代碼

    二分法MATLAB代碼

    本質是通過不斷進行區(qū)間壓縮來獲取函數(shù)零點。 二分法的終止條件:區(qū)間長度小于等于精度要求 。 流程: 如下圖所示:

    2024年02月05日
    瀏覽(23)
  • 初探二分法

    初探二分法

    智能化校園:深入探討云端管理系統(tǒng)設計與實現(xiàn)(一) 智能化校園:深入探討云端管理系統(tǒng)設計與實現(xiàn)(二) 題目:給定一個 n 個元素有序的(升序)整型數(shù)組 nums 和一個目標值 target ,寫一個函數(shù)搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。 提示: 你可以

    2024年01月25日
    瀏覽(23)
  • 【算法】—二分法詳解

    【算法】—二分法詳解

    ①定義: 二分查找算法也稱折半搜索算法,對數(shù)搜索算法,是一種在 有序數(shù)組 中查找某一特定元素的搜索算法。搜索過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素

    2024年02月09日
    瀏覽(25)
  • 【二分查找】一文帶你掌握二分法 (附萬能模板)

    【二分查找】一文帶你掌握二分法 (附萬能模板)

    一、簡介 哪怕沒有學過編程的同學,也許不知道二分法這個名字,但也一定接觸過它的核心思想。不了解的同學也沒關系,我用一句話就能概括出它的精髓: 將一個區(qū)間一分為二,每次都舍棄其中的一部分。 二分法能夠極大地降低我們在解決問題時的時間復雜度。假如你要

    2024年01月19日
    瀏覽(23)
  • 【劍指Offer】二分法例題

    【劍指Offer】二分法例題

    鏈表是數(shù)據(jù)結構中重要的一個章節(jié),他的重要性也不言而喻,在未來不管是筆試還是面試都會遇到這類的題目,所以接下來我就會把一些鏈表的??嫉念}目全部整理出來供大家學習指正。 題目鏈接 描述: 給定一個長度為n的數(shù)組nums,請你找到峰值并返回其索引。數(shù)組可能包

    2023年04月13日
    瀏覽(20)
  • 非線性方程二分法

    優(yōu)點:算法直觀、簡單、總能保證收斂;局限:收斂速度慢、一般不單獨用它求根,僅為了獲取根的粗略近似 設 f ( x ) f(x) f ( x ) 在 [ a , b ] [a,b] [ a , b ] 上連續(xù)、嚴格單調、滿足條件 f ( a ) f ( b ) 0 f(a)f(b)0 f ( a ) f ( b ) 0 則在區(qū)間 [ a , b ] [a,b] [ a , b ] 內必有一根 x ? x^* x ? 。通

    2024年02月04日
    瀏覽(28)
  • 1241:二分法求函數(shù)的零點

    【題目描述】 有函數(shù):f(x)=x5?15x4+85x3?225x2+274x?121 已知f(1.5)0,f(2.4)0 且方程f(x)=0在區(qū)間[1.5,2.41.5,2.4] 有且只有一個根,請用二分法求出該根。 【輸入】 (無) 【輸出】 該方程在區(qū)間[1.5,2.41.5,2.4]中的根。要求四舍五入到小數(shù)點后66位。 【輸入樣例】 【輸出樣例】 【AC代碼】

    2024年01月25日
    瀏覽(21)
  • Leetcode刷題筆記——二分法

    Leetcode刷題筆記——二分法

    二分法是搜索算法中極其典型的方法,其要求輸入序列有序并可隨機訪問。算法思想為 輸入:有序數(shù)組nums,目的數(shù)值target 要求輸出:如果target存在在數(shù)組中,則輸出其index,否則輸出-1 將原數(shù)組通過[left,right]兩個索引劃分范圍,初值left=0,right=數(shù)組的最后一個元素 當left = r

    2024年02月10日
    瀏覽(21)
  • 06-C++ 基本算法 - 二分法

    06-C++ 基本算法 - 二分法

    在這個筆記中,我們將介紹二分法這種基本的算法思想,以及它在 C++ 中的應用。我們將從一個小游戲猜數(shù)字開始,通過這個案例來引出二分法的概念。然后我們將詳細講解什么是二分法以及它的套路和應用。最后,我們還會介紹 C++ STL 中的二分查找函數(shù)。讓我們一起來探索

    2024年02月16日
    瀏覽(16)
  • 算法:二分法---尋找H指數(shù)

    算法:二分法---尋找H指數(shù)

    1、題目: 給你一個整數(shù)數(shù)組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數(shù)。計算并返回該研究者的 h 指數(shù) 。 根據(jù)維基百科上 h 指數(shù)的定義: h 代表“高引用次數(shù)” ,一名科研人員的 h 指數(shù) 是指他(她)至少發(fā)表了 h 篇論文,并且每篇論文 至少 被引用

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包