MATLAB 1.2:基本数学运算

目录

一、矩阵的代数运算

1. 矩阵的转置

2. 加减法运算

3. 矩阵乘法

4. 矩阵的左、右除法

5. 矩阵翻转

6. 矩阵的乘方

7. 点运算

二、矩阵的逻辑运算

1. “与”运算

2. “或”运算

3. “非”运算

4. “异或”运算

三、矩阵的比较运算

1. 运算符直接比较

2. 查询函数“间接比较”

四、超越函数计算

1. 三角函数

2. 反三角函数

3. 指数函数

4. 对数函数

五、符号运算

1. 符号表达式

2. 方程求解

3. 微分 and 差分

4. 积分

5. 线性代数

6. 拉氏变换

六、基本数运算


一、矩阵的代数运算

         如果一个矩阵A有n行、m列元素,则称A矩阵为nxm矩阵;若n=m,则矩阵A又称为方阵。 MATLAB 语言中定义了下面各种矩阵的基本代数运算:

1. 矩阵的转置

        在数学公式中一般把一个矩阵的转置记作 B=A^{T},其元素定义为b_{ji}=a_{ij},故B为m\times n矩阵。如果A矩阵含有复数元素,则对之进行转置时,其转置矩阵B的元素定义为b_{ji}=a^{*}_{ij},亦即首先对各个元素进行转置,然后再逐项求取其共轭复数值。这种转置方式又称为 Hermit 转置,其数学记号为B=A^{*}MATLAB 中用“A' ”可以求出A矩阵的 Hermit 转置,矩阵的转置可以由“A.’ ”求出。(结合下述实例进行理解)

    (1)“. '”运算符转置

>> A = [1, 2, 3; 4, 5, 6];
B = A'

B =

     1     4
     2     5
     3     6

>> A = [1, 2, 3; 4, 5, 6];
B = A.'

B =

     1     4
     2     5
     3     6

>> C = [1+2i, 3+4i; 5+6i, 7+8i];
D = C'                            % A矩阵的 Hermit 转置

D =

   1.0000 - 2.0000i   5.0000 - 6.0000i
   3.0000 - 4.0000i   7.0000 - 8.0000i

>> C = [1+2i, 3+4i; 5+6i, 7+8i];
D = C.'

D =

   1.0000 + 2.0000i   5.0000 + 6.0000i
   3.0000 + 4.0000i   7.0000 + 8.0000i

    (2)transpose函数转置

B = transpose(A)        %用于求解矩阵A的转置

>> A = [1, 2, 3; 4, 5, 6];
>> B=transpose(A)

B =

     1     4
     2     5
     3     6

>> C = [1+2i, 3+4i; 5+6i, 7+8i];
>> D=transpose(C)

D =

   1.0000 + 2.0000i   5.0000 + 6.0000i
   3.0000 + 4.0000i   7.0000 + 8.0000i
2. 加减法运算

        假设在 MATLAB 工作环境下有两个矩阵A和B,则可以由“C=A+B”和“C=A-B”命令执行矩阵加减法。若A和B矩阵的维数相同,它会自动地将A和B矩阵的相应元素相加减,从而得出正确的结果,并赋给C变量;若二者之一为标量,则应该将其遍加(减)于另一个矩阵;如果两个矩阵不能加减,MATLAB将自动地给出错误信息,提示用户两个矩阵的维数不匹配。

>> a=[1 2 3;4 5 6;7 8 9];
>> b=[9 8 7;6 5 4;3 2 1];
>> c=a+b

c =

    10    10    10
    10    10    10
    10    10    10

>> c=a-b

c =

    -8    -6    -4
    -2     0     2
     4     6     8

>> c=a+1

c =

     2     3     4
     5     6     7
     8     9    10

>> d=[1 2 3];
>> c=a+d

c =

     2     4     6
     5     7     9
     8    10    12

>> d=[1 2];
>> c=a+d
对于此运算,数组的大小不兼容。
3. 矩阵乘法

        假设有矩阵A和B,其中A的列数与B的行数相等,或其一为标量,则称A、B矩阵是可乘的,或称A和B矩阵的维数是相容的。MATLAB 语言中两个矩阵的乘法由“C=A*B”直接求出,且这里并不需要指定A和B矩阵的维数。如果A和B 矩阵的维数相容,则可以准确无误地获得乘积矩阵C;如果二者的维数不相容,则将给出错误信息,通知用户两个矩阵是不可乘的。

>> a=[1 2;3 4;5 6];
>> b=[1 2;3 4];
>> c=[1 2;3 4;5 6];
>> d1=a*b    % 前提:前列=后行;结果:前行=后列

d1 =

     7    10
    15    22
    23    34

>> d2=a*c
错误使用  * 
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要单
独对矩阵的每个元素进行运算,请使用 TIMES (.*)执行按元素相乘。
4. 矩阵的左、右除法

        MATLAB 中用" \ "和" / "运算符号分别表示两个矩阵的左除和右除,“X=A \ B”为方程“AX=B”的解X,若A为非奇异矩阵,即X=A^{-1}B;“X=A / B”为方程“XA=B”的解X,若A为非奇异矩阵,即X=BA^{-1};如果A矩阵不是方阵,则左、右除得出的是方程的最小二乘解。

>> A = [2, 3; 4, 5];
>> B = [6; 7];
>> X = A \ B

X =

   -4.5000
    5.0000

>> A_inv = inv(A)    % 求解矩阵A对应逆矩阵,经验证得上述结果正确

A_inv =

   -2.5000    1.5000
    2.0000   -1.0000

>> X = A / B
错误使用  / 
矩阵维度必须一致。
5. 矩阵翻转

        MATLAB 提供了一些矩阵翻转处理的特殊命令,如矩阵A进行左右翻转再赋给B可以由 B=fliplr(A) 实现,亦即 b_{ij}=a_{i,n+1-j};如果想上下翻转 A矩阵,则可以使用 C=flipud(A) 命令,将得出结果赋给C,亦即 c_{ij}=a_{m+1-i,j} D=rot90(A) 将A矩阵逆时针旋转90°后赋给 D,亦即 d_{ij}=a_{j,n+1-i};rot90(A,k) 函数还可以对A矩阵作其他旋转,k为旋转次数。

B = fliplr(A)        %水平翻转矩阵A

B = flipud(A)        %垂直反转矩阵A

B = rot90(A,k)        %将A矩阵逆时针旋转90°,k为旋转次数

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

A =

     1     2     3
     4     5     6
     7     8     9

>> B=fliplr(A)

B =

     3     2     1
     6     5     4
     9     8     7

>> C=flipud(A)

C =

     7     8     9
     4     5     6
     1     2     3

>> D=rot90(A)

D =

     3     6     9
     2     5     8
     1     4     7

>> D=rot90(A,2)

D =

     9     8     7
     6     5     4
     3     2     1
6. 矩阵的乘方

        矩阵的乘方运算可以在数学上表述成A^{x},而其前提条件要求A矩阵为方阵。在 MATLAB 中A^{x} 统一表示成 F=A^{x},其中 x 可以为整数、分数、无理数和复数。

        ① 由“ ^ ”运算可以容易地得出原矩阵的一个三次方根。

>> A=[1 2 3;4 5 6;7 8 0];
>> C=A^(1/3),e=norm(A-C^3)

C =

   0.7718 + 0.6538i   0.4869 - 0.0159i   0.1764 - 0.2887i
   0.8885 - 0.0726i   1.4473 + 0.4794i   0.5233 - 0.4959i
   0.4685 - 0.6465i   0.6693 - 0.6748i   1.3379 + 1.0488i

e =

   5.2710e-15

        ② 求根并验证得误差为e = 5.2710e-15,比较精确。事实上,矩阵的三次方根应该有三个结果,而上面只得出其中的一个。对该方根进行两次旋转,即计算 Ce^{j2\pi /3} 和 Ce^{j4\pi /3},则将得出另外两个根,经检验都是正确的。

>> a=exp(sqrt(-1)*2*pi/3); A1=C*a,A2=C*a^2

A1 =

  -0.9521 + 0.3415i  -0.2297 + 0.4296i   0.1618 + 0.2971i
  -0.3814 + 0.8058i  -1.1388 + 1.0137i   0.1678 + 0.7011i
   0.3256 + 0.7289i   0.2497 + 0.9170i  -1.5772 + 0.6342i


A2 =

   0.1803 - 0.9953i  -0.2572 - 0.4137i  -0.3382 - 0.0084i
  -0.5071 - 0.7332i  -0.3085 - 1.4931i  -0.6911 - 0.2052i
  -0.7941 - 0.0825i  -0.9190 - 0.2422i   0.2393 - 1.6831i

>> e1=norm(A-A1^3),e2=norm(A-A2^3)

e1 =

   1.2004e-14


e2 =

   1.6831e-14
7. 点运算

        MATLAB 中定义了一种特殊的运算,即所谓的点运算。两个矩阵之间的点运算是它们对应元素的直接运算。

<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值