1、介绍
2、例题
求解: x 2 + 3 ∗ x + 1 = 0 x^2+3*x+1=0 x2+3∗x+1=0
使用牛顿迭代法进行近似值的计算,解题思路如下所示
等式写为
x
2
+
3
∗
x
+
1
−
C
=
0
x^2+3*x+1-C=0
x2+3∗x+1−C=0
得到交点坐标为
(
x
i
,
x
i
2
+
3
∗
x
i
+
1
−
C
)
(xi,xi^2+3*xi+1-C)
(xi,xi2+3∗xi+1−C)
对等式进行求导得到直线斜率为
2
∗
x
i
+
3
2*xi+3
2∗xi+3
代入点斜式直线方程中得
y
=
(
2
∗
x
i
+
3
)
∗
x
−
x
i
2
+
1
−
C
y=(2*xi+3)*x-xi^2+1-C
y=(2∗xi+3)∗x−xi2+1−C
令该式子为0,得到解的表达式为
x
=
(
x
i
2
+
C
−
1
)
/
(
2
∗
x
i
2
+
3
)
x=(xi^2+C-1)/(2*xi^2+3)
x=(xi2+C−1)/(2∗xi2+3)
接下来不断迭代该解析解的表达式,给初始值赋值一个比较大的数,当两个解的差值小于1e-4的时候就可以停止迭代,得到方程解。
double C=10,x0=10;
while(true){
double xi=-(Math.pow(x0,2)+C-1)/(2*Math.pow(x0,2)+3);
if(Math.abs(x0-xi)<1e-4) break;
x0=xi;
}
System.out.println(x0);