c++:用二分法求方程x2-x-2=0在[0,3]间的解,要求精度不超过10的-5次方。
只学过#include<iostream.h>voidmain()c++学到流程控制语句。算法提示:先取二元方程f(x)的两个初略解x1和x2,若f(x1)与f(x2)的...
只学过
#include<iostream.h>
void main()
c++学到流程控制语句。
算法提示:先取二元方程f(x)的两个初略解x1和x2,若f(x1)与f(x2)的符号相反,则方程f(x)=0在[x1,x2]区间至少有一个根;若f(x)在[x1,x2]区间单调,则至少有一个实根;所以取x3=(x1+x2)/2,并在x1和x2中舍去和f(x3)同号者,那么解就在x3和另外那个没有舍去的初略解组成的区间里;如此反复取舍,直到xn与xn-1之差满足要求时,那么xn便是方程f(x)的近似根。 展开
#include<iostream.h>
void main()
c++学到流程控制语句。
算法提示:先取二元方程f(x)的两个初略解x1和x2,若f(x1)与f(x2)的符号相反,则方程f(x)=0在[x1,x2]区间至少有一个根;若f(x)在[x1,x2]区间单调,则至少有一个实根;所以取x3=(x1+x2)/2,并在x1和x2中舍去和f(x3)同号者,那么解就在x3和另外那个没有舍去的初略解组成的区间里;如此反复取舍,直到xn与xn-1之差满足要求时,那么xn便是方程f(x)的近似根。 展开
推荐于2016-12-01
展开全部
int main() {
double x1=0,x2=3;
double x = (x1 + x2) / 2;
double e=1e-5;
if (fabs(x*x-x-2) < e) // x2-x-2 = 0;
printf("x=%f\n", x);
else{
while (fabs(x2-x1) > e){
x = (x1 + x2) / 2;
if (fabs(x*x-x-2) < e){
x1=x;
break;
}
if ((x*x-x-2)*(x1*x1-x1-2) < 0)
x2 = x;
else
x1 = x;
}
printf("x=%f\n", x1);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询