有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,
b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),
且根与根之差的绝对值≥1。
要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点
则在(x1,x2)之间一定有一个根。
考虑在什么样的区间内会有根,由于题目给出了所有的根都在-100到100之间,且根与根之间的差不小于1的限制条件,可知,在[-100,100],[-99,-98],…[99,100],[100,100]这201个区间内,每个区间内至多只能存在一个根,这样除去区间[100,100]外,其他区间[a,a+1],要么f(a)=0,要么f(a)×f(a+1)<0时这个方程在此区间内才有解。
确定了方程f(x)=0在区间(a,b)内如果有且只有一个根,那么我们可以有逐步缩小根可能存在的范围的方法确定出某精度下根的数值。本题规定根的精度是0.01,下面采用二分法求区间(a,b)内方程的根,过程如下:
(1) 取当前可能存在解的区间(a,b);
二分法求根的算法如下:
注意:由于实数运算的误差,判断x是否满足方程f(x)=0应用条件表达式 fabs(f(x))<0.00001来判断,否则将失根。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。