• 大小: 401KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签:

资源简介

课程作业,采用初等行变换求矩阵的逆矩阵,c语言实现,程序可在不同编译器上编译成功

资源截图

代码片段和文件信息

/* 1.求Q上方阵的行列式,如果行列式≠0,求逆矩阵。
   中国科技大学信息科学与技术学院 
   刘迪源  SA12006054
   2012.10.13
*/
#include
#include //clock()1
#include
using namespace std;
int str_cut(char in[]char word[][50]);
double** readArray(int &Mint &N);
void display(double **Qint Hint L);
int main()
{
int M=0N=0;
double **Q;
char way;
cout<<“      矩阵求逆程序:\n直接从\“需要求逆的矩阵.txt\“文件中读取矩阵请按数字键1,回车\n现在即时输入矩阵请按其他键,回车“< cin>>way;
    if(way==‘1‘)
{
      Q=readArray(MN);
  if(M!=N){cout<<“矩阵不是方阵!“<>way;exit(0);}
 cout<<“待求逆矩阵:\n“; display(QMN);
}
else 
{
cout<<“请输入矩阵行数M:“;cin>>M;N=M;cout< Q=new double*[M]; for(int i=0;i cout<<“开始输入“< for(int i=0;i {
for(int j=0;j {
cout<<“Q[“<>Q[i][j];
}
cout< }
cout<<“待求逆矩阵:\n“;display(QMN);
}

clock_t begin end;//clock()2
double  cost;
begin = clock();

FILE *fp=fopen(“求逆结果.txt““w“);

double **QE=new double*[N]; for(int i=0;i for(int i=0;i {
for(int j=0;j<2*N;j++)
{
if(j else {if(i+N!=j) QE[i][j]=0;else QE[i][j]=1;}
}
}
 
    double Qvalue=1;
for(int j=0;j {

bool az=true;int nz_i; for(int i=j;i1e-13 ||QE[i][j]<-1e-13){az=falsenz_i=i;break;}
if(az){cout<<“|Q|=0  Matrix irreversible!“< else if(QE[j][j]<1e-13 && QE[j][j]>-1e-13) //QE[j][j]==0
{
double temp;
for(int k=j;k<2*N;k++){temp=QE[j][k]QE[j][k]=QE[nz_i][k]QE[nz_i][k]=temp;}
}
        for(int i=j+1;i {
   double multiple=QE[i][j]/QE[j][j];
   if(multiple>1e-13 ||multiple<-1e-13)
   {
     for(int k=j;k<2*N;k++) QE[i][k]-=multiple*QE[j][k];
   }

}
    Qvalue *= QE[j][j];


for(int j=N-1;j>=0;j--)
{
        for(int i=j-1;i>=0;i--)
{
   double multiple=QE[i][j]/QE[j][j];
   if(multiple>1e-13 ||multiple<-1e-13)
   {
     for(int k=j;k<2*N;k++) QE[i][k]-=multiple*QE[j][k];
   }

}
   if(QE[j][j]!=1) for(int k=2*N-1;k>=j;k--) QE[j][k]/=QE[j][j];
}

    double **Q_INV=new double*[N]; for(int i=0;i for(int i=0;icout<<“逆矩阵:“<    display(Q_INVNN);
    cout<<“行列式值:|Q| = “< fclose(fp);
cout<<“逆矩阵已存入\“求逆结果.txt\“文件中“< delete [] QQEQ_INV;

end = clock();//clock()3
cost = (double)(end - begin) / CLOCKS_PER_SEC;
if(cost>0.0001)
  printf(“求解时间:%15.6lf seconds\n“ cost);

cin>>way;
 return 0;
}

int str_cut(char in[]char word[][50])//通过空格、制表符、回车符标志将字符串切分成子串,返回子串个数
{
char endchar[10]=“ \n\t;,;“;
int j=0i=0sumw=0endnull;
 for(int i0=0;i0 {
if(!strrchr(endcharin[i0]))
{word[j][i]=in[i0];i++;endnull=0;}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        264  2012-10-13 09:24  矩阵求逆\debug\求逆结果.txt

     文件     172032  2012-10-13 09:20  矩阵求逆\debug\矩阵求逆.exe

     文件        102  2012-10-13 09:06  矩阵求逆\debug\需要求逆的矩阵.txt

     文件       7008  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug\BuildLog.htm

     文件         67  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug\mt.dep

     文件     125952  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug\vc80.idb

     文件        145  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug\矩阵求逆.exe.intermediate.manifest

     文件     192248  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug\矩阵求逆.obj

     文件       2183  2012-10-11 18:25  矩阵求逆\矩阵求逆\其他\wrong.cpp

     文件       3788  2012-10-12 13:32  矩阵求逆\矩阵求逆\其他\复件 (2) 矩阵求逆.cpp

     文件       2167  2012-10-12 17:59  矩阵求逆\矩阵求逆\其他\复件 矩阵求逆.cpp

     文件       1963  2012-10-11 16:53  矩阵求逆\矩阵求逆\其他\矩阵求逆_cout.cpp

     文件       1944  2012-10-11 17:00  矩阵求逆\矩阵求逆\其他\矩阵求逆_printf.cpp

     文件        264  2012-10-13 09:14  矩阵求逆\矩阵求逆\求逆结果.txt

     文件       4227  2012-10-13 09:20  矩阵求逆\矩阵求逆\矩阵求逆.cpp

     文件       3070  2012-10-11 08:43  矩阵求逆\矩阵求逆\矩阵求逆.vcproj

     文件       1427  2012-10-13 09:21  矩阵求逆\矩阵求逆\矩阵求逆.vcproj.PC-201110311654.Administrator.user

     文件        102  2012-10-13 09:06  矩阵求逆\矩阵求逆\需要求逆的矩阵.txt

     文件    1813504  2012-10-13 09:21  矩阵求逆\矩阵求逆.ncb

     文件        901  2012-10-11 08:21  矩阵求逆\矩阵求逆.sln

    ..A..H.     12800  2012-10-13 09:21  矩阵求逆\矩阵求逆.suo

     目录          0  2012-10-13 09:20  矩阵求逆\矩阵求逆\Debug

     目录          0  2012-10-13 09:21  矩阵求逆\矩阵求逆\其他

     目录          0  2012-10-13 09:22  矩阵求逆\debug

     目录          0  2012-10-13 09:21  矩阵求逆\矩阵求逆

     目录          0  2012-10-11 08:41  矩阵求逆

----------- ---------  ---------- -----  ----

              2346158                    26


评论

共有 条评论

相关资源