设方程f(x)=0有近似根xk(f `(xk)0),将f(x)在xk 展开: (在x和xk之间)
f ( ) 2 f ( x) f ( xk ) f ( xk )( x xk ) ( x xk ) 2!
可设
f ( x) f ( xk ) f ( xk )( x xk )
x
f (x ) x f ( x )
例:采用切线法求方程在区间[0.5,2]上的一个根。
x x 20
3
>> r=NewtonRoot('sqrt(x)-x^3+2',0.5,2)
r= 1.4759
弦截法(割线法) 在Newton迭代格式中,用差商近似导数,
f ( xk ) f ( xk 1 ) f ( xk ) xk xk 1
function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); %两端点的函数值 f_2=subs(sym(f),findsym(sym(f)),b); mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值 if(f_1*mf>0) t=(a+b)/2; r=FindRoots(f,t,b,eps); %右递归 else if(f_1*mf==0) r=(a+b)/2; else if(abs(b-a)<=eps) r=(b+3*a)/4; else s=(a+b)/2; r=FindRoots(f,a,s,eps); %左递归 end end end 注:SUBS:Symbolic substitution. Also used to evaluate expressions numerically. SYM ; Construct symbolic numbers, variables and objects. FINDSYM:Finds the symbolic variables in a symbolic expression or matrix.