当前位置:文档之家› 数值分析——二分法和牛顿法

数值分析——二分法和牛顿法

二分法和牛顿法的比较
二分法的基本思想是对有根区间[a,b]逐次分半,首先计算区间[a,b]的中间点x0,然后分析可能出现的三种情况:如果f(x0)f(a)<0,则f(x)在区间[a,x0]内有零点;如果f(x0)f(b)<0,则f(x)在区间[x0,b]内有零点;如果f(x0)=0,则x0是f(x)在区间[a,b]内所求零点。

但是二分法的缺点是收敛速度慢且不能求复根。

牛顿迭代法的基本思想是将方程f(x)=0中函数f(x)线性化,以线性方程的解逼近非线性方程的解其迭代函数为)
(')
()(x f x f x x -=ϕ。

牛顿迭代法的缺点是可能发生被零除错误,且可能出现死循环。

用二分法和牛顿法分别计算多项式02432
3
=-+-x x x 的解。

该多项式的解为1、1+i 和1-i ,使用二分法计算时,区间为(-1,2),使用牛顿法计算时取初始值为0。

误差都为0.0001。

编程如下
二分法(erfen.m):
syms x ;
fun=x^3-3*x^2+4*x-2; a=-1; b=2;
d=0.0001; f=inline(fun); e=b-a; k=0;
while e>d c=(a+b)/2; if f(a)*f(c)<0 b=c; elseif f(a)*f(c)>0
a=c; else
a=c;b=c; end e=e/2; k=k+1; end k x=(a+b)/2
牛顿法(newton.m):
function [k,x,wuca] = newton() k=1; x0=0; tol=0.0001; yx1=fun(x0); yx2=fun1(x0); x1=x0-yx1/yx2; while abs(x1-x0)>tol x0=x1; yx1=fun(x0); yx2=fun1(x0); k=k+1; x1=x1-yx1/yx2; end k x=x1
wuca=abs(x1-x0)/2 end
function y1=fun(x) y1=x^3-3*x^2+4*x-2; end
function y2=fun1(x)
y2=3*x^2-6*x+4; end 分析结果得知,在相同的误差精度下,二分法需要计算15次,而牛顿法只需计算5次,得知牛顿法比二分法优越。

相关主题