用二分法解一元三次方程的C++程序

余年寄山水
645次浏览
2020年08月04日 01:59
最佳经验
本文由作者推荐

武汉大学考试中心-加工合同范本



#include
#include
void main()
{
double x0,x1,xm,f0,f1,f m,x2,x3;x2,x3是驻点,x0,x1,xm,f0,x1是二分法求根的工具。
double a[3],r[3];
int i,j=0;
printf(
for(i=0;i<3;i++)
{
printf(
scanf(
}
printf(
printf(
y=3*x*x+2*a[0]*x+a[1]




if(4*a[0]*a[0]-12*a[1]<0)方程单调递增,与横轴只有一个交点。
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
if(f0*f1==0)
{
if(f0==0)
{
xm=x0;
printf(
}
else
{
xm=x1;
printf(
}
if(fabs(xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2])<1e-6)
printf(
else
















































printf(
}
else
{
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
}

do
{
xm=(x0+x1)2;
fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
xm=(x0+x1)2;
printf(
if(fabs(xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2])<1e-6)
printf(
else
printf(
}

}

else方程有增有减,但与横轴的交点不确定。
{
x2=(-2*a[0]-sqrt(4*a[0]*a[0]-12*a[1]))6;
x3=(-2*a[0]+sqrt(4*a[0]*a[0]-12*a[1]))6;
printf(
printf(




if((x2*x2*x2+a[0]*x2*x2+a[1]*x2+a[2])>0&&(x3*x3*x3 +a[0]*x3*x3+a[1]*x3+a[2])>0)
方程左半单调递增支和横轴有交点。
{
printf(
and the other should be smaller than x2. you will get just one root.n
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
}

do
{
xm=(x0+x1)2;
fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
xm=(x0+x1)2;
printf(
if(fabs(xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2])<1e-6)
printf(
else
printf(
}




else



if((x2*x2*x2+a[0]*x2*x2+a[1]*x2+a[ 2])<0&&(x3*x3*x3+a[0]*x3*x3+a[1]*x3+a[2])<0)
方程右半单调递增支和横轴有交点
{
printf(
and the other should be bigger than will get just one root.n
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
}

do
{
xm=(x0+x1)2;
fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
xm=(x0+x1)2;
printf(
if(fabs(xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2])<1e-6)
printf(
else
printf(
}





else



if((x2*x2*x2+a[0]*x2*x2+a[1]* x2+a[2])*(x3*x3*x3+a[0]*x3*x3+a[1]*x3+a[2])<0)一般方程
有三个交点,分别位于增、减、增区间。
{
printf(will get 3 roots, type in 2 numbers 3 times, and in the first case, the
bigger number you type in should be x2; and in the second case, the 2 numbers you type in should
be x2 and x3, and in the third case, the smaller one should be x3.n

for(i=0;i<3;i++)
{
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
}

do
{
xm=(x0+x1)2;
fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
r[i]=(x0+x1)2;
printf(
}三次循环找三个根。

printf(
for(i=0;i<3;i++)
printf(
for(i=0;i<3;i++)
if(fabs(r[i]*r[i]*r[i]+a[ 0]*r[i]*r[i]+a[1]*r[i]+a[2])<1e-6)



j++;
if(j==3)
printf(
else
printf(


}






else
{

if(x2*x2*x2+a[0]*x2*x2+a[1]*x2+ a[2]==0&&x3*x3*x3+a[0]*x3*x3+a[1]*x3+a[2]!=0)x2
是一个二重根
{
r[0]=r[1]=x2;
补充剩下的
printf(
be x3, and the other should be bigger than will get just one root.n
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
}

do
{
xm=(x0+x1)2;



fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
r[2]=(x0+x1)2;
printf(
for(i=0;i<3;i++)
printf(
for(i=0;i<3;i++)
if(fabs(r[i]*r[i]*r[i ]+a[0]*r[i]*r[i]+a[1]*r[i]+a[2])<1e-6)
j++;
if(j==3)
printf(
else
printf(
}




else
if(x2*x2*x2+a[0]*x2*x2+a[ 1]*x2+a[2]!=0&&x3*x3*x3+a[0]*x3*x3+a[1]*x3+a[2]==0 )
{
r[0]=r[1]=x3;
补充剩下的
printf(
be x2, and the other should be smaller than will get just one root.n
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
while(f0*f1>=0)
{
printf(
printf(
scanf(
printf(
scanf(
f0=x0*x0*x0+a[0]*x0*x0+a[1]*x0+a[2];
f1=x1*x1*x1+a[0]*x1*x1+a[1]*x1+a[2];
















































}

do
{
xm=(x0+x1)2;
fm=xm*xm*xm+a[0]*xm*xm+a[1]*xm+a[2];
if(f0*fm>0)
x0=xm;
else
x1=xm;
}while(fabs(x0-x1)>1e-6);
r[2]=(x0+x1)2;
printf(
for(i=0;i<3;i++)
printf(
for(i=0;i<3;i++)
if(f abs(r[i]*r[i]*r[i]+a[0]*r[i]*r[i]+a[1]*r[i]+a[2])< 1e-6)
j++;
if(j==3)
printf(
else
printf(
}




























else
{
r[0]=r[1]=r[2]=x2;
printf(
printf(
for(i=0;i<3;i++)
printf(
for(i=0;i<3;i++)
if(fabs(r[i]*r[i]*r[i]+a [0]*r[i]*r[i]+a[1]*r[i]+a[2])<1e-6)
j++;
if(j==3)
printf(
else
printf(
}





}


}
}

上海出入境检验检疫局-开学典礼上的讲话


大庆石油学院-感恩教育心得体会


广告学毕业论文范文-克劳斯塔尔工业大学


湖南中医药大学教务-八年级上册生物复习提纲


人生感悟散文-优美文段


苹果热量-总经理岗位职责


高考十大热门专业-行政职业能力测验


相声剧本-铜仁网址导航