Здравствуйте, помогите пожалуйста разобраться с готовым кодом поиска обратной матрицы. Вот весь код программы:
| Код | #include <stdio.h> #include <stdlib.h> main() { int i,j,k,n; double a[5][5]; double e[5][5]; double tmp; printf("Vvedite razmerost: "); scanf("%d",&n);
randomize(); for (i=0;i<n;i++,printf("\n")) for (j=0;j<n;j++) printf("%.2lf ",a[i][j]=(random(10)+1)*0.94);
// initializing matrix e for (i=0;i<n;i++) for (j=0;j<n;j++) e[i][j]=(i==j?1:0);
// converting matrix to e for(i=0;i<n;i++) { // normalizing row (making first element =1) tmp=a[i][i]; for(j=n-1;j>=0;j--) { e[i][j]/=tmp; a[i][j]/=tmp; } // excluding i-th element from each row except i-th one for(j=0;j<n;j++) if (j!=i) { tmp=a[j][i]; for(k=n-1;k>=0;k--) { e[j][k]-=e[i][k]*tmp; a[j][k]-=a[i][k]*tmp; } } } printf("\n"); for (i=0;i<n;i++,printf("\n")) for (j=0;j<n;j++) printf("%.2lf ",e[i][j]); }
|
Объясните сам алгоритм обращения матрицы. Просто при сдаче программы необходимо будет рассказать по какой формуле(алгоритму) происходят все эти преобразования, а я не могу разобраться,т.к. недавно столкнулся с программированием. |