矩陣與向量相乘有沒有快速演算法?

時間 2021-05-10 18:01:36

1樓:無敵母豬佩

template

size_tM,

std::

size_tN,

typenameT=

double

>inline

std::

array

matrix_vector_dot

(const

std::

array

array

,M

>&matrix

,const

std::

array

&v)

);return

result;}

2樓:

直接算需要 次乘法和 次加法,約等於 次運算。

在矩陣和向量沒有特殊數字結構(比如稀疏陣、對角陣、含大量0的向量)時,光是把A的每個元素訪問一遍就是 了,所以必定是 級別的,最多就是優化下"2"這個係數。優化方式有三類:

1、並行運算。比如按行把矩陣分成k塊,k塊同時算,那麼時間上就縮短到了1/k.

2、從硬體著手,使用專門的硬體模組。像顯示卡GPU之類需要大量線性計算的地方就是這麼做的。

3、就像以加代乘的那個加速乘法演算法一樣,通過打包、FFT等方式嘗試降低係數,或者平衡快慢不同的運算方式的使用(訪問和運算速度的差異、考慮記憶體儲存的連續性、加乘異或操作代價不同等等)。——具體怎麼做我想不出來。

3樓:善財童子

最直接想到的方法是設計 個並行程式計算這 個向量內積(矩陣 的所有行與 內積)的,而按照歐式空間內積的常用定義,它只是將兩個長度相同(假設為 )的向量對應元素相乘再相加,而內積又可以設計成並行的,也就是用設計個並行程式計算 次乘法,諸如此類的。

有沒有什麼將矩陣拆分成兩個或多個矩陣相乘的辦法呢?教材上總是莫名其妙就拆開了,還一下就把題做出來了

junjun 其實矩陣分解也不是那麼莫名其妙啦。我覺得矩陣分解的目的就是為了體現這個矩陣的特徵或者是為了方便計算。我學矩陣理論使用的教材裡,專門有一章介紹矩陣分解,各種分解的目的是不一樣的。建議題主可以去了解一下常見的矩陣分解,例如譜分解,滿秩分解,QR分解,奇異值分解以及極分解等等。 電光幻影煉金...

矩陣的嚴格定義是什麼?行向量與列向量通過矩陣來定義真的合理嗎?

汪汪 你說反了,不是列向量和行向量用矩陣定義,恰恰相反,我們學的矩陣用列向量和和行向量定義。事實上,矩陣可以用任意適合的方式定義。 懶得打公式,湊合看一下吧。矩陣可以定義為元素與序偶的集合的集合。也就是說矩陣A 1 i m,1 j n 序偶 i,j 怎麼定義?事實上 i,j i 就醬 把m x n ...

有沒有PS(Adobe Photoshop)快捷鍵的資訊圖?

美麗不打折 移動工具 V 矩形選框工具 橢圓選框工具 M 套索工具 多邊形套索工具 磁性套索工具 L 快速選擇工具 魔棒工具 W 裁剪工具 透視裁剪工具 切片工具 切片選擇工具 C 吸管工具 3D材質吸管工具 顏色取樣器工具 標尺工具 注釋工具 計數工具 I 汙點修復畫筆工具 修復畫筆工具 修補工具...