3.4 向量数学运算

向量是矢量运算的基础,除了基本的加减乘除四则运算外,还有一些特殊的运算,主要包括向量的点积、叉积和混合积。

3.4.1 向量的四则运算

向量的四则运算与一般数值的四则运算相同,相当于将向量中的元素拆开,分别进行加减四则运算,最后将运算结果重新组合成向量。

(1)首先对向量定义、赋值。

>>  a=logspace(0,5,6) 
a = 
  1 至 5 列 
           1          10         100        1000       10000 
  6 列 
      100000 

(2)进行向量加法运算。

>> a+10 
ans = 
  1 至 5 列 
          11          20         110        1010       10010 
  6 列 
      100010 

(3)进行向量减法运算。

>> a-1 
ans = 
  1 至 5 列 
           0           9          99         999        9999 
  6 列 
       99999 

(4)进行乘法运算。

>> a*5 
ans = 
  1 至 5 列 
           5          50         500        5000       50000 
  6 列 
      500000 

(5)进行除法运算。

>> a=[2 4 5 3 1]; 
>> a/2 
ans = 
    1.0000    2.0000    2.5000    1.5000    0.5000

(6)进行简单加减运算。

>> a-2+5 
ans = 
  1 至 5 列 
           4          13         103        1003       10003 
  6 列 
      100003 

(7)进行复杂加减运算。

>> a+5-(a+1) 
ans = 
     4     4     4     4     4     4 

3.4.2 向量的点乘运算

这里需要引入的是两个概念,算数乘与点乘,MATLAB语言的符号显示如表3-5所示。

表3-5 运算符

对于一般的单一数值来讲,这两个结果是相同的。

>> 5*6 
ans = 
    30 
>> 5.*6 
ans = 
    30

对于向量来说,算数乘与点乘的运算结果是不同的。点乘运算指将两向量中相同位置的元素进行相乘运算,将积保存在原位置组成新向量。

对于向量ab,有下面的关系。

a = [a1,a2,…,an]

b = [b1,b2,…,bn]

点乘结果定义为:a.*b=[ a1b1,a2 b2,…, anbn],点乘结果还是向量。

>> a=[5 6]; 
>> b=[4 8]; 
>> a*b 
错误使用  *  
内部矩阵维度必须一致。 
>> a.*b 
ans = 
    20    48 

3.4.3 向量的点积运算

在空间解析几何学中,向量的点积是指两个向量在其中某一个向量方向上的投影的乘积,即

a·b=|a||b|cosθ

其中,ab均为向量,θ是两向量的夹角。计算点积通常可以用来引申定义向量的模。

对于向量ab,有下面的关系:

a = [a1,a2,…,an]

b = [b1,b2,…,bn]

点积定义为:a·b = a1b1+a2b2+……+anbn,点积结果是数值结果。

(1)在MATLAB中,求向量的点积可以利用两种方法。

求和命令sum(a.*b)

sum(a.*b)= a1b1+a2b2+…+anbn

点积结果相当于对点乘的向量结果求和。

(2)点积命令dot的调用格式如下。

•dot(a,b):返回向量a和b的点积。需要说明的是,a和b必须同维。另外,当a、b都是列向量时,dot(a,b)等同于a.*b。

•dot(a,b,dim):返回向量a和b在dim维的点积。

3.4.4 操作实例

例1:向量赋值。

例1

>> a=[2 4 5 3 1] 
a = 
     2     4     5     3     1 
>> b=[3  8 10 12 13] 
b = 
     3     8    10    12    13 

例2:点积1

例2

>> a.*b 
ans = 
     6    32    50    36    13 
>> sum(a.*b) 
ans = 
   137 

例3:点积2

例3

>> c=dot(a,b) 
c = 
        137

3.4.5 向量的叉积运算

在空间解析几何学中,两个向量叉积的结果是一个过两相交向量交点且垂直于两向量所在平面的向量。

c = |a||b|sinθ

其中,ab均为向量,θ是两向量的夹角。

在数学中,对于向量ab,有下面的关系。

a = [a1,a2,a3]

b = [b1,b2,b3]

叉积定义为:cross(a, b)=(b1c2-b2c1, c1a2-a1c2, a1b2-a2b1),其中,k为单一的数值。

在MATLAB中,向量的叉积运算可由函数cross来实现。cross函数调用格式如下。

•cross(a,b):返回向量a和b的叉积。需要说明的是,a和b必须是3维的向量。

•cross(a,b,dim):返回向量a和b在dim维的叉积。需要说明的是,a和b必须有相同的维数,size(a,dim)和size(b,dim)的结果必须为3。

>> a=[2 3 4] 
>> b=[3 4 6]; 
>> c=cross(a,b) 
c = 
       2     0    -1 

3.4.6 课堂练习——计算向量的混合积

计算向量的混合积

求解向量ab的混合积。

操作提示。

(1)进行向量bc的叉积运算。

(2)把叉积的结果与向量a进行点积运算。

注意:在MATLAB中,向量的混合积运算可由以上两个函数(dot、cross)共同来实现。函数的顺序不可颠倒,否则将出错。