Ich habe Probleme, den gesamten folgenden Code zu verstehen. Ich denke, dass der mittlere Abschnitt des Codes, den ich hervorhebe, eine Multiplikation durchführt, aber ich bin mir nicht sicher, kann mir bitte jemand erklären, was der mittlere Teil des Codes zu erreichen versucht?Matrixmanipulationscode, der unbekannte Operationen ausführt
Ich verstehe die Eingabe und Ausgabe Teile der Array-Elemente, aber nicht die tatsächlichen Manipulationen.
Ich verstehe dies:
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int i,j,k,n;
float a[100][200],t;
cout<<"Enter order of matrix-";
cin>>n;
cout<<"Enter elements of matrix"<<endl;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
Aber die folgenden Zeilen sind verwirrend:
for(i=0;i<n;i++)
{
for(j=n;j<2*n;j++)
{
if(i==j-n)
a[i][j]=1;
else
a[i][j]=0;
}
}
for(i=0;i<n;i++)
{
t=a[i][i];
for(j=i;j<2*n;j++)
a[i][j]=a[i][j]/t;
for(j=0;j<n;j++)
{
if(i!=j)
{
t=a[j][i];
for(k=0;k<2*n;k++)
a[j][k]=a[j][k]-t*a[i][k];
}
}
}
Auch hier sind die folgenden Zeilen sind verständlich:
cout<<"\n\nInverse matrix\n\n";
for(i=0;i<n;i++)
{
for(j=n;j<2*n;j++)
cout<<"\t"<<a[i][j];
cout<<"\n";
}
return 0;
}
Gibt es eine einfachere Methode, dies zu tun? – Ahmed
nicht im Allgemeinen. Wenn Ihre Matrix 2x2 ist, können Sie etwas verwenden, das Cramer'sche Regel genannt wird, aber im Allgemeinen stecken Sie bei dieser oder "Singulärwertzerlegung" fest, um eine Pseudoinverse zu erhalten, die wesentlich komplizierter ist.Das Buch der numerischen Rezepte hat SVD, so dass Sie die Komplexität vergleichen können, wenn Sie möchten. –