c语言中用二分法求一元三次方程根 在(-10,10)区间求2x^3-4x^2+3x-6=0的根 请帮帮忙看哪里出错了!
该程序可以运行,但是没显示结果#include<stdio.h>#include<math.h>doublef1(doublex){return2*x*x*x-4*x*x...
该程序可以运行,但是没显示结果
#include<stdio.h>
#include<math.h>
double f1(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double lit=pow(10,-5);
double min=-10,max=10;
double mid=(max+min)/2;
double result;
do
{
if(f1(mid)>0)
{
max=mid;
}
if(f1(mid)<0)
{
min=mid;
}
mid=(max+mid)/2;
}while(min<max && f1(mid)!=0);
if(fabs(f1(mid))<lit)
{
result=mid;
printf("the result is:%f\n",result);
}
else
{
printf("error no result\n");
return 0;
}
} 展开
#include<stdio.h>
#include<math.h>
double f1(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double lit=pow(10,-5);
double min=-10,max=10;
double mid=(max+min)/2;
double result;
do
{
if(f1(mid)>0)
{
max=mid;
}
if(f1(mid)<0)
{
min=mid;
}
mid=(max+mid)/2;
}while(min<max && f1(mid)!=0);
if(fabs(f1(mid))<lit)
{
result=mid;
printf("the result is:%f\n",result);
}
else
{
printf("error no result\n");
return 0;
}
} 展开
展开全部
#include<stdio.h>
#include<math.h>
double f1(double x)
{
return 2.0*x*x*x-4*x*x+3*x-6;
}
int main()
{
double lit= 1E-07; // 直接给常数
double min=-10,max=10;
double mid=(max+min)/2;
double result;
// printf("left=%lf right=%lf\n",f1(min),f1(max)); // 要 判断一下: 一负,一正
do
{
if (fabs( f1(mid) ) <= lit) break;
if( f1(mid) >= 0) { max=mid; } else { min=mid;}
mid=(max+min)/2; // 你的主要错在这句,你写 mid=(max+mid)/2;
}while(1);
printf("result:x= %lf\n",mid);
return 0;
}
#include<math.h>
double f1(double x)
{
return 2.0*x*x*x-4*x*x+3*x-6;
}
int main()
{
double lit= 1E-07; // 直接给常数
double min=-10,max=10;
double mid=(max+min)/2;
double result;
// printf("left=%lf right=%lf\n",f1(min),f1(max)); // 要 判断一下: 一负,一正
do
{
if (fabs( f1(mid) ) <= lit) break;
if( f1(mid) >= 0) { max=mid; } else { min=mid;}
mid=(max+min)/2; // 你的主要错在这句,你写 mid=(max+mid)/2;
}while(1);
printf("result:x= %lf\n",mid);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询