数学建模社区-数学中国

标题: 数组运算和矩阵运算 [打印本页]

作者: 森之张卫东    时间: 2015-9-2 07:53
标题: 数组运算和矩阵运算
数组运算和矩阵运算


MATLAB在数组运算中提供了两种不同类型的运算,一种是数组运算(array operations),一种是矩阵运算(matrix).数组运算是

一种用于元素对元素的运算.也就是说,这个运算是针对两数组相对应的元素使用的. 注意两数组的行与列必须相同.,MATLAB
将产生错误
.


数组运算可以用于数组与标量的运算.当一个数组和一个标量进行运算时,标量将会和数组中的每一元素进行运算.相对地,
矩阵运算则遵守线性代数的一般规则,像矩阵的乘法.在线性代数中,c=a×b的定义如下:

                                          表2.5 两标量间的数学运算符

        
运算符
      
代数形式
   
MATLAB形式
  
      
加号
   
A+B
  
A+B

     
减号
   
A­B
  
A­B

     
乘号
   
A×B
  
A*B

     
除号
   
file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
  
A/B

     
指数
   
file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
  
A^B



注意,在矩阵相乘中,a阵的列数必须等于b阵的行数。

MATLAB用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如,.*)。26给出的是一些常见的数组和矩阵运算。

                                               表2.6常见的数组和矩阵运算

  
运算
  
MATLAB形式
注释
  
数组加法
  
A+B
数组加法和矩阵加法相同
  
数组减法
  
A­B
数组减法和矩阵减法相同
  
数组乘法
  
A.*B
AB的元素逐个对应相乘.两数组之间必须有相同的形,或其中一个是标量.
  
矩阵乘法
  
A*B
AB的矩阵乘法.A的列数必须和B的行数相同.
  
数组右除法
  
A./B
AB的元素逐个对应相除:
  
A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.
  
数组左除法
  
A.\B
AB的元素逐个对应相除:
  
B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量.
  
矩阵右除法
  
A/B
矩阵除法,等价于A*inv(B), inv(B)B的逆阵
  
矩阵左除法
  
A\B
矩阵除法,等价于inv(B)*A, inv(A)A的逆阵
  
数组指数运算
  
A.^B
AB中的元素逐个进行如下运算A(i,j)^B(i,j),  A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.


初学者往往混淆数组运算和矩阵运算.在一些情况下,两者相互替换会导致非法操作, MATLAB将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时MATLAB进行错误的运算,并产生错误的结果。当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小,两者之间的数组运算和矩阵运算都是合法的,但产生的结果完全不同。在这种情况下,你要万分的小心。


常见编程错误

在你的MATLAB代码中,仔细区分数组运算和矩阵运算。数组乘法和矩阵乘法极易混淆。



因为左除运算A\B等价于inv(A)*B,所以左除运算是解线性方程的好方法。






作者: 森之张卫东    时间: 2015-9-2 07:55
哎,对不住大家,又是排版问题,附上表2-5!
排版时,Mathtype的公式不好处理!

截图.PNG (23 KB, 下载次数: 152)

表2-5

表2-5






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5