#include<stdio.h>
#include<math.h>
#define a 1
#define b 0
#define c -1
#define d 0
#define r 1.6e30
double fun(double x)
{
double f;
f=a*x*x*x+b*x*x+c*x+d;
return f;
}
double dich(double u,double v)
{
double z,w;
z=fun((u+v)/2);
if((z<1e-6)&&(z>-1e-6)) printf("%.6lf\n",(u+v)/2);
else
{
w=fun((u+v)/2)*fun(u);
if(w>0) u=(u+v)/2;
else v=(u+v)/2;
dich(u,v);
}
}
void main()
{
double m,n,i,j;
dich(-0.5,0.5);
dich(-2,-0.5);
dich(0.5,2);
printf("*****************");
m=(2*b)*(2*b)-4*(3*a)*c;
n=-b/(3*a);
printf("\n%lf\n",n);
if(m>0)
{
i=(sqrt(m)+2*b)/(6*a);
j=(-(sqrt(m))+2*b)/(6*a);
printf("%lf,%lf\n",i,j);
if(fun(i)*fun(j)<0)
{
dich(i,j);
dich(i,r);
dich(-r,j);
}
if(fun(i)*fun(j)==0)
{if(fun(i)==0) printf("%.6\nlf",i);
else printf("%.6\nlf",j);
}
if(fun(i)*fun(j)>0)
{
if(a>0)
{
if(fun(i)>0) dich(-r,i);
else dich(i,r);
}
else
{
if(fun(i)>0) dich(i,r);
else dich(-r,i);
}
}
}
else
{
if(a>0)
{
if(fun(n)>0) dich(-r,n);
else dich(n,r);
}
else
{
if(fun(n)>0) dich(n,r);
else dich(-r,n);
}
}
}
运行结果提示:Floating point error:Domain 是怎么一回事?
答案:2 悬赏:40 手机版
解决时间 2021-06-04 14:51
- 提问者网友:孤山下
- 2021-06-04 05:44
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-06-04 06:32
double dich(double u,double v)改成
void dich(double u,double v)
全部回答
- 1楼网友:拾荒鲤
- 2021-06-04 07:16
dich 这个函数需要一个返回值。
double dich(double u,double v) { double z,w; z=fun((u+v)/2); if((z<1e-6)&&(z>-1e-6)) printf("%.6lf\n",(u+v)/2); else { w=fun((u+v)/2)*fun(u); if(w>0) u=(u+v)/2; else v=(u+v)/2; dich(u,v); } } 你这个函数没有返回值。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯