bisection 二分法求解方程
二分法求解方程
二分法是一种求解方程 $ f(x) = 0 $ 的解的一种方法。
假设函数 $ f(x) $ 在区间 $ [a,b] $ 上连续,并且 $ f(a)*f(b)<0 $,此时就可以用二分法求解。
求解伪代码:
- $ a_1 = a; $ $ b_1 = b $ ;
- 计算中点 $ p_1 = \frac{(a_1+b_1)}2 $
- 如果: $ f(p_1) = 0 $ ,那么方程的解为 $ x=p_1 $ ,终止
- 如果: $ f(p_1) <> 0 $
- 如果: $ f(p_1) * f(a_1)> 0 $,则: $ a_1=p_1;b_1=b_1 $
- 如果: $ f(p_1) * f(a_1)< 0 $,则: $ a_1=a_1;b_1=p_1 $
重复上述步骤2到4,直到满足误差,停止迭代。
收敛
$ |p_n-p|<=\frac1{2^n}(b-a) $ 是第n次迭代的结果,p为真是解。
举例
方程 $ 3x^2-3x-3 = 0 $在区间 $ [0,2] $ 上的近似解。
\[f(x) = 3x^2-3x-3 ;
\]
\[f(0) = -3 ;
\]
\[f(2) = 3 ;
\]
\[f(\frac{0+2}2) = f(1) = -3 ;
\]
代码
[bisection.py]{..\src\arithmetic_analysis\bisection.py}
bisection 二分法求解方程 测试
原文:https://www.cnblogs.com/it88-laobing/p/14821842.html