永发信息网

如何编程求解一元三次方程

答案:1  悬赏:40  手机版
解决时间 2021-02-27 03:58
  • 提问者网友:龅牙恐龙妹
  • 2021-02-26 10:35
如何编程求解一元三次方程
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-02-26 11:46
要利用根与根之差的绝对值>=1这个条件。
下面是刚学的时候写的,你可以看看
#include
#include
int a,b,c,d;
int count=0;
double x[3]={-200,-200,-200};
void fun(double x1,double x2)
{
double x3,y1,y2,y3;
int i=0;

while (x2-x1>10e-6)
{
x3=(x1+x2)/2;
y1=a*x1*x1*x1+b*x1*x1+c*x1+d;
y2=a*x2*x2*x2+b*x2*x2+c*x2+d;
y1=a*x1*x1*x1+b*x1*x1+c*x1+d;
y3=a*x3*x3*x3+b*x3*x3+c*x3+d;
if (y1==0)
{
for (i=0;i<3;i++)
{
if (x[i]==x1)
{
return;
}
if (x[i]==-200)
{
count++;
x[i]=x1;
return;
}

}
}
else if (y2==0)
{
for (i=0;i<3;i++)
{
if (x[i]==x2)
{
return;
}
if (x[i]==-200)
{
count++;
x[i]=x2;
return;
}
}
}
else if (y3==0)
{
for (i=0;i<3;i++)
{
if (x[i]==x3)
{
return;
}
if (x[i]==-200)
{
count++;
x[i]=x3;
return;
}
}
}
else if (y1*y3<0)
{
x2=x3;
}
else
{
x1=x3;
}
}
for (i=0;i<3;i++)
{
if (x[i]==x1)
{
return;
}
if (x[i]==-200)
{
count++;
x[i]=x1;
return;
}
}

}
int main()
{

double x1,x2,y1,y2,x3,x4;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
for (x1=-100,x2=x1+1;x1<100;x1+=1,x2+=1)
{
y1=a*x1*x1*x1+b*x1*x1+c*x1+d;
y2=a*x2*x2*x2+b*x2*x2+c*x2+d;
x3=x1;
x4=x2;
if (y1*y2<=0)
{
fun(x3,x4);
if (count==3)
{
break;
}
}
}
for(int i=0;i<3;i++)
{
printf("%.2lf ",x[i]);
}
printf("\n");
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯