1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include<conio.h>
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n,m;
float dx,dt,ni=1,u[100][100],tmax,f[100][100],landa,;
float pi=3.141592;
FILE *g;
printf("donner le pas d'espace:\n");
scanf("%f",&dx);
printf("donner la largeur de l'intervalle du temps:\n");
scanf("%f",&tmax);
printf("donner le pas du temps:\n");
scanf("%f",&dt);
n=(int)(1/dx)+1;
m=(int)(tmax/dt);
//dfinition de la fonction f
for(j=0;j<=m;j++)
for(i=0;i<=n;i++)
f[i][j]=2;
//conditions aux limites
for(j=0;j<=m;j++)
u[0][j]=u[n][j]=0;
//conditions initiales
for(i=1;i<n;i++)
u[i][0]=sin(pi*i*dx)+i*dx*(1-i*dx);
//schma d'Euler progressif
landa=dt*ni/(dx*dx);
for(j=0;j<m;j++)
for(i=1;i<n;i++)
u[i][j+1]=(1-2*landa)*u[i][j]+landa*(u[i-1][j]+u[i+1][j])+dt*f[i][j];
//affichage des rsultats
g=fopen("c:\\EUexplicite.txt","w");
for(j=0;j<=m;j++){
for(i=0;i<=n;i++)
fprintf(g,"%2.3f\t",u[i][j]);
fprintf(g,"\n\n");
}
fclose(g);
getch();
return 0;
} |
Partager