190 likes | 349 Views
數學軟體簡介 PART II Matlab 介紹. 今天的進度:. M 檔案的繼續介紹 期末考試的預習. M 檔案. M- 檔案類型之檔案純為文字檔,故可在任何文書處理軟體中進行編輯或修改。 Matlab 也有一個程式編輯器,可以在此編輯器中偵錯 (Debug) 或編輯,這個編輯器比其他文書處理具有不同的功能。 M-files 依執行時之實質型式分為兩種,一為敘述檔( script ),二為函數檔( function )。. M 檔案. 如何使用 Matlab 裡的編輯器來編輯一個 M 檔案?(也可以使用記事本之類的編輯器來編輯)
E N D
今天的進度: • M 檔案的繼續介紹 • 期末考試的預習
M檔案 • M-檔案類型之檔案純為文字檔,故可在任何文書處理軟體中進行編輯或修改。Matlab也有一個程式編輯器,可以在此編輯器中偵錯(Debug)或編輯,這個編輯器比其他文書處理具有不同的功能。 • M-files依執行時之實質型式分為兩種,一為敘述檔(script),二為函數檔(function)。
M檔案 • 如何使用Matlab裡的編輯器來編輯一個M檔案?(也可以使用記事本之類的編輯器來編輯) • edit 指令:(假定現在要新增一個ABC.m) 在指令視窗裡鍵入: edit ABC.m 則Matlab會在目錄下新建一個ABC.m的M檔案,並且Matlab裡的編輯器也會執行,可以立即編輯ABC.m的內容。
M檔案 • type 指令: type ABC ( or type ABC.m ) type 指令顯示ABC.m檔案內容 • 例如:( edit ABC.m ) A = [1 2 3;4 5 6;7 8 9] B = A(: , 1) C = A(2 , :) 則這個M檔案彷彿呼叫A、B、C三個矩陣數據
敘述檔(script) • 敘述檔為一連串之正常指令之組合,故其名稱亦可作為指令在指令窗中直接執行。 • 例如,上例 ABC.m( 呼叫A、B、C三矩陣 ),就是一個敘述檔,可以執行敘述檔內所有的敘述指令,所產生的變數也都存放在Matlab的基本空間。
函式檔(function) • 函數檔案與敘述檔主要差別是:開頭一行需有一個函數名稱之宣告以及輸入參數,通式如下: function 輸出參數 = 函數名稱(輸入參數) • 特別注意的是這些參數變數,無論是輸入或輸出,均可能代表一個數值或一個矩陣。
函式檔(function) • 例如: function y = ABC (a, b) y = sqrt( a^2+b^2 ) • 此時函數之名稱為 ABC,其輸入參數為a、b。輸出為y。在函數中,a、b、y均為區域性函數,只在這個函數執行期間有效,離開這個函數就不認得了。 • 你可以猜猜ABC.m是一個什麼樣的函式檔嗎?如果你在主程式裡鍵入ABC(3,4)會有什麼樣的結果嗎?
函式檔(function) • 上例ABC是平方和開根號的函式 • 例如:ABC(3,4) = 5 ( √(32+42) = 5 ) • 例如:(edit f1.m) function y=f1(x) y=x.^2.*sin(x)+cos(x); 則此函式表示方程式 y = x2sin(x) + cos(x)
函式檔(function) • 上例f1.m為函式f1,在主程式中引用f1(5),則表示將 5 代入 f1(5) = 52sin(5) + cos(5) • 因此可讀進函式,使主程式更簡單而清楚,亦可以使用於繪圖與方程式進階功能 • 例如: • 可以以呼叫函式的方式來求根 fzero( 'f1', 3) % 求函式f1在3附近的根 • 也可以繪圖 plot( x, f1(x) ) % 將函式 y=f1(x)的圖形繪出
期末考預習 • 6/5 考試範圍: 基本計算與矩陣運算 • 6/12考試範圍: 繪圖功能、M檔案與函數
考試範例 (一): 請利用 Matlab 計算下列矩陣相乘 41 3 6 89 32 24 5 71 32 12 3 1 13 4 21 1 2 3 6 67 4 5 1 12 9 1 2 3 2 1 2 4 6 4 2 3 6 9 6 3 2 4 6 4 2 4 8 12 8 4
ANS >>A=[41 3 6 89 32 ; 24 5 71 32 12; 3 1 13 4 21; 1 2 3 6 67 ; 4 5 1 12 9]; >>B=zeros(5,5); >>B(1 , :) = [ 1 2 3 2 1]; >>B(2 , :) = 2*B(1 , :); >>B(3 , :) = 3*B(1 , :); >>B(4 , :) = B(2 , :); >>B(5 , :) = 2*B(4 , :); >>C = A*B
考試範例 (二): • 請算出下列矩陣的inverse、rank以及eigenvalue 41 3 6 89 32 24 5 71 32 12 A= 3 1 13 4 21 1 2 3 6 67 4 5 1 12 9
ANS inv(A) . . . . . . . . . . 可以計算A矩陣的inverse rank(A) . . . . . . . . . 可以計算A矩陣的rank [Q,d]=eig(A) . . . . . 計算出A矩陣的eigenvalue與 eigenvector,Q為eigenvector 組成的矩陣,d的對角線為A的 eigenvalue
考試範例 (三): 請寫出一個 Matlab 函式 M檔案(名稱為Orz.m), 此M檔案為函式檔,該函式為 Orz(a,b) = eb-a, 即在主程式中鍵入Orz(1 , 3)=e3-1=e2
ANS 此M函式檔的寫法如下: function y=Orz(a,b) y= exp(b-a);
考試範例 (四): • 畫出函數 f(x) =1/((x-0.9)2+0.04)-6;將 (0 , 2) 區間以0.1分割,畫成曲線圖形,並計算出此區間內的根。
ANS 函數的寫法: • function y=f_2(x) • y=1./((x-0.9).^2+0.04)-6; 主程式的寫法: >>x=0:0.1:2; >>plot( x, f_2(x) ), grid on >>fzero('f_2', 0.5) >>fzero('f_2', 1.3)