Ciao a tutti. Prima di pubblicare l'intero codice (che funziona) vi spiego il mio problema, che è più di teoria che di codice.
Allora per calcolare la matrice inversa di una generica matrica A di ordine n i passi che seguo nel mio algoritmo sono i seguenti:
* inizializzo una matrice I a matrice identica;
* effettuo la fattorizzazione LU di A;
* calcolo il determinante per capire se la matrice è o meno singolare;
* se A non è singolare procedo con il calcolo dell'inversa in questo modo:
{for(k=0;k<n;k++)
{for(j=0;j<n;j++)
e[j]=I[k][j]; /* e è il jesimo versore della base canonica*/
forlu(n, ipiv, A, y, e); /*considero il sistema Ay=e */
backlu(A, y, n, x, ipiv); /*La soluzione x di tale sistema è la jesima colonna della matrice inversa di A */
{for(j=0;j<n;j++)
if(j==k)
{for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(j==k)
B[i][k]=x[i];
};
};
};
};
ciò che non capisco è il secondo ciclo for
{for(j=0;j<n;j++)
if(j==k)
{for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(j==k)
B[i][k]=x[i];
};
};