1 / 28

5/8 上機課

5/8 上機課. 用一個圖形將教過的圖形中的三種(一般曲線圖、長條圖、極座標圖、階梯圖、針狀圖)畫在一個圖中,並試著加上註解,讓圖形更完整 . >>subplot(2,2,1); >>plot(x,sin(x)); >>subplot(2,2,2); >> fplot('sin(1/x)', [0.02 0.2]); >>subplot(2,2,3); >> theta=linspace(0, 2*pi); >> r=cos(4*theta); >> polar(theta, r); >>subplot(2,2,4); >> x=1:10;

Download Presentation

5/8 上機課

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5/8 上機課 • 用一個圖形將教過的圖形中的三種(一般曲線圖、長條圖、極座標圖、階梯圖、針狀圖)畫在一個圖中,並試著加上註解,讓圖形更完整 

  2. >>subplot(2,2,1); >>plot(x,sin(x)); >>subplot(2,2,2); >> fplot('sin(1/x)', [0.02 0.2]); >>subplot(2,2,3); >> theta=linspace(0, 2*pi); >> r=cos(4*theta); >> polar(theta, r); >>subplot(2,2,4); >> x=1:10; >> y=abs(sin(x)); >> bar(x,y);

  3. 數學軟體簡介 PART IIMatlab 介紹

  4. 今天進度: • 三維空間繪圖 • 矩陣實用

  5. 三維曲線 • mesh和surf 是三度空間立體繪圖的基本命令,mesh可畫出立體網狀圖,surf 則可畫出立體曲面圖,兩者產生的圖形都會依高度而有不同顏色。 • 讓我們來看幾個例子,下列命令可畫出由函數形成的立體網狀圖(mesh):

  6. >>x=linspace(-2, 2, 25);% 在x軸上,-2到2間取25點 >>y=linspace(-2, 2, 25);% 在y軸上,-2到2間取25點 >>[xx,yy]=meshgrid(x, y);% xx和yy都是25x25的矩陣 >>zz=xx.*exp(-xx.^2-yy.^2);% 計算函數值,zz也是 >>mesh(xx, yy, zz);% 25x25的矩陣。畫出立體網狀圖 如果想將圖形背景色改為 黑底,在mesh前打上 >>colordef black (改白色為:colordef white)

  7. 注意:meshgrid的作用是產生以x及y為基準的格子點,其輸出為xx及yy,分別代表格子點的x座標與y座標。注意:meshgrid的作用是產生以x及y為基準的格子點,其輸出為xx及yy,分別代表格子點的x座標與y座標。 • 注意:xx此時已經是一個25x25的矩陣了,Matlab不知道xx^2為何,所以,若是要將個別每個元素平方,必須如下使用: xx.^2 多一個『.』在xx後

  8. >>x=linspace(-2, 2, 25); % 在x軸上,-2到2間取25點 >>y=linspace(-2, 2, 25); % 在y軸上,-2到2間取25點 >>[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩陣 >>zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值 zz >>colordef black; %將背景色改為黑色 >>surf(xx, yy, zz); % 畫出立體曲面圖 • surf與mesh的用法類似

  9. Matlab提供了一個現成的peaks函數,可以產生一個凹凸有致的曲面,包含了三個局部極大點及三個局部極小點,其方程式為: • 要畫出此函數的最快方法就是直接鍵入: >>peaks z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

  10. 這就是peaks的原貌,我們可以 對peaks函數取點,再以各種不同方法進行繪圖。meshz可將曲面加上裙擺: >>[x,y,z]=peaks; >>meshz(x,y,z); >>axis([-inf inf -inf inf -inf inf]); axis是將各座標範圍訂定

  11. 另外這招叫:waterfall(水流),可以在x方向或y方向產生水流效果: >>[x,y,z]=peaks; >>waterfall(x,y,z); • 若要產生在y方向的水流效果: >>[x,y,z]=peaks; >>waterfall(x',y',z');

  12. meshc同時畫出網狀圖與等高線: >>[x,y,z]=peaks; >>meshc(x,y,z); • 網狀圖 • 等高線 • 如果將meshc改為 surfc會同時畫出 曲面圖與等高線

  13. contour3畫出曲面在三度空間中的等高線: >>contour3(peaks, 20); • 20是等高線的數目,也就是區分的段數 >>contour3(peaks, 40);

  14. contour畫出曲面等高線在XY平面的投影: >>contour(peaks, 20); 同樣地,20代表等高線區分的數目,數目越大會將等高線分得越密

  15. plot3可畫出三度空間中的曲線: >>t=linspace(0,20*pi, 501); >>plot3(t.*sin(t), t.*cos(t), t); x座標為 t.*sin(t) y座標為 t.*cos(t) z座標為 t

  16. plot3亦可畫出兩條三度空間中的曲線: >>t=linspace(0,20*pi, 501); >>plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t); 前三個座標為第一函數 次三個座標為第二函數

  17. 矩陣運算的注意事項 • 矩陣的運算雖與一般純量運算類似,唯一的要求是:相加或相減的矩陣必須具有相同的維度。維度不一致則會產生錯誤訊息,但矩陣與純量可以直接進行加減。 >>A = [1 2 3 2 1] + 5 A = 6 7 8 7 6 >>B = 2*A B = 12 14 16 14 12

  18. 矩陣運算的注意事項 • 矩陣的相乘(A*B) 必須確定A的行數(column dimension)必須等於B的列數(row dimension)否則會產生錯誤。 • 矩陣的次方(A^2=A*A) 必須使用在方陣上才有意義。 例如:>>A= [1 2 3 2 1]; >>B=A^2;

  19. 矩陣運算的注意事項 • 若想對矩陣內『元素對元素』的運算應當如何? • 例如:A= [ 12 ; 45] ,B= [ 2 ; 3 ] 如果想作運算 [ 12*2 ; 45*3 ],應當如何? • 在運算符號『*』,『^』之前加上一個句號『.』即可,如上例: >>A .* B ans = 24 135 >>A .^2 ans = 144 2025

  20. sum 功能 • sum() 用在向量上,sum(A)為每個元素加總的和 用在矩陣上,sum(A)為每行元素加總而成的向量 • 例如: >>A=[1 2 3; 4 5 6; 7 8 9]; >>sum(A), sum(sum(A)) ans = 12 15 18 ans = 45

  21. 矩陣進階實用 • 一個正方矩陣A的反矩陣的定義是A-1,所以此二矩陣相乘不論是AA-1或A-1A,結果皆為單位矩陣I。 • 矩陣如果是奇異(singular)或是條件不足 (ill-conditioned),其反矩陣並不存在。條件不足的矩陣與一組聯立方程組其中的方程式並不獨立有關,而一矩陣的秩(rank) 即是代表矩陣中獨立方程式個數。如果一矩陣的秩數和其矩陣的列數相等,則此矩陣為非奇異且其反矩陣存在。

  22. 矩陣進階實用 • 實例 1:反矩陣 >>A=[ 2 1 ; 4 3 ]; >>inv(A) ans = 1.5000 -0.5000 -2.0000 1.0000 >>B=[ 2 1 ; 4 2 ]; >>inv(B) >> inv(A) Warning: Matrix is singular to working precision. ans = Inf Inf Inf Inf

  23. 矩陣進階實用 • 實例 2:反矩陣 >>A=[ 1 2; 3 4 ; 5 6 ]; >>inv(A) ??? Error using ==> inv Matrix must be square. 這就是所謂的條件不足(ill-conditioned)的情形,inv 無法用在非方陣的情況。

  24. 矩陣進階實用 • 另外兩種方便使用的功能: 求秩(rank)與行列式(det) >>A=[1 3 0; -1 5 2; 1 2 1]; >> rank(A), det(A) ans = 3 ans = 10 三次行列式大家都會算,但是,超過4次的行列式會很難計算,這裡可以用Matlab輕易計算。

  25. 特徵值與特徵向量 • 假設 A為一個n階矩陣,而 X 為一個有n列的欄向量,λ為一純量。考慮以下的數學式 AX = λX • 如果X由不為零的元素所組成,其中λ滿足上式稱為矩陣A的特徵值(eigenvalue),而X稱為矩陣A的特徵向量 (eigenvector)。 • 特徵向量代表一個正規正交(orthonormal) 的向量組,所謂的正規正交向量,是指這向量與自身做內積的值為一單位向量;在幾何關係上是指二量相互垂直且此其內積值再做正規化(normalization)。

  26. 特徵值與特徵向量 • 超強的特徵值與向量功能 >>A=[0.5 0.25; 0.25 0.5]; >>[Q,d]=eig(A) Q = -0.7071 0.7071 0.7071 0.7071 d = 0.2500 0 0 0.7500

  27. 特徵值與特徵向量 [Q,d]=eig(A) 這個功能一舉數得: 1. d的對角線的值為A的特徵值 (即使複數也可以算出) 2. Q的第一行Q(:,1)為d11的特徵向量,Q的第二行Q(:,2)為d22的特徵向量(依此類推) 3. Q的每一行的特徵向量相互垂直,且為正規正交向量(任兩相異行內積為 0,一行與自身做內積的值為 1),即QQT=I

  28. 特徵值與特徵向量 • 檢驗一下: >>Q*Q’ %『’』為矩陣的倒置 ans = 1.0000 0 0 1.0000 >>A*Q(:,1), d(1,1)*Q(:,1) ans = -0.1768 0.1768 ans = -0.1768 0.1768

More Related