线性方程与非线性方程
当我们求关于的方程
的解时,如果,
是像

这样的线性形方程(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 |