MATLAB

矩阵的条件数

1.矩阵A的条件数等于A的范数和A的逆的范数的乘积,即cond(A)=||A||*||A6^(-1)||。对应矩阵的3种范数,相应地可以定义3种条件数。其中对于2范数的条件数,可以从矩阵的最大奇异值和最小奇异值之比来求取。
条件数是判断矩阵是否病态的一种度量,条件数越大矩阵就越病态。
条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,则b的微小变化改变就能引起解x较大的变化,数值稳定性差。

>> A=[1 3 4 5;1 1 3 4;1 1 1 3;1 1 1 1]

A =

     1     3     4     5
     1     1     3     4
     1     1     1     3
     1     1     1     1

>> inv(A)

ans =

   -0.5000    0.2500    0.1250    1.1250
    0.5000   -0.7500    0.1250    0.1250
         0    0.5000   -0.7500    0.2500
         0         0    0.5000   -0.5000

>> C1=norm(A)*norm(ans)

C1 =

   13.9424

>> s=svd(A)

s =

    9.5410
    1.2253
    1.0000
    0.6843

>> C2=max(s)/min(s)

C2 =

   13.9424

>> 

矩阵的奇异值和奇异值分解

关于矩阵奇异值
正交矩阵是在欧几里得空间里的叫法,在酋空间里叫酋矩阵。本身的转置等于本身的逆。
矩阵A的奇异值返回一个奇异值列向量s,
矩阵A的奇异值分解,A返回一个与矩阵A大小相同的对角矩阵s和二个正交矩阵u,v
A=usv
若A是mn阵,则u为mm阵,v为n*n阵。

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

A =

     1     2     3
     4     5     6
     7     8     9

>> s=svd(A)

s =

   16.8481
    1.0684
    0.0000

>> [u,s,v]=svd(A)

u =

   -0.2148    0.8872    0.4082
   -0.5206    0.2496   -0.8165
   -0.8263   -0.3879    0.4082


s =

   16.8481         0         0
         0    1.0684         0
         0         0    0.0000


v =

   -0.4797   -0.7767    0.4082
   -0.5724   -0.0757   -0.8165
   -0.6651    0.6253    0.4082

>> inv(u)

ans =

   -0.2148   -0.5206   -0.8263
    0.8872    0.2496   -0.3879
    0.4082   -0.8165    0.4082

>> u'

ans =

   -0.2148   -0.5206   -0.8263
    0.8872    0.2496   -0.3879
    0.4082   -0.8165    0.4082

>> v'

ans =

   -0.4797   -0.5724   -0.6651
   -0.7767   -0.0757    0.6253
    0.4082   -0.8165    0.4082

>> inv(v)

ans =

   -0.4797   -0.5724   -0.6651
   -0.7767   -0.0757    0.6253
    0.4082   -0.8165    0.4082

>> 

矩阵的特征值和特征向量

1.n阶方阵A,所组成的特征方程f(λ)=det|A-λI|=0的全部根,就是方程A的特征值,用向量d=eig(A)表示
2.对于n阶方程A,如果存在一个以特征值组成的对角矩阵d和n阶矩阵v,使Av=vd,矩阵v的每一个列向量对应于特征值的特征向量,用[v,d]=eig(A)来表示

>> A=[-6 -11 -6;1 0 0 ;0 1 0]

A =

    -6   -11    -6
     1     0     0
     0     1     0

>> eig(A)

ans =

   -3.0000
   -2.0000
   -1.0000

>> d=ans

d =

   -3.0000
   -2.0000
   -1.0000

>> [v,d]=eig(A)

v =                       %特征向量

   -0.9435    0.8729    0.5774
    0.3145   -0.4364   -0.5774
   -0.1048    0.2182    0.5774


d =                           %特征值组成的对角矩阵

   -3.0000         0         0
         0   -2.0000         0
         0         0   -1.0000

>> syms lambda
>> det(A-lambda*eye(3))
 
ans =
 
- lambda^3 - 6*lambda^2 - 11*lambda - 6
 
>> P=sym2poly(ans)

P =

    -1    -6   -11    -6

>> roots(P)

ans =

   -3.0000
   -2.0000
   -1.0000

>> 
>> A=magic(4)

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> d=eig(A)

d =

   34.0000
    8.9443
   -8.9443
   -0.0000

>> [V,d]=eig(A)

V =

   -0.5000   -0.8236    0.3764   -0.2236
   -0.5000    0.4236    0.0236   -0.6708
   -0.5000    0.0236    0.4236    0.6708
   -0.5000    0.3764   -0.8236    0.2236


d =

   34.0000         0         0         0
         0    8.9443         0         0
         0         0   -8.9443         0
         0         0         0   -0.0000

矩阵的左右翻转、上下翻转和矩阵的逆时针90°的操作

1.fliplr
2.flipud
3.rot90 逆时针旋转90°

>> A=magic(3)

A =

     8     1     6
     3     5     7
     4     9     2

>> B=rot90(A)

B =

     6     7     2
     1     5     9
     8     3     4

>> C=fliplr(A)

C =

     6     1     8
     7     5     3
     2     9     4

>> D=flipud(A)

D =

     4     9     2
     3     5     7
     8     1     6

对角矩阵

1.X=diag(v,k)将向量v写入矩阵的主对角线上,而矩阵的其他元素为0,k表示上移或下移行数。
2.v=diag(X,k)
从矩阵X中提取主对角线元素到向量v上,提取上移或者下移的主对角线元素。

>> v=[1 2 3 4]

v =

     1     2     3     4

>> diag(v)

ans =

     1     0     0     0
     0     2     0     0
     0     0     3     0
     0     0     0     4

>> diag(v,1)       %上移,但是是5阶

ans =

     0     1     0     0     0
     0     0     2     0     0
     0     0     0     3     0
     0     0     0     0     4
     0     0     0     0     0

>> diag(v,-1)

ans =

     0     0     0     0     0
     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0


>> A=diag(v)

A =

     1     0     0     0
     0     2     0     0
     0     0     3     0
     0     0     0     4

>> a=diag(A)

a =

     1
     2
     3
     4

>> b=diag(A)'  %行向量转置

b =

     1     2     3     4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凭栏听雨客

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值