![【理學】MATLAB講義第四章模版課件_第1頁](http://file4.renrendoc.com/view/bbf5846e9964abaf60c486f194f2ef43/bbf5846e9964abaf60c486f194f2ef431.gif)
![【理學】MATLAB講義第四章模版課件_第2頁](http://file4.renrendoc.com/view/bbf5846e9964abaf60c486f194f2ef43/bbf5846e9964abaf60c486f194f2ef432.gif)
![【理學】MATLAB講義第四章模版課件_第3頁](http://file4.renrendoc.com/view/bbf5846e9964abaf60c486f194f2ef43/bbf5846e9964abaf60c486f194f2ef433.gif)
![【理學】MATLAB講義第四章模版課件_第4頁](http://file4.renrendoc.com/view/bbf5846e9964abaf60c486f194f2ef43/bbf5846e9964abaf60c486f194f2ef434.gif)
![【理學】MATLAB講義第四章模版課件_第5頁](http://file4.renrendoc.com/view/bbf5846e9964abaf60c486f194f2ef43/bbf5846e9964abaf60c486f194f2ef435.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第4章MATLAB的數(shù)學運算MATLAB2006a簡明教程清華大學出版社教學目標教學重點教學內(nèi)容12/10/20221第4章MATLAB的數(shù)學運算MATLAB2006教學目標掌握向量和矩陣的運算掌握線性代數(shù)的基本函數(shù)和使用掌握稀疏矩陣的操作掌握多項式運算及插值掌握函數(shù)操作12/10/20222教學目標掌握向量和矩陣的運算12/10/20222教學內(nèi)容向量、矩陣及其運算矩陣和線性代數(shù)稀疏型矩陣多項式與插值函數(shù)運算微分方程12/10/20223教學內(nèi)容向量、矩陣及其運算12/10/20223向量、矩陣及其運算向量的點乘、叉乘和混合積矩陣的基本運算特殊矩陣生成向量和矩陣的范數(shù)12/10/20224向量、矩陣及其運算向量的點乘、叉乘和混合積12/10/202向量的點乘、叉乘和混合積向量的點乘 向量的點乘又稱為內(nèi)積,是兩個向量的模和兩個向量之間的夾角余弦三者的乘積。MATLAB中,實現(xiàn)點乘的函數(shù)是dot。dot函數(shù)的用法為dot(x1,x2),其中x1和x2的維數(shù)必須相同。向量的叉乘 向量乘法除點乘之外還有叉乘。兩個向量叉積的幾何意義是指以兩個向量模的乘積為模,方向和兩個向量構成右手坐標系的向量。向量的叉乘不可交換。在MATLAB中函數(shù)cross用于實現(xiàn)向量的叉乘。向量的混合積 向量的混合積的幾何意義是:它的絕對值表示以三個向量為楞的平行六面體的體積,符號由右手法則確定。上面介紹了向量的點乘和叉乘,向量的混合積由點乘和叉乘逐步實現(xiàn)。12/10/20225向量的點乘、叉乘和混合積向量的點乘12/10/20225矩陣的基本運算矩陣與常數(shù)之間的四則運算 矩陣與常數(shù)的運算與數(shù)組運算相同矩陣和矩陣之間的四則運算矩陣和矩陣之間的加減運算與數(shù)組運算相同設A是一個m×n矩陣,B是一個p×q矩陣,當n=p時,兩個矩陣可以相乘,乘積為m×q矩陣。矩陣乘法不可逆。在MATLAB中,矩陣乘法由“*”實現(xiàn)。矩陣除法在實際中主要用于求解線性方程組矩陣轉置 符號“’”實現(xiàn)矩陣的轉置操作。對于實數(shù)矩陣,“’”表示矩陣轉置,對于復數(shù)矩陣,“’”實現(xiàn)共軛轉置。對于復數(shù)矩陣,如果想要實現(xiàn)非共軛轉置,可以使用符號“.’”。矩陣乘方12/10/20226矩陣的基本運算矩陣與常數(shù)之間的四則運算12/10/2022特殊矩陣生成(1/2)函數(shù)功能[]生成空白矩陣zeros生成全0矩陣eye生成單位矩陣ones生成全1矩陣triltriu生成上三角或下三角矩陣diag生成對角矩陣gallery生成一些小的測試矩陣hadamard生成hadamard矩陣hankel生成hankel矩陣hilb生成Hilbert矩陣invhilb生成反Hilbert矩陣magic生成魔術矩陣pascal生成n階Pascal矩陣rand生成服從均勻分布的隨機矩陣randn生成服從正態(tài)分布的隨機矩陣rosser典型的對稱矩陣特征值的問題測試toeplitz生成Toeplitz矩陣vander生成范德蒙矩陣wilkinson生成Wilkinson矩陣compan生成多項式的伴隨矩陣12/10/20227特殊矩陣生成(1/2)函數(shù)功能[]生成空白矩陣zeros生特殊矩陣生成(2/2)1.對角矩陣的生成對角矩陣指除對角線以外其他元素為0的矩陣。函數(shù)diag可以生成對角矩陣。該函數(shù)的用法為:A=diag(V,K),其中V是一個向量,K是一個整數(shù)。該函數(shù)返回一個矩陣,矩陣的第K個對角線為V。K在默認情況下為0,表示矩陣的主對角線,K大于0時表示主對角線的上方,小于0時為主對角線的下方。V=diag(A,K),其中A時一個矩陣。K與上面的語句相同。該語句返回矩陣A第K個對角線上的元素組成的矩陣。2.魔術矩陣的生成 魔術矩陣是一種經(jīng)常遇到的矩陣,除了二階方陣之外,魔術矩陣的每一行、每一列以及每條主對角線的元素之和都相同。在MATLAB中,magic函數(shù)用于生成魔術矩陣。其調(diào)用方法為magic(N),其中N為正整數(shù),并且N≠2.12/10/20228特殊矩陣生成(2/2)1.對角矩陣的生成12/10/202向量和矩陣的范數(shù)向量的范數(shù)定義為,其中,最常用的值為1、2和無窮大。矩陣的范數(shù)定義為,其中,最常用的值為1、2和無窮大。向量和矩陣的范數(shù)可以通過函數(shù)norm求解。該函數(shù)的調(diào)用格式為n=norm(A,p),其中p用于指定范數(shù)的類型。p可以為所有大于1的常數(shù),最常用的為1、2、inf和'fro','fro'為求解矩陣A的Frobenius范數(shù)。當p省略時,默認值為2。12/10/20229向量和矩陣的范數(shù)向量的范數(shù)定義為,其中,最常用的值為1矩陣和線性代數(shù)線性方程組逆矩陣和行列式矩陣分解矩陣指數(shù)函數(shù)和冪函數(shù)矩陣特征值矩陣奇異值分解12/10/202210矩陣和線性代數(shù)線性方程組12/10/202210線性方程組(1/2)利用矩陣求逆的方法求解方程組 我們首先求系數(shù)矩陣的逆,然后利用矩陣的逆求解方程組的解。利用矩陣的左除符號“\”或者右除符號“/”求解方程組12/10/202211線性方程組(1/2)利用矩陣求逆的方法求解方程組12/10線性方程組(2/2)利用左除符號和右除符號求解線性方程組,避免了矩陣求逆操作,因此系數(shù)矩陣不必為方陣。如果系數(shù)矩陣的維數(shù)為,則有三種情況:,此時方程組為超定方程組,MATLAB將給出最小二乘解;,此時方程組為方陣系統(tǒng),MATLAB給出精確解;,此時方程組為欠約束方程組,MATLAB將給出一組基解,該解中包含最多個非零元素。在采用除法符號(包括左除和右除)求解線性方程組時,MATLAB采用因式分解法求解方程組。盡管MATLAB提供了兩種方法,一般更傾向于采用第二種方法,該方法用到較少的浮點數(shù)運算,執(zhí)行速度較快,另外,由于采用分解法,得出的結果要精確的多。12/10/202212線性方程組(2/2)利用左除符號和右除符號求解線性方程組,避逆矩陣和行列式矩陣行列式 在MATLAB中,矩陣的行列式用函數(shù)det求解。調(diào)用格式為det(A),其中A為方陣。矩陣求逆 對于非奇異方陣,如果存在方陣,滿足并且,則稱為矩陣的逆,記為,在MATLAB中,用inv(A)來實現(xiàn)矩陣逆的求解。12/10/202213逆矩陣和行列式矩陣行列式12/10/202213矩陣分解Cholesky分解LU分解QR分解(正交分解)12/10/202214矩陣分解Cholesky分解12/10/202214Cholesky分解Cholesky分解將對稱矩陣表示為一個三角矩陣與其轉置的乘積的形式,即,其中為對稱矩陣,為上三角矩陣。并非所有的對稱矩陣都能進行Cholesky分解,只有正定矩陣能夠進行Cholesky分解,如Pascal矩陣。在MATLAB中Cholesky分解由函數(shù)chol實現(xiàn),該函數(shù)對輸入矩陣進行Cholesky分解,返回其對應的三角矩陣。Cholesky分解同樣適用于復數(shù)矩陣。如果復數(shù)矩陣滿足,其中表示矩陣的共軛轉置。如果矩陣存在Cholesky分解則稱其為Hermitian正定。12/10/202215Cholesky分解Cholesky分解將對稱矩陣表示LU分解矩陣的LU分解將一個方陣表示為一個下三角置換矩陣和一個上三角矩陣乘積的形式。如,其中為下三角置換矩陣,為上三角矩陣。MATLAB中LU分解可以通過函數(shù)lu實現(xiàn)。通過矩陣的LU分解,可以實現(xiàn)線性方程組的快速求解。另外矩陣的
LU分解可用于矩陣快速求逆和求行列式,有det(A)=det(L)*det(U)和inv(A)=inv(U)*inv(L)。12/10/202216LU分解矩陣的LU分解將一個方陣表示為一個下三角置換QR分解(正交分解)(1/2)如果矩陣滿足,則為正交矩陣。正交矩陣為實矩陣,其每列為單位向量,并且各列互相正交。正交矩陣最簡單的例子為二維旋轉矩陣:對于復數(shù)矩陣,對應的概念為酉矩陣。在數(shù)值計算中正交矩陣有著重要的應用,因為正交矩陣具有長度不變性、角度不變性,并且不會擴大誤差。矩陣的正交分解將矩陣表示為正交矩陣(或酉矩陣)和上三角矩陣的乘積。如或,其中為正交矩陣或酉矩陣,為上三角矩陣,為置換矩陣。正交分解有四種形式,包括完全分解、簡化分解、帶置換矩陣的分解和不帶置換矩陣的分解。12/10/202217QR分解(正交分解)(1/2)如果矩陣滿足QR分解(正交分解)(2/2)完全分解 過約束線性系統(tǒng)的系數(shù)矩陣函數(shù)超過列數(shù),為一個矩陣并且,記為,則完全正交分解產(chǎn)生一個的正交矩陣和一個的上三角矩陣,滿足。MATLAB中矩陣的完全分解由函數(shù)qr實現(xiàn)。簡化分解 矩陣的簡化正交分解可以節(jié)省存儲空間和運算時間。正交分解可以通過在qr函數(shù)中設置第二個參數(shù)為0實現(xiàn)。與LU分解不同,QR分解不需要對矩陣進行旋轉或者置換,如上面的兩個例子。但是如果對矩陣進行置換可以避免由于矩陣奇異造成的誤差。選擇置換后,在分解的每一步,選擇剩下列中范數(shù)最大的一列作為分解的基。這樣得到的結果中,R的對角線元素按照降序排列。包含置換的正交分解可以通過增加qr函數(shù)的輸出參數(shù)得到。12/10/202218QR分解(正交分解)(2/2)完全分解12/10/202矩陣指數(shù)函數(shù)和冪函數(shù)矩陣的正整數(shù)冪 如果A為方陣,p為正整數(shù),則A^p表示p個A相乘。矩陣的負數(shù)冪與分數(shù)冪 如果A為非奇異方陣,則A^(-p)等價于inv(A)^p。MATLAB中,允許對矩陣進行分數(shù)冪運算,運算結果依賴于矩陣特征值的分布情況。矩陣指數(shù)運算 expm用于實現(xiàn)矩陣的指數(shù)運算。 線性系統(tǒng)的解可以表示為,其中的矩陣指數(shù)運算可以通過expm完成。12/10/202219矩陣指數(shù)函數(shù)和冪函數(shù)矩陣的正整數(shù)冪12/10/20221矩陣特征值矩陣的特征值和特征值分解在線性代數(shù)中一直扮演著重要的角色。在MATLAB中,函數(shù)eig實現(xiàn)矩陣的特征值計算和特征值分解。例4-23利用函數(shù)eig實現(xiàn)矩陣的特征值計算利用例2-22中的矩陣A。在命令窗口中輸入:>>A=[0,-6,-1;6,2,-16;-5,20,-10];A=0-6-162-16-520-10>>lambda=eig(A)lambda=-3.0710-2.4645+17.6008i-2.4645-17.6008i上例實現(xiàn)對矩陣特征值的計算,如果在調(diào)用eig函數(shù)時,設置輸出參數(shù)的個數(shù)為2,則實現(xiàn)對矩陣的特征值分解。12/10/202220矩陣特征值矩陣的特征值和特征值分解在線性代數(shù)中一直扮演著重矩陣奇異值分解對于矩陣,如果存在數(shù)和向量、,滿足和,則稱為的奇異值,、為的奇異向量。如果將矩陣的奇異值寫為對角矩陣的格式,記為(不足的部分記為0);以奇異向量為列并擴充為正交矩陣和,則有和。和為正交矩陣,則得到,即為矩陣的奇異值分解。在MATLAB中,函數(shù)svd實現(xiàn)矩陣的奇異值分解。與矩陣的QR分解相似,奇異值分解也可以有簡化分解。方法與QR分解相同,即在輸入?yún)?shù)中以0標志。如在命令窗口中繼續(xù)輸入:12/10/202221矩陣奇異值分解對于矩陣,如果存在數(shù)和向量稀疏型矩陣(1/2)在很多實際應用中,用戶往往會遇到只有少數(shù)非0元素的矩陣,我們稱這些矩陣為稀疏矩陣。如果對稀疏矩陣中的全部元素進行存儲和計算則會導致時間和空間上的極大浪費。因此,為了更有效的存儲和處理稀疏矩陣,MATLAB中采用了一些優(yōu)化技術:MATLAB中只存儲稀疏矩陣中的非0元素,并用行索引和列索引表明每個非0元素在原矩陣中的位置;同樣,MATLAB中采用了一些專門的算法來處理稀疏矩陣,以避免對0元素的運算,并且最大限度地減少中間結果中的非0元素。12/10/202222稀疏型矩陣(1/2)在很多實際應用中,用戶往往會遇到只有少稀疏型矩陣(2/2)稀疏型矩陣的生成稀疏矩陣與滿矩陣的相互轉化稀疏矩陣的操作12/10/202223稀疏型矩陣(2/2)稀疏型矩陣的生成12/10/20222稀疏型矩陣的生成(1/3)MATLAB不會自動生成稀疏矩陣,因此,當用戶判定一個矩陣為稀疏矩陣時,利用相關函數(shù)生成稀疏矩陣。MATLAB中用于生成稀疏矩陣的函數(shù)如表4-2所示。函數(shù)功能speye生成單位稀疏矩陣sprand生成均勻分布的隨機稀疏矩陣sprandn生成正態(tài)分布的隨機稀疏矩陣sprandsym生成對稱隨機稀疏矩陣spdiags生成對角隨機稀疏矩陣12/10/202224稀疏型矩陣的生成(1/3)MATLAB不會自動生成稀疏矩陣稀疏型矩陣的生成(2/3)speye函數(shù)speye函數(shù)的調(diào)用格式為:S=speye(m,n);S=speye(n),分別用于生成階主對角線元素為一的稀疏矩陣和階單位稀疏矩陣。12/10/202225稀疏型矩陣的生成(2/3)speye函數(shù)12/10/20稀疏型矩陣的生成(3/3)sprand和sprandn函數(shù)這兩個函數(shù)的調(diào)用格式完全相同。兩個函數(shù)的唯一區(qū)別為sprand函數(shù)生成的稀疏矩陣元素服從均勻分布,而sprandn函數(shù)生成的稀疏矩陣元素服從正態(tài)分布。下面以sprand函數(shù)為例介紹這兩個函數(shù)的應用。sprand函數(shù)的調(diào)用格式有:R=sprand(S),生成與稀疏矩陣S結構完全相同的稀疏矩陣,矩陣元素服從均勻分布;R=sprand(m,n,density),生成階稀疏矩陣,矩陣非0元素個數(shù)大約為density*m*n。R=sprand(m,n,density,rc),與上面的命令類似。如果rc為數(shù)值,則生成的矩陣條件數(shù)的倒數(shù)接近rc;如果rc為一個長度不大于min(m,n)的一維向量,則生成的矩陣以rc的元素為奇異值,其他奇異值為0。注意,不能用命令sprand(n)生成n階稀疏矩陣。12/10/202226稀疏型矩陣的生成(3/3)sprand和sprandn稀疏矩陣與滿矩陣的相互轉化MATLAB提供了一些函數(shù)用于在稀疏矩陣和滿矩陣之間進行轉換,這些函數(shù)如表4-3所示。函數(shù)功能sparse將滿矩陣轉化為稀疏矩陣full將稀疏矩陣轉化為滿矩陣find查找非0元的索引spconvert導入稀疏矩陣12/10/202227稀疏矩陣與滿矩陣的相互轉化MATLAB提供了一些函數(shù)用于sparse函數(shù)sparse函數(shù)的調(diào)用格式如下:S=sparse(A),該命令將矩陣轉化為稀疏矩陣。S=sparse(i,j,s,m,n,nzmax),該命令生成一個階稀疏矩陣,其中、、分別為該矩陣非0元的橫坐標向量、縱坐標向量和值,、、有相同的長度。該矩陣的非0元數(shù)目不超過nzmax。S=sparse(i,j,s,m,n),該命令與上面一條命令功能類似,生成的稀疏矩陣的非0元個數(shù)由的長度確定。S=sparse(i,j,s),該命令生成的稀疏矩陣維數(shù)為。S=sparse(m,n),該命令生成一個初始稀疏矩陣,矩陣的全部元素為0。12/10/202228sparse函數(shù)sparse函數(shù)的調(diào)用格式如下:12/1full函數(shù)和find函數(shù)full函數(shù) full函數(shù)的應用比較簡單,其調(diào)用格式為X=full(S),該命令將稀疏矩陣S轉換為滿矩陣。find函數(shù) find既適用于滿矩陣,也適用于稀疏矩陣。該函數(shù)在應用于稀疏矩陣時用于查找稀疏矩陣中的非0元素。該函數(shù)可以返回非0元素的位置、行列向量和元素值。12/10/202229full函數(shù)和find函數(shù)full函數(shù)12/10/常用的稀疏矩陣操作函數(shù)MATLAB中的大部分數(shù)學函數(shù)可以用于稀疏矩陣,功能和調(diào)用格式和應用于滿矩陣時相同。另外,MATLAB還提供了一些函數(shù)專門應用于稀疏矩陣。常用的稀疏矩陣操作函數(shù)如表所示。函數(shù)功能nnz返回矩陣非0元的個數(shù)nonzeros返回矩陣的非0元素構成的向量,以矩陣的列為序nzmax返回為矩陣非0元分配的存儲空間大小spones將矩陣的所有非0元素置為1spalloc為稀疏矩陣分配內(nèi)存空間issparse判斷是否為稀疏矩陣,是則返回值TRUE,否則返回FALSE。spfun對稀疏矩陣的非0元素進行操作spy稀疏矩陣的圖形表示12/10/202230常用的稀疏矩陣操作函數(shù)MATLAB中的大部分數(shù)學函數(shù)可以用多項式與插值
多項式在數(shù)學中有著極為重要的作用,同時多項式的運算也是工程和應用中經(jīng)常遇到的問題。MATLAB提供了一些專門用于處理多項式的函數(shù),用戶可以應用這些函數(shù)對多項式進行操作。MATLAB中對多項式的操作包括多項式求根、多項式的四則運算及多項式的微積分。12/10/202231多項式與插值多項式在數(shù)學中有著極為重要多項式的表示在MATLAB中多項式用一個行向量表示,向量中的元素為該多項式的系數(shù),按照降序排列。如多項式可以表示為向量p=[9743]。用戶可以創(chuàng)建向量的方式創(chuàng)建多項式,再將其顯示為多項式,
12/10/202232多項式的表示在MATLAB中多項式用一個行向量表示,向量多項式的四則運算由于多項式是利用向量來表示,多項式的四則運算可以轉化為向量的運算。多項式的加減為對應項系數(shù)的加減,因此可以通過向量的加減來實現(xiàn)。但是在向量的加減中兩個向量需要有相同的長度,因此在進行多項式加減時,需要將短的向量前面補0。多項式的乘法實際上是多項式系數(shù)向量之間的卷積運算,可以通過MATLAB中的卷積函數(shù)conv來完成。多項式的除法為乘法的逆運算,可以通過反卷積函數(shù)deconv來實現(xiàn)。12/10/202233多項式的四則運算由于多項式是利用向量來表示,多項式的四則運算多項式的其他運算除多項式的四則運算外,MATLAB還提供了多項式的一些其他運算。這些運算及其對應的函數(shù)如表所示。函數(shù)功能roots多項式求根polyval多項式求值polyvalm矩陣多項式求值polyder多項式求導poly求矩陣的特征多項式;或者求一個多項式,其根為指定的數(shù)值polyfit多項式曲線擬合residue求解余項
12/10/202234多項式的其他運算除多項式的四則運算外,MATLAB還提供了多項式的運算函數(shù)(1/2)roots函數(shù)和poly函數(shù) 這兩個函數(shù)為功能互逆的兩個函數(shù)。roots函數(shù)用于求解多項式的根。該函數(shù)的輸入?yún)?shù)為多項式的系數(shù)組成的行向量,返回值為由多項式的根組成的列向量。poly函數(shù)用于生成根為制定數(shù)值的多項式。polyval函數(shù) polyval函數(shù)用于多項式求值。對于給定的多項式,利用該函數(shù)可以計算該多項式在任意點的值。12/10/202235多項式的運算函數(shù)(1/2)roots函數(shù)和poly函數(shù)多項式的運算函數(shù)(2/2)polyder函數(shù)函數(shù)polyder用于多項式求導。該函數(shù)可以用于求解一個多項式的導數(shù)、兩個多項式乘積的導數(shù)和兩個多項式商的導數(shù)。該函數(shù)的用法為:q=polyder(p)該命令計算多項式p的導數(shù)。c=polyder(a,b)該命令實現(xiàn)多項式a、b的積的導數(shù)。[q,d]=polyder(a,b)該命令實現(xiàn)多項式a、b的商的導數(shù),q/d為最后的結果。
12/10/202236多項式的運算函數(shù)(2/2)polyder函數(shù)12/10多項式擬合曲線擬合是工程中經(jīng)常要用到的技術之一。MATLAB提供了曲線擬合工具箱滿足用戶要求,另外,還提供了多項式擬合函數(shù)。函數(shù)polyfit給出在最小二乘意義下最佳擬合系數(shù)。該函數(shù)的調(diào)用格式為: p=polyfit(x,y,n) 其中x、y分別為待擬合數(shù)據(jù)的x坐標和y坐標,n用于指定返回多項式的次數(shù)。12/10/202237多項式擬合曲線擬合是工程中經(jīng)常要用到的技術之一。MATLA數(shù)據(jù)插值根據(jù)已知數(shù)據(jù)推斷未知數(shù)據(jù),則需要使用數(shù)據(jù)插值的概念。MATLAB提供了對數(shù)組的任意一維進行插值的工具,這些工具大多需要用到多維數(shù)組的操作。本節(jié)將對數(shù)據(jù)插值做簡單的介紹,主要介紹一維插值。MATLAB中一維插值主要有:多項式插值快速傅立葉變換(FFT)插值。
12/10/202238數(shù)據(jù)插值根據(jù)已知數(shù)據(jù)推斷未知數(shù)據(jù),則需要使用數(shù)據(jù)插值的概念。一維插值一維插值在曲線擬合和數(shù)據(jù)分析中具有重要的地位。在MATLAB中,一維插值由函數(shù)interp1實現(xiàn)。該函數(shù)的調(diào)用格式為 yi=interp1(x,y,xi,method)x、y:采用數(shù)據(jù)的x坐標和y坐標xi:待插值的位置method:采用的插值方法該語句返回函數(shù)在點xi處的插值結果。該語句中的參數(shù)method可以選擇的內(nèi)容如表所示。參數(shù)對應方法'nearest'最近鄰插值'linear'線性插值'spline'三次樣條插值'pchip'或'cubic'三次插值12/10/202239一維插值一維插值在曲線擬合和數(shù)據(jù)分析中具有重要的地位。在M函數(shù)運算函數(shù)的表示數(shù)學函數(shù)圖象的繪制函數(shù)極值函數(shù)求解數(shù)值積分含參數(shù)函數(shù)的使用
12/10/202240函數(shù)運算函數(shù)的表示12/10/202240函數(shù)的表示MATLAB中提供了兩種函數(shù)表示的方法:利用M文件將函數(shù)定義為MALTAB函數(shù) 將函數(shù)定義為MALTAB函數(shù),當需要調(diào)用該函數(shù)時,需要通過符號“@”獲取函數(shù)句柄,利用函數(shù)句柄實現(xiàn)對函數(shù)的操作。匿名函數(shù)方法直接創(chuàng)建函數(shù),如語句:>>fh=@(x)1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
12/10/202241函數(shù)的表示MATLAB中提供了兩種函數(shù)表示的方法:12數(shù)學函數(shù)圖象的繪制函數(shù)圖象具有直觀的特性,可以通過函數(shù)圖象查看出一個函數(shù)的總體特征。MATLAB提供了繪制函數(shù)圖象的函數(shù)fplot,方便用戶繪制函數(shù)的圖象。下面介紹該函數(shù)的用法。該函數(shù)的調(diào)用格式如下:fplot(fun,limits),y=f(x)fplot(fun,limits,LineSpec)fplot(fun,limits,tol)fplot(fun,limits,tol,LineSpec)fplot(fun,limits,n)fun可以為MATLAB函數(shù)的M文件名,可以是包含變量x的字符串,該字符串可以傳遞給函數(shù)eval,還可以是函數(shù)句柄。參數(shù)limits用于指定繪制圖象的范圍。limits是一個向量,用于指定x軸的范圍,格式為[xminxmax]。limits也可以同時指定y軸的范圍,格式為[xminxmaxyminymax]。12/10/202242數(shù)學函數(shù)圖象的繪制函數(shù)圖象具有直觀的特性,可以通過函數(shù)圖象函數(shù)極值一元函數(shù)的極小值fminbnd求得函數(shù)在給定區(qū)間內(nèi)的局部極小值。該函數(shù)的調(diào)用格式為 x=fminbnd(fun,x1,x2,options)fun為函數(shù)句柄x1和x2分別用于指定區(qū)間的左右邊界options用于指定程序的其他參數(shù),其元素取值如表所示。
名稱描述Display控制結果的輸出,參數(shù)可以為“off”,不輸出任何結果;“iter”,輸出每個插值點的值;“final”,輸出最后結果;“notify”為默認值,僅當函數(shù)不收斂時輸出結果FunValCheck檢測目標函數(shù)值是否有效。選擇on則當函數(shù)返回數(shù)據(jù)為復數(shù)或空數(shù)據(jù)時發(fā)出警告;off則不發(fā)出警告MaxFunEvals允許進行函數(shù)評價的最大次數(shù)MaxIter最大迭代次數(shù)OutputFcn指定每次迭代時調(diào)用的用戶自定義的函數(shù)TolX返回的x的誤差12/10/202243函數(shù)極值一元函數(shù)的極小值名稱描述Display控制結果的多元函數(shù)的極小值MATLAB提供了函數(shù)fminsearch用于計算多元函數(shù)的極小值。fminsearch函數(shù)內(nèi)部應用了Nelder-Mead單一搜索算法,通過調(diào)整x的各個元素的值來尋找f(x)的極小值。該算法雖然對于平滑函數(shù)搜索效率沒有其他算法高,但它不需要梯度信息,從而擴展了其應用范圍。因此,該算法特別適用于不太平滑、難以計算梯度信息或梯度信息價值不大的函數(shù)。用于求解函數(shù)極小值的函數(shù)還有fminbnd。fminbnd函數(shù)的用法與fminsearch函數(shù)的用法基本相同,不同之處在于:fminbnd函數(shù)的輸入?yún)?shù)為尋找最小值的區(qū)間,并且只能用于求解一元函數(shù)的極值,fminsearch函數(shù)的輸入?yún)?shù)為初始值。12/10/202244多元函數(shù)的極小值MATLAB提供了函數(shù)fminsearc函數(shù)求解可以使用函數(shù)fzero()來求一元函數(shù)的零點。尋找一元函數(shù)零點時,可以指定一個初始點,或者指定一個區(qū)間。當指定一個初始點時,此函數(shù)在初始點附近尋找一個使函數(shù)值變號的區(qū)間,如果沒有找到這樣的區(qū)間,則函數(shù)返回NaN。該函數(shù)的調(diào)用格式為:x=fzero(fun,x0),x=fzero(fun,[x1,x2]):尋找x0附近或者區(qū)間[x1,x2]內(nèi)fun的零點,返回該點的x坐標;x=fzero(fun,x0,options),x=fzero(fun,[x1,x2],options):通過options設置參數(shù);[x,fval]=fzero(...):返回零點的同時返回該點的函數(shù)值;[x,fval,exitflag]=fzero(...):返回零點、該點的函數(shù)值及程序退出的標志;[x,fval,exitflag,output]=fzero(...):返回零點、該點的函數(shù)值、程序退出的標志及選定的輸出結果。12/10/202245函數(shù)求解可以使用函數(shù)fzero()來求一元函數(shù)的零點數(shù)值積分MATLAB中提供了用于積分的函數(shù),包括:一元函數(shù)的自適應數(shù)值積分一元函數(shù)的矢量積分二重積分和三重積分這些函數(shù)如表所示。函數(shù)功能quad一元函數(shù)的數(shù)值積分,采用自適應的Simpson方法quadl一元函數(shù)的數(shù)值積分,采用自適應的Lobatto方法quadv一元函數(shù)的向量數(shù)值積分dblquad二重積分triplequad三重積分12/10/202246數(shù)值積分MATLAB中提供了用于積分的函數(shù),包括:函數(shù)功一元函數(shù)的積分MATLAB中一元函數(shù)的積分可以用兩個函數(shù)來實現(xiàn):quad和quadl。函數(shù)quad采用低階的自適應遞歸Simpson方法,函數(shù)quadl采用高階自適應Lobatto方法,該函數(shù)是quad8函數(shù)的替代。函數(shù)quad的調(diào)用格式如下:q=quad(fun,a,b),采用遞歸自適應方法計算函數(shù)fun在區(qū)間 上的積分,其精確度為1e-6。q=quad(fun,a,b,tol),指定允許誤差,指定的誤差tol需大于1e-6。該命令運行更快,但是得到的結果精確度降低。q=quad(fun,a,b,tol,trace),跟蹤迭代過程,輸出[fcntab-aQ]的值,分別為計算函數(shù)值的次數(shù)、當前積分區(qū)間的左邊界、步長和該區(qū)間內(nèi)的積分值。[q,fcnt]=quadl(fun,a,b,...),輸出函數(shù)值的同時輸出計算函數(shù)值的次數(shù)。
12/10/202247一元函數(shù)的積分MATLAB中一元函數(shù)的積分可以用兩個函數(shù)來一元函數(shù)的矢量積分矢量積分相當于多個一元函數(shù)積分。當被積函數(shù)中含有參數(shù),需要對該參數(shù)的不同值計算該函數(shù)的積分時,可以使用一元函數(shù)的矢量積分。矢量積分返回一個向量,每個元素的值為一個一元函數(shù)的積分值。quadv函數(shù)與quad和quadl函數(shù)相似,可以設置積分參數(shù)和結果輸出。
12/10/202248一元函數(shù)的矢量積分矢量積分相當于多個一元函數(shù)積分。當被積函數(shù)二重積分和三重積分MATLAB中二重積分和三重積分分別由函數(shù)dblquad()和函數(shù)triplequad()來實現(xiàn)。首先介紹函數(shù)dblquad(),該函數(shù)的基本格式如下:q=dblquad(fun,xmin,xmax,ymin,ymax),函數(shù)的參數(shù)分別為函數(shù)句柄、兩個自變量的積分限,返回積分結果。q=dblquad(fun,xmin,xmax,ymin,ymax,tol),指定積分結果的精度。q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method),指定結果精度和積分方法,method的取值可以是@quadl,也可以是用戶自定義的積分函數(shù)句柄,該函數(shù)的調(diào)用格式必須與quad的調(diào)用格式相同。triplequad()函數(shù)的調(diào)用格式和dblquad()基本相同,在調(diào)用triplequad()函數(shù)時,需要六個參數(shù)指定積分限。
12/10/202249二重積分和三重積分MATLAB中二重積分和三重積分分別由函含參數(shù)函數(shù)的使用在很多情況下,需要進行運算的函數(shù)中包含參數(shù)。在MATLAB中使用含參函數(shù)的方式有兩種:嵌套函數(shù)匿名函數(shù)。12/10/202250含參數(shù)函數(shù)的使用在很多情況下,需要進行運算的函數(shù)中包含參數(shù)用嵌套函數(shù)提供函數(shù)參數(shù)使用含參函數(shù)的一個方法是編寫一個M文件,該文件以函數(shù)參數(shù)作為輸入,然后調(diào)用函數(shù)的函數(shù)來處理含參函數(shù),最后把含參函數(shù)以嵌套函數(shù)的方式包含在M文件中。
12/10/202251用嵌套函數(shù)提供函數(shù)參數(shù)使用含參函數(shù)的一個方法是編寫一個M用匿名函數(shù)提供函數(shù)參數(shù)使用含參函數(shù)還可以通過匿名函數(shù)來實現(xiàn),函數(shù)的參數(shù)在使用之前必須先賦值。具體步驟為:首先創(chuàng)建一個含參函數(shù),保存為M文件。函數(shù)的輸入為自變量x和函數(shù)參數(shù);在調(diào)用函數(shù)的函數(shù)前對參數(shù)賦值;用含參函數(shù)創(chuàng)建匿名函數(shù);把匿名函數(shù)的句柄傳遞給函數(shù)的函數(shù)進行計算。12/10/202252用匿名函數(shù)提供函數(shù)參數(shù)使用含參函數(shù)還可以通過匿名函數(shù)來實現(xiàn)微分方程MATLAB能夠求解的微分方程類型包括:常微分方程初值問題常微分方程邊值問題時滯微分方程初值問題偏微分方程12/10/202253微分方程MATLAB能夠求解的微分方程類型包括:12/1常微分方程初值問題MATLAB可以求解的常微分方程包括下面三種類型:顯式常微分方程線性隱式常微分方程,,其中為矩陣全隱式常微分方程12/10/202254常微分方程初值問題MATLAB可以求解的常微分方程包括下顯式常微分方程MATLAB可以求解剛性方程和非剛性方程。求解微分方程的命令格式為: [t,y]=solver(odefun,tspan,y0,options)odefun:待求解方程的句柄tspan:為積分區(qū)間y0:為一個向量,包括問題的初始條件Options:用于指定求解算法。對于剛性方程和非剛性方程,可以選擇的算法不同。對于非剛性方程,可以選擇的算法如下:ode45:基于顯式Runge-Kutta(4,5)規(guī)則求解12/10/202255顯式常微分方程MATLAB可以求解剛性方程和非剛性方程。對于非剛性方程,可以選擇的算法如下:ode45:基于顯式Runge-Kutta(4,5)規(guī)則求解ode23:基于顯式Runge-Kutta(2,3)規(guī)則求解ode113:利用變階Adams-Bashforth-Moulton算法求解12/10/202256對于非剛性方程,可以選擇的算法如下:12/10/202256剛性方程的求解方法如下:ode15s:基于數(shù)值積分公式的變階求解算法ode23s:采用二階改進Rosenbrock公式的算法ode23t:采用自由內(nèi)插的梯形規(guī)則ode23tb:采用TR-BDF2算法,該算法為隱式Runge-Kutta公式,包含兩個部分,第一個部分為梯形規(guī)則,第二個部分為二階后向差分。12/10/202257剛性方程的求解方法如下:12/10/202257完全隱式常微分方程完全隱式常微分方程的形式為:。函數(shù)ode15i用于求解完全隱式常微分方程。用法為: [t,y]=ode15i(odefun,tspan,y0,yp0,options)Odefun:為待求解方程Tspan:用于指定積分區(qū)間y0和yp0:分別用于指定初值和,這兩個初值必須一致,即滿足。Options:可選參數(shù),用于指定積分方法。該函數(shù)輸出在離散節(jié)點處的近似值。12/10/202258完全隱式常微分方程完全隱式常微分方程的形式為:常微分方程邊值問題bvp4c函數(shù)用于求解常微分方程邊值問題,該函數(shù)點調(diào)用格式為:sol=bvp4c(odefun,bcfun,solinit)sol=bvp4c(odefun,bcfun,solinit,options)Odefun:待求解的函數(shù)句柄bcfun:函數(shù)邊值條件的函數(shù)句柄solinit:一個結構體,為該方程解的初始估計值。options:可選參數(shù),用于指定積分算法,該參數(shù)為一個結構體,可以通過函數(shù)bvpset創(chuàng)建。12/10/202259常微分方程邊值問題bvp4c函數(shù)用于求解常微分方程邊值問第4章MATLAB的數(shù)學運算MATLAB2006a簡明教程清華大學出版社教學目標教學重點教學內(nèi)容12/10/202260第4章MATLAB的數(shù)學運算MATLAB2006教學目標掌握向量和矩陣的運算掌握線性代數(shù)的基本函數(shù)和使用掌握稀疏矩陣的操作掌握多項式運算及插值掌握函數(shù)操作12/10/202261教學目標掌握向量和矩陣的運算12/10/20222教學內(nèi)容向量、矩陣及其運算矩陣和線性代數(shù)稀疏型矩陣多項式與插值函數(shù)運算微分方程12/10/202262教學內(nèi)容向量、矩陣及其運算12/10/20223向量、矩陣及其運算向量的點乘、叉乘和混合積矩陣的基本運算特殊矩陣生成向量和矩陣的范數(shù)12/10/202263向量、矩陣及其運算向量的點乘、叉乘和混合積12/10/202向量的點乘、叉乘和混合積向量的點乘 向量的點乘又稱為內(nèi)積,是兩個向量的模和兩個向量之間的夾角余弦三者的乘積。MATLAB中,實現(xiàn)點乘的函數(shù)是dot。dot函數(shù)的用法為dot(x1,x2),其中x1和x2的維數(shù)必須相同。向量的叉乘 向量乘法除點乘之外還有叉乘。兩個向量叉積的幾何意義是指以兩個向量模的乘積為模,方向和兩個向量構成右手坐標系的向量。向量的叉乘不可交換。在MATLAB中函數(shù)cross用于實現(xiàn)向量的叉乘。向量的混合積 向量的混合積的幾何意義是:它的絕對值表示以三個向量為楞的平行六面體的體積,符號由右手法則確定。上面介紹了向量的點乘和叉乘,向量的混合積由點乘和叉乘逐步實現(xiàn)。12/10/202264向量的點乘、叉乘和混合積向量的點乘12/10/20225矩陣的基本運算矩陣與常數(shù)之間的四則運算 矩陣與常數(shù)的運算與數(shù)組運算相同矩陣和矩陣之間的四則運算矩陣和矩陣之間的加減運算與數(shù)組運算相同設A是一個m×n矩陣,B是一個p×q矩陣,當n=p時,兩個矩陣可以相乘,乘積為m×q矩陣。矩陣乘法不可逆。在MATLAB中,矩陣乘法由“*”實現(xiàn)。矩陣除法在實際中主要用于求解線性方程組矩陣轉置 符號“’”實現(xiàn)矩陣的轉置操作。對于實數(shù)矩陣,“’”表示矩陣轉置,對于復數(shù)矩陣,“’”實現(xiàn)共軛轉置。對于復數(shù)矩陣,如果想要實現(xiàn)非共軛轉置,可以使用符號“.’”。矩陣乘方12/10/202265矩陣的基本運算矩陣與常數(shù)之間的四則運算12/10/2022特殊矩陣生成(1/2)函數(shù)功能[]生成空白矩陣zeros生成全0矩陣eye生成單位矩陣ones生成全1矩陣triltriu生成上三角或下三角矩陣diag生成對角矩陣gallery生成一些小的測試矩陣hadamard生成hadamard矩陣hankel生成hankel矩陣hilb生成Hilbert矩陣invhilb生成反Hilbert矩陣magic生成魔術矩陣pascal生成n階Pascal矩陣rand生成服從均勻分布的隨機矩陣randn生成服從正態(tài)分布的隨機矩陣rosser典型的對稱矩陣特征值的問題測試toeplitz生成Toeplitz矩陣vander生成范德蒙矩陣wilkinson生成Wilkinson矩陣compan生成多項式的伴隨矩陣12/10/202266特殊矩陣生成(1/2)函數(shù)功能[]生成空白矩陣zeros生特殊矩陣生成(2/2)1.對角矩陣的生成對角矩陣指除對角線以外其他元素為0的矩陣。函數(shù)diag可以生成對角矩陣。該函數(shù)的用法為:A=diag(V,K),其中V是一個向量,K是一個整數(shù)。該函數(shù)返回一個矩陣,矩陣的第K個對角線為V。K在默認情況下為0,表示矩陣的主對角線,K大于0時表示主對角線的上方,小于0時為主對角線的下方。V=diag(A,K),其中A時一個矩陣。K與上面的語句相同。該語句返回矩陣A第K個對角線上的元素組成的矩陣。2.魔術矩陣的生成 魔術矩陣是一種經(jīng)常遇到的矩陣,除了二階方陣之外,魔術矩陣的每一行、每一列以及每條主對角線的元素之和都相同。在MATLAB中,magic函數(shù)用于生成魔術矩陣。其調(diào)用方法為magic(N),其中N為正整數(shù),并且N≠2.12/10/202267特殊矩陣生成(2/2)1.對角矩陣的生成12/10/202向量和矩陣的范數(shù)向量的范數(shù)定義為,其中,最常用的值為1、2和無窮大。矩陣的范數(shù)定義為,其中,最常用的值為1、2和無窮大。向量和矩陣的范數(shù)可以通過函數(shù)norm求解。該函數(shù)的調(diào)用格式為n=norm(A,p),其中p用于指定范數(shù)的類型。p可以為所有大于1的常數(shù),最常用的為1、2、inf和'fro','fro'為求解矩陣A的Frobenius范數(shù)。當p省略時,默認值為2。12/10/202268向量和矩陣的范數(shù)向量的范數(shù)定義為,其中,最常用的值為1矩陣和線性代數(shù)線性方程組逆矩陣和行列式矩陣分解矩陣指數(shù)函數(shù)和冪函數(shù)矩陣特征值矩陣奇異值分解12/10/202269矩陣和線性代數(shù)線性方程組12/10/202210線性方程組(1/2)利用矩陣求逆的方法求解方程組 我們首先求系數(shù)矩陣的逆,然后利用矩陣的逆求解方程組的解。利用矩陣的左除符號“\”或者右除符號“/”求解方程組12/10/202270線性方程組(1/2)利用矩陣求逆的方法求解方程組12/10線性方程組(2/2)利用左除符號和右除符號求解線性方程組,避免了矩陣求逆操作,因此系數(shù)矩陣不必為方陣。如果系數(shù)矩陣的維數(shù)為,則有三種情況:,此時方程組為超定方程組,MATLAB將給出最小二乘解;,此時方程組為方陣系統(tǒng),MATLAB給出精確解;,此時方程組為欠約束方程組,MATLAB將給出一組基解,該解中包含最多個非零元素。在采用除法符號(包括左除和右除)求解線性方程組時,MATLAB采用因式分解法求解方程組。盡管MATLAB提供了兩種方法,一般更傾向于采用第二種方法,該方法用到較少的浮點數(shù)運算,執(zhí)行速度較快,另外,由于采用分解法,得出的結果要精確的多。12/10/202271線性方程組(2/2)利用左除符號和右除符號求解線性方程組,避逆矩陣和行列式矩陣行列式 在MATLAB中,矩陣的行列式用函數(shù)det求解。調(diào)用格式為det(A),其中A為方陣。矩陣求逆 對于非奇異方陣,如果存在方陣,滿足并且,則稱為矩陣的逆,記為,在MATLAB中,用inv(A)來實現(xiàn)矩陣逆的求解。12/10/202272逆矩陣和行列式矩陣行列式12/10/202213矩陣分解Cholesky分解LU分解QR分解(正交分解)12/10/202273矩陣分解Cholesky分解12/10/202214Cholesky分解Cholesky分解將對稱矩陣表示為一個三角矩陣與其轉置的乘積的形式,即,其中為對稱矩陣,為上三角矩陣。并非所有的對稱矩陣都能進行Cholesky分解,只有正定矩陣能夠進行Cholesky分解,如Pascal矩陣。在MATLAB中Cholesky分解由函數(shù)chol實現(xiàn),該函數(shù)對輸入矩陣進行Cholesky分解,返回其對應的三角矩陣。Cholesky分解同樣適用于復數(shù)矩陣。如果復數(shù)矩陣滿足,其中表示矩陣的共軛轉置。如果矩陣存在Cholesky分解則稱其為Hermitian正定。12/10/202274Cholesky分解Cholesky分解將對稱矩陣表示LU分解矩陣的LU分解將一個方陣表示為一個下三角置換矩陣和一個上三角矩陣乘積的形式。如,其中為下三角置換矩陣,為上三角矩陣。MATLAB中LU分解可以通過函數(shù)lu實現(xiàn)。通過矩陣的LU分解,可以實現(xiàn)線性方程組的快速求解。另外矩陣的
LU分解可用于矩陣快速求逆和求行列式,有det(A)=det(L)*det(U)和inv(A)=inv(U)*inv(L)。12/10/202275LU分解矩陣的LU分解將一個方陣表示為一個下三角置換QR分解(正交分解)(1/2)如果矩陣滿足,則為正交矩陣。正交矩陣為實矩陣,其每列為單位向量,并且各列互相正交。正交矩陣最簡單的例子為二維旋轉矩陣:對于復數(shù)矩陣,對應的概念為酉矩陣。在數(shù)值計算中正交矩陣有著重要的應用,因為正交矩陣具有長度不變性、角度不變性,并且不會擴大誤差。矩陣的正交分解將矩陣表示為正交矩陣(或酉矩陣)和上三角矩陣的乘積。如或,其中為正交矩陣或酉矩陣,為上三角矩陣,為置換矩陣。正交分解有四種形式,包括完全分解、簡化分解、帶置換矩陣的分解和不帶置換矩陣的分解。12/10/202276QR分解(正交分解)(1/2)如果矩陣滿足QR分解(正交分解)(2/2)完全分解 過約束線性系統(tǒng)的系數(shù)矩陣函數(shù)超過列數(shù),為一個矩陣并且,記為,則完全正交分解產(chǎn)生一個的正交矩陣和一個的上三角矩陣,滿足。MATLAB中矩陣的完全分解由函數(shù)qr實現(xiàn)。簡化分解 矩陣的簡化正交分解可以節(jié)省存儲空間和運算時間。正交分解可以通過在qr函數(shù)中設置第二個參數(shù)為0實現(xiàn)。與LU分解不同,QR分解不需要對矩陣進行旋轉或者置換,如上面的兩個例子。但是如果對矩陣進行置換可以避免由于矩陣奇異造成的誤差。選擇置換后,在分解的每一步,選擇剩下列中范數(shù)最大的一列作為分解的基。這樣得到的結果中,R的對角線元素按照降序排列。包含置換的正交分解可以通過增加qr函數(shù)的輸出參數(shù)得到。12/10/202277QR分解(正交分解)(2/2)完全分解12/10/202矩陣指數(shù)函數(shù)和冪函數(shù)矩陣的正整數(shù)冪 如果A為方陣,p為正整數(shù),則A^p表示p個A相乘。矩陣的負數(shù)冪與分數(shù)冪 如果A為非奇異方陣,則A^(-p)等價于inv(A)^p。MATLAB中,允許對矩陣進行分數(shù)冪運算,運算結果依賴于矩陣特征值的分布情況。矩陣指數(shù)運算 expm用于實現(xiàn)矩陣的指數(shù)運算。 線性系統(tǒng)的解可以表示為,其中的矩陣指數(shù)運算可以通過expm完成。12/10/202278矩陣指數(shù)函數(shù)和冪函數(shù)矩陣的正整數(shù)冪12/10/20221矩陣特征值矩陣的特征值和特征值分解在線性代數(shù)中一直扮演著重要的角色。在MATLAB中,函數(shù)eig實現(xiàn)矩陣的特征值計算和特征值分解。例4-23利用函數(shù)eig實現(xiàn)矩陣的特征值計算利用例2-22中的矩陣A。在命令窗口中輸入:>>A=[0,-6,-1;6,2,-16;-5,20,-10];A=0-6-162-16-520-10>>lambda=eig(A)lambda=-3.0710-2.4645+17.6008i-2.4645-17.6008i上例實現(xiàn)對矩陣特征值的計算,如果在調(diào)用eig函數(shù)時,設置輸出參數(shù)的個數(shù)為2,則實現(xiàn)對矩陣的特征值分解。12/10/202279矩陣特征值矩陣的特征值和特征值分解在線性代數(shù)中一直扮演著重矩陣奇異值分解對于矩陣,如果存在數(shù)和向量、,滿足和,則稱為的奇異值,、為的奇異向量。如果將矩陣的奇異值寫為對角矩陣的格式,記為(不足的部分記為0);以奇異向量為列并擴充為正交矩陣和,則有和。和為正交矩陣,則得到,即為矩陣的奇異值分解。在MATLAB中,函數(shù)svd實現(xiàn)矩陣的奇異值分解。與矩陣的QR分解相似,奇異值分解也可以有簡化分解。方法與QR分解相同,即在輸入?yún)?shù)中以0標志。如在命令窗口中繼續(xù)輸入:12/10/202280矩陣奇異值分解對于矩陣,如果存在數(shù)和向量稀疏型矩陣(1/2)在很多實際應用中,用戶往往會遇到只有少數(shù)非0元素的矩陣,我們稱這些矩陣為稀疏矩陣。如果對稀疏矩陣中的全部元素進行存儲和計算則會導致時間和空間上的極大浪費。因此,為了更有效的存儲和處理稀疏矩陣,MATLAB中采用了一些優(yōu)化技術:MATLAB中只存儲稀疏矩陣中的非0元素,并用行索引和列索引表明每個非0元素在原矩陣中的位置;同樣,MATLAB中采用了一些專門的算法來處理稀疏矩陣,以避免對0元素的運算,并且最大限度地減少中間結果中的非0元素。12/10/202281稀疏型矩陣(1/2)在很多實際應用中,用戶往往會遇到只有少稀疏型矩陣(2/2)稀疏型矩陣的生成稀疏矩陣與滿矩陣的相互轉化稀疏矩陣的操作12/10/202282稀疏型矩陣(2/2)稀疏型矩陣的生成12/10/20222稀疏型矩陣的生成(1/3)MATLAB不會自動生成稀疏矩陣,因此,當用戶判定一個矩陣為稀疏矩陣時,利用相關函數(shù)生成稀疏矩陣。MATLAB中用于生成稀疏矩陣的函數(shù)如表4-2所示。函數(shù)功能speye生成單位稀疏矩陣sprand生成均勻分布的隨機稀疏矩陣sprandn生成正態(tài)分布的隨機稀疏矩陣sprandsym生成對稱隨機稀疏矩陣spdiags生成對角隨機稀疏矩陣12/10/202283稀疏型矩陣的生成(1/3)MATLAB不會自動生成稀疏矩陣稀疏型矩陣的生成(2/3)speye函數(shù)speye函數(shù)的調(diào)用格式為:S=speye(m,n);S=speye(n),分別用于生成階主對角線元素為一的稀疏矩陣和階單位稀疏矩陣。12/10/202284稀疏型矩陣的生成(2/3)speye函數(shù)12/10/20稀疏型矩陣的生成(3/3)sprand和sprandn函數(shù)這兩個函數(shù)的調(diào)用格式完全相同。兩個函數(shù)的唯一區(qū)別為sprand函數(shù)生成的稀疏矩陣元素服從均勻分布,而sprandn函數(shù)生成的稀疏矩陣元素服從正態(tài)分布。下面以sprand函數(shù)為例介紹這兩個函數(shù)的應用。sprand函數(shù)的調(diào)用格式有:R=sprand(S),生成與稀疏矩陣S結構完全相同的稀疏矩陣,矩陣元素服從均勻分布;R=sprand(m,n,density),生成階稀疏矩陣,矩陣非0元素個數(shù)大約為density*m*n。R=sprand(m,n,density,rc),與上面的命令類似。如果rc為數(shù)值,則生成的矩陣條件數(shù)的倒數(shù)接近rc;如果rc為一個長度不大于min(m,n)的一維向量,則生成的矩陣以rc的元素為奇異值,其他奇異值為0。注意,不能用命令sprand(n)生成n階稀疏矩陣。12/10/202285稀疏型矩陣的生成(3/3)sprand和sprandn稀疏矩陣與滿矩陣的相互轉化MATLAB提供了一些函數(shù)用于在稀疏矩陣和滿矩陣之間進行轉換,這些函數(shù)如表4-3所示。函數(shù)功能sparse將滿矩陣轉化為稀疏矩陣full將稀疏矩陣轉化為滿矩陣find查找非0元的索引spconvert導入稀疏矩陣12/10/202286稀疏矩陣與滿矩陣的相互轉化MATLAB提供了一些函數(shù)用于sparse函數(shù)sparse函數(shù)的調(diào)用格式如下:S=sparse(A),該命令將矩陣轉化為稀疏矩陣。S=sparse(i,j,s,m,n,nzmax),該命令生成一個階稀疏矩陣,其中、、分別為該矩陣非0元的橫坐標向量、縱坐標向量和值,、、有相同的長度。該矩陣的非0元數(shù)目不超過nzmax。S=sparse(i,j,s,m,n),該命令與上面一條命令功能類似,生成的稀疏矩陣的非0元個數(shù)由的長度確定。S=sparse(i,j,s),該命令生成的稀疏矩陣維數(shù)為。S=sparse(m,n),該命令生成一個初始稀疏矩陣,矩陣的全部元素為0。12/10/202287sparse函數(shù)sparse函數(shù)的調(diào)用格式如下:12/1full函數(shù)和find函數(shù)full函數(shù) full函數(shù)的應用比較簡單,其調(diào)用格式為X=full(S),該命令將稀疏矩陣S轉換為滿矩陣。find函數(shù) find既適用于滿矩陣,也適用于稀疏矩陣。該函數(shù)在應用于稀疏矩陣時用于查找稀疏矩陣中的非0元素。該函數(shù)可以返回非0元素的位置、行列向量和元素值。12/10/202288full函數(shù)和find函數(shù)full函數(shù)12/10/常用的稀疏矩陣操作函數(shù)MATLAB中的大部分數(shù)學函數(shù)可以用于稀疏矩陣,功能和調(diào)用格式和應用于滿矩陣時相同。另外,MATLAB還提供了一些函數(shù)專門應用于稀疏矩陣。常用的稀疏矩陣操作函數(shù)如表所示。函數(shù)功能nnz返回矩陣非0元的個數(shù)nonzeros返回矩陣的非0元素構成的向量,以矩陣的列為序nzmax返回為矩陣非0元分配的存儲空間大小spones將矩陣的所有非0元素置為1spalloc為稀疏矩陣分配內(nèi)存空間issparse判斷是否為稀疏矩陣,是則返回值TRUE,否則返回FALSE。spfun對稀疏矩陣的非0元素進行操作spy稀疏矩陣的圖形表示12/10/202289常用的稀疏矩陣操作函數(shù)MATLAB中的大部分數(shù)學函數(shù)可以用多項式與插值
多項式在數(shù)學中有著極為重要的作用,同時多項式的運算也是工程和應用中經(jīng)常遇到的問題。MATLAB提供了一些專門用于處理多項式的函數(shù),用戶可以應用這些函數(shù)對多項式進行操作。MATLAB中對多項式的操作包括多項式求根、多項式的四則運算及多項式的微積分。12/10/202290多項式與插值多項式在數(shù)學中有著極為重要多項式的表示在MATLAB中多項式用一個行向量表示,向量中的元素為該多項式的系數(shù),按照降序排列。如多項式可以表示為向量p=[9743]。用戶可以創(chuàng)建向量的方式創(chuàng)建多項式,再將其顯示為多項式,
12/10/202291多項式的表示在MATLAB中多項式用一個行向量表示,向量多項式的四則運算由于多項式是利用向量來表示,多項式的四則運算可以轉化為向量的運算。多項式的加減為對應項系數(shù)的加減,因此可以通過向量的加減來實現(xiàn)。但是在向量的加減中兩個向量需要有相同的長度,因此在進行多項式加減時,需要將短的向量前面補0。多項式的乘法實際上是多項式系數(shù)向量之間的卷積運算,可以通過MATLAB中的卷積函數(shù)conv來完成。多項式的除法為乘法的逆運算,可以通過反卷積函數(shù)deconv來實現(xiàn)。12/10/202292多項式的四則運算由于多項式是利用向量來表示,多項式的四則運算多項式的其他運算除多項式的四則運算外,MATLAB還提供了多項式的一些其他運算。這些運算及其對應的函數(shù)如表所示。函數(shù)功能roots多項式求根polyval多項式求值polyvalm矩陣多項式求值polyder多項式求導poly求矩陣的特征多項式;或者求一個多項式,其根為指定的數(shù)值polyfit多項式曲線擬合residue求解余項
12/10/202293多項式的其他運算除多項式的四則運算外,MATLAB還提供了多項式的運算函數(shù)(1/2)roots函數(shù)和poly函數(shù) 這兩個函數(shù)為功能互逆的兩個函數(shù)。roots函數(shù)用于求解多項式的根。該函數(shù)的輸入?yún)?shù)為多項式的系數(shù)組成的行向量,返回值為由多項式的根組成的列向量。poly函數(shù)用于生成根為制定數(shù)值的多項式。polyval函數(shù) polyval函數(shù)用于多項式求值。對于給定的多項式,利用該函數(shù)可以計算該多項式在任意點的值。12/10/202294多項式的運算函數(shù)(1/2)roots函數(shù)和poly函數(shù)多項式的運算函數(shù)(2/2)polyder函數(shù)函數(shù)polyder用于多項式求導。該函數(shù)可以用于求解一個多項式的導數(shù)、兩個多項式乘積的導數(shù)和兩個多項式商的導數(shù)。該函數(shù)的用法為:q=polyder(p)該命令計算多項式p的導數(shù)。c=polyder(a,b)該命令實現(xiàn)多項式a、b的積的導數(shù)。[q,d]=polyder(a,b)該命令實現(xiàn)多項式a、b的商的導數(shù),q/d為最后的結果。
12/10/202295多項式的運算函數(shù)(2/2)polyder函數(shù)12/10多項式擬合曲線擬合是工程中經(jīng)常要用到的技術之一。MATLAB提供了曲線擬合工具箱滿足用戶要求,另外,還提供了多項式擬合函數(shù)。函數(shù)polyfit給出在最小二乘意義下最佳擬合系數(shù)。該函數(shù)的調(diào)用格式為: p=polyfit(x,y,n) 其中x、y分別為待擬合數(shù)據(jù)的x坐標和y坐標,n用于指定返回多項式的次數(shù)。12/10/202296多項式擬合曲線擬合是工程中經(jīng)常要用到的技術之一。MATLA數(shù)據(jù)插值根據(jù)已知數(shù)據(jù)推斷未知數(shù)據(jù),則需要使用數(shù)據(jù)插值的概念。MATLAB提供了對數(shù)組的任意一維進行插值的工具,這些工具大多需要用到多維數(shù)組的操作。本節(jié)將對數(shù)據(jù)插值做簡單的介紹,主要介紹一維插值。MATLAB中一維插值主要有:多項式插值快速傅立葉變換(FFT)插值。
12/10/202297數(shù)據(jù)插值根據(jù)已知數(shù)據(jù)推斷未知數(shù)據(jù),則需要使用數(shù)據(jù)插值的概念。一維插值一維插值在曲線擬合和數(shù)據(jù)分析中具有重要的地位。在MATLAB中,一維插值由函數(shù)interp1實現(xiàn)。該函數(shù)的調(diào)用格式為 yi=interp1(x,y,xi,method)x、y:采用數(shù)據(jù)的x坐標和y坐標xi:待插值的位置method:采用的插值方法該語句返回函數(shù)在點xi處的插值結果。該語句中的參數(shù)method可以選擇的內(nèi)容如表所示。參數(shù)對應方法'nearest'最近鄰插值'linear'線性插值'spline'三次樣條插值'pchip'或'cubic'三次插值12/10/202298一維插值一維插值在曲線擬合和數(shù)據(jù)分析中具有重要的地位。在M函數(shù)運算函數(shù)的表示數(shù)學函數(shù)圖象的繪制函數(shù)極值函數(shù)求解數(shù)值積分含參數(shù)函數(shù)的使用
12/10/202299函數(shù)運算函數(shù)的表示12/10/202240函數(shù)的表示MATLAB中提供了兩種函數(shù)表示的方法:利用M文件將函數(shù)定義為MALTAB函數(shù) 將函數(shù)定義為MALTAB函數(shù),當需要調(diào)用該函數(shù)時,需要通過符號“@”獲取函數(shù)句柄,利用函數(shù)句柄實現(xiàn)對函數(shù)的操作。匿名函數(shù)方法直接創(chuàng)建函數(shù),如語句:>>fh=@(x)1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
12/10/2022100函數(shù)的表示MATLAB中提供了兩種函數(shù)表示的方法:12數(shù)學函數(shù)圖象的繪制函數(shù)圖象具有直觀的特性,可以通過函數(shù)圖象查看出一個函數(shù)的總體特征。MATLAB提供了繪制函數(shù)圖象的函數(shù)fplot,方便用戶繪制函數(shù)的圖象。下面介紹該函數(shù)的用法。該函數(shù)的調(diào)用格式如下:fplot(fun,limits),y=f(x)fplot(fun,limits,LineSpec)fplot(fun,limits,tol)fplot(fun,limits,tol,LineSpec)fplot(fun,limits,n)fun可以為MATLAB函數(shù)的M文件名,可以是包含變量x的字符串,該字符串可以傳遞給函數(shù)eval,還可以是函數(shù)句柄。參數(shù)limits用于指定繪制圖象的范圍。limits是一個向量,用于指定x軸的范圍,格式為[xminxmax]。limits也可以同時指定y軸的范圍,格式為[xminxmaxyminymax]。12/10/2022101數(shù)學函數(shù)圖象的繪制函數(shù)圖象具有直觀的特性,可以通過函數(shù)圖象函數(shù)極值一元函數(shù)的極小值fminbnd求得函數(shù)在給定區(qū)間內(nèi)的局部極小值。該函數(shù)的調(diào)用格式為 x=fminbnd(fun,x1,x2,options)fun為函數(shù)句柄x1和x2分別用于指定區(qū)間的左右邊界options用于指定程序的其他參數(shù),其元素取值如表所示。
名稱描述Display控制結果的輸出,參數(shù)可以為“off”,不輸出任何結果;“iter”,輸出每個插值點的值;“final”,輸出最后結果;“notify”為默認值,僅當函數(shù)不收斂時輸出結果FunValCheck檢測目標函數(shù)值是否有效。選擇on則當函數(shù)返回數(shù)據(jù)為復數(shù)或空數(shù)據(jù)時發(fā)出警告;off則不發(fā)出警告MaxFunEvals允許進行函數(shù)評價的最大次數(shù)MaxIter最大迭代次數(shù)OutputFcn指定每次迭代時調(diào)用的用戶自定義的函數(shù)TolX返回的x的誤差12/10/2022102函數(shù)極值一元函數(shù)的極小值名稱描述Display控制結果的多元函數(shù)的極小值MATLAB提供了函數(shù)fminsearch用于計算多元函數(shù)的極小值。fminsearch函數(shù)內(nèi)部應用了Nelder-Mead單一搜索算法,通過調(diào)整x的各個元素的值來尋找f(x)的極小值。該算法雖然對于平滑函數(shù)搜索效率沒有其他算法高,但它不需要梯度信息,從而擴展了其應用范圍。因此,該算法特別適用于不太平滑、難以計算梯度信息或梯度信息價值不大的函數(shù)。用于求解函數(shù)極小值的函數(shù)還有fminbnd。fminbnd函數(shù)的用法與fminsearch函數(shù)的用法基本相同,不同之處在于:fminbnd函數(shù)的輸入?yún)?shù)為尋找最小值的區(qū)間,并且只能用于求解一元函數(shù)的極值,fminsearch函數(shù)的輸入?yún)?shù)為初始值。12/10/2022103多元函數(shù)的極小值MATLAB提供了函數(shù)fminsearc函數(shù)求解可以使用函數(shù)fzero()來求一元函數(shù)的零點。尋找一元函數(shù)零點時,可以指定一個初始點,或者指定一個區(qū)間。當指定一個初始點時,此函數(shù)在初始點附近尋找一個使函數(shù)值變號的區(qū)間,如果沒有找到這樣的區(qū)間,則函數(shù)返回NaN。該函數(shù)的調(diào)用格式為:x=fzero(fun,x0),x=fzero(fun,[x1,x2]):尋找x0附近或者區(qū)間[x1,x2]內(nèi)fun的零點,返回該點的x坐標;x=fzero(fun,x0,options),x=fzero(fun,[x1,x2],options):通過options設置參數(shù);[x,fval]=fzero(...):返回零點的同時返回該點的函數(shù)值;[x,fval,exitflag]=fzero(...):返回零點、該點的函數(shù)值及程序退出的標志;[x,fval,exitflag,output]=fzero(...):返回零點
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青海交通職業(yè)技術學院《福利經(jīng)濟學》2023-2024學年第二學期期末試卷
- 河北省2024七年級道德與法治上冊第四單元追求美好人生第十二課端正人生態(tài)度第1課時擁有積極的人生態(tài)度背記新人教版
- 六年級品德與社會下冊 第四單元 再見我的小學生活 1 我的成長足跡說課稿6 新人教版
- 八年級上冊歷史人教版同步聽課評課記錄第3課《太平天國運動》
- 新人教版七年級數(shù)學上冊1.5.1《乘方》聽評課記錄1
- 2025春季學期少先隊工作安排表
- 2024-2025學年第二學期開學典禮-教師代表發(fā)言
- 通化師范學院《現(xiàn)代生物技術制藥》2023-2024學年第二學期期末試卷
- 門禁安裝施工方案
- 歷史教研組聽評課記錄表
- 2024-2030年中國免疫細胞存儲行業(yè)市場發(fā)展分析及競爭形勢與投資戰(zhàn)略研究報告
- 工貿(mào)行業(yè)企業(yè)安全生產(chǎn)標準化建設實施指南
- T-CACM 1560.6-2023 中醫(yī)養(yǎng)生保健服務(非醫(yī)療)技術操作規(guī)范穴位貼敷
- 2024年全國統(tǒng)一考試高考新課標Ⅱ卷數(shù)學試題(真題+答案)
- 人教版小學數(shù)學一年級下冊第1-4單元教材分析
- JTS-215-2018碼頭結構施工規(guī)范
- 財務實習生合同
- 2024年長沙衛(wèi)生職業(yè)學院單招職業(yè)適應性測試題庫含答案
- 2024山西省文化旅游投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 地質(zhì)災害危險性評估的基本知識
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
評論
0/150
提交評論