12. 2 雅可比法
前文讲的平方根求法,是一种迭代法,其实也是一种广义的雅可比Jacobi法。
Jacobi法的特点就是先构造一个迭代等式,然后一直迭代即可。如求2−1\sqrt2-12−1,也就是(x+1)2=2(x+1)^2=2(x+1)2=2的迭代等式是x=11+xx=\frac1{1+x}x=1+x1。但是雅可比法没必要只用加减乘除来解决问题。比如以下方程:
x6+x4−12=0
x^6+x^4-12=0
x6+x4−12=0
雅可比的迭代公式为:
x6=12−x4x=(12−x4)16
x^6=12-x^4\\
x=(12-x^4)^\frac16
x6=12−x4x=(12−x4)61
我们用Python试一试:
import mathif __name__ == '__main__':x = 1while True:x1 = math.pow(12 - x ** 4, 1 / 6)if abs(x1 - x) < 1e-10:breakx = x1print(x)print(x**6+x**4)
计算结果为:
1.4142135623000098
11.99999999669254
缺点
一般情况下选择不同的起始点就能找到不同符号的根。但上面的例子不行,因为开根号得到的永远是正数,所以迭代不出负根。此外雅可比法有迭代速度慢、起始点难自动选择,收敛条件苛刻等原因,所以求解高次方程一般推荐用Newton、Broyden、Levenberg‑Marquardt 三种算法。
