三個元素的矩陣乘除法

2021-09-06 10:24:07 字數 1395 閱讀 8063

總結一下就是,如果a和b兩個矩陣要相乘,a的列數要和b的行數相同的,其實矩陣就是線性代數中對多項式常量的一種抽象表達。

比如:a是2 * 80的矩陣,b是80*2的矩陣,得出的還是2*2的矩陣,簡單說就是結果是a的行*b的列的矩陣,哪怕a的列是10000呢,b的行是10000,都不影響a*b的行列數,a的列只能等於b的行,否則就無法相乘。

所謂矩陣鏈乘法就是:a*b*c*d*e*f......

那a*b*c的的行列到底是多少呢,其實就是a的行*c的列,中間的根本對結果的行列樹無法影響,但是根據乘法的結合律a*b*c,可以是先算a*b,再算*c,先說b*c再算*a,就是(a*b)*c或者a*(b*c),這就有個取捨的問題,也許b*c得到的行列式很小,這樣乘法的計算次數比前者要少很多。

這就引入了動態規劃演算法對a*b*c到底擴上哪個計算次數較少的話題。

以兩個矩陣相乘為例,a1*a2,a1和a2為兩個矩陣,假設a1的行列數是p*q,a2的行列數是q*r。注意這裡由於是a1乘以a2,所以a1的列數要等於a2的行數,否則無法做矩陣乘法,滿足上述條件的矩陣,我們稱之為「相容」的。那麼對於a1*a2而言,我們需要分別執行p*r次對應a1的行元素乘以a2的列元素,根據線性代數知識,不難得出我們一共需要執行p*q*r次乘法。

對於兩個矩陣相乘,一旦矩陣的大小確定下來了,那麼所需執行的乘法次數就確定下來了。那麼對於兩個以上的矩陣呢?是不是也是這樣呢。實際上,對於多個矩陣相乘,乘法執行的次數與「劃分」有關。例如:   

以矩陣鏈為例,假設三個矩陣的規模分別為10x100,100x5和5x50。

①以((a1*a2)*a3)方式劃分,乘法執行次數為:10*100*5+10*5*50=5000+2500=7500次

②以(a1*(a2*a3))方式劃分,乘法執行次數為:100*5*50+10*100*50=25000+50000=75000次

相當於====》10x100,100x5和5x50

1:自我理解:

對於a*b而言,我們需要分別執行  (m*p) 次 ==>(對應a1的行元素乘以a2的列元素)

根據線性代數知識,不難得出我們一共需要執行 m*n*p 次乘法

思路:

根據以上得出:  1:(a*b)相當於就是  「  a  」 的行乘以 「  b  」 的列:如下例子 ,設(a*b)=d   (a*b)*c ==> (d*c)

也就是:

(上面的這裡不要糾結,只要知道如何比較就可以了,糾結這個就過不去的,反正我是不知道的,哈哈,不糾結,我不是專業做這個的,只用了解就行)

依照上面的公式就能比較出下面的大小:

面試題:深度學習是當前很熱門的機器學習演算法。在深度學習中,涉及到大量矩陣相乘,現在需要計算三個稠密矩陣a,b,c的乘積abc,

假設三個矩陣的尺寸分別為m*n,n*p,p*q,且m

三 向量的加減乘除法

c 語言 標量與向量的乘法除法 放大乙個向量的長度 乘以乙個標量 縮放乙個向量的長度 除以乙個標量 標準化向量 長度為1,方向不變的向量,單位向量 公式 例如標準化乙個2d向量 向量的加法和減法 公式 符號變換即可 距離公式 貼上 vector.h ifndef vector3 h included...

有沒有乘除法指令 數學啟蒙教育三 乘除法的探索

乘法和除法是在小學二年級的時候才學習的內容,但在愛凡,我們把它提公升到了啟蒙教育階段。對未知領域的探索和自我發現,是一件值得去關注和嘗試的事情。我們常感嘆鄰家的孩子優秀卓越,卻忽視他們付出的努力。探索絕不是拔苗助長,好高騖遠,而是腳踏實地,一點一滴地建立起屬於自己獨有的認知能力和學習體系。在過去三周...

行內元素與塊狀元素的三個區別

1.行內元素與塊級元素直觀上的區別 行內元素會在一條直線上排列,都是同一行的,水平方向排列 塊級元素各佔據一行,垂直方向排列。塊級元素從新行開始結束接著乙個斷行。2.塊級元素可以包含行內元素和塊級元素。行內元素不能包含塊級元素。3.行內元素與塊級元素屬性的不同,主要是盒模型屬性上 行內元素設定wid...