第三章 MATLAB數(shù)值運算_第1頁
第三章 MATLAB數(shù)值運算_第2頁
第三章 MATLAB數(shù)值運算_第3頁
第三章 MATLAB數(shù)值運算_第4頁
第三章 MATLAB數(shù)值運算_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第三章MATLAB數(shù)值運算

目標(biāo):掌握向量、矩陣、數(shù)組、字符串和多項式的構(gòu)造和運算方法。掌握關(guān)系和邏輯運算。主要內(nèi)容

3.1向量及其運算

3.2矩陣及其運算

3.3數(shù)組及其運算3.4字符串

3.5多項式運算

3.6關(guān)系和邏輯運算3.1向量及其運算向量是矢量運算的基礎(chǔ)行向量列向量3.1.1向量的構(gòu)造1.逐個輸入>>a=[139101516] %采用空格和逗號分隔構(gòu)成行向量>>b=[1;3;9;10;15;16] %采用分號隔開構(gòu)成列向量2.利用冒號表達(dá)式“:”生成向量>>x=1:2:9 %初值=1,終值=9,步長=2>>z=1:5 %初值=1,終值=5,默認(rèn)步長=13.利用函數(shù)生成向量>>x=linspace(1,10,5) %初值=1,終值=10,元素數(shù)目=5>>x=logspace(1,3,3) %初值=10,終值=1000,元素數(shù)目=33.1.2向量的讀取例:>>a=linspace(1,10,10)>>a(3)>>a(2:7)>>a(8:-2:3)>>a(6:end)>>length(a)>>size(a)3.2矩陣及其運算MATLAB以矩陣為基本的運算單元,向量和標(biāo)量作為特殊的矩陣處理:向量看作只有一行或一列的矩陣;標(biāo)量看作只有一個元素的矩陣。3.2.1矩陣的構(gòu)造通過直接輸入矩陣的元素構(gòu)造矩陣:用中括號[]把所有矩陣元素括起來同一行的不同數(shù)據(jù)元素之間用空格或逗號間隔用分號(;)指定一行結(jié)束可分成幾行進(jìn)行輸入,用回車符代替分號數(shù)據(jù)元素可以是表達(dá)式,系統(tǒng)將自動計算結(jié)果通過數(shù)組(矩陣)編輯器通過M文件創(chuàng)建矩陣?yán)肕ATLAB函數(shù)創(chuàng)建矩陣標(biāo)準(zhǔn)矩陣生成函數(shù)zeros(m,n)生成一個m行n列的零矩陣,m=n時可簡寫為zeros(n)ones(m,n)生成一個m行n列的元素全為1的矩陣,m=n時可寫為ones(n)eye(m,n)生成一個主對角線全為1的m行n列矩陣,

m=n時可簡寫為eye(n),即為n維單位矩陣diag(X)若X是矩陣,則diag(X)為X的主對角線向量若X是向量,diag(X)產(chǎn)生以X為主對角線的對角矩陣tril(A)提取一個矩陣的下三角部分triu(A)提取一個矩陣的上三角部分rand(m,n)產(chǎn)生0~1之間均勻分布的隨機矩陣m=n時簡寫為rand(n)randn(m,n)產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機矩陣

m=n時簡寫為randn(n)3.2.2矩陣下標(biāo)與子矩陣提取A(m,n) 提取第m行,第n列元素A(:,n) 提取第n列元素A(m,:) 提取第m行元素A(m1:m2,n1:n2) 提取第m1行到第m2行和第n1列到第n2列的所有元素A(m:end,n) 提取從第m行到最末行和第n列的子塊A(:) 得到一個長列矢量,該矢量的元素按矩 陣的列進(jìn)行排列例1:

修改矩陣A中元素的數(shù)值>>A=[1234;5678;9101112;13141516];>>A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);A=02345778910111213141513.2.3矩陣的特殊化處理函數(shù)reshape在總元素數(shù)不變的前提下,改變矩陣的行數(shù)和列數(shù)

flipud以矩陣“水平中線”為對稱軸,交換上下對稱位置上的矩陣元素fliplr以矩陣“垂直中線”為對稱軸,交換左右對稱位置上的矩陣元素

rot90把矩陣逆時針旋轉(zhuǎn)90°的整數(shù)倍用于專門學(xué)科的特殊矩陣魔方矩陣

魔方矩陣有一個有趣的性質(zhì),其每行、每列及兩條對角線上的元素和都相等。對于n階魔方陣,其元素由1,2,3,…,n2共n2個整數(shù)組成。MATLAB提供了求魔方矩陣的函數(shù)magic(n),其功能是生成一個n階魔方陣。例2:將101~125等25個數(shù)填入一個5行5列的表格中,使其每行每列及對角線的和均為565。>>M=100+magic(5)用于專門學(xué)科的特殊矩陣

范得蒙矩陣

范得蒙德(Vandermonde)矩陣最后一列全為1,倒數(shù)第二列為一個指定的向量,其他各列是其后列與倒數(shù)第二列的點乘積??梢杂靡粋€指定向量生成一個范得蒙矩陣。在MATLAB中,函數(shù)vander(V)生成以向量V為基礎(chǔ)向量的范得蒙矩陣。

例如,A=vander([1;2;3;5])用于專門學(xué)科的特殊矩陣

希爾伯特矩陣的第i行、第j列的元素值為1/(i+j-1)在MATLAB中,生成希爾伯特矩陣的函數(shù)是hilb(n)。

使用一般方法求逆會因為原始數(shù)據(jù)的微小擾動而產(chǎn)生不可靠的計算結(jié)果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數(shù)invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。希爾伯特(Hilbert)矩陣用于專門學(xué)科的特殊矩陣?yán)?/p>

求4階希爾伯特矩陣及其逆矩陣。

命令如下:

formatrat%以有理形式輸出

H=hilb(4)

H=invhilb(4)

3.2.4矩陣的算術(shù)運算1.矩陣的加減運算:+(加)、-(減)2.矩陣乘法:*(乘)3.矩陣除法:/(右除)、\(左除)4.矩陣的乘方:^(乘方)5.矩陣轉(zhuǎn)置:'(轉(zhuǎn)置運算符)

(1)矩陣加減運算

假定有兩個矩陣A和B,則可以由A+B和A-B實現(xiàn)矩陣的加減運算。運算規(guī)則是:若A和B矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運算,A和B矩陣的相應(yīng)元素相加減。如果A與B的維數(shù)不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數(shù)不匹配。

(2)矩陣乘法

假定有兩個矩陣A和B,若A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣。

(3)矩陣除法

在MATLAB中,有兩種矩陣除法運算:\和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\B和B/A運算可以實現(xiàn)。A\B等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。

對于含有標(biāo)量的運算,兩種除法運算的結(jié)果相同,如3/4和4\3有相同的值,都等于0.75。又如,設(shè)a=[10.5,25],則a/5=5\a=[2.10005.0000]。對于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對于矩陣運算,一般A\B≠B/A。

(4)矩陣的乘方

一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標(biāo)量。

3.2.5矩陣函數(shù)函數(shù)功能det計算矩陣所對應(yīng)的行列式的值diag抽取矩陣對角線元素eig求特征值和特征向量inv求矩陣的逆陣rank求矩陣的秩trace求矩陣的跡lu三角分解svd奇異值分解1.對角陣

只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數(shù)量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。(1)提取矩陣的對角線元素

設(shè)A為m×n矩陣,diag(A)函數(shù)用于提取矩陣A主對角線元素,產(chǎn)生一個具有min(m,n)個元素的列向量。

diag(A)函數(shù)還有一種形式diag(A,k),其功能是提取第k條對角線的元素。(2)構(gòu)造對角矩陣

設(shè)V為具有m個元素的向量,diag(V)將產(chǎn)生一個m×m對角矩陣,其主對角線元素即為向量V的元素。

diag(V)函數(shù)也有另一種形式diag(V,k),其功能是產(chǎn)生一個n×n(n=m+)對角陣,其第k條對角線的元素即為向量V的元素。。先建立5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。

A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...

11,18,25,2,19];

D=diag(1:5);

D*A%用D左乘A,對A的每行乘以一個指定常數(shù)

2.三角陣

三角陣又進(jìn)一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的元素全為0的一種矩陣。(1)上三角矩陣

求矩陣A的上三角陣的MATLAB函數(shù)是triu(A)。

triu(A)函數(shù)也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線(包含第k條)以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形成新的矩陣B。(2)下三角矩陣

在MATLAB中,提取矩陣A的下三角矩陣的函數(shù)是tril(A)和tril(A,k),其用法與提取上三角矩陣的函數(shù)triu(A)和triu(A,k)完全相同。3.矩陣的轉(zhuǎn)置與旋轉(zhuǎn)

1).矩陣的轉(zhuǎn)置

轉(zhuǎn)置運算符是單撇號(‘)。

2).矩陣的旋轉(zhuǎn)

利用函數(shù)rot90(A,k)將矩陣A旋轉(zhuǎn)90o的k倍,當(dāng)k為1時可省略。3).矩陣的左右翻轉(zhuǎn)對矩陣實施左右翻轉(zhuǎn)是將原矩陣的第一列和最后一列調(diào)換,第二列和倒數(shù)第二列調(diào)換,…,依次類推。MATLAB對矩陣A實施左右翻轉(zhuǎn)的函數(shù)是fliplr(A)。4).矩陣的上下翻轉(zhuǎn)

MATLAB對矩陣A實施上下翻轉(zhuǎn)的函數(shù)是flipud(A)。4.求矩陣的行列式的值

把一個方陣看作一個行列式,并對其按行列式的規(guī)則求值,這個值就稱為矩陣所對應(yīng)的行列式的值。在MATLAB中,求方陣A所對應(yīng)的行列式的值的函數(shù)是det(A)。>>X=[1230;5608;901112;0141516];>>det(X)ans=-54642.求矩陣的秩矩陣線性無關(guān)的行數(shù)與列數(shù)稱為矩陣的秩。在MATLAB中,求矩陣秩的函數(shù)是rank(A)。>>X=[1,2,3;2,3-5;471];>>rank(X)ans=23.求逆矩陣對于一個方陣A,如果存在一個與其同階的方陣B,使得:

A·B=B·A=I(I為單位矩陣)

則稱B為A的逆矩陣,當(dāng)然,A也是B的逆矩陣。

求一個矩陣的逆是一件非常煩瑣的工作,容易出錯,但在MATLAB中,求一個矩陣的逆非常容易。求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。>>X=[1230;5608;901112;0141516];>>Y=inv(X)>>Y*X %矩陣與其逆陣相乘結(jié)果是單位矩陣>>X*Y %矩陣的逆陣是唯一的4.求特征值和特征向量

在MATLAB中,計算矩陣A的特征值和特征向量的函數(shù)是eig(A),常用的調(diào)用格式有2種:

(1)E=eig(A):求矩陣A的全部特征值,構(gòu)成向量E。

(2)[V,D]=eig(A):求矩陣A的全部特征值,構(gòu)成對角陣D,并求A的特征向量構(gòu)成V的列向量。>>X=[-211;020;-413];>>[VD]=eig(X)3.3數(shù)組及其運算數(shù)組運算和矩陣運算有著顯著的不同。屬于兩種不同的運算:矩陣運算是從矩陣的整體出發(fā),按照線性代數(shù)的運算規(guī)則進(jìn)行,有著明確而嚴(yán)格的數(shù)學(xué)規(guī)則;而數(shù)組運算是從矩陣的單個元素出發(fā),針對每個元素進(jìn)行的運算。MATLAB對數(shù)組運算在符號上做了不同的約定,運算符形式為:.*./.\.^對于加法和減法而言,矩陣運算和數(shù)組運算相同;對于乘法和除法而言,矩陣和數(shù)組的運算有著顯著的不同。

例:3.3-1(exm030301)3.3數(shù)組及其運算3.4字符串所有字符串都用單引號括起來。>>s='matlab'

字符串內(nèi)的單引號是由兩個連續(xù)的單引號表示。字符串中的每個字符(包括空格)都是字符串變量(矩陣或向量)中的一個元素。字符串中的字符以ASCII碼形式儲存并區(qū)分大小寫,用函數(shù)double和abs可以看到字符的ASCII碼。相反,char函數(shù)可以把ASCII碼矩陣轉(zhuǎn)換為字符串矩陣。

char函數(shù)將ASCII碼轉(zhuǎn)換成字符。字符串的操作函數(shù)num2str用來把數(shù)值轉(zhuǎn)換成字符串。函數(shù)int2str把整數(shù)轉(zhuǎn)換成字符串。函數(shù)str2num將字符型矩陣轉(zhuǎn)換為數(shù)字矩陣。函數(shù)str2double將字符串轉(zhuǎn)換為雙精度的數(shù)值。>>A=‘Iamfine.’;>>B=double(A)B=7332971093210210511010146>>ch=char(B)ch=Iamfine.例:

建立一個字符串向量ch=ABc123d4e56Fg9,然后對該向量做如下處理:(1)取第1~5個字符組成的子字符串。

(2)將字符串倒過來重新排列。

(3)將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。

(4)統(tǒng)計字符串中小寫字母的個數(shù)。字符串舉例

ch='ABc123d4e56Fg9'subch=ch(1:5)

%取子字符串

revch=ch(end:-1:1)

%將字符串倒排

k=find(ch>='a'&ch<='z');%找小寫字母的位置

ch(k)=ch(k)-('a'-'A');

%將小寫字母變成相應(yīng)%的大寫字母

length(k)%統(tǒng)計小寫字母的個數(shù)字符串舉例例:建立矩陣A,然后找出大于4的元素的位置。

(1)建立矩陣A。

A=[4,-65,-54,0,6;56,0,67,-45,0]

(2)找出大于4的元素的位置。

find(A>4)find舉例3.6關(guān)系和邏輯運算

MATLAB約定:P137關(guān)系運算符: <(小于)、<=(小于或等于)、>(大于) >=(大于或等于)、==(等于)、~=(不等于)。關(guān)系運算符的運算法則:關(guān)系運算將對兩個數(shù)組的對應(yīng)元素進(jìn)行比較。必須是兩個同維數(shù)組或其中一個數(shù)組為標(biāo)量才能進(jìn)行例3.5-2邏輯運算例3.5-4邏輯函數(shù)邏輯函數(shù)功能all如果所有的元素都是非零值,返回1;否則,返回0。any如果有一個元素為非零值,那么返回1;否則,返回0isempty判斷是否空矩陣isequal判斷兩矩陣是否相同isreal判斷是否是實矩陣3.5多項式多項式是形如 P(x)=a0xn+a1xn-1+…+an-1x+an的式子。在MATLAB中,多項式用行向量表示: P=[a0a1…an-1an]3.5.1多項式的生成與表達(dá)直接輸入系數(shù)向量創(chuàng)建多項式例:創(chuàng)建多項式p=[3501012]y=poly2sym(p)y=poly2sym(p,'s')3.5.1多項式的生成與表達(dá)由多項式的根逆推多項式–poly函數(shù)例:已知向量A=[1–34–8000],用此向量構(gòu)造一多項式并顯示結(jié)果。 (x-1)(x+34)(x+80)(x-0)(x-0)>>PA=poly(A)>>PAX=poly2sym(PA,'X')X^5+113X^4+2606X^3-2720X^23.5.2多項式的運算1.多項式的算術(shù)運算參加加減運算的多項式應(yīng)該具有相同的階次。多項式乘法采用conv

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論