matlab與ansys基礎教程_第1頁
matlab與ansys基礎教程_第2頁
matlab與ansys基礎教程_第3頁
matlab與ansys基礎教程_第4頁
matlab與ansys基礎教程_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 matlab軟件應用§1.1 MATLAB簡介當你要計算時,你可能有兩種選擇,第一用計算器,第二找張草稿紙手算;當你要計算矩陣與向量 相乘時,你現在可能會以為沒有別的辦法了,只能手算了;而當你要計算sin(t+)dt時,你可能會告訴我說:“這個問題只有編程才能解決”?,F在揭曉謎底,MATLAB可以求解上面提出的3個計算式,而做到這一點并不需要草稿紙,也不需要編程。那么MATLAB是一種什么東西呢?MATLAB實際上是一種面向未來的科學計算語言,是MATrix LABratory的簡稱,即矩陣實驗室。這種語言最初的發(fā)明原意是要專門求解矩陣計算問題,后來隨著推向市場,MATLAB

2、不僅保持了強大數值計算功能,而且隨著版本升級,逐漸具有了數據圖形功能,符號計算功能。§1.1.1 MATLAB的發(fā)展簡史LINPACK和EISPACK是美國科學界在六,七十年代發(fā)展起來的FORTRAN程序庫,LINPACK用于解線性方程,EISPACK用于求解特征值問題。七十年代中期Cleve Moler和他的同事在美國國家科學基金資助下研究開發(fā)了調用LINPACK和EISPACK的FORTRAN子程序庫。這兩個程序庫代表著矩陣計算軟件的最高水平。七十年代后期Cleve Moler成為新墨西哥大學計算機科學系主任,他為他的學生開設線性代數課程時,想讓學生能夠充分利用LINPACK和E

3、ISPACK的程序庫,但是面臨著學生必須花時間學習FORTRAN編程,而這不是他的教學目的的兩難困境。為了解決這一難題,他動手用業(yè)余時間為學生們編寫出使用方便,不需要FORTRAN背景的LINPACK,EISPACK接口程序。Cleve Moler把這一接口程序命名為MATLAB,意思就是“矩陣實驗室”。這一接口程序被學生應用后獲得歡迎,取得了意料之中的成功。Cleve Moler隨后幾年把這一程序傳播到其他大學,大家都逐漸認識到它的價值,并成為應用數學界的術語。1983年早春,身為工程師的John Little在Cleve Moler對斯坦福大學訪問時接觸到MATLAB,他眼光獨到地認識到M

4、ATLAB在工程領域有極大的潛在應用天地。因此在這一年,他與Moler、Steve Bangert一起合作開發(fā)出第二代專業(yè)版MATLAB,這一版不再使用FORTRAN語言作為編程核心,而是全部在C語言下重建。這一代不僅保持了MATLAB以前具有的全部數值計算能力,而且增加了數據圖形功能。1984年以MATLAB為依托成立了Mathworks公司,大力把此產品推向市場,并不斷推進MATLAB的研究與開發(fā)。1993年,MATLAB有了第一個Windows版本MATLAB3.5K,同年,又接連推出了在Windows3.X架構下的MATLAB4.0版和4.1版本,這兩個版本與以前版本相比增加了多種廣受

5、歡迎的工具箱,在4.1版本中首次引入了符號計算工具箱。1997年MATLAB5.0版問世,這一版本以windows95為平臺,實現了真正的32位運算。在隨后的幾年里隨著個人計算機操作系統的升級換代,MATLAB也相應的進行了一系列的版本升級。在總結MATLAB計算語言發(fā)展歷程時,最成功的一點是MATLAB把自身建成了一個解釋系統,對其中的函數程序執(zhí)行采用一種解釋執(zhí)行方式,這樣MATLAB就成為一個完全開放的系統,用戶可以方便地看到其函數的源程序,也可以利用它開發(fā)自己的程序,甚至可以針對自己的需要創(chuàng)建自己的“庫”,這一點就使MATLAB可以聚集全球眾多MATLAB應用人員的智慧,不斷增加MATL

6、AB工具箱涉及的應用領域,也就可以不斷增強自身的競爭力,從而使自身成為數值型軟件市場的霸主。§1.1.2 MATLAB語言的主要特點1 功能強大 MATLAB語言具有極強的數值計算功能和數據可視化功能,同時還擁有很強的符號計算功能,可以很方便地解決線性代數和數據分析處理方面所遇到的多種難題,MATLAB語言所提供的動畫功能和用戶交互界面對多媒體套件的開發(fā)也有不小的好處。2.Windows界面簡單易用 當前計算機中使用的軟件普遍都采用微軟公司建立的Windows操作界面行業(yè)標準,MATLAB也不例外,統一的Windows操作界面,使新接觸到MATLAB的人也不會有很大的應用困難,可以做

7、到快速入門。MATLAB自身使用的數學符號和表達式等,與人們慣常的思維定式相符合,很易掌握。MATLAB還提供強大的用戶幫助系統,用戶在遇到難題時可以利用它來解決。3編程簡單,擴展方便 MATLAB所提供的功能以函數形式完成,完全不必接觸算法和內核,編程語法自然、簡單,程序設計簡易、方便。程序代碼開放,用戶可以隨意擴展。4專用工具箱眾多 MATLAB經過多年發(fā)展形成了一系列各具特色的專用工具箱,涉及到科學研究和工程應用的諸多領域,有進行自動控制研究的,有進行仿真實驗的,有進行信號處理的,有進行振動分析的,有進行工程規(guī)劃的,還有的是進行金融管理的,眾多的專用工具箱把科學工作者從繁復的編程工作中解

8、放出來,可以全身心地研究本領域的未解之謎。§1.1.3 MATLAB的安裝及操作界面簡介MATLAB的安裝方式與一般的商業(yè)軟件相似,把光盤放入光驅,系統會自動運行安裝程序,進入安裝界面,按照安裝向導一步一步的進行,完成軟件認證,選擇安裝方式和安裝路徑,選擇所需安裝的工具箱,經過安裝等待,最終完成安裝過程。MATLAB安裝程序在Windows桌面上創(chuàng)建運行程序的快捷方式,在開始菜單中創(chuàng)建了程序組。啟動MATLAB主程序的方法有兩種,第一種方法是用鼠標點擊Windows桌面上創(chuàng)建的MATLAB圖標表示的快捷方式,第二種方法是從開始菜單開始,找到程序組,再找到MATLAB程序組,最后點擊M

9、ATLAB圖標,從而進入MATLAB操作界面。圖1-1 MATLAB操作界面圖1-1就是MATLAB主程序啟動后在計算機顯示器上出現的操作界面。MATLAB操作界面在默認設置下由四部分組成,從上到下分別是菜單欄,工具欄,工作窗口和狀態(tài)顯示欄。工作窗口又由五個不同的窗口組成,默認設置狀態(tài)下在工作窗口左側顯示出上下兩個窗口,右側有一個窗口。下面分別介紹各部分功能。1.菜單欄菜單欄由六個下拉式菜單組成。第一個是文件菜單,可以實現新建、打開工作文件的功能,還有首選項和打印方面的設置選項,并設置了退出主程序的方法。這里重點介紹“set path”展開式菜單。當我們安裝MATLAB完畢后,由于MATLAB

10、是一種解釋執(zhí)行的函數式語言,有大量的工具箱,因此安裝程序自動設置了程序執(zhí)行時所需要進行搜索的路徑,以其盡快尋找到程序中使用的函數文件。我們在使用MATLAB的過程中,有可能需要創(chuàng)建自己的函數庫和工具箱,但這些程序可能不會存入安裝程序預先指定的搜索路徑,這時我們就要使用“set path”這一展開式菜單,選擇添加路徑命令尋找到你存儲文件所在目錄,選擇并確定,你所需目錄就被指定為搜索路徑,可以方便使用了。正是基于上述原因,本書建議大家在使用MATLAB前,在硬盤上建立自己的工作目錄,并將其設置在搜索路徑中,以利于今后程序的調用和執(zhí)行。第二個下拉式菜單是編輯菜單,可以實現剪切、復制、粘貼、選擇和刪除

11、等文本操作所必須的功能,還提供清空指令窗口和內存變量的命令。第三個下拉式菜單是顯示菜單,可以改變操作界面的布置形式,可以改變工作目錄中可顯示出的文件類型,可以指定內存變量顯示內容。第四個下拉式菜單是網絡菜單,給出了MATLAB出品廠商的網址,給出了產品介紹等。第五個菜單是窗口菜單,可以對當前打開的各種窗口發(fā)出顯示和關閉的命令。第六個菜單是幫助菜單,這是一個對初學者有很大幫助的菜單,其中提供了完整的產品系列幫助,MATLAB自身的使用幫助,還為使用者提供了一個演示程序,可以使初學者在很短的時間內了解MATLAB所具有的強大功能。2.工具欄在工具欄中,MATLAB提供了9個常用的工具按鈕和1個縮減

12、的工作目錄窗口,用來執(zhí)行最常使用的功能。9個工具按鈕又分為四類:第一類對應于文件菜單,提供了創(chuàng)建和打開文件兩個按鈕;第二類對應與編輯菜單,提供了剪切、復制、粘貼,撤消和重做五個按鈕;第三類是用于啟動Simulink動態(tài)仿真集成環(huán)境一個按鈕;第四類對應于幫助菜單,提供了用于啟動幫助文檔的一個按鈕。3.工作窗口在默認狀態(tài)下右側窗口是指令窗口,顯示人機交互指令和命令執(zhí)行結果,左側兩個窗口,上面一個顯示工作目錄,下面一個顯示指令窗口中發(fā)出的各種指令。通過切換窗口夾,上面窗口可以轉為內存空間瀏覽窗口,下面窗口可以轉為當前工作目錄窗口。4.狀態(tài)顯示欄在操作界面最下面,有一個狀態(tài)顯示欄,當我們把鼠標放在某個

13、窗口夾上時,這個顯示欄就會告訴你執(zhí)行結果。要退出MATLAB,方法有三種:點擊操作界面右上角的號,用文件菜單下的退出命令,或者可以直接在指令窗口中鍵入quit后回車。操作界面是MATLAB提供給用戶的工作空間,MATLAB所有功能都是通過這一空間來完成,所以初學者應該熟悉操作界面內的各組成單位的操作。§1.1.4幫助指南MATLAB提供了強大的幫助功能,可以進行在線查詢,這一功能不僅可以使新接觸到MATLAB的人盡快熟悉此軟件,而且對老用戶開發(fā)某一方面的使用也有很多的益處。用戶在學習MATLAB的過程中,應重視查詢系統和其他幫助功能,力爭做到理解,掌握和熟悉應用。打開MATLAB查詢

14、系統的方法有兩種:l 可以利用工具欄中“幫助”按鈕。l 可以利用“幫助”下拉式菜單中的選項。MATLAB還提供了在指令窗口中直接輸入命令進行查詢的方法。由于打開查詢系統方式較易掌握,這里就不贅述了。下面介紹幾個可以在指令窗口中使用的幫助命令的用法。1.help命令help命令可以單獨使用,輸入help回車,你可以得到下面內容。HELP topics:matlabgeneral - General purpose commands.matlabops - Operators and special characters.vrvrdemos - Virtual Reality Toolbox ex

15、amples.MATLAB6p5work - (No table of contents file)For more help on directory/topic, type "help topic".For command syntax information, type "help syntax".它為你提供了整個在線幫助架構。但如果你想具體了解某一函數類或某一函數的功能時,單獨使用help命令就不夠了,可以采用下面形式:help+函數類名例如help elfun(下面顯示基本函數類的組成及功能)Elementary math functions.

16、 Trigonometric. sin - Sine. sinh - Hyperbolic sine. Exponential. exp - Exponential. log - Natural logarithm. . Complex. abs - Absolute value. angle - Phase angle. Rounding and remainder. fix - Round towards zero. floor - Round towards minus infinity. help+函數名例如help besselj(下面顯示第一類貝塞爾函數的功能和使用方法) BESS

17、ELJ Bessel function of the first kind. J = BESSELJ(NU,Z) is the Bessel function of the first kind, J_nu(Z). See also BESSELY, BESSELI, BESSELK, BESSELH.Overloaded methods help sym/besselj.m2.lookfor 命令當我們知道某函數的函數名而不知道其用法時,help命令可以幫助你準確了解此函數的用法,但如果我們不知道函數的確切名字,想找到與之有關的信息時,help命令就無能為力了。這時,可以使用lookfor命

18、令來根據用戶提供的關鍵字搜索與之相關的函數。例如 lookfor diff(下面顯示與關鍵字“diff”有關的函數)SETDIFF Set difference.DIFF Difference and approximate derivative.POLYDER Differentiate polynomial.DDE23 Solve delay differential equations (DDEs) with constant delays.從上面的例子,可以看出lookfor命令相當于一般軟件中模糊查詢功能。3.其他幫助命令MATLAB還為用戶提供了其他一些幫助命令,包括l exist

19、 查詢用戶指定的變量或函數文件存在與否。l what 列出目錄中的文件名l who 列出工作內存的變量名。l whos 列出工作內存變量詳細信息。l which 確定指定名字的文件具體位置。為方便用戶使用MATLAB,系統還提供了一系列通用命令。表1-1給出了最常用的幾個通用命令。表1-1 通用命令表命令功能命令功能dir顯示目錄文件cd轉換工作目錄clc清除指令窗口內容clf清除圖形窗口內容clear釋放工作內存quit退出MATLABpath顯示搜索路徑type顯示文件內容pack收集工作內存碎片!調用DOS命令§1.1.5從MATLAB“入門演示”開始真正認識MATLAB圖1-

20、2 演示界面在前面的講述中我們已經對MATLAB軟件有了初步了解,知道它是一種科學計算語言,知道了它的界面布置,知道了它的一些功能,但我們對MATLAB到底有多么強大的計算能力,多么方便的操作方法仍然一無所知,好在MATLAB為我們準備了強大的“入門演示”,下面就從“入門演示”開始我們真正的MATLAB之旅。從“幫助”下拉式菜單中找到“Demos”,點擊并打開它,進入了如圖1-2所示的演示界面。依次展開“Matrices”、“Numerics”等項目,就可以對這些項目的功能有初步了解。這里建議大家打開“basic matrix operation”的演示程序,來了解基本矩陣操作。§1

21、.2數值計算功能MATLAB數值計算功能極其強大,這是使其在眾多的數學軟件中脫穎而出的決定性因數。本節(jié)將為大家介紹常用的數值計算功能。§1.2.1MATLAB基本輸入輸出方法MATLAB要求表達式在使用變量以前要先對其進行賦值操作。對變量賦值的操作程序是,先輸入變量名和等號,然后輸入變量數值并按回車鍵結束。例如要實現p=2.0,a=6.43的式子,必須在MATLAB的指令窗口中進行如下信息交互:>> p=2.0 (用戶輸入)p = 2 (系統響應)>> a=6.43 (用戶輸入)a = 6.4300 (系統響應)在表達式后加分號“;”,可以省略系統的響應信息,

22、加快運算速度。§1.2.2 數據、變量名、運算符與表達式下面介紹數據、變量名、運算符與表達式的基本語法規(guī)則。1. 數據格式MATLAB使用常規(guī)的十進制表示法,可以用加號與減號表示正負數,10的冪次用e后面帶上正負數字來表示。虛數單位是i和j,數字后面直接寫上i 或j系數就認為該數為虛數。以下是一些合法的數值表示方法:24 -36 0.1234596.2345 4.06e-20 5.96e995+0.6i -5.6i 3.6e4i從上面的例子大家不難想到這些規(guī)則與C語言類似,MATLAB的數據輸入格式完全采用了C語言的風格和規(guī)則。數據輸入后,在MATLAB的后臺,數據的存儲與運算都是以

23、雙精度進行的,但是在MATLAB指令窗口中的顯示輸出格式卻有不同的表示形式,控制數據顯示格式的命令是format,具體格式類型和運算方法如表1-2所示。表1-2 format命令格式類型Format short五位定點小數形式Format long十五位定點小數形式Format short e五位浮點小數形式Format long e十五位浮點小數形式Format bank銀行單位形式Format rat分數近似形式Format +顯示正負號2. 變量名在MATLAB中可以用字母(即變量名)來表示具體的數據,也就是對變量進行賦值操作。變量名必須用字母打頭,后面可以跟字母、數字、下劃線,長度不限

24、,但系統只對變量名的前31個符號識別。要查看一個變量的內容,只需要鍵入其名稱回車即可。在MATLAB操作界面窗口中有一個工作內存空間窗口,變量的名稱,維數,所占空間大小及類型都列在其中了。點擊變量名稱就會打開一個矩陣編輯器窗口,變量的元以表格的形式排列其中,可以方便的查看和修改,也可以用它來輸入大型矩陣。在MATLAB中有八個常用的固定變量,它們代表特殊的常用數值或有特殊的意義,用戶可以直接調用。 表1-3 常駐變量表變量符號所代表的數值或意義pii或jInfNaNepsrealminrealmax代表圓周率3.14159265358979代表復數單位代表無窮大數1/0代表不定值(0/0或In

25、f-Inf)代表2.2204e-016代表最小浮點數2.2251e-308代表最大浮點數1.7977e+3083.運算符MATLAB使用人們所熟悉的運算符,如下面表1-4至表1-6所示。 表1-4 算術運算符算符使用實例+(加)-(減)*(乘)/(除)(冪)()(括號)26+376593-342111*22263/923413*(63-21)此表運算符適用于標量,向量和矩陣操作。表1-5 關系運算算符算符使用實例<(小于)<=(小于等于)>(大于)>=(大于等于)=(等于)=(不等于)x<yx<=yx>yx>=yx=yx=y此表運算符同樣適用于標

26、量,向量和矩陣的操作。有下面三點法則:(1)當標量進行比較時,如果關系成立,則關系運算結果為“1”,如果關系不成立,則關系運算結果為“0”。(2)當參與比較的是兩個具有相同維數的數組時,則對兩數組相同位置的元素按數值大小進行比較,并按關系成立與否給出“1”或“0”,最終的運算結果是一個和比較數組維數相同的數組。(3)當一個標量與數組進行比較時,則把標量與數組每一個元素進行數值大小比較,得到“1”或“0”的結果,最終形成與數組維數相同的數組。 表1-6 邏輯運算符算符使用實例&(與)(或)(非)A&BABA邏輯運算符對標量與標量,標量與數組,數組與數組之間的運算規(guī)則采用與關系運算

27、符相類似的形式。在算術、關系和邏輯運算三種運算組合中,算術運算優(yōu)先級最高,邏輯運算優(yōu)先級最低。4.表達式用運算符把數字、變量和函數組合在一起,就建立了一個表達式。由于MATLAB是以矩陣為基本運算目標的,因而數學表達式可以對整個矩陣進行運算。表達式中的運算是自左向右進行,指數運算優(yōu)先,其次乘除,最后是加減操作,遇到括號則改變運算順序。§1.2.3向量的生成與運算MATLAB作為一門語言,它的運算指令和語法是基于一系列基本的矩陣運算以及它們的擴展運算。因而,為了利用好MATLAB語言,首先要了解向量和矩陣的生成和運算規(guī)則。這節(jié)先介紹向量的生成與運算。向量運算是矢量運算的基礎,向量也是組

28、成矩陣的基本元素之一,因而先了解向量的有關操作可以使大家更好地了解矩陣的操作。1.向量的生成生成向量的最直接的方法就是在指令窗口中建立。向量元素需要用“ ”括起來,MATLAB的規(guī)則是元素之間用空格、逗號分隔開表示并列的一行元素,用分號分隔開表示不同行的元素,因而向量生成時注意:用空格或逗號分隔可以生成行向量,用分號分割開生成的是列向量。如果元素之間有一定的遞增遞減規(guī)律性,那么可以利用冒號表達式生成向量,基本形式為: x=x0 : step :xnx0、step、xn分別表示向量的第一個元素數值,元素數值增量步長,向量最后一個元素數值。大家可以利用Fortran語言編程中的循環(huán)控制語句表達式對

29、照理解本文表達式。在MATLAB中還提供了線性等分功能函數linspace來生成線性等分向量,和對數等分功能函數logspace來生成對數等分向量,關于兩種函數的具體用法,大家可以使用help指令來了解。2.向量的運算向量的加減法要求參與運算的向量具有相同的維數,而向量與數的加減法則要求向量的每一個元素與數字相加減。向量與數值乘法運算要求向量每一個元素和該數值相乘。例如:a=1 2 3 4 5a-1ans=0 1 2 3 4a2ans=2 4 6 8 10向量與向量的乘積運算有三種形式:點積、叉積和混合積。向量的點積由函數dot來實現: A、B為兩向量,要求維數相同,dot是向量點積函數,點積

30、運算規(guī)則遵從高等數學有關規(guī)定。向量的叉積由函數cross來實現: A、B為兩向量,cross為向量叉積函數,運算規(guī)則也服從高等數學有關規(guī)定。向量的混合積由以上兩個函數的嵌套來實現。例如:a=1 2 3;b=4 5 6;dot(a,b)ans = 32c=cross(a,b)c = -3 6 -3d=1 1 1;dot(a,cross(b,d)ans = 0§1.2.4矩陣的生成及運算MATLAB提供了強大的矩陣運算功能,本節(jié)將從矩陣的創(chuàng)建,矩陣運算及函數應用等幾方面進行闡述。1.矩陣的創(chuàng)建對于簡單的矩陣,創(chuàng)建的最快捷方法是從鍵盤直接輸入到指令窗口中。在直接創(chuàng)建矩陣時,也應采取與向量建

31、立時同樣的規(guī)則,即要注意矩陣元素前后以方括號“ ”包圍,元素之間的逗號,空格與分號的區(qū)別。例如:創(chuàng)建一個三維數值矩陣 a=1 2 3;4 5 6;7 8 9a = 1 2 3 4 5 6 7 8 9對于矩陣內部元素包含運算表達式的情況,MATLAB也認可,并以運算結果作為矩陣元素內容。例如:創(chuàng)建一帶有運算表達式的矩陣。a=sin(pi/4),63;log(2),sqrt(3)a = 0.7071 216.0000 0.6931 1.7321對于大規(guī)模的矩陣,在指令窗口中直接輸入費事費力,風險高,不可控。這時可以利用MATLAB提供的文本編輯功能,新建一個M文件。這里M文件是一種可以在MATLA

32、B指令窗口下運行的文本文件,只要在指令窗口下鍵入M文件的文件名,即可以運行此文件,我們下面要利用其命令式文件的形式,它還可以有函數式文件的形式,我們在后面將看到其強大的功能。在文件菜單下找到新建子菜單,點擊M-文件,就打開了M文件編輯窗口,輸入想要建立的矩陣,將此文件以m為擴展名保存,然后在指令窗口下輸入M文件名,所要建立的大型矩陣就輸入到了內存中。例如:用M文件創(chuàng)建大矩陣,文件名為example.mexm=456 468 873 2 579 55 21 657 54 488 8 13 65 4567 88 98 21 5 456 68 4589 654 5 2在MATLAB指令窗口中輸入:e

33、xample;size(exm)ans =4 6實際上本例并不算大型矩陣,這里只是給大家一個直觀的感受,一般來說,這種方法大多應用于對其他語言程序所得結果的利用上。2.矩陣的基本數學運算矩陣的基本數學運算包括矩陣的四則運算,矩陣與常數的運算,矩陣的逆運算,矩陣的行列式求值,矩陣的冪運算、指數運算和對數運算等。下面逐一加以介紹:(1)矩陣的四則運算 矩陣的加減法運算格式與數值及向量的運算格式相似,使用“+”和“-”運算符,但要求進行運算的兩矩陣必須是同維的。例如:a=1 2 3;4 5 6;7 8 9 b=1 1 1;2 2 2;3 3 3 c=a+b c= 2 3 4 6 7 8 10 11

34、12矩陣的乘法使用“*”作為運算符,采用與線性代數中矩陣乘法運算相同的運算規(guī)則,對相乘矩陣維數的要求是要有相鄰公共維。例如: x=1 2 3 4;5 6 7 8y=1 1;2 2;3 3;4 4z=xyz=30 3070 70矩陣的除法包括兩種運算形式:左除()和右除(/)。一般情況下,x=ab是方程ax=b的解,而x=b/a則是方程xa=b的解。通常右除的計算速度要快一點,而左除則可以避免被除矩陣的奇異所帶來的麻煩。例如: 已知方程組 ,求解x,y,z。求解這個方程組,我們可以設a=1 2 3;4 2 6;7 4 9b=4;1;2x=abx= - 1.5000 2.0000 0.5000&g

35、t;> a=1 4 7;2 2 4;3 6 9a = 1 4 7 2 2 4 3 6 9>> b=4 1 2b = 4 1 2>> x=b/ax = -1.5000 2.0000 0.5000>>這樣方程組的解就可以得到了。(2)矩陣與常數的運算一個常數與矩陣的運算也就是常數和矩陣中各個元素之間的進行運算。但這里注意一點,當進行矩陣與常數的除法運算時,常數只能做除數。(3)矩陣的逆運算對一個矩陣求逆是線性代數和數值分析中的重要內容,MATLAB為其提供了一個強有力的命令:inv。例如:求解矩陣A=的逆陣。解:A=2 2 3;4 5 6;7 8 9;B=

36、inv(A)B= 1.0000 -2.0000 1.0000 -2.0000 1.0000 0 1.0000 0.6667 -0.6667(4) 矩陣的行列式求值 矩陣的行列式求值在MATLAB中是由det函數來完成的。例如:求解上例中矩陣A和矩陣B的行列式的值。AA=det(A)AA= -3BB=det(B)BB= -0.3333(5)矩陣的冪指數運算和對數運算有矩陣A,對其進行冪運算,求A的3次冪,則運算表達式可以寫為A3,從這一點可以看出矩陣的冪運算與數字冪運算形式相同。矩陣的指數運算一般采用函數expm,和其同類的函數還有expm1,expm2和expm3。expm1,expm2和ex

37、pm3的主要區(qū)別在于算法不同,具體情況可參看幫助文件。矩陣的對數運算采用函數logm進行。 (6)矩陣的開方運算矩陣的開方運算由函數sqrtm完成。這里強調一點,上述幾種函數都是針對矩陣的,是視矩陣為一個操作數整體來進行運算的,和下面要講到的數組運算中針對矩陣中每一個元素進行運算的方式不同。例如: A=1,2;3,4B=A2B=7 1015 22C=sqrtm(B)C= 1.5667 1.7408 2.6112 4.1779 (不等于A)D=C2D=7 1015 22 3.矩陣的基本函數運算 矩陣的基本函數運算是與線性代數和數值分析兩門課程的有關應用有密切聯系的。例如與線性代數相對應的,有特征

38、值運算,矩陣求秩,矩陣求跡等運算;與數值分析相對應的,有奇異值函數,條件數運算,范數運算等。(1)特征值函數一個矩陣可以利用函數eig和eigs計算出其特征值。例如:計算矩陣A=的特征值和特征向量。A=3 -1 0;-1 2 -1;0 -1 3;X,Y=eig(A)X = 0.4082 -0.7071 -0.5774 0.8165 -0.0000 0.5774 0.4082 0.7071 -0.5774Y = 1.0000 0 0 0 3.0000 0 0 0 4.0000其中X為特陣向量矩陣,Y為特征值矩陣。(2)秩函數對一個矩陣的秩的求解可以利用函數rank來計算。例如:e=1 2 3 4

39、 1 1 2 3 2 2 4 6;rank(e)ans = 2(3) 跡函數矩陣對角線上元素求和,可以利用trace函數來計算。例如:求A=的跡。 trace(A) ans= 15(4) 奇異值函數矩陣的奇異值函數有兩種svd和svds.例如:A=magic(5); (魔方陣 最小3階)S=svd(A)'S= 65.0000 22.5471 21.6874 13.4036 11.9008(5)條件數函數 在MATLAB中可以利用cond函數來計算反映矩陣“病態(tài)”程度的條件數值。(6)范數函數矩陣范數運算是對矩陣的一種度量,在MATLAB中分為1范數,2范數,無窮范數和F-范數。norm

40、(A,1)為求A陣的1范數,norm(A)為求A陣的2范數,norm(A,inf)為求A陣的無窮范數,norm(A,fro)為求A陣的F-范數。4與數值分析有關的一些特殊函數MATLAB為數值分析的應用準備了除前面介紹的普通函數外的一些特殊函數,應用這些函數,可以很大程度上降低數值分析方法的理解難度。(1)LU分解LU分解在數值分析的矩陣分解內容中是一種比較重要的方法,對直接求解線性方程有重要的作用。在MATLAB中,利用lu函數可以實現本功能。例如:對a=1 2 3;4 5 6;7 8 9進行LU分解。a=1 2 3;4 5 6;7 8 9;l,u=lu(a)l = 0.1429 1.000

41、0 0 0.5714 0.5000 1.0000 1.0000 0 0u = 7.0000 8.0000 9.0000 0 0.8571 1.7143 0 0 0.0000(2)QR分解將一個矩陣分解為一個正交矩陣和一個上三角矩陣的乘積時,可以應用QR分解函數來實現。一般的應用格式為:Q,R=qr(A)例如:對a=1 2 3;4 5 6;7 8 9進行QR分解。a=1 2 3;4 5 6;7 8 9;q,r=qr(a)q = -0.1231 0.9045 0.4082 -0.4924 0.3015 -0.8165 -0.8616 -0.3015 0.4082r = -8.1240 -9.601

42、1 -11.0782 0 0.9045 1.8091 0 0 -0.0000(3)特征值問題的QZ分解QZ分解的調用格式為:AA,BB,Q,Z,V=qz(A,B)。要求A,B為方陣,產生上三角陣AA和BB,正交矩陣Q,Z或其列變換形式,V為特征向量陣,滿足QAZ=AA和QBZ=BB。(4)海森伯格形式的分解MATLAB通過函數hess可以把普通矩陣轉換成海森伯格矩陣。§1.2.5 數組與多項式運算矩陣運算時MATLAB是把矩陣當成一個整體來處理,但有時我們還需要對矩陣中的每個元素進行操作,這時就需要采用不同的運算形式才能達到此目的,這種與矩陣運算相區(qū)別的運算形式就被稱為數組運算。數組

43、的加減法運算與矩陣完全相同,但乘法與除法運算則大不相同,不論乘還是除,都要求在被操作數后加“.”號以表明是數組運算,從而保證對應元素之間的乘除運算。乘法運算符變?yōu)椤?*”,除法運算符變?yōu)椤?”。例如: aa=1 2 3;4 5 6;7 8 9;bb=7 8 9;4 5 6;1 2 3; aabbans =-17.0000 -26.0000 -27.0000 24.0000 41.0000 42.0000 -8.0000 -16.0000 -16.0000 aa.bbans = 7.0000 4.0000 3.0000 1.0000 1.0000 1.0000 0.1429 0.2500 0.3

44、333數組與常數的加減乘法運算時與一般運算無區(qū)別,但除法運算時常數只能做除數。數組的冪運算也必須在被操作數后加“.”號,使運算符變?yōu)椤?”。例如: a=1 2 3;4 5 6;7 8 9;a.2ans = 1 4 9 16 25 36 49 64 81對矩陣每個元素進行指數運算、對數運算和開方運算時,運算符分別變?yōu)椤癳xp”、“l(fā)og”、和“sqrt”。在MATLAB中形如的多項式,可以用如下的行向量來表示:這樣一個多項式問題就被轉化為一個向量問題。(1)多項式的直接創(chuàng)建方法正因為多項式可以用一個行向量的形式來表示和儲存,因而最簡單的多項式創(chuàng)建方法就是直接建立一個行向量,以此代表一個多項式。例

45、如: a=2 -3 4 -5; poly2sym(a) ans = 2*x3-3*x2+4*x-5poly2sym是符號工具箱中的一個函數,我們應用此函數的目的是把用向量表示的多項式轉換成為標準的符號形式。(2)利用矩陣特征值派生出多項式我們在處理多自由度振動問題時,可以利用矩陣行列式展開求其特征值,同時我們也可以得到一個與特征值相對應的特征多項式。在MATLAB中,我們可以利用函數poly來實現此功能。例如:有矩陣a=1 2 3;3 4 5;5 6 7,求其特征多項式。a=1 2 3;3 4 5;5 6 7;a1=poly(a)a1 = 1.0000 -12.0000 -12.0000 0.

46、0000(3)利用已知的特征根構造多項式如果我們已經得到了矩陣的特征根,那么也可以由這些特征根來求與其相對應的多項式,也是用函數poly 來實現。利用構造出來的多項式可以進行一系列的操作,可以代入變量值,來求出多項式的值,可以利用多項式求根,可以對多個多項式求乘除,也可以對多項式求微分。(1)多項式代入求值通過對多項式的變量賦值可以求得整個多項式的值,這一功能通過函數polyval和polyvalm來實現。例如: a=1 2 3 4; polyval(a,1)ans = 10 a1=1 1;1 1a1 = 1 1 1 1 polyvalm(a,a1) 對矩陣的操作ans = 15 11 11

47、15這里polyval是對變量賦值矩陣的每個值進行多項式求值,而polyvalm是把變量賦值矩陣看作一個整體來進行求值。(2)多項式求根根據用向量表示的多項式,可以直接用MATLAB提供的函數roots,求出多項式的各個根,這實際上與由特征根創(chuàng)建多項式是互逆操作。例如:求的根。a=1 -2 1 -1;roots(a)ans = 1.7549 0.1226 + 0.7449i 0.1226 - 0.7449i(3)多項式之間的乘除操作利用函數conv可以實現兩個多項式之間的乘法操作,利用deconv可以實現兩個多項式之間的除法操作。例如:a=1 2 3 4;b=1 1 1 1;ab=conv(a

48、,b)ab = 1 3 6 10 9 7 4aba=deconv(ab,b)aba = 1 2 3 4(4)多項式微分利用函數polyder可以實現對多項式的微分操作。例如:a=1 2 3 4;da=polyder(a)da = 3 4 3§1.2.6數學函數簡介MATLAB提供了強大的數學函數功能。除了必備的三角函數和反三角函數外,MATLAB還提供了大量的基本函數和特殊函數,列表如下:表1-7基本函數表函數名功能函數名功能exp指數函數log自然對數函數log10以10為底對數函數log2以2為底對數函數pow2以2為底冪函數sqrt平方根函數abs模函數angle相角函數con

49、j復共軛函數imag虛部函數real實部函數round四舍五入函數mod求余函數sign符號函數表1-8特殊函數表函數名功能函數名功能airyAiry函數besselj貝塞爾函數bessely諾依曼函數besselh漢克爾函數betaBeta函數ellipj橢圓函數ellipke完全橢圓積分erf誤差函數expint冪積分函數gammaGamma函數在應用數學函數時,如果是針對矩陣進行操作,那么可以采用通過函數調用格式:funm(A,funname),其中A為輸入矩陣變量,funname 為調用的函數名。而在針對數組進行操作時,就可以直接應用數學函數名進行計算,這是需要注意的一點。§

50、1.3符號運算功能簡介MATLAB雖然從起步就具有強大的數值計算功能,但最初的版本并不包含符號運算方面的應用,但在工程實際應用中很多情況下又需要有這方面的功能,因而MATLAB在之后的版本中加入了Maple的內核,構建了符號計算工具箱(Symbolic Toolbox)。只要你在安裝時選擇一并安裝此工具箱,你就可以應用本功能了。§1.3.1符號表達式的創(chuàng)建要使用符號運算功能,就應該首先了解如何創(chuàng)建符號表達式,因為這是符號運算中的操作數,符號運算只針對符號變量,它不能處理普通數值量。符號表達式包括符號函數和符號方程兩種形式,下面分別介紹如何創(chuàng)建這兩類對象。(1)創(chuàng)建符號函數f=x2在M

51、ATLAB中符號函數必須用單引號括起來,才表明這是一個符號函數,否則如果x在此之前曾經賦過值,則MATLAB就會認為x是一個變量,從而計算x2,并將結果賦給f。例如:x=2;f=x2f = 4ff='x2'ff =x2(2)創(chuàng)建符號方程eqation=a*x2+b*x+c=0;符號方程與符號函數的區(qū)別在于符號方程中包括等號,即是一個方程式的形式。當然我們也可以采用另外一種創(chuàng)建符號表達式的方法,其思路是首先指定使用什么字母或單詞來代表一個確定性的符號,接著在表達式中就可以直接引用而無須使用引號就可以表明是一個符號表達式了。可以完成這一思路的命令為syms。例如:syms xf=x2+x+1f =x2+x+1§1.3.2符號矩陣的創(chuàng)建在MATLAB中創(chuàng)建符號矩陣的方法和創(chuàng)建數值矩陣的方法相似,但與之區(qū)別之處是創(chuàng)建符號矩陣時必須使用符號定義函數sym,或在創(chuàng)建矩陣時,在矩陣中的對象必須用

溫馨提示

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

評論

0/150

提交評論