一元方程求根

已知 f ( x ) = 0 f(x)=0 ,求x.

1.二分法求根

要求: f ( x ) f(x) 连续,且在[a,b]上有根
优点:简单可靠
缺点:不能求复根和偶重根
解决:选用一个合适的步长h对[a,b]进行扫描搜索,当发现哪个子区间有根时再用二分法求其中之根。
在这里插入图片描述
在这里插入图片描述

2.牛顿迭代法

优点:具有平方收敛的速度
缺点:

  • 重根情形下为局部线性收敛
  • 计算量大(除了要计算函数值还要计算导数值)
  • 选取的初始值要靠近精确解(解决:先用二分法求出足够精度的 x 0 x_0 再用牛顿法迭代到收敛为止)
    在这里插入图片描述

补充知识

1、泰勒公式

将一个在 x = x 0 x=x_0 处具有n阶导数的函数 f ( x ) f(x) 利用关于 ( x x 0 ) (x-x_0) 的n次多项式来逼近函数的方法。
f ( x ) = i = 0 n f ( i ) ( x 0 ) i ! ( x x 0 ) i + R n ( x ) f(x)=\sum_{i=0}^n\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i+R_n(x)
其中 f ( i ) ( x ) f^{(i)}(x) 代表 x x i i 阶导数,剩余的 R n ( x ) R_n(x) 是泰勒公式的余项,是 ( x x 0 ) n (x-x_0)^n 的高阶无穷小。

2、牛顿法对方程重根的处理

  • 已知重根的重数m(m>1),利用m构造新的迭代公式
    x k + 1 = x k m f ( x k ) f ( x k ) ( k = 0 , 1 , . . . ) x_{k+1}=x_k-m\frac{f(x_k)}{f^{'}(x_k)}\quad (k=0,1,...)
  • 未知重根的重数,新迭代公式是
    x k + 1 = x k f ( x k ) f ( x k ) [ f ( x k ) ] 2 f ( x k ) f ( x k ) ( k = 0 , 1 , . . . ) x_{k+1}=x_k-\frac{f(x_k)f^{'}(x_k)}{[f^{'}(x_k)]^2-f(x_k)f^{''}(x_k)}\quad (k=0,1,...)
    缺点:需要求 f f 的2阶导数,计算量大,应用前提是 f ( x ) f(x) 要简单。

猜你喜欢

转载自blog.csdn.net/weixin_38493025/article/details/84333791