ciao a tutti ,giusto per imparare sto realizzando un " pacchetto " dii programmi in C che abbia le seguenti caratteristiche:
uno dei programmi legge da file una matrice quadrata (scritta da un altro prog con successo) e scrive su un altro file il risulatato della eliminazione di gauss (senza pivotng ma la versione semplificata)..
ed il valore deldeterminante....
lo scopo è di ripetere l'esecuzione del pacchetto un numero grande di volte e siccome la matrice di partenza è sempre diversa , studiare la distribuzione o istogramma del determinante .....
mi potete dare qualche consiglio? e poi guardate cosa mi da in output il programma (che è compilato senza errori)
velo posto
ma premetto che questa versione è di prova: nn dovrebbe applicare nessun algoritmo alla matrice ma solo ristamparla ugualle in un altro file,,,,giusto per vedere l'uso di fscanf con gli array...poi parliamo della eiminazione se vedo che nn trovo soluzioni
grazie in anticipo
codice:
#include <stdio.h>
#include <stdlib.h>
#define MAXCOL 10
int i,j;
double mat[MAXCOL][MAXCOL];
double triang[MAXCOL][MAXCOL];
double det ;
double eliminazione (double mat[MAXCOL][MAXCOL]);
double determinante (double triang[MAXCOL][MAXCOL] );
int main (){
double det ;
double mat [MAXCOL][MAXCOL];
FILE *outfile ;
FILE *outfile1 ;
outfile1 = fopen("matrici.dat", "r");
outfile = fopen("det.dat", "w");
for (i=0 ; i<MAXCOL;i++){
for (j= 0; j< MAXCOL;j++){
fscanf(outfile1, "%f \n ", &mat[i][j]);
printf("%f " , mat [i][j]);
}
printf("\n");
}
/*
for (i=0 ; i<MAXCOL;i++){
for (j= 0; j< MAXCOL;j++){
fprintf (outfile ,"%f ",mat[i][j] );
}
fprintf(outfile, "\n ");
}
*/
triang[i][j] = eliminazione (mat) ;
det = determinante (triang);
//printf("\n\n\n" );
// printf("%f\n", det );
fclose (outfile);
fclose (outfile1);
return 0;
}
double eliminazione ( double mat [MAXCOL][MAXCOL]) {
int i,j,k;
double triang [MAXCOL][MAXCOL];
double tmp[MAXCOL][MAXCOL];
for (k=0 ; k < MAXCOL; k++){
for (i = k +1 ;i < MAXCOL; i++){
tmp [i][k] = mat[i][k] ;
for (j = k; j < MAXCOL +1 ; j ++ ){
//triang [i][j] = - tmp/ mat[i][k] ;
}
}
}
return triang[MAXCOL][MAXCOL] ;
}
double determinante (double triang [MAXCOL][MAXCOL]){
int i;
double det = 1;
for (i =0 ; i< MAXCOL ; i++){
det *= triang [i][i];
}
return det;
}