点击上方蓝字关注 无距书乡 获取持续更新
在开始今天的正式内容之前,先补充一个创建矩阵的方法——由向量组合成矩阵。A=[1;2;3],B=A+3,C=B+3,A, B, C 均为列向量,矩阵D由向量A, B,C 构成,D=[A B C],则D是一个3x3的矩阵。示例如下:
矩阵的秩
矩阵的秩是矩阵中线性无关的行向量的数目。在matlab中求矩阵的秩用rank()命令,如:求前述矩阵D的秩,通过观察的方法,矩阵的第三行减去第二行后都为1,第二行减去第一行后都为1。此时,矩阵的第二行和第三行都为1,两行线性相关可以消除其中一行,观察可知矩阵的的秩为2,下面用matlab 验证一下。示例如下:
下面我们来随机生成一个矩阵E并求rank(E)。示例如下:
矩阵E的秩为5,说明矩阵E的各行均线性无关。
下面我们对矩阵E做一个简单的改造,将矩阵E的第五行换成第一行和第二行的和,此时矩阵E的第五行就可以用第一行和第二行线性表示了,即第五行可以通过行变换化为全零,此时rank(E)应该等于4。在matlab中验证一下:
简化梯形矩阵
在笔算求矩阵的秩时,通常都会对矩阵做梯形简化,方便观察矩阵的秩,在解线性方程组时也会做这样的简化。matlab中使用rref()命令来获得简化梯形矩阵。示例如下:
通过简化后的梯形矩阵,很容易就能观察到矩阵D的秩为2。
再来看看矩阵E,示例如下:
通过简化后的梯形矩阵,很容易就能观察到矩阵E的秩为4。此处默认将非零行的第一个非零元素化为1,所以后面出现了实数。
线性方程组
有了前面内容的铺垫,现在可以很方便的求解线性方程组的解了,并观察解的性质。给定如下方程组:
将方程组的系数矩阵记作M, 等式右边的向量记作b。则:
看看系数矩阵M的秩:
rank(M)=2,满秩,说明方程组有唯一解。通过消元法,可以很容易解得x1=2,x2=5,这个在中学就学习过。
这里从线性代数的角度来求解这个方程组,一是Cramer 法则求解,二是高斯消元法,分述如下:
1. Cramer 法则:
首先计算系数矩阵的行列式detM;再用向量b替换M的第一列,并计算其行列式detM1,则 x1=detM1/detM; 同理,用b替换M的第二列,计算detM2,则 x2=detM2/detM。下面,在matlab中完成上述计算过程并验证结果。
如上图所示,x1=2,x2=5,结果与笔算一样。这里举例用了二元方程组,对于变量个数多余2的时候,matlab的简便性就更突出了。
2. 高斯消元法
高斯消元法是将系数矩阵M和列向量b组合在一起,做行变换得到简化梯形矩阵,再求解。仍然用上面的方程组做实验:
令:Mb=[M b]
经过梯形简化后,方程组变为如下形式:
一眼就能观察出来,x1=2,x2=5。比高斯消元法还要简单。
再补充一个三元线性方程组:
系数矩阵仍记作M,等式右边的向量记作b。
先计算rank(M):
rank(M)=3,满秩,方程组有唯一解。
先用Cramer 法则求解:
计算各个行列式的值:
计算x1,x2,x3的值:
再看看高斯消元法求解:
经过梯形简化后,方程组变为如下形式:
可以很方便的得到 x1=8,x2=15,x3=6。
解线性方程组是科学计算中的一个很重要很基本的部分,除了上面介绍的方法,关于线性方程组的解法还有很多种,后面会陆续介绍。对于那些不是线性的方程组,在经过简化后,也可以化作线性方程组来求解。所以,线性方程组的解法是科学计算的一个基石。
这么简单实用的工具,不来用一下吗!
长按识别二维码关注我
点个赞,携手共进
回复“ishare”加入社区