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=[4i , 32i , 23i , 14i]

    元素为复数的就叫复数域上的向量,第一个向量的实部为0,第二个向量的实部非0

  • 共轭向量

    当两个复数的实部相等,虚部互为相反数时,这两个复数叫做互为共轭复数,实数的共轭复数就是本身

矩阵

  • 一般矩阵

    A=a11a21a31a12a22a32a13a23a33

  • 带状矩阵

    如果矩阵 A=aij 是一个 nn 的矩阵,假设在对角边界带状区域之外的所有元素都是0,其中边界范围由常数 k1 k2 决定,那么就有

    j<(ik1)j>(i+k2)aij=0

    这里面的 k1 称为下带宽(lower bandwidth), k2 称为上带宽(upper bandwidth)
    A=a1100a12a2200a23a33

  • 三角带状矩阵

    当带状矩阵的 k1=k2=1 的时候,就是三角带状矩阵了

    A=B11B2100B12B22B320B23B33B43B34B44B540B45B55B6500B56B66

  • Hermitian矩阵

    Hermitian矩阵(也称为self-adjoint矩阵),是一个复数方阵,与它自己的共轭转置是相等的;也就是说第i行第j列的元素等于它的共轭转置矩阵的第j行第i列,对于所有的索引i,j都有

    aij=aji¯¯¯¯A=AH¯¯¯¯¯

    一个实例就是
    A=22i42+i3i4i1

  • 三角矩阵

    A=a11a21a31an1a22a32an2an,n10an,n

    称为下三角矩阵(lower triangular matrix)或者左三角矩阵(left triangular matrix)。同理还有上三角矩阵就不说了。

  • 对称矩阵

    对称矩阵就是一个转置等于它自身的一个方阵

    A=AT

    例如
    A=173745356

  • 压缩存储

    Cblas中提供了很多压缩存储,但是目前还没分析透彻,有兴趣可以看看英文文档,其中提供了各种转换压缩存储的主程序。主要包含的压缩存储有:

    • 带状压缩存储
    • 按列存储时候Hermitian矩阵的上三角带状存储;按行存储时候Hermitian矩阵的下三角带状存储
    • 对称矩阵的上三角压缩存储;对称矩阵的下三角压缩存储
    • 按列存储时候上三角带状矩阵或者下三角带状矩阵的压缩存储;按行存储的时候上三角带状矩阵或者下三角带状矩阵的压缩存储

向量矩阵操作学习

向量-向量

  • Givens旋转

    直接从维基百科上搬过来:

    == 矩阵表示 ==
    吉文斯旋转表示为如下形式的[[矩阵]]

    G(i,j,θ)=10000cs00sc00001

    这里的 c= cos(θ) 和 s = sin(θ) 出现在第 ”i” 行和第 ”j” 行与第 ”i” 列和第 ”j” 列的交叉点上。就是说,吉文斯旋转矩阵的所有非零元定义如下:
    gkkgiigjjgijgji=1forki,j=c=c=s=s

    乘积 G(i,j,θ)x 表示向量 x (i,j)平面中的逆时针旋转 θ 弧度。

    Givens 旋转在数值线性代数中主要的用途是在向量或矩阵中介入零。例如,这种效果可用于计算矩阵的 QR分解。超过Householder变换的一个好处是它们可以轻易的并行化,另一个好处是对于非常稀疏的矩阵计算量更小。

    == 稳定计算 ==
    当一个吉文斯旋转矩阵 G(i,j,θ) 从左侧乘另一个矩阵 A 的时候,GA 只作用于 A 的第 i j 行。所以我们集中于下列问题。给出 a b ,找到 c=cos(θ) s=sin(θ) 使得

    [cssc][ab]=[r0]

    明确计算出 θ 是没有必要的。我们转而直接获取 ”c”, ”s” 和 ”r”。一个明显的解是
    rcs=a2+b2=a/r=b/r

矩阵-向量

  • Hermitian矩阵或者其压缩存储形式

    • 一阶更新

    A:=αxconjg(x)+A

    其中 x 是一个n维向量

    • 二阶更新

    A:=αxconjg(y)+conjg(α)yconjg(x)+A

    其中 x,y 都是 n 向量

  • 对称矩阵或者其压缩存储形式

    • 一阶更新

    a:=αxx+A

    ​ 其中 x n维矩阵

    • 二阶更新
      A:=αxy+αyx+A

      其中 x,y 都是 n 维矩阵

矩阵-矩阵

  • Hermitian矩阵

    • k阶更新

      C:=αAAH+βC

      其中 A nk维矩阵, C nn的Hermitian矩阵

    • 2k阶更新

      C:=αABH+conjg(α)BAH+βC,

      其中 A,B 都是 nk 的矩阵, C nn的Hermitian矩阵

  • 对称矩阵

    • k阶更新

    C:=αAA+βC

    ​ 其中 A nk的矩阵, C nn的矩阵

    • 2k阶更新
      C:=αAB+αBA+βC

      其中 A,B 都是 nk 的矩阵, C nn的矩阵

后续

目前感觉也就这么多内容了。关于后面的稀疏矩阵计算相关内容,等用到了再学习。后面着重实现以下最基本的全矩阵(full matrix)运算,也就是说不考虑矩阵是对称的、Hermitian的或者带状什么的。主要包含向量-向量、矩阵-向量、矩阵-矩阵的乘法关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翼冰舟

额~~~CSDN还能打赏了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值