题目:用二分法求f(x)=x^3+x^2-3*x-3=0的正根(精度要求精确到1E-3)。
(1)分析结果的正确性。
(2)进一步考虑如何求出所有根。
算法分析:
(1)分析题目要求,由于方程是一元三次方程。所以方程应该存在三个根,由于题目要求只求正根,所以下面在用二分法之前应先给定一个正区间。
(2)令f=x^3+x^2-3*x-3,并给定:区间[a,b],其中a>=0,且要保证f(a)*f(b)<0.
(3)这里首先令x1=a,x2=b,先给x一个初值为((x1+x2)/2),判断f((x1+x2)/2)即f(x)的正、负。
若为负数即f(x)<0,则把((x1+x2)/2)赋给x1(或x2),即新区间的左(或右)端点;
若为正数即f(x)>0,则把((x1+x2)/2)赋给x2(或x1),即新区间的右(或左)端点;
若为零即f(x)==0,则找到方程的根。
此步骤的原则是使新区间始终保证f(x1)*f(x2)<0。
在此题中由于经过判断知:f=x^3+x^2-3*x-3的一阶导在[1.0,2.0]上大于0,即f=x^3+x^2-3*x-3在[1.0,2.0]上单调增加。又因为此题中f(1)<0,f(2)>0,所以