大家好,感謝大家對matlab愛好者公眾號的厚愛!如果公眾號文章對您有幫助,別忘了分享和點讚哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言,我們會第一時間改善改進!
有流量的可以直接戳視頻
二狗在用matlab學習編程過程中,發現matlab中有大量矩陣運算,矩陣的知識了解不到位,在學習算法的過程中無法找到合適的解決問題的方法或者出現編程錯誤。好比英語發音規則都不懂,如何說一口流利的英語?地基不牢,地動山搖。這不前兩天二狗做BP算法的時候涉及到矩陣求導,這可難到二狗了,非方陣矩陣的逆矩陣怎麼求?方陣的導怎麼寫等,涉及到一系列二狗之前沒有考慮過的問題,經過一番掙扎決定還是一步一個腳印和大家學習基礎知識吧。
如果想matlab應用的得心應手,矩陣的基礎知識是必不可少的,二狗將會連續更新關於矩陣的基本運算的知識,如果大家覺得有用請持續關注「MATLAB愛好者公眾號」。
先從最基本的行列式講起。行列式是一種特定的算式,它是我們今後學習矩陣的一個基本工具。
記
該表示方式即為二階行列式
即為三階行列式
由兩個案例可知二項式和三項式是每行和每列不同數的乘積,再冠以正負號得到的一個代數和,該法則對所有的多項式都成立。
雖然多項式的運算法則說的很簡單,但比如給你個10x10的行列式你就很難算出行列式的值。怎麼辦?可以用降階的辦法將10X10化為2X2的不就簡單了?實際10X10化2X2也很麻煩,好比給二狗一個很複雜的加減乘除運算,二狗也很容易出錯,但降階確實是解題的思路。在此引入餘子式的辦法來降階。
在行列式中划去aij所在的第i行元素和第j列元素,剩下元素按原位置順序組成的(n-1)階行列式就叫做aij的餘子式記做Mij,稱(-1)i+jMij為aij的代數餘子式記做Aij。
利用代數餘子式即可將n階行列式寫成(n-1)的運算比如三階行列式即可寫成:
對三階行列式的另外六項做組合還可以寫成:
由行列式的定義可知,當行列式的階數n比較大時,直接用定義計算行列式比較複雜,當然用matlab還是很簡單的。但二狗還是要給大家講行列式的一些性質,用以簡化行列式的運算以及以後矩陣的運算也會用到相關知識。
(1)將行列式的各行與各列與同序號的列互換,所得到的行列式稱為行列式的轉置。
記:
為
的轉置。
由計算很容易可知D與DT相等。涉及到的行列式性質二狗嫌證明太繁瑣,大家記住二狗說的是對的就行了,二狗會用matlab進行驗證行列式的各種性質的,實踐是檢驗性質的唯一標準。
(2)對換列式的兩行或兩列,行列式變號。
(3)行列式中i行和j行對應的元素相等,行列式的值為零。
(4)行列式的某一行中的所有元素都乘以同一個數K,等於K乘以這個行列式。
(5)如果行列式中某一行(列)的每一個元素的是兩個元素的和,行列式等於把這兩個元素拆分後的行列式和。
本期行列式的內容就算講完了,行列式的應用主要是求解方程組,
Ps:行列式必須是正階的即ai,j(i=j)比如
就不存在。算不出具體值
編程討論:函數det()可直接求得行列式的具體值。那麼如何根據代數餘子式降階法自己設計程序來計算行列式的值。二狗期待各位對編程感興趣的讀者嘗試一下,二狗也會在下期給出自編的求行列式值的程序。
行列式相關MATLAB代碼
clear allsyms x1 x2 x3 y1 y2 y3 format banka=round(8*rand(3));%round:隨機生成的矩陣為一3*3維的方陣,矩陣的元素為0-8之間的整數x=[x1;x2;x3];y=a*x;D=det(a);%求行列式a的值%aa=round(8*rand(3,4));det(aa)%% 求行列式的代數餘子式[n,m]=size(a);for i=1:n ni=1:n; ni(i)=[]; for j=1:m mj=1:m; mj(j)=[]; A(i,j)=(-1)^(i+j)*det(a(ni,mj)); endenda(1,1)*A(1,1)+a(2,1)*A(2,1)+a(3,1)*A(3,1)-det(a)==0;a(2,1)*A(2,1)+a(2,2)*A(2,2)+a(2,3)*A(2,3)-det(a)==0;%行列式和轉置行列式值相等det(a)==det(a')%對換列式的兩行(列),行列式變號。b=a;c=a; c(:,1)=c(:,2);c(:,2)=a(:,1);det(c)/det(b)==-1;%行列式的某一行(列)中的所有元素都乘以同一個數K,等於K乘以這個行列式e=a;e(:,1)=3*a(:,1);det(e)/det(a);%如果行列式中某一行(列)的每一個元素的是兩個元素的和,行列式等於把這兩個元素拆分後的行列式和。f=[1,x1+y1,2;3,x2+y2,4;5,x2+y2,6];g=[1,x1,2;3,x2,4;5,x2,6];h=[1,y1,2;3,y2,4;5,y2,6];det(f)-det(g)-det(h)==0;
看完還想看 (點擊下方文字直接訪問)
神經網絡連載(四)
神經網絡連載(三)
科研小助手推薦 第四期
科研小助手推薦第二期
模擬退火算法優化指派問題
本文作者:過冷水