-牛頓迭代法也是基于梯度的方法凹蜈,可用來求解方程的根,常用于優(yōu)化算法當(dāng)中
-原理是利用當(dāng)前點(diǎn)的切線與x軸交點(diǎn)的橫坐標(biāo)值作為下一次迭代點(diǎn)
-其核心就是構(gòu)建切線方程坦袍,尋找到下一個迭代點(diǎn)和當(dāng)前迭代點(diǎn)之間的迭代公式
1. 題目描述
題目.png
2. 數(shù)據(jù)格式
image.png
精度控制:
image.png
3. 構(gòu)建迭代公式
已知:
故在當(dāng)前點(diǎn)x0處的斜率為:
在x0處的切線方程為:
切線方程在x0處與x軸的交點(diǎn)橫坐標(biāo)苟蹈,令f(x)=0:
4. 完整代碼
def main():
# 因?yàn)橐獙ふ襵=1.5附近的根葵擎,所有令初始點(diǎn)x0=2
x0 = 2
while(True):
xi = x0+(6-2*x0*x0*x0-4*x0*x0+7*x0)/(6*x0*x0+8*x0-7)
if(abs(xi-x0)<1e-6):
print("%0.6f" %xi) # 控制輸出精度蜡豹,保留小數(shù)點(diǎn)后六位小數(shù)
break
x0 = xi
if __name__ == '__main__':
main()
5. 測試
image.png