1. 程式人生 > >MATLAB數學公式的計算

MATLAB數學公式的計算

1、矩陣kron計算

克羅內克積   C=kron(A,B)

https://baike.baidu.com/item/%E5%85%8B%E7%BD%97%E5%86%85%E5%85%8B%E7%A7%AF/6282573?fr=aladdin


2、矩陣的常用演算法

https://www.cnblogs.com/zhouqing/p/3304945.html

1. 矩陣的加減乘除和(共軛)轉置

(1) 矩陣的加法和減法

  如果矩陣AB有相同的維度(行數和列數都相等),則可以定義它們的和A+B以及它們的差A-B,得到一個與AB同維度的矩陣C,其中Cij

=Aij+BijAij-Bij.

      另外Matlab還支援任意一個矩陣A與一個標量s相加,結果為矩陣的每一個元素加減標量,得到一個與A同維度的新的矩陣,即A+s的各個元素為Aij+s.

(2) 矩陣的乘法

  如果矩陣A的列數等於矩陣B的行數,則可以將AB相乘,命令為A*B,得到一個新的矩陣CC的行數等於A的行數,列數等於B的列數. 由於矩陣的乘法不滿足交換律,所以一般A*B不等於B*A.

(3) 矩陣的張量積(tensor product)

  矩陣AB的張量積AB可以方便地用kron函式計算,即使用命令kron(A

,B), 例如

(4) 矩陣的除法

  在MatLab中,有兩個矩陣除法符號,左除\和右除/. 如果A是一個非奇異方陣(nonsingular square, 即滿秩方陣),B的行數與A的行數相等,那麼A\B=A-1B. 如果C的列數與A的列數相等,那麼C/A=CA-1.

  從另一個角度來看,X=A\B是矩陣方程AX=B的解,X=C/A是矩陣方程XA=C的解. 如果b是一個行數與A的行數相等的列向量,則向量x=A\b是線性方程組 Ax=b的解. 且在矩陣方程AX=B中,A可以是一個m×n的矩陣,如果m=n則有唯一解;如果m<n則有多個解,Matlab會返回一個基礎解;如果m

>n則會返回一個最小方陣解.

(5) 矩陣的轉置和共軛轉置

  在Matlab中,矩陣的共軛轉置用撇號表示,如果不需要對元素進行共軛運算,僅僅只對矩陣進行轉置,則在撇號之前輸入一個點號,即 .’ . 對於實數矩陣AA’A.’是相同的.

2. 矩陣元素操作運算

  矩陣的運算既可以是如前所述的正常的整體運算,也可以是矩陣對應的元素依次進行標量運算,也叫陣列運算,即把矩陣看做是二維陣列. 對矩陣進行陣列運算後得到的結果是一個與參與運算的矩陣維度相同的新矩陣,.這種元素間的算術運算的前提是參與運算的兩個矩陣的維數要相同.

      對於加法和減法,元素操作運算和矩陣運算沒有差別,而對於乘、除和冪運算子,相應的陣列運算子是在一般的算術運算子前面加上一個點號,如

+       -       .*       ./       .\       .^

其中,A./B 是指A中的元素除以B中相應的元素,即A./B 的第i行第j列的元素(A./B)ij=Aij/Bij,而(A.\B)ij=Bij\Aij. 這些元素運算子的使用例子如下所示:

  

  

  在Matlab中預定義的數學標準函式,如sin(x), abs(x)等都是基於對矩陣元素的運算. 如果函式f(x)是這樣的一個函式,A是一個m×n的矩陣,其元素是aij ,那麼 f(A)也是一個m×n的矩陣,其第i行第j列的元素為f(aij),例如

  

其中pi是Matlab的預定義變數,值為π,i也是預定義變數,表示複數的單位.

3. 常用的矩陣函式

  矩陣函式是指引數為矩陣的函式,函式結果可能是一個標量值也可能是一個函式或者向量. Matlab中常用的矩陣函式包括:

  (1) rank(A): 求矩陣A的秩,即A中線性無關的行數或者線性無關的列數.

  

  (2) det(A): 求矩陣A的行列式值.

  

  (3) inv(A): 如果A是一個非奇異(nonsingular)矩陣,則inv(A)返回A的逆矩陣. 另外還可以用左除A\eye(n)或右除eye(n)/A來計算A的逆,且在Matlab中用左除或右除來計算逆所花的計算時間比用inv函式要少,也比inv具有更好的容錯性(error-detection properties).

  (4) dot(x,y): 求同維度的向量x和y的內積/點積. 若AB是兩個具有相同維度的矩陣,則dot(A,B)是計算AB對應列的內積,結果是一個行向量,這個行向量的列數等於AB的列數. 例如

  

  (5) cross(x,y): 計算同維度的向量xy的叉積,結果是一個向量,其方向由右手定則決定,長度等於|x|*|y|sin<x,y>. 若AB是兩個具有相同維度的矩陣,則cross(A,B)是計算AB對應列的叉積,結果是一個維度與AB相等的矩陣.

  (6) kron(A,B): 得到矩陣AB的張量積.

  (7) isequal(A,B): 如果矩陣AB是相同的,即具有相同的維數和相同的內容,則返回1.

  (8) isreal(A): 判斷A是否是一個實矩陣,如果是則返回1,否則返回0.

  (9) trace(A): 計算方陣A的跡,即對角線元素之和.

  (10) eig(A): 計算方陣A的特徵值,結果是一個列向量,向量中元素的個數等於特徵值的個數,即A的維度(A的行數或列數).

  (11) [U,D]=eig(A): 計算方陣A的特徵值和特徵向量,得到兩個方陣UD,其中D的對角線元素為A的特徵值,U的列向量為A的歸一化的(normalized)特徵向量,例如

  


3、求矩陣的範數

https://jingyan.baidu.com/article/a378c960c07500b3282830a0.html

http://blog.csdn.net/yihaizhiyan/article/details/6904599

nm1=norm(a,1) ,其中norm就是求矩陣範數的函式,1表示的是1範數

nm2=norm(a,2) ,其中norm就是求矩陣範數的函式,2表示的是2範數

nm3=norm(a,inf) ,其中norm就是求矩陣範數的函式,inf表示的是無窮範數

nm4=norm(a,'for') ,其中norm就是求矩陣範數的函式,for表示的是Frobenius範數

X為向量,求歐幾里德範數,即 。

n = norm(X,inf) %求 -範數,即 。

n = norm(X,1) %求1-範數,即 。

n = norm(X,-inf) %求向量X的元素的絕對值的最小值,即 。

n = norm(X, p) %求p-範數,即 ,所以norm(X,2) = norm(X)。

命令 矩陣的範數函式 norm格式 n = norm(A) %A為矩陣,求歐幾里德範數 ,等於A的最大奇異值。

n = norm(A,1) %求A的列範數 ,等於A的列向量的1-範數的最大值。

n = norm(A,2) %求A的歐幾里德範數 ,和norm(A)相同。

n = norm(A,inf) %求行範數 ,等於A的行向量的1-範數的最大值即:max(sum(abs(A')))。

n = norm(A, 'fro' ) %求矩陣A的Frobenius範數 ,矩陣元p階範數估計需要自己程式設計求,

計算公式如下

 舉個例子吧a=magic(3)sum(sum(abs(a)^4))^(1/4)a = 8 1 6 3 5 7 4 9 2

ans = 19.7411

轉自:http://zhidao.baidu.com/question/245196523.html


4、Matlab如何得出矩陣的前k個最大特徵值所對應的特徵向量?

http://www.ilovematlab.cn/thread-50763-1-1.html

A=[1 3 7;3 8 9;5 4 6];
[V,D]=eig(A);
D=diag(D);
[ D,I]=sort(D,'descend');
[D(1:2) V(:,I(1:2))']

用sort排序,decend是降序,取前面是特徵值比較大的;預設是升序,前面是特徵值比較小的


5、matlab迭代求解

最基本的迴圈

  1. a=;
  2. b=;
  3. d=;
  4. c=1;
  5. n=0;
  6. errf=1;
  7. while errf>1e-8&n<100%計算結果精度要求1e-8,如果迭代超過100次還不收斂,退出迴圈。
  8. y=a*b*c;
  9. c1=y*d;
  10. errf=(c1-c)/c1;
  11. c=c1;
  12. n=n+1;
  13. end