重根迭代法解方程(两种方法)(Python实现)
生活随笔
收集整理的這篇文章主要介紹了
重根迭代法解方程(两种方法)(Python实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡述
通過兩種不同的重根迭代的來解方程。
處理的方程是 (sin(x) - x/2) ^2 = 0
代碼
采用的第一種迭代重根迭代方法:
xk+1=xk?mf(xk)f′(xk)xk+1=xk?mf(xk)f′(xk)
這里取m為2。
from sympy import *x = symbols("x")func = (sin(x) - x / 2) ** 2CHF = x - (sin(x) - x / 2) / (cos(x) - 1/2)MAXSTEP = 100 step_count = 0 x0 = pi / 2 temp = CHF.subs(x, x0) while step_count < MAXSTEP and abs(temp - x0) > 1e-5:print(x0)x0 = temptemp = CHF.subs(x, x0)step_count += 1 print(x0) print(step_count)采用第二種重根迭代方法:
xk+1=xk?f(xk)f′(xk)[f′(xk)]2?f(xk)f′′(xk)xk+1=xk?f(xk)f′(xk)[f′(xk)]2?f(xk)f″(xk) from sympy import *x = symbols("x")func = (sin(x) - x / 2) ** 2CHF = x - ((sin(x) - x / 2) * (cos(x) - 1/2)) / ((cos(x) - 1/2) ** 2 + sin(x) * (sin(x) - x / 2))MAXSTEP = 100 step_count = 0 x0 = float(pi / 2) temp = CHF.subs(x, x0) while step_count < MAXSTEP and abs(temp - x0) > 1e-5:print(x0)x0 = temptemp = CHF.subs(x, x0)step_count += 1 print(x0) print(step_count)
總結
以上是生活随笔為你收集整理的重根迭代法解方程(两种方法)(Python实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛顿法求根号数(Python)
- 下一篇: 页面置换算法(FIFO , LRU, O