非线性方程的数值解法
初始近似值的搜索
-
方程的根
f ( x ∗ ) = 0 f(x^*)=0 f(x∗)=0 , x ∗ x^* x∗ 为 f ( x ) f(x) f(x) 的根
单根和重根
f ( x ∗ ) f(x^*) f(x∗) 有 m m m 重根 x ∗ x^* x∗ 的充要条件是
f ( x ∗ ) = f ′ ( x ∗ ) = ⋯ = f ( m − 1 ) ( x ∗ ) = 0 f(x^*)=f'(x^*)=\cdots=f^{(m-1)}(x^*)=0 f(x∗)=f′(x∗)=⋯=f(m−1)(x∗)=0f ( m ) ( x ∗ ) ≠ 0 f^{(m)}(x^*)\ne0 f(m)(x∗)=0
例: 求 x = 0 x=0 x=0 是方程 f ( x ) = e 2 x − 1 − 2 x − 2 x 2 = 0 f(x)=e^{2x}-1-2x-2x^2=0 f(x)=e2x−1−2x−2x2=0 的几重根
解: f ( x ) = e 2 x − 1 − 2 x − 2 x 2 f ( 0 ) = 0 f(x)=e^{2x}-1-2x-2x^2\ \ f(0)=0 f(x)=e2x−1−2x−2x2 f(0)=0
f ′ ( x ) = 2 e 2 x − 2 − 4 x f ′ ( 0 ) = 0 f'(x)=2e^{2x}-2-4x\ \ f'(0)=0 f′(x)=2e2x−2−4x f′(0)=0
f ′ ′ ( x ) = 4 e 2 x − 4 f ′ ′ ( 0 ) = 0 f''(x)=4e^{2x}-4\ \ f''(0)=0 f′′(x)=4e2x−4 f′′(0)=0
f ′ ′ ′ ( x ) = 8 e 2 x f ′ ′ ′ ( 0 ) = 8 ≠ 0 f'''(x)=8e^{2x}\ \ f'''(0)=8\ne0 f′′′(x)=8e2x f′′′(0)=8=0
故 x = 0 x=0 x=0 是 f ( x ) f(x) f(x) 的三重根
-
有根区间
f ( x ) = 0 f(x)=0 f(x)=0 在有根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内至少有一个根
f ( x ) f(x) f(x) 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上连续,且 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,则 f ( x ) = 0 f(x)=0 f(x)=0 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内至少有一个根
-
隔根区间
f ( x ) = 0 f(x)=0 f(x)=0 在隔根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内只有一个根
f ( x ) f(x) f(x) 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上单调连续,且 f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,则 f ( x ) = 0 f(x)=0 f(x)=0 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内有且仅有一个根
-
-
逐步搜索法
f ( x ) f(x) f(x) 的有根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] ,不妨假定 f ( a ) < 0 f(a)<0 f(a)<0 ,从 x 0 = a x_0=a x0=a 出发,按步长 h h h 一步一步向右跨。一旦 x k = a + k h x_k=a+kh xk=a+kh 上的 f ( x k ) f(x_k) f(xk) 与 f ( a ) f(a) f(a) 异号,则确定了缩小的有根区间 [ x k − 1 , x k ] [\ x_{k-1},\ x_k\ ] [ xk−1, xk ]
-
区间二分法(只能求单根)
f ( x ) f(x) f(x) 在隔根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上单调连续,则不断计算 f ( a + b 2 ) f(\dfrac {a+b}2) f(2a+b)
误差分析
取有根区间 [ a k , b k ] [\ a_{k},\ b_k\ ] [ ak, bk ] 的中点
x k = 1 2 ( a k + b k ) x_k=\dfrac 12(a_k+b_k) xk=21(ak+bk)
作为根的近似值,则此时的误差
∣ x ∗ − x k ∣ ≤ 1 2 ( b k − a k ) = 1 2 k + 1 ( b − a ) |x^*-x_k|\le\dfrac 12(b_k-a_k)=\dfrac 1{2^{k+1}}(b-a) ∣x∗−xk∣≤21(bk−ak)=2k+11(b−a)
若事先给定误差要求为 ε \varepsilon ε ,则只需
∣ x ∗ − x k ∣ ≤ 1 2 k + 1 ( b − a ) < ε |x^*-x_k|\le\dfrac 1{2^{k+1}}(b-a)<\varepsilon ∣x∗−xk∣≤2k+11(b−a)<ε
即可停止运算此时二分最小次数 k k k ,由 ∣ x ∗ − x k ∣ ≤ 1 2 k + 1 ( b − a ) < ε |x^*-x_k|\le\dfrac 1{2^{k+1}}(b-a)<\varepsilon ∣x∗−xk∣≤2k+11(b−a)<ε 得 2 k + 1 > b − a ε 2^{k+1}>\dfrac {b-a}\varepsilon 2k+1>