Floating point error: Domain.是什么意思?(在线等待,急)

jimmy4lmx 2003-08-22 07:57:44
怎么解决?
...全文
218 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimmy4lmx 2003-08-23
  • 打赏
  • 举报
回复
想了一夜,终于得到改进.
#include <math.h>
#include <stdio.h>
main()
{
float a1[]={31.270,31.227,30.660,30.276,29.134,27.808,26.078,
24.928,22.922,21.188,19.454,18.096,16.016,14.963,
13.513,12.954,11.957,11.578,11.420,11.555,12.162,
12.732,13.963,14.615,16.495,17.972,19.971,21.712,
23.274,24.441,26.647,27.860,28.981,30.202,30.964,
31.105};
float b1[]={34.290,36.554,38.205,39.375,40.928,42.317,43.503,
43.922,44.478,44.713,44.459,44.126,43.195,42.265,
40.770,39.891,38.060,36.186,34.289,32.551,30.919,
29.450,27.973,27.141,25.853,25.318,24.728,24.648,
24.806,25.166,26.181,27.163,28.244,29.937,31.517,
32.743};
float c1[18],d1[18];
float x,y,t,Q;
int i,j,k,m=0,n=0;

for(k=0;k<=17;k++)
{
c1[k]=0.5*(a1[k]+a1[18+k]);
d1[k]=0.5*(b1[k]+b1[18+k]);
}


for(j=1;j<=17;j++)
for(i=0;i<=17-j;i++)
{
if(c1[i]>c1[i+1])
{ t=c1[i];c1[i]=c1[i+1];c1[i+1]=t;}
if(d1[i]>d1[i+1])
{ t=d1[i];d1[i]=d1[i+1];d1[i+1]=t;}
}

for(x=c1[0];x<=c1[17];x+=0.001)
for(y=d1[0];y<=d1[17];y+=0.001)
for(i=0;i<=35;i++)
{
Q=sqrt((x-a1[i])*(x-a1[i])+(y-b1[i])*(y-b1[i]));
if(Q>=9.9 && Q<=10.1)
n++;
if(n==36)
{
printf("\nx=%.3f,y=%.3f\n",x,y);
m++;
}
if(i==35)
n=0;
}

printf("m=%d",m);

}
揭贴
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
这个解不对
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
tc2.0,有什么区别
dama2003 2003-08-22
  • 打赏
  • 举报
回复
你在什么上运行的?
dama2003 2003-08-22
  • 打赏
  • 举报
回复
我照着你的原代码打出来在vc++6.0上运行,得出结果是
x=21.212 y=34.293
是这个结果吗?
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
无人会解???
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
这是一个数学建模中的搜索问题,急,望解答
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
#include <math.h>
main()
{
float a[]={31.270,31.227,30.660,30.276,29.134,27.808,26.078,
24.928,22.922,21.188,19.454,18.096,16.016,14.963,
13.513,12.954,11.957,11.578,11.420,11.555,12.162,
12.732,13.963,14.615,16.495,17.972,19.971,21.712,
23.274,24.441,26.647,27.860,28.981,30.202,30.964,
31.105};
float b[]={34.290,36.554,38.205,39.375,40.928,42.317,43.503,
43.922,44.478,44.713,44.459,44.126,43.195,42.265,
40.770,39.891,38.060,36.186,34.289,32.551,30.919,
29.450,27.973,27.141,25.853,25.318,24.728,24.648,
24.806,25.166,26.181,27.163,28.244,29.937,31.517,
32.743};
float c[18],d[18];
float x,y,t,Q,n=0;
int i,j,k;

for(k=0;k<=17;k++)
{
c[k]=0.5*(a[k]+a[18+k]);
d[k]=0.5*(b[k]+b[18+k]);
}

for(j=0;j<=16;j++)
for(i=0;i<=17-j;i++)
{
if(c[i]>c[i+1])
{ t=c[i];c[i]=c[i+1];c[i+1]=t;}
if(d[i]>d[i+1])
{ t=d[i];d[i]=d[i+1];d[i+1]=t;}
}

for(x=c[0];x<=c[17];x+=0.001)
for(y=d[0];y<=d[17];y+=0.001)
for(i=0;i<=17;i++)
{
Q=sqrt((x-a[i])*(x-a[i])+(y-b[i])*(y-b[i]));
if(Q>=9.9 && Q<=10.1)
n++;
if(n==18)
printf("\nx=%.3f,y=%.3f\n",x,y);
}
}
chengsion 2003-08-22
  • 打赏
  • 举报
回复
是的
请给出源程序
jimmy4lmx 2003-08-22
  • 打赏
  • 举报
回复
没用指针.
bm1408 2003-08-22
  • 打赏
  • 举报
回复
指针有误!
最好贴出原码!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧