一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python實現(xiàn)所有算法:拉夫遜方法

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-07-10 09:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

emmmmm,好長時間沒有用matplotlib,都不會畫圖了。先繪制一個x**3-1的函數(shù),然后考慮在a,b之間找他的根。

b4bc35b0-fecf-11ec-ba43-dac502259ad0.png

-10,10

b4f53ec8-fecf-11ec-ba43-dac502259ad0.png

-5,5

b52eb87e-fecf-11ec-ba43-dac502259ad0.png

那么這個函數(shù)被起名為intersection

連續(xù)函數(shù)與x相交時就是根,是不是很形象。

def intersection(function: Callable[[float], float], x0: float, x1: float) -> float:

因為我們知道,這個函數(shù)應(yīng)該是我們給出要求解的區(qū)間和函數(shù)給出一個根。那么這里function的Callable就是可以當(dāng)匿名函數(shù)傳遞。

b5709dd4-fecf-11ec-ba43-dac502259ad0.png

為了函數(shù)的靈活性,這里使用float

b5966d84-fecf-11ec-ba43-dac502259ad0.png

主函數(shù),因為我們函數(shù)其實不知道具體的函數(shù)的循環(huán)次數(shù),那么就可以使用while的循環(huán)。

一開始要判斷參數(shù)的情況,如果都相等,你這算啥???以及都帶進(jìn)去,再算一下,雙保險,雙重?fù)浣帧?/p>

b5c434b2-fecf-11ec-ba43-dac502259ad0.png

接下來就是這個公式,我是個罪人,用了一張A4紙就寫一個這

b5ff2d9c-fecf-11ec-ba43-dac502259ad0.png

計算的X看看符合要求嗎?不符合就繼續(xù)將值域縮小。直到很小。

這個不是二分法,但是差不多的意思,不過這個是牛頓法,也叫牛頓-拉夫遜(拉弗森)方法,就我的題目。

這篇文章的下面就講講這個東西:

它是牛頓在17世紀(jì)提出的一種在實數(shù)域和復(fù)數(shù)域上近似求解方程的方法。

多數(shù)方程不存在求根公式,因此求精確根非常困難,甚至不可解,從而尋找方程的近似根就顯得特別重要。方法使用函數(shù) f(x) 的泰勒級數(shù)的前面幾項來尋找方程 f(x)=0 的根。牛頓迭代法是求方程根的重要方法之一,其最大優(yōu)點是在方程 f(x)=0 的單根附近具有平方收斂,而且該法還可以用來求方程的重根、復(fù)根,此時線性收斂,但是可通過一些方法變成超線性收斂。

b62c82a6-fecf-11ec-ba43-dac502259ad0.png

牛!

迭代法也稱輾轉(zhuǎn)法,是一種不斷用變量的舊值遞推新值的過程,跟迭代法相對應(yīng)的是直接法(或者稱為一次解法),即一次性解決問題。迭代算法是用計算機(jī)解決問題的一種基本方法。它利用計算機(jī)運算速度快、適合做重復(fù)性操作的特點,讓計算機(jī)對一組指令(或一定步驟)重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。

利用迭代算法解決問題,需要做好以下三個方面的工作:

一、確定迭代變量

在可以用迭代算法解決的問題中,至少存在一個可直接或間接地不斷由舊值遞推出新值的變量,這個變量就是迭代變量。

二、建立迭代關(guān)系式

所謂迭代關(guān)系式,指如何從變量的前一個值推出其下一個值的公式(或關(guān)系)。迭代關(guān)系式的建立是解決迭代問題的關(guān)鍵,通??梢允褂眠f推或倒推的方法來完成。

三、對迭代過程進(jìn)行控制

在什么時候結(jié)束迭代過程?這是編寫迭代程序必須考慮的問題。不能讓迭代過程無休止地執(zhí)行下去。迭代過程的控制通??煞譃閮煞N情況:一種是所需的迭代次數(shù)是個確定的值,可以計算出來;另一種是所需的迭代次數(shù)無法確定。對于前一種情況,可以構(gòu)建一個固定次數(shù)的循環(huán)來實現(xiàn)對迭代過程的控制;對于后一種情況,需要進(jìn)一步分析得出可用來結(jié)束迭代過程的條件。

b682300c-fecf-11ec-ba43-dac502259ad0.png

然后,自己的函數(shù)也可以這樣定義

intersection(f, 3, 3.5)

b6aa3642-fecf-11ec-ba43-dac502259ad0.png

精度ok

再說說數(shù)值求法:

大多數(shù)的數(shù)值求根算法都使用迭代法,生成一個以方程的根為極限的收斂數(shù)列。它們需要一個或多個根作為迭代的初期值,之后每次迭代都生成一個逐步逼近根的值。

由于迭代法必須在有限步內(nèi)終止于某個點,這些方法都只能提供一個根的近似值,而不能提供一個精確解。許多方法是通過代入上一個迭代值來計算一個輔助方程,從而得出下一個迭代值的。此處所指的輔助方程是指為了使原方程的根是一個定點并使迭代值能更快地收斂到這些定點而設(shè)計的一個方程,因此迭代值的極限是這個輔助方程的一個定點。

求根算法的性能是數(shù)值分析的研究范疇。一種算法的效率可能大幅度取決于已知點的性質(zhì)。

例如,一部分算法都使用輸入函數(shù)的導(dǎo)數(shù)(此要求函數(shù)不但連續(xù),而且可導(dǎo)),而其他算法則能用于任何一個連續(xù)函數(shù)。在一般情況下,數(shù)值算法不能保證找到一個函數(shù)的所有根,因此算法未能找到根并不能證明方程無根。然而,對于多項式,存在特定的使用代數(shù)學(xué)性質(zhì)以定位根的所在區(qū)間(或復(fù)根所在的圓盤)的算法,這個區(qū)間(或圓盤)足夠小以能保證數(shù)值算法(例如牛頓法)能收斂到唯一被定位的根。

審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64901
  • 方程
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    17074
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28964

原文標(biāo)題:Python實現(xiàn)所有算法-牛頓-拉夫遜(拉弗森)方法

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    實現(xiàn)狄克準(zhǔn)則

    求用LabView實現(xiàn)狄克準(zhǔn)則算法
    發(fā)表于 03-24 14:13

    Python實現(xiàn)k-近鄰算法

    算法。5、測試算法:計算錯誤率。6、使用算法:首先需要輸入樣本數(shù)據(jù)和結(jié)構(gòu)化的輸出結(jié)果,然后運行k-近鄰算法判定輸入數(shù)據(jù)分別屬于哪個分類,最后應(yīng)用對計算出的分類執(zhí)行后續(xù)的處理。關(guān)于k-近
    發(fā)表于 10-10 10:32

    利用python實現(xiàn)KNN算法

    K近鄰python實現(xiàn)
    發(fā)表于 10-25 17:24

    Python的Apriori算法和FP-Growth算法是什么

    [源碼和文檔分享]基于Python實現(xiàn)的Apriori算法和FP-Growth算法的頻繁項集挖掘的研究與實現(xiàn)
    發(fā)表于 06-04 12:49

    KNN分類算法python代碼實現(xiàn)

    kNN分類算法Python實現(xiàn)
    發(fā)表于 06-05 12:02

    基于Matpower的電力系統(tǒng)潮流計算設(shè)計原理是什么

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔基于Matlab的8機(jī)28節(jié)點電力系統(tǒng)潮流計算設(shè)計前言一、牛頓-拉夫算法潮流計算的基本原理1.牛頓-拉夫
    發(fā)表于 06-30 07:44

    基于Matpower的電力系統(tǒng)潮流計算原理及仿真設(shè)計

    基于Matpower的電力系統(tǒng)潮流計算設(shè)計原理第一部分 前言第二部分 牛頓-拉夫算法潮流計算的基本原理1.牛頓-拉夫
    發(fā)表于 06-30 06:36

    Python實現(xiàn)k-近鄰算法

    算法。5、測試算法:計算錯誤率。6、使用算法:首先需要輸入樣本數(shù)據(jù)和結(jié)構(gòu)化的輸出結(jié)果,然后運行k-近鄰算法判定輸入數(shù)據(jù)分別屬于哪個分類,最后應(yīng)用對計算出的分類執(zhí)行后續(xù)的處理。關(guān)于k-近
    發(fā)表于 01-04 14:03

    BP神經(jīng)網(wǎng)絡(luò)算法 python實現(xiàn)

    直接上代碼是最有效的學(xué)習(xí)方式。這篇教程通過由一段簡短的 python 代碼實現(xiàn)的非常簡單的實例來講解 BP 反向傳播算法
    發(fā)表于 12-29 14:06 ?2.2w次閱讀
    BP神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>算法</b> <b class='flag-5'>python</b><b class='flag-5'>實現(xiàn)</b>

    蟻群算法python編程實現(xiàn)

    本文主要介紹了Python編程實現(xiàn)蟻群算法詳解,涉及螞蟻算法的簡介,主要原理及公式,以及Python中的
    發(fā)表于 02-02 10:36 ?7627次閱讀
    蟻群<b class='flag-5'>算法</b><b class='flag-5'>python</b>編程<b class='flag-5'>實現(xiàn)</b>

    簡單潮流計算的牛頓拉夫程序

    本文檔內(nèi)容介紹了基于簡單潮流計算的牛頓拉夫程序,供參考
    發(fā)表于 03-05 15:12 ?9次下載

    使用Python實現(xiàn)所有算法

    typing 是Python3.5中開始新增的專用于類型注解(type hints)的模塊,為Python程序提供靜態(tài)類型檢查。
    的頭像 發(fā)表于 07-06 16:39 ?1184次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>所有</b><b class='flag-5'>算法</b>

    Python實現(xiàn)所有算法-基本牛頓法

    -牛頓-拉夫(拉弗森)方法 Python實現(xiàn)所有算法
    的頭像 發(fā)表于 07-13 10:40 ?1876次閱讀

    [源代碼]Python算法詳解

    [源代碼]Python算法詳解[源代碼]Python算法詳解
    發(fā)表于 06-06 17:50 ?8次下載

    基于Python實現(xiàn)隨機(jī)森林算法

    機(jī)器學(xué)習(xí)算法是數(shù)據(jù)挖掘、數(shù)據(jù)能力分析和數(shù)學(xué)建模必不可少的一部分,而隨機(jī)森林算法和決策樹算法是其中較為常用的兩種算法,本文將會對隨機(jī)森林算法
    的頭像 發(fā)表于 09-21 11:17 ?1692次閱讀
    基于<b class='flag-5'>Python</b><b class='flag-5'>實現(xiàn)</b>隨機(jī)森林<b class='flag-5'>算法</b>