Algortimo matrice INVERSA funzionante

pollon871
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 \(\displaystyle I \) a matrice identica;
* effettuo la fattorizzazione \(\displaystyle 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];
             };
          };
       };
    };


A questo punto non capisco. Ripeto, il codice funziona, mi sono basata su una bozza del libro e funziona. Quello che non riesco a capire è proprio il significato del codice! La parte cui mi riferisco è questa

{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];
             };


Non riesco a capire tutti quei ciclio for innestati (B sarà l'inversa di A).

Qualcuno può spiegarmeli? Grazie!

Risposte
PadreBishop
Mi sembra che, una volta raccolto il vettore $ x$ lo metta semplicemente al suo posto nella matrice inversa $\mathbb B.$, e per trovare il posticino giusto dove mettere $x(i)$ faccia due cicli, uno per sapere in che colonna vada ed uno per sapere che elementino $i-esimo$ si sta cercando di piazzare da $ x$ a $\mathbb B.$

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.