2.1根本问题
1.问题:我们经常遇到f(x) = 0求解的问题.我们想要知道当f(x)为非线性方程时有什么方法求解f(x)的零点,也就是上面方程的根.在这里会介绍二分法,不动点迭代法,牛顿法,割线法,逆二次插值法,zeroin法.
2.2问题的基本概念和敏感性
1.根的重数:对光滑函数f,若
f ( x ∗ ) = f ′ ( x ∗ ) = ⋯ = f m − 1 ( x ∗ ) = 0 ∧ f m ( x ∗ ) ≠ 0 f(x^*) = f'(x^*) = \cdots = f^{m - 1}(x^*) = 0 \land f^m(x^*) \neq 0 f(x∗)=f′(x∗)=⋯=fm−1(x∗)=0∧fm(x∗)=0
则 x ∗ x^* x∗为方程的m重根
2.问题的敏感性
求解非线性方程的f(x) = y问题是“已知y = 0,求x = ?”
问题条件数: c o n d = ∣ Δ x Δ y ∣ ≈ 1 ∣ f ′ ( x ∗ ) ∣ cond = |\frac{\Delta x}{\Delta y}| \approx \frac{1}{|f'(x^*)|} cond=∣ΔyΔx∣≈∣f′(x∗)∣1
2.3二分法
1.二分法(初中学的二分法)
输入:有根区间[a, b],函数f(x)
输出:零点 x ∗ x^* x∗
(1) x 0 = a , k = 0 , a 0 = a , b 0 = b x_0 = a, k = 0, a_0 = a, b_0 = b x0=a,k=0,a0=a,b0=b
(2)若 b k − a k < ϵ b_k - a_k < \epsilon bk−ak<ϵ,则 x ∗ = x k x^* = x_k x∗=xk结束
(3)若 s i g n ( f ( x k ) ) = s i g n ( f ( a k ) ) sign(f(x_k)) = sign(f(a_k)) sign(f(xk))=sign(f(ak)),则 a k + 1 = x k , b k + 1 = b k a_{k + 1} = x_k, b_{k+1} = b_k ak+1=xk,bk+1=bk,否则 a k + 1 = a k , b k + 1 = x k a_{k + 1} = a_k, b_{k + 1} = x_k ak+1=ak,bk+1=xk
(4)k = k + 1转(2)
2.误差分析,机械精度 ϵ \epsilon ϵ
最终停止时: b k − a k = 2 ⌊ l o g 2 ∣ x ∗ ∣ ⌋ ⋅ 2 ϵ b_k - a_k = 2^{\lfloor log_2|x^*|\rfloor} \cdot 2\epsilon bk−ak=2⌊log2∣x∗∣⌋⋅2ϵ
绝对误差: e ( x k ) = ∣ x k − x ∗ ∣ ≤ 2 ⌊ l o g 2 ∣ x ∗ ∣ ⌋ ⋅ 2 ϵ e(x_k) = |x_k - x^*| \leq 2^{\lfloor log_2|x^*|\rfloor} \cdot 2\epsilon e(xk)=∣xk−x∗∣≤2⌊log2∣x∗∣⌋⋅2ϵ
相对误差: e r ( x k ) = ∣ x k − x ∗ ∣ ∣ x ∗ ∣ ≤ 2 ϵ e_r(x_k) = \frac{|x_k - x^*|}{|x^*|} \leq 2\epsilon er(xk