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的矩陣。示例如下:
矩陣的秩
矩陣的秩是矩陣中線性無關的行向量的數目。在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”加入社區
總結
以上是生活随笔為你收集整理的c++求矩阵的秩_Matlab:矩阵的秩,简化梯形矩阵和线性方程组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派3 有线静态路由设置_clash在
- 下一篇: android 动画 最顶层_【Andr