• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Welcome to ErranLi's Blog!

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(12)

            搜索

            •  

            積分與排名

            • 積分 - 175922
            • 排名 - 151

            最新評(píng)論

            閱讀排行榜

            ?

            原文:http://www.cnblogs.com/JCSU/articles/1490363.html

            ?

            一、用矩陣運(yùn)算法解線(xiàn)性方程組

            ?

            1、矩陣運(yùn)算規(guī)則及MATLAB實(shí)例

            ?

            (1)? 矩陣加(減)法:即兩矩陣對(duì)應(yīng)元素相加減,要求兩矩陣的階數(shù)必須相同。

            ??????C = A + B

            ?

            (2)? 矩陣乘法:m×p階矩陣A與p×n階矩陣B的乘積C是一個(gè)m×n階的矩陣。元素C(i, j)的值為A矩陣的第i行和B矩陣的第j列對(duì)應(yīng)元素乘積的和。

            ??????A*B = C

            ????? 矩陣乘法一般不滿(mǎn)足交換律,即:A*B B*A

            例:

            >>?A=[1?2?3]

            A?=

            ?????1?????2?????3

            >>?B=[4;?5;?6]

            B?=

            ?????4
            ?????5
            ?????6

            >>?A*B?
            %結(jié)果是一個(gè)標(biāo)量

            ans?=

            ????32

            >>?B*A?
            %結(jié)果是一個(gè)矩陣

            ans?=

            ?????4?????8????12
            ?????5????10????15
            ?????6????12????18

            >>?

            ?

            ?

            (3)? 矩陣求逆:矩陣的逆陣V定義為滿(mǎn)足V*A = I (I為與A同階的單位矩陣)。只有方陣才可以求逆,而且此方陣的行列式必須不為零,det(A) ≠ 0。如果det(A)?= 0,求逆時(shí)就會(huì)出現(xiàn)無(wú)窮大,此時(shí)的矩陣稱(chēng)為奇異的。

            例:

            >>?A

            A?=

            ?????4?????8????12
            ?????5????10????15
            ?????6????12????18

            >>?B

            B?=

            ?????4?????8????12
            ?????6????10????15
            ?????7????12?????4

            >>?det(A)?
            %矩陣A的行列式為零

            ans?=

            ?????0

            >>?det(B)?
            %矩陣B的行列式不為零

            ans?=

            ???112

            >>?inv(A)?
            %對(duì)矩陣A求逆時(shí)出現(xiàn)無(wú)窮大(Inf)
            Warning:?Matrix?is?singular?to?working?precision.

            ans?=

            ???Inf???Inf???Inf
            ???Inf???Inf???Inf
            ???Inf???Inf???Inf

            >>?inv(B)?
            %對(duì)矩陣B求逆正常

            ans?=

            ???-1.2500????1.0000?????????0
            ????0.7232???-0.6071????0.1071
            ????0.0179????0.0714???-0.0714

            >>?

            ?

            ?

            (4)? 矩陣轉(zhuǎn)置:矩陣的行列互換后構(gòu)成轉(zhuǎn)置矩陣。如果A是m×n階的,則AT是n×m階的。

            例:

            >>?A

            A?=

            ?????4?????8????12
            ?????5????10????15

            >>?B=A'

            B?=

            ?????4?????5
            ?????8????10
            ????12????15

            ?

            ?

            (5)? 矩陣分塊:矩陣A可以劃分成許多小矩陣。

            例:

            >>?A

            A?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1

            >>?A1=A(1:3,?1:3)

            A1?=

            ?????3????-4?????3
            ?????0????-6?????0
            ?????4????-3?????4

            >>?A2=A(1:3,?4:5)

            A2?=

            ?????2????-1
            ????-3????-3
            ?????2????-2

            >>?A3=A(4,?1:4)

            A3?=

            ?????1?????1?????1?????0

            >>?A4=A(4,?5)

            A4?=

            ????-1

            >>?

            ?

            ?

            (5)? 矩陣分解為向量:把矩陣沿行向或列向分解為單列或單行向量,常見(jiàn)的是分解為列向量。

            其中:

            ?

            ?

            (6)? 行向量左乘列向量:要求兩向量的長(zhǎng)度必須一致,結(jié)果為一個(gè)標(biāo)量。得出的是向量各分量的平方和。如果這些分量是正交的,則得出的是向量的長(zhǎng)度平方。它的平方根就是向量長(zhǎng)度,也稱(chēng)為向量的范數(shù)或2范數(shù)。

            行向量左乘列向量得到的是,在工程中具有這樣計(jì)算形式的問(wèn)題很多,比如用它計(jì)算兩個(gè)向量x和y之間的相關(guān)性。

            ?

            (7)? 列向量左乘行向量:如果列向量的長(zhǎng)度為n,行向量的長(zhǎng)度為m,則相乘會(huì)得出一個(gè)n×m的矩陣,這種方法常常用來(lái)生成和計(jì)算一些復(fù)雜的大矩陣。

            ?

            (8)? 矩陣乘法和冪次:A^2 = A*A,? A^n =? A*A*...*A。根據(jù)矩陣相乘內(nèi)階數(shù)必須相等,只有方陣才能乘方和冪次。

            ?

            ?

            2、初等變換乘子矩陣的生成及MATLAB實(shí)例

            ?

            本節(jié)通過(guò)將原矩陣左乘變換的單位矩陣實(shí)現(xiàn)矩陣的初等行變換:

            (1) 行交換:將矩陣A的第 i , j 兩行互換位置。


            %?行交換:交換矩陣A的第1行和第3行

            %?步驟1:得到一個(gè)5階單位陣:E=eye(5)
            %?步驟2:交換E的第1行和第3行得到矩陣 E1
            %?步驟3:矩陣A左乘矩陣E1得到交換后 的矩陣

            >>?A

            A?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            >>?

            E1?=

            ?????0?????0?????1?????0?????0
            ?????0?????1?????0?????0?????0
            ?????1?????0?????0?????0?????0
            ?????0?????0?????0?????1?????0
            ?????0?????0?????0?????0?????1

            >>?E1*A

            ans?=

            ?????4????-3?????4?????2????-2
            ?????0????-6?????0????-3????-3
            ?????3????-4?????3?????2????-1
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            >>?

            ?

            寫(xiě)成函數(shù)E1gen(A,i,j):

            function?E=E1gen(A,i,j)
            n=size(A);
            %求矩陣A的行數(shù)和列數(shù)
            m=min(n);
            %獲取矩陣行數(shù)和列數(shù)中的最小值
            E=eye(m);
            %產(chǎn)生單位對(duì)角陣
            E(i,i)=0;?E(j,j)=0;?E(i,j)=1;?E(j,i)=1;

            ?

            ?

            (2) 行乘數(shù):將矩陣A的第 i 行乘以 k 。

            ?

            ?

            %?行乘數(shù):將矩陣A的第4行乘以5

            %?步驟1:得到一個(gè)5階單位陣:E=eye(5)
            %?步驟2:將單位陣E中的元素E(4,4)乘以5得到矩陣E2
            %?步驟3:矩陣A左乘矩陣E2得到變換后 的矩陣

            >>?A

            A?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            >>?E2

            E2?=

            ?????1?????0?????0?????0?????0
            ?????0?????1?????0?????0?????0
            ?????0?????0?????1?????0?????0
            ?????0?????0?????0?????5?????0
            ?????0?????0?????0?????0?????1

            >>?E2*A

            ans?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????5?????5?????5?????0????-5
            ????-2?????6????-2?????1?????3

            >>?

            ?

            寫(xiě)成函數(shù)E2gen(A,i,k):

            ?

            function?E=E2gen(A,i,k)
            n=size(A);
            m=min(n);%獲取矩陣行數(shù)和列數(shù)中的最小值
            E=eye(m);%產(chǎn)生單位對(duì)角陣
            E(i,i)=k;

            ?

            ?

            (3) 行相加:將矩陣的第 i 行乘以 k,加到第 j 行。


            %?行乘數(shù)加到另一行:將矩陣A的第4行乘以2加到第5行

            %?步驟1:得到一個(gè)5階單位陣:E=eye(5)
            %?步驟2:將單位陣E中的元素E(5,4)乘以2得到矩陣E3
            %?步驟3:矩陣A左乘矩陣E3得到變換后的矩陣

            >>?A

            A?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            >>?E3

            E3?=

            ?????1?????0?????0?????0?????0
            ?????0?????1?????0?????0?????0
            ?????0?????0?????1?????0?????0
            ?????0?????0?????0?????1?????0
            ?????0?????0?????0?????2?????1

            >>?E3*A

            ans?=

            ?????3????-4?????3?????2????-1
            ?????0????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ?????0?????8?????0?????1?????1

            >>?

            ?

            寫(xiě)成函數(shù)E3gen(A,i,j,k):

            ?

            function?E=E3gen(A,i,j,k)
            n=size(A);
            m=min(n);%獲取矩陣行數(shù)和列數(shù)中的最小值
            E=eye(m);%產(chǎn)生單位對(duì)角陣
            E(j,i)=k;

            ?

            實(shí)例:

            要消去下列矩陣的A(2,1),求乘子矩陣E3

            A?=

            ?????3????-4?????3?????2????-1
            ?????6????-6?????0????-3????-3
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            ?

            在第二行加以第一行乘 -A(2,1)/A(1,1) = -2,故令E3 = E3gen(A,1,2,-2)

            >>?E3=E3gen(A,1,2,-2)

            E3?=

            ?????1?????0?????0?????0?????0
            ????-2?????1?????0?????0?????0
            ?????0?????0?????1?????0?????0
            ?????0?????0?????0?????1?????0
            ?????0?????0?????0?????0?????1

            >>?E3*A

            ans?=

            ?????3????-4?????3?????2????-1
            ?????0?????2????-6????-7????-1
            ?????4????-3?????4?????2????-2
            ?????1?????1?????1?????0????-1
            ????-2?????6????-2?????1?????3

            >>?

            ?

            綜上可知:

            1、 行階梯生成等價(jià)于矩陣左乘

            因此,整個(gè)行階梯形式U的生成過(guò)程,可以看作把原矩陣左乘以一系列的初等變換矩陣E1和E3。把這些初等矩陣的連乘積寫(xiě)成EX,則有:?U=EX*A,設(shè)其逆為L(zhǎng):

            從而有 L*U=A?

            就是說(shuō),A可以分解為一個(gè)準(zhǔn)下三角矩陣L和一個(gè)上三角(即行階梯)矩陣U的乘積。MATLAB提供了三角分解的函數(shù)lu,它的調(diào)用方法是:[L,U]=lu(A)

            2、 lu分解是求行階梯的一個(gè)方法

            用lu函數(shù)求出的U實(shí)際上就是A的行階梯形式(不是簡(jiǎn)化行階梯形式)。所以,求簡(jiǎn)化行階梯形式用rref函數(shù),而求行階梯形式可以用lu 函數(shù)。不過(guò),它和我們用消元運(yùn)算所得U的數(shù)據(jù)不一定相同,盡管得出的階次和階梯形狀相同。但因?yàn)樾须A梯形式可以有無(wú)數(shù)種,用不同步驟算出的結(jié)果也不同。只有變成簡(jiǎn)化行階梯形式,才能進(jìn)行比較,看它是不是惟一的。

            ?

            ?

            3、行列式

            (1) 行列式的幾何意義:

            行列式的幾何意義是面積或體積,它的用途很單一,就是判斷奇異性,連正負(fù)號(hào)都不必關(guān)心。

            (2) 行列式的計(jì)算方法:

            計(jì)算行列式的最好方法還是行階梯法,可以利用lu分解
            ??????????????? [L,U] = lu(A)
            把A分解為一個(gè)準(zhǔn)下三角矩陣L和一個(gè)上三角矩陣U的乘積。因?yàn)閐et(L) = 1,所以U和A的行列式相等。??

            ?????????????? det(A) = det(U)
            而三角矩陣U的det(U)很好求。只要把U的主對(duì)角線(xiàn)元素連乘就可得到它的行列式。

            ?

            實(shí)例:

            >>?A

            A?=

            ????10?????8?????6?????4?????1
            ?????2?????5?????8?????9?????4
            ?????6?????0?????9?????9?????8
            ?????5?????8?????7?????4?????0
            ?????9?????4?????2?????9?????1

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

            L?=

            ????1.0000??????????? 0?????????? 0?????????? 0??????????? 0
            ????0.2000???-0.7083????1.0000?????????? 0??????????? 0
            ????0.6000????1.0000??????????? 0?????????? 0??????????? 0
            ????0.5000???-0.8333????0.8000???-0.2953????1.0000
            ????0.9000????0.6667???-0.6588????1.0000??????????? 0


            U?=

            ???10.0000????8.0000???? 6.0000???? 4.0000????1.0000
            ??????????? 0???-4.8000???? 5.4000???? 6.6000????7.4000
            ??????????? 0??????????? 0???10.6250??? 12.8750????9.0417
            ??????????? 0??????????? 0??????????? 0????? 9.4824????1.1235
            ??????????? 0??????????? 0??????????? 0???????????? 0???-1.2349

            >>?du=diag(U)

            du?=

            ???10.0000
            ???-4.8000
            ???10.6250
            ????9.4824
            ???-1.2349

            >>?result=prod(du)

            result?=

            ??5.9720e+003

            >>?

            ?

            用det求A的行列式值得到相同的結(jié)果:

            >>?det(A)

            ans?=

            ????????5972

            >>?

            ?

            ?

            ?

            4、矩陣的秩和矩陣求逆

            ?

            矩陣的秩:

            (1) 按定義,矩陣的是矩陣A中行列式不等于零的最高階子式的階次。是用以衡量聯(lián)立方程中有效方程數(shù)目的指數(shù)。
            (2) 按照定義來(lái)計(jì)算矩陣的秩,可能遇到的問(wèn)題也是子矩陣的數(shù)量很大,每個(gè)矩陣的行列式計(jì)算又非常麻煩,其計(jì)算量也將是不可接受的天文數(shù)字。
            (3) 計(jì)算矩陣的秩的最好方法是行階梯法,行階梯化簡(jiǎn)后非全為零的行數(shù)就是該矩陣的秩。用MATLAB函數(shù)r=rank(A)可以檢驗(yàn)A的秩,rank函數(shù)對(duì)A是否是方陣沒(méi)有要求,即可以有m≠n。

            ?

            矩陣求逆:

            (1) 對(duì)于n×n方陣A,當(dāng)r=n時(shí),稱(chēng)A是滿(mǎn)秩的,若r<n,必有det(A) = 0,稱(chēng)A是欠秩的或奇異的。奇異矩陣不可以求逆。?
            (2) 矩陣求逆的最簡(jiǎn)單方法也是行階梯化簡(jiǎn),其方法是設(shè)定一個(gè)由A和I組成的增廣矩陣C = [A,I],求C的簡(jiǎn)化行階梯形式UC = rref([A,I]),得出UC = [I,V]。V就顯示出這個(gè)逆矩陣的內(nèi)容。

            ?

            求逆實(shí)例:

            >>?A=[3?0?3?-6;5?-1?1?-5;-3?1?4?-9;1?-3?4?-4]

            A?=

            ?????3?????0?????3????-6
            ?????5????-1?????1????-5
            ????-3?????1?????4????-9
            ?????1????-3?????4????-4

            >>?C=[A,eye(4)]

            C?=

            ?????3?????0?????3????-6?????1?????0?????0?????0
            ?????5????-1?????1????-5?????0?????1?????0?????0
            ????-3?????1?????4????-9?????0?????0?????1?????0
            ?????1????-3?????4????-4?????0?????0?????0?????1

            >>?UC=rref(C)
            %UC右邊四列就是矩陣A的逆

            UC?=

            ????1.0000?????????0?????????0?????????0????0.2323???-0.0101???-0.1313???-0.0404
            ?????????0????1.0000?????????0?????????0????0.5354???-0.3131???-0.0707???-0.2525
            ?????????0?????????0????1.0000?????????0????0.5859???-0.4747???-0.1717????0.1010
            ?????????0?????????0?????????0????1.0000????0.2424???-0.2424???-0.1515????0.0303

            >>?V=UC(:,5:8)

            V?=

            ????0.2323???-0.0101???-0.1313???-0.0404
            ????0.5354???-0.3131???-0.0707???-0.2525
            ????0.5859???-0.4747???-0.1717????0.1010
            ????0.2424???-0.2424???-0.1515????0.0303

            >>?

            ?

            矩陣求逆命令:V=inv(A)

            ?

            ?

            5、條件數(shù)—衡量奇異程度的量

            (1) 在用數(shù)值方法計(jì)算矩陣的逆時(shí),由于計(jì)算中的誤差,人們不大可能得到理想的零合理想的全零行,所以矩陣是否奇異,并不是那么絕對(duì)的。
            (2) 為了評(píng)價(jià)矩陣接近‘奇異’的程度,采用了‘條件數(shù)’(Condition Number)作為常用的衡量指標(biāo)。它永遠(yuǎn)大于1。其數(shù)值愈接近于1,計(jì)算誤差愈小。
            (3) MATLAB中,條件數(shù)用cond(A)計(jì)算,它達(dá)到10的4次方以上時(shí),求逆的誤差就可能相當(dāng)可觀。像現(xiàn)在,條件數(shù)達(dá)到10的16次方(注:條件數(shù)是逆條件數(shù)RCOND的倒數(shù)),結(jié)果是根本不能用的。

            ?

            6、用矩陣‘除法’解線(xiàn)性方程

            ?

            (1) 如果m = n,則線(xiàn)性代數(shù)方程Ax = b中的A是方陣,設(shè)det(A)≠0,則它的逆陣存在。將上式左右同乘以inv(A) ,由于inv(A)*A = I,得到

            X = inv(A)*b (1)

            MATLAB創(chuàng)立了矩陣除法的概念,因?yàn)?inv(A)相當(dāng)于將A放到分母上去,所以可以把上式寫(xiě)成

            X = A \ b????? (2)

            ‘\’就稱(chēng)為左除,因?yàn)閕nv(A)是乘在b的左方。

            ?

            (2) 左除’\’解線(xiàn)性方程的擴(kuò)展

            左除‘\’的功能遠(yuǎn)遠(yuǎn)超過(guò)了矩陣求逆函數(shù)inv,inv(A)函數(shù)要求A必須是方陣,所以(1)式只能用來(lái)解‘適定’方程,而(2)式并不要求A為方陣,在A是m×n階且m < n(欠定)時(shí),它只要求A與b的行數(shù)相等且A的秩為m。所以(2)式也可以用來(lái)解欠定方程,在下例中可以看出。此外,運(yùn)算符‘\’還能用來(lái)解超定方程。

            ?

            例:左除’\’解欠定方程

            >>?A=[3,4,3,2,1;0,6,0,3,3;4,3,4,2,2;1,1,1,0,1;2,6,2,1,3]

            A?=

            ?????3?????4?????3?????2?????1
            ?????0?????6?????0?????3?????3
            ?????4?????3?????4?????2?????2
            ?????1?????1?????1?????0?????1
            ?????2?????6?????2?????1?????3

            >>?b=[2;3;2;0;1]

            b?=

            ?????2
            ?????3
            ?????2
            ?????0
            ?????1

            >>??x=A\b
            Warning:?Matrix?is?singular?to?working?precision.

            x?=

            ???????NaN
            ???????NaN
            ???????Inf
            ????1.0000
            ????0.0000

            >>?

            ?

            得到x=inf,無(wú)解。改用行階梯方法找有效行。左除要求的是系數(shù)矩陣的行數(shù)與秩相同

            >>?A

            A?=

            ?????3?????4?????3?????2?????1
            ?????0?????6?????0?????3?????3
            ?????4?????3?????4?????2?????2
            ?????1?????1?????1?????0?????1
            ?????2?????6?????2?????1?????3

            >>?b

            b?=

            ?????2
            ?????3
            ?????2
            ?????0
            ?????1

            >>?B=[A,b]

            B?=

            ?????3?????4?????3?????2?????1?????2
            ?????0?????6?????0?????3?????3?????3
            ?????4?????3?????4?????2?????2?????2
            ?????1?????1?????1?????0?????1?????0
            ?????2?????6?????2?????1?????3?????1

            >>?r=rank(B)

            r?=

            ?????4

            >>?[UB,ip]=rref(B)

            UB?=

            ?????1?????0?????1?????0?????0?????0
            ?????0?????1?????0?????0?????0?????0
            ?????0?????0?????0?????1?????0?????1
            ?????0?????0?????0?????0?????1?????0
            ?????0?????0?????0?????0?????0?????0


            ip?=

            ?????1?????2?????4?????5

            >>?U0=UB(1:r,1:5)

            U0?=

            ?????1?????0?????1?????0?????0
            ?????0?????1?????0?????0?????0
            ?????0?????0?????0?????1?????0
            ?????0?????0?????0?????0?????1

            >>?d=UB(1:4,6)

            d?=

            ?????0
            ?????0
            ?????1
            ?????0

            >>?x=U0\d

            x?=

            ?????0
            ?????0
            ?????0
            ?????1
            ?????0

            >>?

            ?

            其中,x是此欠定方程的一個(gè)特解。

            ?

            posted on 2010-07-10 18:16 erran 閱讀(734) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲狠狠综合久久| 久久精品国产精品亚洲下载| 热99RE久久精品这里都是精品免费| 女同久久| 久久久一本精品99久久精品88| 久久99国产精一区二区三区| 99久久精品费精品国产| 久久久久精品国产亚洲AV无码| 看久久久久久a级毛片| 久久91综合国产91久久精品| 美女久久久久久| 成人免费网站久久久| 午夜精品久久久内射近拍高清| 欧美va久久久噜噜噜久久| 久久国产乱子伦精品免费午夜| 亚洲伊人久久精品影院| 久久丝袜精品中文字幕| 精品999久久久久久中文字幕| 久久婷婷人人澡人人| 狠狠色丁香婷婷综合久久来| 伊人久久无码中文字幕| 国产真实乱对白精彩久久| 97r久久精品国产99国产精| 思思久久好好热精品国产| 久久国产视屏| 国产精品热久久无码av| 久久电影网一区| 久久久久久国产精品无码超碰| 免费精品久久天干天干| 一级A毛片免费观看久久精品| 久久青青草原精品影院| 无码超乳爆乳中文字幕久久| 久久久精品久久久久影院| 四虎亚洲国产成人久久精品| 久久久久99精品成人片牛牛影视| 久久夜色精品国产亚洲| 久久精品国产精品青草app| 97久久天天综合色天天综合色hd| 久久av无码专区亚洲av桃花岛| 久久人爽人人爽人人片AV| 99久久无色码中文字幕人妻|