【学习笔记】Get Started with MATLAB-Chapter03

 这章讲的是MATLAB里面的常用数学算法,顺道复习一下线代。(有些概念或者术语是直译的,有的不准确以后再修正。)

线性代数

矩阵环境

创建矩阵

  • matrix——将实数虚数放在一张二维表里的变量
  • array ——广义的向量、矩阵、高维数表。
>> A=pascal(3)        %symmetric对称矩阵,matric
A =
     1     1     1
     1     2     3
     1     3     6

>> B=magic(3)         %魔方矩阵,matric
B =
     8     1     6
     3     5     7
     4     9     2

>> C=fix(10*rand(3,2)) %一个3-by-2的矩阵matrix
C =
     8     9
     9     6
     1     0

>> u=[3;1;4]           %一个列向量vector,m-by-1

u =

     3
     1
     4

>> v=[2 0 -1]          %一个行向量vector,1-by-n

v =

     2     0    -1

>> s=7                 %一个标量scalar,1-by-1

s =

     7

矩阵加减法 Addition&subtraction

Note:相同size的矩阵才可以相加减

向量乘法和转置

  1. 长度相同的行向量和列向量可以相乘。谁在前谁在后都行:

    • 行*列=标量。(内积、标量积、点积)
    • 列*行=方阵(阶数等于行/列向量长度)。
    • 两个列向量不可以做乘法,要其中一个转成行向量再乘。
  2. 任何矩阵都可以转置,“ .’ ”共轭转置,“ ’ ”普通转置

Note:symmetric对称矩阵的转置等于它本身

矩阵乘法

reflects composition of the underlying linear transformations
allow compact representation of systems of simultaneous linear equations.

  • 能反映基本线性变化的规律
  • 用于解联立线性方程

基本形式:C=A*B
- 其中A的列数=B的行数,或A、B中有一个为标量(标量可以乘任何)
- A为m×p矩阵,B为p×n阶矩阵,C为m×n阶矩阵。
- 不满足交换律!!!!
- 左乘一个行向量→行向量;右乘一个列向量→列向量。

单位矩阵

  • I 表示(斜体的I);
  • 定义:对角线元素为1,其余全为0;
  • 在满足维度条件时:I*A=A, A*I=A
>> eye(2,3)         %不懂这种类似单位阵的矩阵有啥用
ans =
     1     0     0
     0     1     0

>> eye(3)           %生成n阶单位阵
ans =
     1     0     0
     0     1     0
     0     0     1

Kronecker内积

定义:Z=kron(X, Y)就是X中的每一个元素乘Y矩阵,如果X是m×n的,Y是p×q的,则Z是mp×nq的。
用途:通常X或Y是单位阵,用于将小矩阵复制扩大成大矩阵。
>> X=[1 2; 3 4]
X =
     1     2
     3     4
>> I=eye(2,2)
I =
     1     0
     0     1
>> kron(X,I)
ans =
     1     0     2     0
     0     1     0     2
     3     0     4     0
     0     3     0     4
>> kron(I,X)
ans =
     1     2     0     0
     3     4     0     0
     0     0     1     2
     0     0     3     4

范数 Norm

向量x的p范数

在matlab中可以用函数 norm(x,p)计算向量x的p范数。其中p默认为2,此时即为欧氏距离euclidean length。常用的还有p=1和p=∞
>> [norm(v,1) norm(v) norm(v,inf)]
ans =
    3.0000    2.2361    2.0000

矩阵A的p范数
同理,可以用函数 norm(A,p)计算向量A的p范数。其中p默认为2,常用的还有p=1和p=∞


>> [norm(C,1) norm(C) norm(C,inf)]
ans =
   18.0000   16.0727   17.0000

多线程运算(略)

线性方程组

computational considerations

解联立方程组可理解为——给定矩阵A和矩阵b,是否存在唯一的矩阵x,使得Ax=b或者xA=b?
对于这一问题的理解可以从1×1的矩阵考虑:
是否存在唯一的x,使得7×x=21。明显有解x=3。那么我们是怎么找到这个解的呢?我们其实做了一次除法x=21/7=3。
那么把这种思路推广到矩阵中,出现的一个问题就是,矩阵乘法没有交换律,所以有左乘右乘之分,因此除法也有左除和右除,因此前面提到的问题就有下列两种情况:
x=A\b和x=b/A
什么意思:
①A在左就左除在右就右除(左右相对于x)
②甭管是backslash还是slash,A一直在分母位置上。
由于xA=b的情况较少,下面的讨论均基于Ax=b的形式。

假设coefficient matrix 系数矩阵A是m×n的(没必要非得方阵),那么就有三种情况:

  • m=n ——有唯一解 square system
  • m>n ——超定,可以找到最小二乘解(?) overdetermined system
  • m

算法函数

使用函数mldivide()或使用“\”
**x = A\B
x = mldivide(A,B)**

通解

通解表示Ax=b的所有可行解。获得通解的步骤为:

  1. 解齐次线性方程组Ax=0。具体做法是null()函数创建一个空的解空间(一组基),所有解都是这个解空间的基的线性组合。
  2. 找到Ax=b的一个特解。
  3. 前两步找到的“基+特解”就是Ax=b的通解了。

n阶系数矩阵(方阵)

对线性方程组进行初等变换,化为最简型之后:
①如果系数矩阵的秩R(A)<增广矩阵的秩R(A,b),则方程组就无解
②如果系数矩阵的秩R(A)=增广矩阵的秩R(A,b),则方程组有解,
【a】R(A)=R(A,b)=方程组未知数个数n时,有唯一解。
【b】R(A)=R(A,b)<方程组未知数个数n时,有无穷多解。

因此,在求解线性方程组的时候,可以先用rref()求增广矩阵的行最简型,或者rank()求秩

>> b2=[3;6;0];
>> A=[1 3 7;-1 4 4;1 10 18];
>> rref([A b])
ans =
    1.0000         0    2.2857    2.0000
         0    1.0000    1.5714    1.0000
         0         0         0         0
>> rank([A b])            %rank(A)=rank([A b])<n无穷多解
ans =
     2
>> b2=[3;6;0];
>> rref([A b2])
ans =
    1.0000         0    2.2857         0
         0    1.0000    1.5714         0
         0         0         0    1.0000
>> rank([A b2])            %rank(A)<rank([A b])无解
ans =
     3
(1)非奇异系数矩阵

方阵A为非奇异矩阵(nonsingular),即A是满秩矩阵(full rank),即A的行列式不为零。所以解x和b size相同。由于是方阵,因此有唯一解。

(2) 奇异系数矩阵

(为什么叫奇异矩阵,因为有0行,即singular value)
方阵A没有线性无关列,此时A不满秩,若A的秩=b的秩,则Ax=b有唯一解。否则,无穷多解。

【这里还有点乱,回去再捋捋】

 对于矩阵A,如果存在一个矩阵B,使得AB=BA=I,其中I为与A,B同维数的单位阵,就称A为可逆矩阵(或者称A可逆),并称B是A的逆矩阵,简称逆阵。
 矩阵A可逆的充分必要条件是|A|≠0。 
 奇异矩阵阵或非方阵的矩阵不存在逆矩阵,但可以用函数pinv()求其伪逆矩阵。函数返回一个与A的转置矩阵A’ 同型的矩阵X,并且满足:AXA=A,XAX=X。此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。

确定解

奇异方程组的求解,举例:

>> b=[5;2;12]
b =
     5
     2
    12
>> A=[1 3 7;-1 4 4;1 10 18]
A =
     1     3     7
    -1     4     4
     1    10    18
>> rank(A)                      %A是奇异的,不可逆
ans =
     2
>> pinv(A)*b                    %用A的伪逆和b相乘
ans =
    0.3850
   -0.1103
    0.7066

解相当于x=pinv(A)*b,所以可以通过验证:
Ax是否=b,判断该结果是否正确:

>> A*pinv(A)*b
ans =
    5.0000
    2.0000
   12.0000
最小平方解

当rank(A)

>> b2=[3;6;0];
>> pinv(A)*b2
ans =
   -1.0892
    1.2512
   -0.5235
>> A*pinv(A)*b2   %得到的结果是[-1;4;2]≠[3;6;0]
ans =
   -1.0000
    4.0000
    2.0000

超定方程组

超定方程组经常出现在曲线拟合的问题中。例如,为了找出一组数据y与t之间的关系,首先输入数据:

>> load('linear.mat')
>> t=[0 .3 .8 1.1 1.6 2.3]';
>> y=[.82 .72 .63 .60 .55 .50]';
>> D=table(t,y)
D = 
     t      y  
    ___    ____
      0    0.82
    0.3    0.72
    0.8    0.63
    1.1     0.6
    1.6    0.55
    2.3     0.5

考虑用指数衰减函数建模:
这里写图片描述
这里向量y可由另外两个向量线性组合表示,一个是常向量1,另一个是exp(t),需要用最小二乘拟合法计算未知参数c1和c2.
有6组数据(上面的table),需要求两个未知数(所谓的“x”),建立6×2的矩阵(所谓的“A”)

>> E=[ones(size(t)) exp(-t)]      
E =
    1.0000    1.0000
    1.0000    0.7408
    1.0000    0.4493
    1.0000    0.3329
    1.0000    0.2019
    1.0000    0.1003

由于y=Ec(即“b=Ax”),要求c,所以c=E\y

>> c=E\y
c =
    0.4760
    0.3413

这里写图片描述

可以绘制曲线观察拟合结果:

>> T=[0:0.1:2.5]';                %默认生成列向量
>> Y=[ones(size(T)) exp(-T)]*c;
>> plot(T,Y,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值