f2=subs(sym(f),findsym(sym(f)),b);
if(f1==0)
root=b;
end
if(f2==0)
root=b;
end
if(f1*f2>0)
disp(‘两端点函数值乘积大于0!’);
return;
else
tol=1;
fun=diff(sym(f));
fa=subs(sym(f),findsym(sym(f)),a);
fb=subs(sym(f),findsym(sym(f)),b);
dfa=subs(sym(fun),findsym(sym(fun)),a);
dfb=subs(sym(fun),findsym(sym(fun)),b);
if(dfa>dfb)
root=a-fa/dfa;
else
root=b-fb/dfb;
end
while(tol>eps)
r1=root;
fx=subs(sym(f),findsym(sym(f)),r1);
dfx=subs(sym(fun),findsym(sym(fun)),r1);
root=r1-fx/dfx;
tol=abs(root-r1);
end
end
(3)上机调试过程
>>r=NewtonRoot(‘sqrt(x)-x^3+2,0.5,2)
(4)实验结果
输出计算结果为:
r=
1.4759 由计算结果可知,x-x3 2 0的一个根为x=1.4759。
需要注意的是,初始值的选择不要使得其导数为0。
四、实验体会