c++求矩阵的秩_Matlab:矩阵的秩,简化梯形矩阵和线性方程组

点击上方蓝字关注 无距书乡 获取持续更新

在开始今天的正式内容之前,先补充一个创建矩阵的方法——由向量组合成矩阵。A=[1;2;3],B=A+3,C=B+3,A, B, C 均为列向量,矩阵D由向量A, B,C 构成,D=[A B C],则D是一个3x3的矩阵。示例如下:

35878f86e279a055bcc9095ee4f4b8fc.png

9441a5b1bba615456b36c177066e68c2.png

矩阵的秩

矩阵的秩是矩阵中线性无关的行向量的数目。在matlab中求矩阵的秩用rank()命令,如:求前述矩阵D的秩,通过观察的方法,矩阵的第三行减去第二行后都为1,第二行减去第一行后都为1。此时,矩阵的第二行和第三行都为1,两行线性相关可以消除其中一行,观察可知矩阵的的秩为2,下面用matlab 验证一下。示例如下:

ce476234f94f6b8686e7639010712671.png

下面我们来随机生成一个矩阵E并求rank(E)。示例如下:

768b5b52908ccacb69354d0490756d36.png

矩阵E的秩为5,说明矩阵E的各行均线性无关。

下面我们对矩阵E做一个简单的改造,将矩阵E的第五行换成第一行和第二行的和,此时矩阵E的第五行就可以用第一行和第二行线性表示了,即第五行可以通过行变换化为全零,此时rank(E)应该等于4。在matlab中验证一下:

c455d30be4c896569a4370554766967e.png

简化梯形矩阵

在笔算求矩阵的秩时,通常都会对矩阵做梯形简化,方便观察矩阵的秩,在解线性方程组时也会做这样的简化。matlab中使用rref()命令来获得简化梯形矩阵。示例如下:

7a1f1de840da953c5ed208b83ec19a03.png

通过简化后的梯形矩阵,很容易就能观察到矩阵D的秩为2。

再来看看矩阵E,示例如下:

af5651c01721833b519b480aa00f70c9.png

通过简化后的梯形矩阵,很容易就能观察到矩阵E的秩为4。此处默认将非零行的第一个非零元素化为1,所以后面出现了实数。

线性方程组

有了前面内容的铺垫,现在可以很方便的求解线性方程组的解了,并观察解的性质。给定如下方程组:

b08ae5ca7661c15e38ef360b8dfc961f.png

将方程组的系数矩阵记作M, 等式右边的向量记作b。则:

21baa26c4a63af76e298feab2cf1b8d9.png

看看系数矩阵M的秩:

b5bace54d37df4ebc57ed437ba303845.png

rank(M)=2,满秩,说明方程组有唯一解。通过消元法,可以很容易解得x1=2,x2=5,这个在中学就学习过。

这里从线性代数的角度来求解这个方程组,一是Cramer 法则求解,二是高斯消元法,分述如下:

1. Cramer 法则:

首先计算系数矩阵的行列式detM;再用向量b替换M的第一列,并计算其行列式detM1,则 x1=detM1/detM; 同理,用b替换M的第二列,计算detM2,则 x2=detM2/detM。下面,在matlab中完成上述计算过程并验证结果。

5594f0c72954ab3e8aa4c7bb85063f12.png

45bb48b32c5f2e4cd2082eb79d9cd8ab.png

e0d93119c0c22dfaf49beb773406dcb4.png

如上图所示,x1=2,x2=5,结果与笔算一样。这里举例用了二元方程组,对于变量个数多余2的时候,matlab的简便性就更突出了。

2. 高斯消元法

高斯消元法是将系数矩阵M和列向量b组合在一起,做行变换得到简化梯形矩阵,再求解。仍然用上面的方程组做实验:

令:Mb=[M b]

2959876261629e4abde078bfdb97c0a3.png

经过梯形简化后,方程组变为如下形式:

dfaddce042f0bcfc49c68f7c81f7c5e6.png

一眼就能观察出来,x1=2,x2=5。比高斯消元法还要简单。

再补充一个三元线性方程组:

d76228557d3fbddbb3c7abbe7bb61acd.png

系数矩阵仍记作M,等式右边的向量记作b。

先计算rank(M):

500cd400c6ba7fb629be1895e02fb3aa.png

rank(M)=3,满秩,方程组有唯一解。

先用Cramer 法则求解:

f4f5a1567b755d15ce4d061fcee61cdf.png

计算各个行列式的值:

160bcb12a6a6184d48a0a3b6c9372c46.png

计算x1,x2,x3的值:

a19af13ff58fff43a8522616ca14c659.png

再看看高斯消元法求解:

0f8e290f970a531a257f56dfbaebffed.png

经过梯形简化后,方程组变为如下形式:

fe159361994eaa0f4b7ccbd0006d391b.png

可以很方便的得到 x1=8,x2=15,x3=6。

解线性方程组是科学计算中的一个很重要很基本的部分,除了上面介绍的方法,关于线性方程组的解法还有很多种,后面会陆续介绍。对于那些不是线性的方程组,在经过简化后,也可以化作线性方程组来求解。所以,线性方程组的解法是科学计算的一个基石。

这么简单实用的工具,不来用一下吗!

长按识别二维码关注我

f544f6c65a124baac2f596875ff150ed.png

点个赞,携手共进

回复“ishare”加入社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值