BLAS库学习

BLAS(Basic Linear Algebra Subprograms)

1. 整个库可以分为三个部分

  • Level 1 向量与向量操作
  • Level 2 矩阵与向量操作
  • Level 3 矩阵与矩阵操作

2. 部分名词解释

  • ABC - 矩阵 (matrices)
  • DD~L~D~R~ - 对角矩阵(diagonal matrices)
  • H - Householder 矩阵,行列式 = 1
  • J - 对称三对角线矩阵 (symmetric tridiagonal matrix)
  • P - 互换矩阵(permutation matrix)
  • T - 三角矩阵(triangular matrix)
  • op(A) - 表示 A,或者A^T^ 或者 A^H^
  • transpose - 表示 A^T^
  • conjugate-transpose - 表示 A^H^

  • u,v,w,x,y.x - 向量 (vectors)

3. 方法名中的前缀

  • S - 单精度 (float)
  • D - 双精度 (double precision)
  • C - 复数 (complex)
  • Z - 双精度复数(complex * 16 或者 double complex)

4. 方法名中的关键字

  • GB - 一般带状矩阵(general band)
  • GE - 普通矩阵(general)
  • HB - (complex) Hermitian band
  • HE - (complex) Hermitian 埃尔米特矩阵(厄米矩阵/自伴随矩阵)
  • HP - (complex) Hermitian , packed storage 压缩储存Hermitian矩阵
  • SB - (real) symmetric band 对称带状矩阵
  • SP - symmetric , packed storage 对称压缩存储矩阵
  • SY - symmetric 对称矩阵
  • TB - triangular band 三角带状矩阵
  • TP - triangular ,packed storage 三角压缩矩阵
  • TR - triangular 三角或者拟三角矩阵
  • US - unstructured sparse 杂乱稀疏矩阵

5. 具体操作

[文档](http://www.netlib.org/blas/blasqr.pdf)

6. 基础知识

6.1.数与向量相乘

  • 数k 与向量 a = (a , b , c )相乘,结果 k x a = (ka , kb , kc)

6.2. 向量与向量相乘(Vector)

  • 设向量 a = (x~1~ , x~2~ , x~3~), b = (y~1~ , y~2~ , y~3~);
    1. 点乘(Dot Product) \内积;结果为标量(Scalar) ;点积为0两个向量垂直。当两向量平行时,点积有最大值 \
      a · b = x~1~y~1~ + x~2~y~2~ + x~3~y~3~
    2. 叉乘(cross product)\外积;结果是个向量 \
      a x b = ( x~1~y~1~ , x~2~y~2~ , x~3~y~3~ )
    3. 加法;两个向量相加,结果仍然是一个向量 \
      a + b = (x~1~ + y~1~, x~2~ + y~2~ , x~3~ + y~3~)

6.3 矩阵(Matrix)与向量(Vector)相乘

  • 设矩阵A = |{a , b}, { c , d}| , 向量 a = (x,y)
    1. 矩阵与向量乘法,结果为向量 \
      A x a = (ax + by,cx + dy)
    2. 矩阵A左乘向量a,此时a当作列向量处理\
      A x a = (ax + by , cx + dy)
    3. 矩阵A右乘向量a,则 a 被作为行向量处理\
      a x A = (ax + cy , bx + cy)
    4. 矩阵A 左,右都乘 a 得出一个标量.\
      a x A x a = x (ax + cy) + y (bx + cy)

6.4 矩阵与矩阵相乘

  • 矩阵 A~m,n~ = |{a,b},{c,d}|,矩阵B~j,k~ =|{1,2},{3,4}|;只有矩阵A的列数n与矩阵B的行数j相等时矩阵才能线程,起结果为 A x ~m,n~ * B~n,k~ = C~m,k~

    1. A x B = |{1a + 3b,2a + 4b},{1c + 3d, 2c+4d}|
  • ==注意==:当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。\
       1.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。\
       2.乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

参考文献

  • 向量和矩阵的乘法
  • 矩阵乘法

你可能感兴趣的:(C++)