yishengyouni993 2015-05-04 10:27 采纳率: 50%
浏览 2859
已采纳

求泰勒公式展开的有限差分中心差分算子的权系数,我的这个程序写出来所有结果都为-nan,求大神解答,急

#include"stdio.h"
#include"malloc.h"
#include"math.h"
#include"string.h"
main(){
int i,j,n;
printf("请输入需计算中心差分阶数:");
scanf("%d",&j);
while (j==0||j%2==1){

printf("中心差分阶数不可为0或奇数\n请重新输入:");
scanf("%d",&j);
}
i=j/2;
n=j+1;
float a;//为系数矩阵分配空间
a=(float
)malloc(n*sizeof(float*));
a[0]=(float*)malloc(n*n*sizeof(float));
int c,d,e,h;
for(c=1;c a[c]=a[0]+n*c;
}
float *b;//为常数分配空间
b=(float*)malloc(n*sizeof(float));
float *g;//为权系数分配空间
g=(float*)malloc(n*sizeof(float));
memset(g,0,n*sizeof(float));
e=1;
float f;
for(c=0;c for(d=0;d if(c==0){
a[d][c]=1.0;
}
else{
h=d-i;
a[d][c]=pow(h,c);
f=(float)e;
a[d][c]=a[d][c]/e;
}
}
e=e*(c+1);
}
for(c=0;c if(c==1)
b[c]=1.0;
else
b[c]=0.0;
}
for(c=0;c for(d=c+1;d if(a[c][c]==0){
for(e=c;e f=a[e][c];
a[e][c]=a[e][d];
a[e][d]=f;
}
f=b[c];
b[c]=b[d];
b[d]=f;
}
if(a[c][c]!=0)
break;
}
for(d=c+1;d a[d][c]/=a[c][c];
b[c]/=a[c][c];
a[c][c]=1;
}
for(d=c+1;d for(e=c;e a[e][d]=a[e][d]-a[c][d]*a[e][c];
}
b[d]=b[d]-a[c][d]*b[c];
}
}//
for(c=n-1;c>=0;c--){//计算权系数的值
g[c]=b[c];
if(c>0)
b[c-1]=b[c-1]-a[c][c-1]*g[c];
}
for(c=0;c<n;c++){//打印权系数的值
d=c-i;
printf("w%d=%f(1/dx)\n",d,g[c]);
}
free(a[0]);
free(a);
free(b);
free(g);
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-05-04 10:48
    关注

    -nan就是负的无穷大,检查下公式用得对不对,除数是否接近0。还有整数不能作为除数、乘数,需要先转换成浮点。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能