xiedaicheng.cpp
来自「计算方法的一个比较重要的高斯约当消去方法」· C++ 代码 · 共 83 行
CPP
83 行
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<math.h>
#define N 2
int themax(double a[][2*N],int k)
{
int i;
int result=k;
for(i=k;i<N;i++)
if(fabs(a[i][k])>fabs(a[result][k]))
result=i;
return result;
}
void exchange(double a[][2*N],int row1,int row2)
{
int i;
double m;
for(i=0;i<2*N;i++)
{
m=a[row1][i];
a[row1][i]=a[row2][i];
a[row2][i]=m;
}
}
void main(void)
{
double a[N][2*N];
int k=0;
int r,j;
double n;
for(r=0;r<N;r++)
for(j=0;j<2*N;j++)
a[r][j]=0;
cout<<"请输入所要求的矩阵:"<<endl;
for(r=0;r<N;r++)//输入的是单位矩阵
a[r][r+N]=1;
for(r=0;r<N;r++)
{ for(j=0;j<N;j++)
cin>>a[r][j];
}
for(k=0;k<N;k++)
{
r=themax(a,k);
if(a[r][k]==0)
{
cout<<"无法计算,因为为奇异矩阵"<<endl;
exit(1);
}
exchange(a,r,k);
n=a[k][k];
for(j=0;j<2*N;j++)//将主原那行同除以a[k][k]
{
a[k][j]=a[k][j]/n;
}
for(r=0;r<N;r++)
{
if(r!=k)
{ n=a[r][k];
for(j=0;j<2*N;j++)
a[r][j]=a[r][j]-n*a[k][j];
}
}
}
cout<<"他的逆矩阵是:"<<endl;
for(r=0;r<N;r++)
{ for(j=N;j<2*N;j++)
cout<<a[r][j]<<" ";
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?