博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TOJ5272: 逆矩阵
阅读量:6184 次
发布时间:2019-06-21

本文共 1452 字,大约阅读时间需要 4 分钟。

5272: 逆矩阵 分享至QQ空间

Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
Total Submit: 11            Accepted:7

Description

 

 

设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得:AB=BA=E(单位矩阵)。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。

现在告诉你一个n阶方阵A,求它的逆矩阵B。

blob.pngblob.png

 

 

Input

 

 

输入数据有多组,第一行为数据组数T,接下来有T个矩阵。

每个矩阵的第一行为n(n<20),表示n阶方阵,接下来的n行n列表示n*n的矩阵

矩阵元素为实数。

 

 

Output

 

 

按照n行n列输出逆矩阵B,所有元素保留2位小数。数据保证一定有逆矩阵。

 

 

Sample Input

 

1

5
1.3 0.8 0.5 0.8 1.0
0.5 0.6 1.0 1.3 1.0
0.8 1.4 0.9 1.1 1.4
1.0 0.6 0.8 1.4 0.5
0.7 0.6 1.4 1.4 1.2

Sample Output

 

0.86 -1.37 -0.36 0.37 0.69

-1.10 -1.90 1.71 0.93 0.12
-1.08 -4.01 0.72 0.64 3.14
0.01 3.06 -0.61 0.33 -1.99
1.29 2.85 -0.77 -1.81 -0.97

Source

我提供了两种方法

LU分解

#include
const int N=21;double a[N][N],b[N][N],c[N][N],bt[N][N],ct[N][N],ans[N][N];int T,n;void LU(){ for(int i=0; i
=0; j--) { s=0; for(int k=j+1; k<=i; k++) s+=c[j][k]*ct[k][i]; ct[j][i]=-s/c[j][j]; } for(int i=0; i

Gauss 消元

#include
#include
#include
const double eps=1e-4;const int N=21;double a[N][N],b[N],x[N],s,t[N][N],ans[N][N];int n;void gauss(){ int i; for(int k=1; k<=n; k++) { for(i=k; i<=n&&fabs(a[i][k])
=1; --i) { s=b[i]; for(int j=i+1; j<=n; j++)s-=x[j]*a[i][j]; x[i]=s/a[i][i]; if(fabs(x[i])

 

转载于:https://www.cnblogs.com/BobHuang/p/9760883.html

你可能感兴趣的文章
高可用性及容灾的几个衡量指标
查看>>
Mysql最后补充+Java连接数据库
查看>>
前台语言与后台语言的本质区别
查看>>
机器学习实战第三章决策树
查看>>
Linux软件包安装和卸载(yum)
查看>>
添加device
查看>>
Kubernetes 之 kubeadm最佳实践
查看>>
计算机硬件系统组成--控制器(上)
查看>>
关于分页杂记
查看>>
企业网盘在企业数据管理中的优势
查看>>
我们是如何实现边缘计算与网络动态加速的?
查看>>
儒博受邀出席圣彼得堡国际经济论坛,探讨人工智能时代的教育话题
查看>>
nmon性能测试
查看>>
字符编码笔记:ASCII,Unicode和UTF-8
查看>>
Java中的String,StringBuilder,StringBuffer三者的区别
查看>>
ubuntu 下修改MySQL 的root用户密码
查看>>
java线程总结
查看>>
MVC框架显示层——Velocity技术
查看>>
POI通过模板导出EXCEL文件
查看>>
进一步理解动态规划
查看>>