MKL学习——线性代数概念相关
前言
回顧一下BLAS Level 1 2 3中的運算都有什么類型
BLAS Level 1
在BLAS Level 1中,進行的是向量-向量的操作。其中相關概念有
- 向量類型: 實數域,復數域,共軛
- 運算操作: 元素求和,向量相加,向量拷貝,點乘,二范數(歐幾里得范數),向量繞點旋轉,Givens旋轉,改進Givens旋轉,計算Givens旋轉參數,標量與向量的乘積,向量交換,查找最大最小值,復數域向量的絕對值
BLAS Level 2
在BLAS Level 2中,進行的是矩陣-向量的操作。其中相關概念有
- 矩陣類型: 一般帶狀矩陣,一般矩陣,Hermitian帶狀矩陣,Hermitian矩陣,Hermitian壓縮矩陣,對稱帶狀矩陣,對稱壓縮矩陣,對稱矩陣,三角帶狀矩陣,三角壓縮矩陣,三角矩陣
- 運算操作: 矩陣-向量乘積,一階更新,二階更新,解線性方程組
BLAS Level 3
在BLAS Level 3中,進行的是矩陣-矩陣的操作。其中相關概念有
- 矩陣類型:一般矩陣,Hermitian矩陣,對稱矩陣,三角矩陣
- 運算操作: 矩陣乘法,k階更新,2k階更新, 解方程
向量矩陣類型學習
向量
實數域
x=[1?,?2?,?3.1?,?4]
元素為實數的就叫實數域上的向量復數域
x=[?i,?2i,?3i,?4i]x=[4?i?,?3?2i?,?2?3i?,?1?4i]
元素為復數的就叫復數域上的向量,第一個向量的實部為0,第二個向量的實部非0共軛向量
當兩個復數的實部相等,虛部互為相反數時,這兩個復數叫做互為共軛復數,實數的共軛復數就是本身
矩陣
一般矩陣
A=???a11a21a31a12a22a32a13a23a33???
帶狀矩陣
如果矩陣A=aij是一個n?n的矩陣,假設在對角邊界帶狀區域之外的所有元素都是0,其中邊界范圍由常數k1和k2決定,那么就有
當j<(i?k1)或者j>(i+k2)的時候有aij=0
這里面的k1稱為下帶寬(lower bandwidth),k2稱為上帶寬(upper bandwidth)
A=???a1100a12a2200a23a33???三角帶狀矩陣
當帶狀矩陣的k1=k2=1的時候,就是三角帶狀矩陣了
A=????????????????B11B210??0B12B22B32???0B23B33B43????B34B44B540???B45B55B650??0B56B66????????????????
?Hermitian矩陣
Hermitian矩陣(也稱為self-adjoint矩陣),是一個復數方陣,與它自己的共軛轉置是相等的;也就是說第i行第j列的元素等于它的共軛轉置矩陣的第j行第i列,對于所有的索引i,j都有
aij=ajiˉˉˉˉA=AHˉˉˉˉˉ
一個實例就是
A=???22?i42+i3?i4i1???三角矩陣
A=???????????a11a21a31?an1a22a32?an2????an,n?10an,n???????????
稱為下三角矩陣(lower triangular matrix)或者左三角矩陣(left triangular matrix)。同理還有上三角矩陣就不說了。對稱矩陣
對稱矩陣就是一個轉置等于它自身的一個方陣
A=AT
例如
A=???17374?53?56???壓縮存儲
在Cblas中提供了很多壓縮存儲,但是目前還沒分析透徹,有興趣可以看看英文文檔,其中提供了各種轉換壓縮存儲的主程序。主要包含的壓縮存儲有:
- 帶狀壓縮存儲
- 按列存儲時候Hermitian矩陣的上三角帶狀存儲;按行存儲時候Hermitian矩陣的下三角帶狀存儲
- 對稱矩陣的上三角壓縮存儲;對稱矩陣的下三角壓縮存儲
- 按列存儲時候上三角帶狀矩陣或者下三角帶狀矩陣的壓縮存儲;按行存儲的時候上三角帶狀矩陣或者下三角帶狀矩陣的壓縮存儲
向量矩陣操作學習
向量-向量
Givens旋轉
直接從維基百科上搬過來:
== 矩陣表示 ==
G(i,j,θ)=?????????????????1?0?0?0?????0?c?s?0?????0??s?c?0?????0?0?0?1?????????????????
吉文斯旋轉表示為如下形式的[[矩陣]]
這里的 c= cos(θ) 和 s = sin(θ) 出現在第 ”i” 行和第 ”j” 行與第 ”i” 列和第 ”j” 列的交叉點上。就是說,吉文斯旋轉矩陣的所有非零元定義如下:
gkkgiigjjgijgji=1fork≠i,j=c=c=?s=s乘積 G(i,?j,?θ)?x 表示向量 x在 (i,j)平面中的逆時針旋轉 θ 弧度。
Givens 旋轉在數值線性代數中主要的用途是在向量或矩陣中介入零。例如,這種效果可用于計算矩陣的 QR分解。超過Householder變換的一個好處是它們可以輕易的并行化,另一個好處是對于非常稀疏的矩陣計算量更小。
== 穩定計算 ==
[cs?sc][ab]=[r0]
當一個吉文斯旋轉矩陣 G(i,j,θ)從左側乘另一個矩陣 A的時候,GA 只作用于A的第 i和 j 行。所以我們集中于下列問題。給出 a和 b,找到 c=cos(θ) 和 s=sin(θ) 使得
明確計算出 θ 是沒有必要的。我們轉而直接獲取 ”c”, ”s” 和 ”r”。一個明顯的解是
rcs=a2+b2??????√=a/r=?b/r
矩陣-向量
Hermitian矩陣或者其壓縮存儲形式
- 一階更新
A:=α?x?conjg(x′)+A
其中x是一個n維向量
- 二階更新
A:=α?x?conjg(y′)+conjg(α)?y?conjg(x′)+A
其中x,y都是n向量
對稱矩陣或者其壓縮存儲形式
- 一階更新
a:=α?x?x′+A
? 其中x為n維矩陣
- 二階更新
A:=α?x?y′+α?y?x′+A
其中x,y都是n維矩陣
矩陣-矩陣
Hermitian矩陣
k階更新
C:=α?A?AH+β?C
其中A是n?k維矩陣,C是n?n的Hermitian矩陣2k階更新
C:=α?A?BH+conjg(α)?B?AH+β?C,
其中A,B都是n?k的矩陣,C是n?n的Hermitian矩陣
對稱矩陣
- k階更新
C:=α?A?A′+β?C
? 其中A是n?k的矩陣,C是n?n的矩陣
- 2k階更新
C:=α?A?B′+α?B?A′+β?C
其中A,B都是n?k的矩陣,C是n?n的矩陣
后續
目前感覺也就這么多內容了。關于后面的稀疏矩陣計算相關內容,等用到了再學習。后面著重實現以下最基本的全矩陣(full matrix)運算,也就是說不考慮矩陣是對稱的、Hermitian的或者帶狀什么的。主要包含向量-向量、矩陣-向量、矩陣-矩陣的乘法關系。
總結
以上是生活随笔為你收集整理的MKL学习——线性代数概念相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡最低还款影响信用吗?最低还款的坏处
- 下一篇: MKL学习——基本操作C++实现