线性方程与非线性方程
当我们求关于的方程的解时,如果,是像
这样的线性形方程(1次方程)的话,其解为,
这里的。但是,是非线性方程的时候解法要复杂的多。比如,像下面这样的次代数方程(algebraic equation)的情况,
的2次方程我们很容易求解,3次或4次方程可以通过Cardano公式或者Ferrari公式求解,然而5次以上却无法直接求解。
更不用说,还有像超越方程式(transcendental equation)这样的无穷次的代数方程()。例如,用无穷幂级数表示的形式便是超越方程。超越方程一般无法直接求解,只能求近似解。
本文,我们对如下的非线性方程的数值求解方法进行逐一介绍。
- 2分法
- 牛顿-拉弗森方法
- 多次元牛顿-拉弗森方法
- 霍纳方法
- DKA法
2分法
假设是在区间上的函数。和符号相反的时候(),区间内至少存在一个解。我们先求区间的中点的函数值,如果这个值的符号与同号, 则在内存在解。 这样的话,解的存在区间便变成了原来的。同样,再使用的中点的函数值,解的存在区间就变成了。把上述步骤反复处理求得方程式的解的方法就叫做2分法(bisection method)。
图1为2分法求近似解的说明图。图中解的存在区间为。用对进行初始赋值。 这时的中点为。 由于图1,解在内存在, 令,这时的中点为, 由图1,解在内存在。上述步骤反复迭代,求。
2分法的处理顺序如下:
- 令, 。
- 求中点的函数值。
- 的时候,时,令。
- 返回步骤2。
迭代终止的收敛条件如下:
下面为2分法的代码示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |