- 一元三次方程求解
- 2015-04-18 14:25:18 @
#include<stdio.h>
int a,b,c,d;
double solve[5];
int count=0;
double fx(double left)
{ double suml;
suml=a*left*left*left+b*left*left+c*left+d;
return suml;
}
int main(){
double num=0,j=-100;
scanf("%d%d%d%d",&a,&b,&c,&d);
while(j<=100)
{
if(fx(j)*fx(j+0.001)<0)
{
count++;
solve[count]=j;
j+=0.001;
}
else
j+=0.001;
}
for(i=1;i<=3;i++)
printf("%.2lf ",solve[i]);
return 0;
}
3 条评论
-
sxb_201 LV 10 @ 2015-09-30 20:56:33
.....
-
2015-08-04 22:11:33@
为啥我是2和4过不了……
-
2015-04-21 21:12:18@
我是pascal语言。不过我曾经遇到相同问题。可能是这个原因不知道能不能帮到你。
因为这个函数的答案精度不能保证。比如有解是无理数,无论你用多少精度的实数型都无法存。因此不能=0是解,只要绝对值小于一个很小的数,比如0.0000000000000000000001那么就是解。这也是为什么过不了1和3号点的原因!
- 1