- #include<iostream>
- using namespace std;
- #define n 3
- int main()
- {
- int i,j,k;
- double m;
- double a[n][n],E[n][n];
- //单位矩阵E[n][n]
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- if(i==j)
- E[i][j]=1;
- else
- E[i][j]=0;
- }
- }
- //输入矩阵a[n][n]
- cout<<"输入矩阵:"<<endl;
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- cin>>a[i][j];
- }
- }
- //上三角变换
- for(k=0;k<n-1;k++)
- {
- for(i=k+1;i<n;i++)
- {
- m=a[i][k]/a[k][k];
- for(j=0;j<n;j++)
- {
- a[i][j]=a[i][j]-m*a[k][j];
- E[i][j]=E[i][j]-m*E[k][j];
- }
- }
- }
- //下三角变换
- for(k=n-1;k>0;k--)
- {
- for(i=k-1;i>=0;i--)
- {
- m=a[i][k]/a[k][k];
- for(j=0;j<n;j++)
- {
- a[i][j]=a[i][j]-m*a[k][j];
- E[i][j]=E[i][j]-m*E[k][j];
- }
- }
- }
- //单位矩阵……
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- E[i][j]=E[i][j]/a[i][i];
- }
- }
- //输出矩阵的逆
- cout<<"矩阵的逆是:"<<endl;
- for(i=0;i<n;i++)
- {
- for(j=0,k=0;j<n;j++)
- {
- cout<<E[i][j]<<"\t";k++;
- if(k==n)
- cout<<endl;
- }
- }
- }