首页 > 编程知识 正文

高斯消元法矩阵求逆,matlab中高斯消去法解方程组

时间:2023-05-04 20:12:17 阅读:43541 作者:1313

有多个测试数据。 对于每个组的测试数据,请输入表示方阵阶数的整数n。 然后输入n阶方阵。 输出其逆矩阵。 如果没有逆矩阵,则输出无反转矩阵。

#包含

#包含

#包含

用户命名空间STD;

常数双精度EPS=1e-6;

boolis_zero(constdoublenum ) )。

{

返回传真(num ) eps;

}

void create (双* *矩阵,常数整型) )。

{

矩阵=new double * [ n ];

for(intI=0; i n; I )

矩阵[ I ]=new double [ n ];

}

void input (双* *矩阵,常数输入) )。

{

for(intI=0; i n; I )

{

for(intj=0; j n; j )

CIN矩阵[ I ] [ j ];

}

}

bool inverse (双* *矩阵1,双* *矩阵2,常数int n ) ) ) )。

{

int i,j;

for(I=0; i n; I )

{

for(j=0; j n; j )

{

if(I==j ) ) )。

矩阵2 [ I ] [ j ]=1;

else

矩阵2 [ I ] [ j ]=0;

}

}

for(I=0; i n; I )

{

int rowmaxpos=i;

for(j=I1; j n; j )

{

if (矩阵1 [ I ] [ j ]矩阵1 [ I ] [ row maxpos ] )

rowmaxpos=j;

}

for(j=I; j n; j )

{

swap (矩阵1 [ j ] [ row maxpos ],矩阵1 [ j ] [ I ];

swap (矩阵2 [ j ] [ row maxpos ],矩阵2 [ j ] [ I ];

}

if (! is _ zero (矩阵1 [ I ] [ I ] ) )

{

int divisor=矩阵1 [ I ] [ I ];

for(j=I; j n; j )

{

矩阵1 [ I ] [ j ]/=戴维森;

矩阵2 [ I ] [ j ]/=戴维森;

}

for(j=I1; j n; j )

{

int multiple=矩阵1 [ j ] [ I ];

for(intk=I; k n; k )

{

矩阵1 [ I ] [ j ]-=矩阵1 [ I ] [ k ] * multiple;

矩阵2 [ I ] [ j ]-=矩阵2 [ I ] [ k ] * multiple;

}

}

}

else

返回假;

}

返回真;

}

void output (双* *矩阵,常数输入) )。

{

for(intI=0; i n; I )

{

for(intj=0; j n; j )

cout matrix[i][j] ';

出局了

}

}

void destroy (双* *矩阵,常数输入) ) ) ) ) ) ) ) )。

{

for(intI=0; i n; I )

delete [ ]矩阵[ I ];

delete [ ]矩阵;

}

int main () )

{

int n;

双精度* *矩阵1;

双精度* *矩阵2;

wile(CINn ) ) )。

{

创建(矩阵1,n );

创建(矩阵2,n );

输入(矩阵1,n );

if (inverse (矩阵1,矩阵2,n ) )

输出(矩阵2,n );

else

cout 'No inverse matrix' endl;

estroy (矩阵1,n );

estroy (矩阵2,n );

}

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。