zoukankan      html  css  js  c++  java
  • 矩阵变换、矩阵求值

    对一个矩阵进行某种运算和操作,其结果还是一个矩阵。

    对角阵 

    三角阵 

    矩阵的转置 

    矩阵的旋转 

    矩阵的翻转 

    矩阵求逆等等

    1.对角阵

    对角阵:只有对角线上有非零元素的矩阵。

    数量矩阵:对角线上的元素相等的对角矩阵。

    单位矩阵:对角线上的元素都为1的对角矩阵。

    (1) 提取矩阵的对角线元素

    diag(A):提取矩阵A主对角线元素,产生一个列向量。

    diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量。

    对角线如下:

    (2) 构造对角阵

    diag(V):以向量 V为主对角线元素,产生对角矩阵。

    diag(V,k):以向量 V为第k条对角线元素,产生对角矩阵。

    例子:先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。

    >> A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]

    A =      7     0     1     0     5

          3     5     7     4     1

          4     0     3     0     2

          1     1     9     2     3

          1     8     5     2     9

    >> D=diag(1:5);  //对角线元素为12345

    >> D*A     //对角阵左乘一个矩阵时,即矩阵对角线的第一个元素,乘以该矩阵的第一行。

    ans = 7     0     1     0     5

          6    10    14     8     2

         12     0     9     0     6

          4     4    36     8    12

          5    40    25    10    45

    要将A的各列元素分别乘以对角阵的对角线元素,如何实现?——对角阵右乘矩阵A

    要将A的各列元素分别乘以对角阵的对角线元素,可以用一个对角阵右乘矩阵A。

    >> A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]

    A =  7     0     1     0     5

          3     5     7     4     1

          4     0     3     0     2 

      1     1     9     2     3

        1     8     5     2     9

    >> D=diag(1:5);

    >> A*D

    ans =7     0     3     0    25

         3    10    21    16     5

         4     0     9     0    10

         1     2    27     8    15

         1    16    15     8    45

    2.三角阵

    上三角阵:矩阵的对角线以下的元素全为零的矩阵。

    下三角阵:对角线以上的元素全为零的矩阵。

    (1)上三角矩阵

    triu(A):提取矩阵A的主对角线及以上的元素。

    triu(A,k):提取矩阵A的第k条对角线及以上的元素。

    >> triu(ones(4),-1)    //ones产生四阶全1矩阵

    ans =1     1     1     1

         1     1     1     1 

      0     1     1     1 

         0     0     1     1

    (2) 下三角矩阵

    在MATLAB中,提取矩阵A的下三角矩阵的函数是tril,其用法与triu函

    数完全相同。

    3.矩阵的转置

    原矩阵的第一行变成目标矩阵的第一列,以此类推。

    转置运算符是小数点后面接单引号(.')。

    共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共轭。

    >> A=[1,3;3+4i,1-2i]

    A =    1.0000 + 0.0000i   3.0000 + 0.0000i

        3.0000 + 4.0000i   1.0000 - 2.0000i

    >> A.'

    ans =1.0000 + 0.0000i   3.0000 + 4.0000i

        3.0000 + 0.0000i   1.0000 - 2.0000i

    >> A'

    ans =1.0000 + 0.0000i   3.0000 - 4.0000i

        3.0000 + 0.0000i   1.0000 + 2.0000i

    矩阵的转置:把源矩阵的第一行变成 目标矩阵的第一列,第二行变成第二 列,…,依此类推。 

    如果矩阵的元素是实数,那么转置和共轭转置的结果是一样的。

    4.矩阵的旋转

    rot90(A,k):将矩阵A逆时针方向旋转90º的k倍,当k为1时可省略。

    >> A=[1,3,2;-3,2,1;4,1,2]

    A = 1              3              2

      -3              2              1

      4              1              2       

    >> rot90(A)

    ans =2              1              2

           3              2              1

       1             -3              4       

    >> rot90(A,2)

    ans =2              1              4   

            1              2             -3

       2              3              1

    5.矩阵的翻转

    对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依此类推。

    fliplr(A):对矩阵A实施左右翻转。

    flipud(A):对矩阵A实施上下翻转。  //将原矩阵的第一行和最后一行调换,第二行和倒数第二行调换,…,依此类推。

    例2  验证魔方阵的主对角线、副对角线元素之和相等。

    >> A=magic(5);

    >> D1=diag(A); //提取A的主对角线生成D1

    >> sum(D1) 

    ans =     65

    >> B=flipud(A); //上下翻转  副对角线变成主对角线

    >> D2=diag(B);

    >> sum(D2)

    ans =     65

    对矩阵A实施上下翻转得到矩阵B,这样A的副对角线就移到了B的主对角线

    5阶魔方阵的主对角线、副对角线元素之和相等,都为65。

    6.矩阵的求逆

    l  对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=I (I为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵。

    inv(A):求方阵A的逆矩阵。

    例3  用求逆矩阵的方法解线性方程组。

    在线性方程组Ax=b两边各左乘A-1,得x=A-1b。

    >> A=[1,2,3;1,4,9;1,8,27];

    >> b=[5;-2;6];

    >> x=inv(A)*b

    x =    23.0000   -14.5000     3.6667

    >> x=A    //利用左除求线性方程组

    x =    23.0000   -14.5000     3.6667

    2.3矩阵求值

    矩阵的行列式值  矩阵的秩  矩阵的迹  矩阵的范数  矩阵的条件数

    1.方阵的行列式

    把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为所对应的行列式的值。

    det(A):求方阵A所对应的行列式的值。

    例1  验证det(A-1)=1/det(A)。

    >> format rat

    >> A=[1,3,2;-3,2,1;4,1,2]

    A =

    1              3              2

    -3              2              1

    4              1              2      

    >> det(inv(A))

    ans =1/11   

    >> 1/det(A)

    ans = 1/11

    2.矩阵的秩

    矩阵线性无关的行数或列数称为矩阵的秩。

    rank(A):求矩阵A的秩。

    例2  求3~20阶魔方阵的秩。

    for n=3:20

    r(n)=rank(magic(n));   //每循环一次产生魔方阵并求秩

    end

    bar(r)   //绘制直方图

    grid on

    axis([2,21,0,20])

    [3:20;r(3:20)]

    分为三类:

    奇数阶魔方阵秩为n,即奇数阶魔方阵是满秩矩阵。

    一重偶数阶魔方阵秩为n/2+2(n是2的倍数,但非4的倍数)。

    双重偶数阶魔方阵秩均为3 (阶数是4的倍数)。

    3.矩阵的迹

    矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。

    trace(A):求矩阵A的迹。

    >> A=[1,3,2;-3,2,1;4,1,2]

    A =1              3              2

       -3              2              1   

       4              1              2     

    >> b = trace(A)   //求矩阵的迹

    b = 5      

    >> t = sum(diag(A))   //提取主对角线元素在求和

    t = 5

    4.向量和矩阵的范数

    矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。

    (1)向量的3种常用范数

    设向量v含有n个元素。

     

    在MATLAB中,求向量范数的函数为: 

    norm(V)或norm(V,2):计算向量V的2—范数。 

    norm(V,1):计算向量V的1—范数。 

    norm(V,inf):计算向量V的∞—范数。

    (2)矩阵的范数

    从属于3中向量范数,矩阵的范数计算公式如下:

    MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。

    >> x=[2 0 1;-1 1 0;-3 3 0]

    x = 2     0     1

    -1     1     0

    -3     3     0

    >> n = norm(x)   //二范数

    n = 4.7234

    >> n = norm(x,1)  //一范数

    n = 6

    5.矩阵的条件数——描述矩阵性能

    矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。

    条件数>1,条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。

    在MATLAB中,计算矩阵A的3种条件数的函数是: 

    cond(A,1):计算A的1—范数下的条件数。 

    cond(A)或cond(A,2):计算A的2—范数数下的条件数。 

    cond(A,inf):计算A的∞—范数下的条件数。

    例3  求2~10阶希尔伯特矩阵的条件数。

    for n=2:10

    c(n)=cond(hilb(n));

    end

    format long

    c'

    随着阶数的增加,希尔伯特矩阵的条件数不断增大,矩阵性能变差。

  • 相关阅读:
    【PAT甲级】1043 Is It a Binary Search Tree (25 分)(判断是否为BST的先序遍历并输出后序遍历)
    Educational Codeforces Round 73 (Rated for Div. 2)F(线段树,扫描线)
    【PAT甲级】1042 Shuffling Machine (20 分)
    【PAT甲级】1041 Be Unique (20 分)(多重集)
    【PAT甲级】1040 Longest Symmetric String (25 分)(cin.getline(s,1007))
    【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)
    Codeforces Round #588 (Div. 2)E(DFS,思维,__gcd,树)
    2017-3-9 SQL server 数据库
    2017-3-8 学生信息展示习题
    2017-3-5 C#基础 函数--递归
  • 原文地址:https://www.cnblogs.com/yuling520/p/12782153.html
Copyright © 2011-2022 走看看