Salve, mi presento ,mi chiamo Antonio e dopo qualche anno di inattività ho ricominciato ad utilizzare nuovamente C. Magari per chi è esperto questo post è inutile, però per un nuovamente principiante come me con questo posso solo trarre informazioni utili sui miei errori.
Il gcc è pulito. L'esecuzione non rispetta i risultati previsti. Sto usando Devc++ per Windows 7.
//Risolvere il problema della distribuzione di calore per una barra di alluminio di lunghezza L = 1m con condizioni di bordo ed iniziali note
#include <stdio.h>
#include <stdlib.h>
int main ()
{ int nx=101, nt=50; // Formato griglia
double dx=0.01, dt=0.1; // Passo
double kappa=0.12; // conduttività termica
double cal=0.113; // calore specifico
double rho=7.8; // densità alluminio
double cons=(kappa*dt)/(cal*rho*dx*dx);
double matrix[nx][nt];
int ix;
int t;
FILE *output;
int ch=20;
char out[ch];
printf("Inserisci nome output\n");
scanf("%s",out);
output = fopen(out,"w");
for (ix=1; ix<nx-1; ix++) {
matrix[ix][0]=100.;
} //Inizializzazione
matrix[0][0] = 0.;
matrix[0][50] = 0.;
matrix[nx-1][0] = 0.;
matrix[nx-1][50] = 0.;
if (cons >=0.25)
fprintf(output,"La soluzione dell'equazione differenziale diverge->%lf\n",cons);
else
fprintf(output,"Procediamo. La costante rientra nei parametri->%lf \n",cons);
for (t=0; t<=nt; t++)
{
for (ix=0; ix<=nx-1; ix++)
{matrix[ix][t+1]= matrix[ix][t]+cons*(matrix[ix+1][t]+matrix[ix-1][t]-2.*matrix [ix][t]);
if (t%10==0|| t==50)
{for (ix=0; ix<=nx; ix++)
fprintf(output," %d\n",matrix[ix][t]);
for (ix=1; ix<=nx-1; ix++)
{
matrix[ix][0] = matrix[ix][50];}
fprintf(output,"%d \n",matrix[ix][t]);
}
fclose(output);
}
}
}