300 likes | 449 Views
數學軟體簡介 PART II Matlab 介紹. 今天進度: Matlab 基本環境操作. Matlab 小傳 外觀基本認識 使用變數與基本運算 向量與矩陣的處理 常用數學函數 查詢命令 常用的永久常數. Matlab 小傳. 1978 年,美國新墨西哥大學的 Cleve Moler 教授寫了此一套軟體來使他的學生更容易瞭解線性代數及各種數值方法與矩陣理論,當然,當時是免費的;因此, Matlab 的數值計算能力可是經過 20 餘年的檢驗與千錘百鍊。 但是,他並沒有想到要將 Matlab 商品化。. Matlab 小傳.
E N D
今天進度:Matlab基本環境操作 • Matlab小傳 • 外觀基本認識 • 使用變數與基本運算 • 向量與矩陣的處理 • 常用數學函數 • 查詢命令 • 常用的永久常數
Matlab小傳 • 1978年,美國新墨西哥大學的 Cleve Moler教授寫了此一套軟體來使他的學生更容易瞭解線性代數及各種數值方法與矩陣理論,當然,當時是免費的;因此,Matlab的數值計算能力可是經過20餘年的檢驗與千錘百鍊。 • 但是,他並沒有想到要將Matlab商品化。
Matlab小傳 • 由Jack Little將他用C語言改寫,成立Math Works公司,並於1984年推出的數學軟體商用版,其名稱是由 MATrix LABoratory (矩陣實驗室)所合成的,雖然其最早的理念只是提供一套完善的矩陣運算軟體,但隨著數值運算需求,Matlab已經成為各種系統模擬、數位訊號處理、科學計算的標準語言。
外觀基本認識 2. 命令歷史列 (Command History) 1. 工作空間瀏覽器 (Workspace) 1 3 3. 命令視窗 (Command Window) 2
使用變數與基本運算 • 一般常用到的加(+)、減(-)、乘(*)、除(/)、冪次(^)等數學運算,在Matlab下進行,最快速簡單的方法就是在命令視窗內的提示符號(>>)之後輸入運算式並按 Enter 鍵 • 例如:>> (5*2+3.5)/5 ans = 2.7000
使用變數與基本運算 • 『>>』代表Matlab命令視窗內的提示符號,使用者可以在其後面輸入任何Matlab語法的運算式以進行運算。 • 若不想讓Matlab每次都顯示運算結果,只需要在運算式最後加上分號『 ; 』 • 例如:>> (5*2+3.5)/5 ; 此時按Enter鍵,運算結果會儲存,但不會顯示
使用變數與基本運算 • 在需要取用或顯示結果時,輸入『ans』即可 • 例如:>> ans ans = 2.7000 • 也可以將結果儲存至自己設定的變數中 • 例如:>> x = (5*2+3.5)/5 x = 2.7000
使用變數與基本運算 變數命名基本規則與使用: • 第一個字母必須是英文字母 • 字母間不可留空白 • 最多31個字母,Matlab會忽略多餘的字母 • 使用變數前不需要預先宣告,所有變數均預設為double資料形式儲存
使用變數與基本運算 • 如果想用 double 以外的資料形式呢? • 使用 >>format 資料形式設定 • 例如:>> (7*3+5.5)/7 ans = 3.7857 • 例如:>> format long >> (7*3+5.5)/7 ans = 3.78571428571429
使用變數與基本運算 • 例如:>> format rat >> (7*3+5.5)/7 ans = 53/14 • 例如:>> format short >> (7*3+5.5)/7 ans = 3.7857
使用變數與基本運算 • 還記得LaTEX裡的『%』記號是什麼意思嗎?在Matlab這裡也是一樣的用法 • 例如: >> y = (5*2+3.5)/5 ; % 將運算結果儲存在y中 >>z = y^2 % 將運算結果儲存在z中並顯示 z = 7.2900 『%』之後會被Matlab忽略不計,增加可讀性用
使用變數與基本運算 • Matlab可以同時執行以逗號(,)或分號(;) 隔開的數個運算式 • 例如:>> x = sin(pi/3) ; y = x^2 ; z = y*10 z = 7.5000 • 若運算式太長,可以用三個句點『…』將其延伸到下一行,例如:>> z = 10*sin(pi/3)*… >> sin(pi/3);
向量與矩陣的處理 • 前面的例子中,Matlab的變數都是儲存純量形式(Scalars),其實變數也可以用來儲存向量形式(Vectors)及矩陣形式(Matrix) • 例如:>> s = [ 1 3 5 2 ] ; % 注意數字間有空白 >> t = 2*s+1 t = 3 7 11 5
向量與矩陣的處理 • 『[]』中括號建立一個列向量 [ 1 3 5 2 ],或可視為 1 x 4 大小的矩陣,將其儲存在變數 s 中 • 另外,>> s = [1 3 5 2]與 >> s = [ 1,3,5,2]一樣 也可以取出向量中的一部份來運算 • 例如: >> t(3) = 2 % 將向量 t 的第三個元素改為 2 t = 3 7 2 5
向量與矩陣的處理 • 例如: >> t(6) = 10 % 在向量 t 加入第六個元素 10 t = 3 7 2 5 0 10 • 例如: >> t(4) = [] % 刪除向量 t 第四個元素 t = 3 7 2 0 10
向量與矩陣的處理 • 例如: >> s(2)*3 + t(4) %取出向量 s與 t的部分做運算 ans = 9 • 例如: >> t(2 : 4) - 1 % 取出向量 t 第2~4元素來運算 ans = 6 1 -1
向量與矩陣的處理 • 用類似上述建立向量的方法,使用者可以建立 mxn 大小的矩陣,但必須在每一列結尾加上分號『;』,例如: • >>A=[ 1 2 3 4; 5 6 7 8; 9 10 11 12 ]; % 3x4矩陣A >>A %顯示 A 的內容 A = 1 2 3 4 5 6 7 8 9 10 11 12
向量與矩陣的處理 • 同樣地,我們也可以對矩陣進行各樣的處理 • 例如:>> A(2,3) = 5 % A2,3 將改為 5 A = 1 2 3 4 5 6 5 8 9 10 11 12 • 例如:>>B = A(2, 1:3) % 取出 A2,1~A2,3 組成 B B = 5 6 5
向量與矩陣的處理 • 例如:>> A=[ A B’ ] %將矩陣A 與BT 合併 A = 1 2 3 4 5 5 6 7 8 6 9 10 11 12 5 • 例如:>> A(2,:) = [ ] %刪除矩陣A 的第2 列 A = 1 2 3 4 5 9 10 11 12 5
向量與矩陣的處理 • 例如:>>A(:, [1 4]) = [ ] %刪除矩陣A的第1, 4行 A = 1 3 5 9 11 5 在 4x5 的矩陣A 中的元素,A2,3可以用A(2,3) 表示,也可以用A(8) 來表示;即在 mxn的矩陣A 中,A(a,b)=A( (a-1)*n+b )。
常用數學函數 • 在Matlab中可以使用許多數學函數: • 例如:>> x=-4; y= abs(x) %純量的絕對值或向量的長度 y = 4 • 例如:>> sqrt(y) %開平方 ans = 2
常用數學函數 • sign(x):符號函數 (Signum function)。 當x<0時,sign(x)=-1; 當x=0時,sign(x)=0; 當x>0時,sign(x)=1。 • exp(x):自然指數 • pow2(x):2的指數 • log(x):以e為底的對數,即自然對數 • log10(x):以10為底的對數
常用數學函數 • rats(x):將實數x化為分數表示 • rem(x,y):求x除以y的餘數 • gcd(x,y):整數x和y的最大公因數 • lcm(x,y):整數x和y的最小公倍數 • sin(x):正弦函數 • cos(x):餘弦函數 • tan(x):正切函數
常用數學函數 • Matlab 也可以計算複數,通常以 i或 j代表√-1 • 例如:>> z = 5+4j; %複數 z=5+4 √-1 >> y = angle(z) %複數z的相角 y = 0.6747 • real(z):複數z的實部 • imag(z):複數z的虛部 • conj(z):複數z的共軛複數
查詢命令 ( help ) • 例如:若已知inv是用來計算反矩陣,鍵入 help inv 即可得知有關inv命令的用法。 >>help inv INV Matrix inverse. INV(X) is the inverse of the square matrix X. A warning message is printed if X is badly scaled or nearly singular.
查詢命令 ( lookfor ) • 例如:要尋找計算反矩陣的命令,可鍵入lookfor inverse,即會列出所有和關鍵字inverse相關的指令。找到所需的命令後,即可用help進一步找出其用法。 >>lookfor inverse • INVHILB Inverse Hilbert matrix. • IPERMUTE Inverse permute array dimensions. • ACOS Inverse cosine, result in radians. • ACOSD Inverse cosine, result in degrees. ………
常用的永久常數 • i或j:基本虛數單位(即√-1) • eps:系統的浮點(Floating-point)精確度 • inf:無限大, 例如1/0 • nan或NaN:非數值(Not a number),例如0/0 • pi:圓周率 p(= 3.1415926...) • realmax:系統所能表示的最大數值 • realmin:系統所能表示的最小數值 • nargin: 函數的輸入引數個數 • nargin: 函數的輸出引數個數
5/1 上機課 • 熟悉Matlab基本運算功能 • 實務操作(練習題目)
數值分析 • 請利用下列公式算出 f ’(8.1)、f ’(8.3) 的近似值 f ’(x0)=1/2h [-3f(x0)+4f(x0+h)-f(x0+2h)] 這裡的 f(x)為 x lnx Hint:先算出f(x0)、f(x0+h)、f(x0+2h) h可以先試試 0.1、0.01看看