使用牛頓迭代法求方程的根

来源:https://www.cnblogs.com/woshilxcdexuesheng/archive/2019/11/30/11964097.html
-Advertisement-
Play Games

第二篇隨筆 9102年11月底,工科男曹**要算一個方程f(x)=0的根,其中f(x)表達式為: 因為實數範圍內f(x)=0的根太多,所以本文只研究-2<x<2的情況.這個式子長的太醜了,曹**看著覺得不爽,導之,得一f'(x) 這個式子更醜,但是,我們有牛頓迭代法,可以構造迭代序列{xn}滿足: ...


第二篇隨筆

9102年11月底,工科男曹**要算一個方程f(x)=0的根,其中f(x)表達式為:

因為實數範圍內f(x)=0的根太多,所以本文只研究-2<x<2的情況.這個式子長的太醜了,曹**看著覺得不爽,導之,得一f'(x)

這個式子更醜,但是,我們有牛頓迭代法,可以構造迭代序列{xn}滿足:

其中f'(xn)不等於0.可以證明,只要初值選的好,序列可以收斂到要求的根.然後就可以寫程式求根了.

先上函數圖像(由desmos繪製),看到指定區間上有5個零點.然後,零點附近取值吧.

再上效果

 

結果還是不錯的.

最後,上代碼.f(x)和f'(x)用委托的方式傳入calc函數.委托註意實例化

Public Delegate Function myfunc(x As Double) As Double
Public Function func0(x As Double) As Double
    Return Exp(x) + Pow(x, 4) * Sin(Pow(x, 3))
End Function
Public Function func0derive(x As Double) As Double
    Return Exp(x) + 4 * Pow(x, 3) * Sin(Pow(x, 3)) + 3 * Pow(x, 6) * Cos(Pow(x, 3))
End Function
Dim f0 As New myfunc(AddressOf func0)
Dim fd0 As New myfunc(AddressOf func0derive)

 

calc的參數中f和fd分別是指向f(x)和f'(x)的函數指針,x0為初值,eps為精度,cnt為迭代次數

用傳引用的方式,通過sol返回計算結果.

返回True為沒有出錯,False為出錯.

 1 Public Function Calc(f As myfunc, fd As myfunc, x0 As Double, eps As Double, cnt As Integer, ByRef sol As Double) As Boolean
 2         If cnt <= 0 Or f Is Nothing Or fd Is Nothing Then
 3             Return False
 4         End If
 5         Try
 6             sol = 0
 7             Dim x As Double = x0, c0 As Integer = 0
 8             While Math.Abs(x) > eps And cnt > c0
 9                 x = x - f(x) / fd(x)
10                 c0 += 1
11             End While
12             sol = x
13             Return True
14         Catch ex As Exception
15             Return False
16         End Try
17     End Function

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. reversed() 2. range(len(a) 1, 1, 1) 3. range(len(a)) + ~操作符 ~按位取反運算符:對數據的每個二進位位取反,即把1變為0,把0變為1 。~x 類似於 x 1 PS:遇到問題沒人解答?需要Python學習資料?可以加點擊下方鏈接自行獲取 n ...
  • 1.ConcurrentHashmap簡介 在使用HashMap時在多線程情況下擴容會出現CPU接近100%的情況,因為hashmap並不是線程安全的,通常我們可以使用在java體系中古老的hashtable類,該類基本上所有的方法都採用synchronized進行線程安全的控制,可想而知,在高併發 ...
  • 數據結構式通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合,這些數據元素可以是數字或者字元,甚至可以是其他數據結構。在Python中,最基本的數據結構是序列(sequence)。序列中的每個元素被分配一個序號 即元素的位置,也稱為索引。第一個元素索引是0,第二個則是1,一次類推。 Pyt ...
  • ArrayList實現原理(JDK1.8) ArrayList 繼承於AbstractList,實現了List介面,其實AbstractList 已經實現過List介面,這裡重覆實現使得介面功能更加清晰,JDK中很多類都是如此。 其中Cloneable介面是克隆標記介面,Serializable序列 ...
  • https://blog.csdn.net/wang839305939/article/details/78713124/ ...
  • 1.當前日期格式化: time.strftime('%Y-%m-%d',time.localtime(time.time())) 例子:輸出當前日期: import timeprint(time.strftime('%Y-%m-%d',time.localtime(time.time()))) 2. ...
  • WinForm界面使用IrisSkin,可以說做到了一鍵美化,當然美化的效果仁者見仁智者見智,可以挑選自己喜歡的。 1、IrisSkin下載地址:http://www.pc6.com/softview/SoftView_70918.html#download 2、將下載的文件放到Debug下麵。 3 ...
  • 在同一個地方摔倒兩次之後,決定記錄下來這個東西。 問題 在同一個地方摔倒兩次之後,決定記錄下來這個東西。 問題 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YA ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...