Java|寫一個用迭代法解方程的Java程式
- 2019 年 11 月 24 日
- 筆記
本文首發於微信公眾號:"演算法與編程之美",歡迎關注,及時了解更多此系列文章。
問題描述
迭代法也稱輾轉法,是一種逐次逼近方法,在使用迭代法解方程組時,其係數矩陣在計算過程中始終不變。它利用電腦運算速度快、適合做重複性操作的特點,讓電腦對一組指令(或一定步驟)進行重複執行,在每次執行這組指令(或步驟)時,都從變數的原值推出它的一個新值。
迭代法具有循環的計算方法,方法簡單,適宜解大型稀疏矩陣方程組,在用電腦計算時只需存儲A的非零元素(或可按一定公式形成係數,這樣A就不需要存儲)。
(1)對於給定的方程組X =Bx+f,用式子逐步代入求近似解的方法稱為迭代法(或稱為一階定常迭代法,這裡與B和k無關)
(2) 如果limx(k), x→∞存在(記作x* ),稱此迭代法收斂,顯然x就是方程組的解,否則稱此迭代法發散。

解決方案
解法介紹
牛頓迭代法是一種線性化方法,其基本思想是將非線性方程f(x)= 0逐步歸結-為某種線性方程來求解.設已知方程f(x)=0有近似根X (假定f』(xk)≠ 0),將函數f(x)在點xk展開,有:
f(x)≈f(xk)+f』(xk)(x-xk)於是方程f(x)=0可近似地表示為f(x)+ f』(xk)(x-xk)=0(是個線性方程),記其根為xk+1,則xk+1的計算公式為xk+1=xk-f(xk)➗f』(xk)(k=0,1,2……)
例題講解
例:用牛頓迭代法三次求方程f(x)=x5-x2+x-30=0,在區間[1,3]中的近似值請詳細解答
解:
f(1)=-29
f(3)=207 所以[1,3]之間一定有零點。而且明顯更靠近x=3。
f (2) =-2
f(2. 5)=63.9
f(2.2)=19.2
f(2.1)=8.53
f(2. 01)=0.78
f(2 001)=0.08
所以f(2. 0001)=0.008應該滿足要求了。所以x=2.0001
例:使用牛頓迭代法求方程的解,X3-2x-5=0,在區間[2,3]上的根。
package Lab_02.Test_01; public class Test_01 { public static void main(String[] args) { double x=2; for(int i=0;i<20;i++) { x=-f(x)/f1(x)+x; } System.out.println(x+""); } static double f(double x) { double ans; ans=Math.pow(x, 3)-2*x-5; return ans; } static double f1(double x) { double ans; ans=3*Math.pow(x, 2)-2; return ans; }} |
---|

END
實習編輯 | 王楠嵐
責 編 | 劉 連
where2go 團隊
微訊號:演算法與編程之美