当前位置:文档之家› 计算方法作业-差分法解常微分方程

计算方法作业-差分法解常微分方程

#include
#include
#define pi 3.14

double f(double x)
{
double y;
y=sin(pi*x)+x*(1-x);
return y;
}

int main()
{
double u[26][11];
double k,h,r,t,x;
int i,j;
FILE *fp =NULL ;
k=0.01;
h=0.1;
r=k/(h*h);
printf("r=%f",r);

for(j=0;j<10;j++){
x=h*j;
u[0][j]=f(x);
}

for(i=0;i<26;i++){
u[i][0]=0;
u[i][10]=0;
}

for(i=0;i<24;i++){
for(j=1;j<10;j++)
u[i+1][j]=r*u[i][j+1]+(1-2*r)*u[i][j]+r*u[i][j-1]+2*k;
}

printf("k=%4f,h=%2f\n",k,h);

for(i=0;i<26;i++){
printf("t=%4f\n",i*0.01);
for(j=0;j<11;j++)
printf("u[%d][%d]=%f\n",i,j,u[i][j]);
printf("\n\n");
}

fp=fopen("E:\\differential.txt" , "w+" );
if(fp)
{
fprintf(fp,"r=%f",r);
fprintf(fp,"k=%4f,h=%4f\n\n",k,h);

for(i=0;i<26;i++){
fprintf(fp,"t=%4f\n",i*0.01);
for(j=0;j<11;j++)
fprintf(fp,"u[%d][%d]=%f\n",i,j,u[i][j]);
fprintf(fp,"\n\n");
}
fclose(fp);
}

相关主题
文本预览
相关文档 最新文档