回覆列表
  • 1 # 小紅的甜心

    我知道的Matlab解矩陣方法有:

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

    b=[2;4;7]

    1)x=inv(A)*b 【就是你用的方法】

    2)x=A\b

    3)x=A^(-1)*b

    4)C=[A,b]

    rref(C)

    試試吧,也許好使。

    還有一個網址,下載一些經典程式,如:

    gmres_m.rar-gmres演算法的一個特殊形式,用來求解大型稀疏矩陣方程,matlab

    GMres.rar-數值演算法中另一個經典演算法gmres演算法,用來求解大型矩陣方程問題。,matlab

    arnoldi.rar-數值分析中經典的arnoldi演算法,用來求解大型矩陣方程組的求解,matlab

    http://www.programsalon.com/sitemap/sitemap153_1450.htm

    補充:

    2.利用矩陣的LU、QR和cholesky分解求方程組的解

    (1)LU分解:

    LU分解又稱Gauss消去分解,可把任意方陣分解為下三角矩陣的基本變換形式(行交換)和上三角矩陣的乘積。即A=LU,L為下三角陣,U為上三角陣。

    則:A*X=b 變成L*U*X=b

    所以X=U\(L\b) 這樣可以大大提高運算速度。

    命令 [L,U]=lu (A)

    例1-78 求方程組 的一個特解。

    解:

    >>A=[4 2 -1;3 -1 2;11 3 0];

    >>B=[2 10 8]";

    >>D=det(A)

    >>[L,U]=lu(A)

    >>X=U\(L\B)

    顯示結果如下:

    D =

    0

    L =

    0.3636 -0.5000 1.0000

    0.2727 1.0000 0

    1.0000 0 0

    U =

    11.0000 3.0000 0

    0 -1.8182 2.0000

    0 0 0.0000

    Warning: Matrix is close to singular or badly scaled.

    Results may be inaccurate. RCOND = 2.018587e-017.

    > In D:\Matlab\pujun\lx0720.m at line 4

    X =

    1.0e+016 *

    -0.4053

    1.4862

    1.3511

    說明 結果中的警告是由於係數行列式為零產生的。可以透過A*X驗證其正確性。

    (2)Cholesky分解

    若A為對稱正定矩陣,則Cholesky分解可將矩陣A分解成上三角矩陣和其轉置的乘積,即: 其中R為上三角陣。

    方程 A*X=b 變成

    所以

    (3)QR分解

    對於任何長方矩陣A,都可以進行QR分解,其中Q為正交矩陣,R為上三角矩陣的初等變換形式,即:A=QR

    方程 A*X=b 變形成 QRX=b

    所以 X=R\(Q\b)

    上例中 [Q, R]=qr(A)

    X=R\(Q\B)

    說明 這三種分解,在求解大型方程組時很有用。其優點是運算速度快、可以節省磁碟空間、節省記憶體。

  • 中秋節和大豐收的關聯?
  • 表示好運的四字成語?