必威电竞|足球世界杯竞猜平台

矩陣乘法
來(lái)源:互聯(lián)網(wǎng)

矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個(gè)矩陣的列數(shù)(column)和第二個(gè)矩陣的行數(shù)(row)相同時(shí)才有意義。一般單指矩陣乘積時(shí),指的便是一般矩陣乘積。一個(gè)m×n的矩陣就是m×n個(gè)數(shù)排成m行n列的一個(gè)數(shù)陣。由于它把許多數(shù)據(jù)緊湊的集中到了一起,所以有時(shí)候可以簡(jiǎn)便地表示一些復(fù)雜的模型,如電力系統(tǒng)網(wǎng)絡(luò)模型。

定義

設(shè)A為的矩陣,B為的矩陣C為矩陣A與B的乘積,記作,其中矩陣C中的第行第列元素可以表示為:

如下所示:

注意事項(xiàng)

1、當(dāng)矩陣A的列數(shù)(column)等于矩陣B的行數(shù)(row)時(shí),A與B可以相乘。

2、矩陣C的行數(shù)等于矩陣A的行數(shù),C的列數(shù)等于B的列數(shù)。

3、乘積C的第m行第n列的元素等于矩陣A的第m行的元素與矩陣B的第n列對(duì)應(yīng)元素乘積之和。

基本性質(zhì)

乘積形式

除了上述的矩陣乘法以外,還有其他一些特殊的“乘積”形式被定義在矩陣上,這些特殊形式的矩陣乘法在某些應(yīng)用中具有特殊的作用和優(yōu)勢(shì)。值得注意的是,當(dāng)提及“矩陣相乘”或者“矩陣乘法”的時(shí)候,并不是指代這些特殊的乘積形式,而是定義中所描述的矩陣乘法。在描述這些特殊乘積時(shí),使用這些運(yùn)算的專(zhuān)用名稱(chēng)和符號(hào)來(lái)避免表述歧義。

哈達(dá)馬積

矩陣與矩陣的Hadamard積記作。其元素定義為兩個(gè)矩陣對(duì)應(yīng)元素的乘積的m×n矩陣。例如,

克羅內(nèi)克積

克羅內(nèi)克積是兩個(gè)任意大小的矩陣間的運(yùn)算,符號(hào)記作。克羅內(nèi)克積也被稱(chēng)為直積或張量積。以德國(guó)數(shù)學(xué)家克羅內(nèi)克命名。計(jì)算過(guò)程如下例所示:

實(shí)現(xiàn)

C++代碼

struct?Matrix:vector?>//使用標(biāo)準(zhǔn)容器vector做基類(lèi),需#include語(yǔ)句{????????Matrix(int?x=0,int?y=0,int?z=0)//初始化,默認(rèn)為0行0列空矩陣????????{????????????????assign(x,vector(y,z));???????}????int?h_size()const//常量說(shuō)明不可省,否則編譯無(wú)法通過(guò)????{????????return?size();????}????int?l_size()const????{????????return?empty()?0:front().size();//列數(shù)要考慮空矩陣的情況????}????Matrix?pow(int?k);//矩陣的k次冪,用快速冪實(shí)現(xiàn),k為0時(shí)返回此矩陣的單位矩陣};Matrix?operator*(const?Matrix?&m,const?Matrix?&n)//常量引用避免拷貝{????if(m.l_size()!=n.h_size())return?Matrix();//非法運(yùn)算返回空矩陣????Matrix?ans(m.h_size(),n.l_size());????for(int?i=0;?i!=ans.h_size();?++i)????????for(int?j=0;?j!=ans.l_size();?++j)????????????for(int?k=0;?k!=m.l_size();?++k)????????????????ans[i][j]+=m[i][k]*n[k][j];???return?ans;}Matrix?Matrix::pow(int?k){????if(k==0)????{????????Matrix?ans(h_size(),h_size());????????for(int?i=0;?i!=ans.h_size();?++i)????????????ans[i][i]=1;????????return?ans;????}????if(k==2)return?(*this)*(*this);????if(k%2)return?pow(k-1)*(*this);????return?pow(k/2).pow(2);}

實(shí)際應(yīng)用

數(shù)據(jù)統(tǒng)計(jì)

某公司有四個(gè)工廠(chǎng),分布在不同地區(qū),同時(shí)三種產(chǎn)品,產(chǎn)量(單位;t),試用矩陣統(tǒng)計(jì)這些數(shù)據(jù)。

可用下述矩陣描述,其中四行分別表示甲乙丙丁四個(gè)工廠(chǎng)的生產(chǎn)情況,三列分布表示三種產(chǎn)品P1,P2,P3的產(chǎn)量。

再設(shè)矩陣,其中第一列表示三種產(chǎn)品的單件利潤(rùn),第二列表示三種產(chǎn)品的單件體積。

矩陣C的第一列數(shù)據(jù)分別表示四個(gè)工廠(chǎng)的利潤(rùn),第二列分別表示四個(gè)工廠(chǎng)產(chǎn)品需要的存儲(chǔ)空間。

路徑問(wèn)題

給定一個(gè)有向圖,問(wèn)從A點(diǎn)恰好走k步(允許重復(fù)經(jīng)過(guò)邊)到達(dá)B點(diǎn)的方案數(shù)。

把給定的圖轉(zhuǎn)為鄰接矩陣,即當(dāng)且僅當(dāng)存在一條邊。令,那么,實(shí)際上就等于從點(diǎn)i到點(diǎn)j恰好經(jīng)過(guò)2條邊的路徑數(shù)(枚舉k為中轉(zhuǎn)點(diǎn))。類(lèi)似地,的第i行第j列就表示從i到j(luò)經(jīng)過(guò)3條邊的路徑數(shù)。同理,如果要求經(jīng)過(guò)k步的路徑數(shù),我們只需要二分求出即可。

參考資料 >

生活家百科家居網(wǎng)