• 沒有找到結果。

畫出正確圖形的必備條件

N/A
N/A
Protected

Academic year: 2022

Share "畫出正確圖形的必備條件"

Copied!
112
0
0

加載中.... (立即查看全文)

全文

(1)

MATLAB 7 在工程上的應用

第 5 章

進階繪圖以及模型建立

(2)

圖5.1–1 典型 xy 圖形的專有名詞。

(3)

畫出正確圖形的必備條件

下列的清單描述了任何圖形的基本特色:

1.

每一個軸都必須加上所畫出的量的名稱標籤以及其單 位!如果需要同時畫出兩個或者兩個以上不同單位的 量(例如同時畫出速度以及距離對時間的圖形),如 果空間足夠的話要指明軸標籤的單位,或者指明在圖 例中,否則就是標記每一條曲線。

2.

每一個軸都要具有等間隔距離的刻度標記,並且距離 適中,不可以太稀疏也不可以太緊密,間隔距離應該 是便於解讀以及內插的,例如應使用0.1、0.2等等,而 不要使用0.13、0.26等等。

(接下頁)

(4)

畫出正確圖形的必備條件(承上頁)

3.

如果你要畫出超過一組的資料或者曲線,則在每一條 曲線旁加上標籤或者使用圖例來區分。

4.

如果你準備許多相似種類的圖形,或者軸標籤並沒有 辦法傳遞足夠的訊息時,記得要使用標題來輔助。

5.

如果你要畫出量測得到的資料,則以符號標記每一筆 資料,使用的符號可以為圈圈、方塊、或者十字(在 同一組資料中使用相同的符號標記每一個資料點)。

如果具有非常多的資料點,則使用點符號來標記。

(接下頁)

(5)

畫出正確圖形的必備條件(承上頁)

6. 有時候資料符號以線條相連接可以幫助閱讀者具象 化 這些資料,尤其是只具有少數資料點的時候。然 而,以線條連接資料點時,尤其是以實線連結的時候,

可能表示對於資料點之間的值有某種程度的認知,因 此必須要小心地處理以避免導致誤解。

7. 如果你要畫出由計算某一函數所得的點(相對於量 測所得到的資料),不要使用符號來畫出每一個點。

你應該做的是,確定產生足夠多的點並且將這些點以 實線相連接。

(6)

下列的MATLAB對話會畫出在區間 0  x 52 之內的y = 0.4 (1.8x)^0.5 的圖形,其中 y 表示火箭發射後的高度,並 且 x 是水平的距離(沿著試驗飛行方向的距離),單位為 英哩。

>>x = [0:0.1:52];

>>y = 0.4*sqrt(1.8*x);

>>plot(x,y)

>>xlabel(’Distance (miles)’)

>>ylabel(’Height (miles)’)

>>title(’Rocket Height as a Function of Downrange Distance’)

所得到的圖形顯示於下一張投影片中。

(7)

圖5.1–2

MATLAB中的自動調整比例大小功能會自動選取刻度標

記間隔距離。

(8)

接下來圖形會顯示於圖形視窗中。你可以使用下列幾 種方式得到一份實體拷貝。

1. 使用選單系統。在圖形視窗中點選File選單中的Print

選項。電腦會提示如果要繼續列印程序則回答OK。

2. 在命令列中輸入print。此指令會將目前的圖形直接輸

出至印表機。

3. 將此圖形儲存於一個檔案中以供將來列印,或者匯入

到其他的應用程式中,例如文字處理器程式。你需要 正確地知道你所使用的檔案的圖形檔案格式。參考本 節中有關Exporting Figures的章節內容。

(9)

當你完成繪圖時,點選圖形視窗中的File選單中的

Close選項來關閉圖形視窗。

我們注意到在視窗系統中使用Alt-Tab鍵的組合會讓 你回到命令視窗中而不關閉圖形視窗。

如果你並沒有關閉該視窗,在執行新的plot指令時不 會重新跳出一個新的圖形視窗。只是原本圖形視窗中 的內容會被更新。

(10)

grid以及axis指令

1. grid指令會在對應於刻度標籤的刻度標記上顯示出格線。

輸入grid on則會添加格線;而輸入grid off則會停止顯 示格線。當單獨使用的時候,grid會切換此功能開啟或 者關閉,但是你應該要使用grid on以及grid off來確保 你的使用方式是正確的。

2. 你可以使用axis指令來改寫MATLAB對於軸界限範圍 的自動選擇。

3. 基本的語法為: axis([xmin xmax ymin ymax])。

4. 此指令設定你所指定的值為x軸以及y軸的最大值以及 最小值。我們注意到,不同於陣列的使用方式,此指 令並不需要以逗號將這些值分隔開。

更多相關資料請查詢課本第5-8~5-9頁

(11)

Page 265

---

>>x = [0:0.1:52];

>>y = 0.4*sqrt(1.8*x);

>>plot(x,y)

>>xlabel('Distance (miles)')

>>ylabel('Height (miles)')

>>title('Rocket Height as a Function of Downrange Distance') 指令:

plot(x,y)

xlabel(‘$$$’) ylabel(‘$$$’) title(‘$$$’)

(12)

圖5.1–3 axis以及grid指令的效果。

(13)

測試瞭解問題

T5.1-1 The session is

x = [0:0.1:35];

y = 0.4*sqrt(1.8*x);

plot(x,y),xlabel(‘Distance (miles)’), ...

ylabel(‘Height (miles)’),axis([0 35 0 3.5]),...

title(‘Rocket Height as a Function of Downrange Distance’)

T5.1-2 The session is

x = [0:0.01:2*pi];

f = ‘tan(cos(x))-sin(tan(x))’;

fplot(f,[0 2*pi])

[x,y] = fplot(f,[0 2*pi]);

size(x)

(14)
(15)

畫出多項式

要在區間–6  x  6之內畫出多項式3x5 + 2x4 – 100x3 + 2x2 – 7x + 90,且間隔距離為0.01,則需要輸入

>>x = [-6:0.01:6];

>>p = [3,2,-100,2,-7,90];

>>plot(x,polyval(p,x)),xlabel(’x’),ylabel(’p’)

更多相關資料請查詢課本第5-12頁

(16)

-6 -4 -2 0 2 4 6 -3000

-2000 -1000 0 1000 2000 3000 4000 5000

x

p

(17)

儲存圖形

要儲存成能夠接下來被其他MATLAB對話開啟的格式,則 要將此圖形檔案儲存成副檔名為 .fig的檔案名稱。

要達成這個目的,點選圖形視窗File選單中的Save選項,或 者點選工具列上的Save按鈕(磁片圖示的那個按鈕)。

如果這是你第一次儲存這個檔案,則會出現Save as對話框。

確定你所儲存的格式為MATLAB圖形(*.fig)。指定你所想要 的檔案名稱於此檔案,按下OK。你也可以使用saveas指令。

(18)

1. 點選File選單中的Export Setup選項。這個對話會提供你指

定輸出檔案的選項,例如圖形的大小、字型、線條的寬窄 以及樣式,以及輸出的格式。

2. 點選Export Setup對話框中的Export選項。接下來會出現

一個標準的Save As對話框。

3. 在Save As種類選單中格式的清單選取所需要的格式。在此

選擇匯出檔案的格式,並且將此檔案加入標準檔案名稱的 副檔名。

4. 輸入你想要給定此檔案的檔案名稱,不需要鍵入副檔名。

5. 接下來按下Save。

更多相關資料請查詢課本第5-14頁

匯出圖形

如果你欲將圖形儲存成能夠被其他的應用程式開啟的格式

,例如標準的圖形檔案格式,如TIFF或者EPS,則進行下列 的步驟。

(19)

1. 點選Edit選單中的Copy Options選項。則接下來會

出現Preferences對話框的Copying Options頁。

2. 填滿Copying Options頁中的欄位,並且按下OK。

3. 點選Edit選單中的Copy File選項。

在視窗系統中,你可以將圖形拷貝至剪貼簿並且將之貼 上於其他的應用程式中。

(20)

子圖形

你可以使用subplot指令在同一張圖形上得到許多比較小的

「子圖形」。語法為subplot(m,n,p)。此指令會將圖形視窗 切割為如同陣列般的直角方框,具有m列以及n行。而變數 p則是告訴MATLAB將跟在subplot指令後面的plot指令的輸 出結果放置到第p個方框。

例如,subplot(3,2,5)會建立一個具有六個方框的陣列,縱 深是三個方框,橫跨為兩個方框,並且將下一個圖形顯示 於第五個方框之中(即是左下角的那一方框)。

(21)

下列的腳本檔所建立的圖形如圖5.2–1所示,此圖形畫出 了在0  x 5之間函數y = e-1.2x sin(10x + 5)以及在-6

x

6 之間函數y = |x3 - 100|的圖形。

x = [0:0.01:5];

y = exp(-1.2*x).*sin(10*x+5);

subplot(1,2,1)

plot(x,y),axis([0 5 -1 1]) x = [-6:0.01:6];

y = abs(x.^3-100);

subplot(1,2,2)

plot(x,y),axis([-6 6 0 350])

圖形顯示於下一張投影片中

(22)

圖5.2–1 Subplot指令的應用。

subplot(1,2,1) subplot(1,2,2)

(23)

測試瞭解問題

T5.2-1 The session is

t = [0:0.01:8];v = [-8:0.01:8];

z = exp(-.5*t).*cos(20*t-6);

u = 6*log10(v.^2+20);

subplot(2,1,1)

plot(t,z),xlabel(‘t’),ylabel(‘z’)

subplot(2,1,2)

plot(v,u),xlabel(‘v’),ylabel(‘u’)

(24)

subplot(2,1,1)

subplot(2,1,2)

(25)

數據標記以及線條種類

要畫出向量y對向量x的圖形並且將每一點以數據標記來 標示,則要標記所要使用的符號以單引號在plot函數中 包圍起來。

表5.2-1顯示了一些可使用的數據標記符號。

若是要使用星號(*)標記資料點以及用點線連接這些數據 標記的y對於x的圖形,則必須要畫出這些數據兩次,方 式是輸入plot(x, y,’*’,x, y,’:’)。

要畫出使用綠色星號(*)標記資料點以及用紅色虛線連接 這些數據標記的y對於x的圖形,則必須要畫出這些資料 兩次,方式是輸入plot(x, y,’g*’,x, y,’r--’)。

(26)

圖5.2–3 以星號標記並且以點線連接的資料圖形。

(27)

表5.2–1 數據標記、線條種類形式,以及顏色的說明符。

(28)

圖5.2–2 使用數據標記。

更多相關資料請查詢課本第5-16~5-17頁

(29)

將曲線與資料加上標籤

legend指令會自動取得圖形中每一組資料的線條種類形式,

並且在圖例框中緊鄰你所選取的文字字串旁顯示線條種類 型式的樣本。下列的腳本檔所產生的圖形如圖5.2–4所示。

x = [0:0.01:2];

y = sinh(x);

z = tanh(x);

plot(x,y,x,z,’--’),xlabel(’x’), ...

ylabel(’Hyperbolic Sine and Tangent’), ...

legend(’sinh(x)’,’tanh(x)’)

(30)

圖5.2–4 legend指令的應用。

(31)

x = [0:0.01:1];

y = tan(x);

z = sec(x);

plot(x,y,x,z),xlabel('x'), ...

ylabel('Tangent and Secant'),gtext('tan(x)'), ...

text(0.3,1.2,'sec(x)')

(32)

圖5.2–5 gtext以及text指令的應用。

(33)

圖5.2–6 電源供應器以及負載的電路表示法。

柯希赫夫定律:

V

1

+i

1R1

+V

2

= 0

(34)

v_2=[0:0.01:20];

i_11=.16*(exp(0.12*v_2)-1);

i_12=-(1/30)*v_2+0.5;

plot(v_2,i_11,v_2,i_12),grid,xlabel('v_2 (volts)'),...

ylabel('i_1 (amperes)'),axis([0 20 0 1]),...

gtext('Load Line'),gtext('Device Curve')

指令:

gtext(‘$$$$$$’)

(35)

圖5.2–7 範例5.2-1中load line(負載線)以及device line(元件曲 線)的圖形。

(36)

x = [-1:0.01:1];

y1 = 3+exp(-x).*sin(6*x);

y2 = 4+exp(-x).*cos(6*x);

plot((0.1+0.9i).^[0:0.01:10]),hold,plot(y1,y2), ...

gtext('y2 versus y1'),gtext('Imag(z) versus Real(z)')

(37)

圖5.2–8 hold指令的應用。

(38)

測試瞭解問題

T5.2-2 The session is

x = [0:5];y1 = [11,13,8,7,5,9];

y2 = [2,4,5,3,2,4];

plot(x,y1,’*’,x,y2,’+’,x,y1,x,y2, ‘—’),...

xlabel(‘x’),ylabel(‘y1, y2’),...

legend(‘y1’,’y2’)

T5.2-3 The session is

x = [0:0.01:2];

y1 = cosh(x);y2 = 0.5*exp(x);

plot(x,y1,x,y2,’– ‘),xlabel(‘x’),ylabel(‘y’ ),...

legend(‘cosh(x)’,’0.5exp(x)’)

(39)

測試瞭解問題

T5.2-4 The session is

x = [0:0.01:2];

y1 = sinh(x);y2 = 0.5*exp(x);

plot(x,y1,x,y2),xlabel(‘x’),ylabel(‘y’),...

gtext(‘sinh(x)’),gtext(‘0.5exp(x)’)

T5.2-5 The session is

x = [0:0.01:1];

y1 = sin(x);y2 = x-x.^3/3;

plot(x,y1),gtext(‘sin(x)’),hold,plot(x,y2),xlabel (‘x’), ylabel(‘y’),...

gtext(‘x-x^3/3’)

(40)

改進圖形的提示

下列的動作並不是必須的,但是能夠改進圖形的外觀:

1. 如果可能的話

由零開始你的圖形比例。這個技巧可以 防止你的圖形上的任何變形給予量值大小錯誤的印象。

2. 使用合理的刻度標記間隔距離。例如,如果量是月份,則

使用12等分的間隔距離,因為1/10年這樣的間隔距離並不 是一個好的辨識刻度。將刻度標記的間隔距離調整變小 有時候是很有用的,但不可以太過靠近。例如,如果一 筆表示範圍為24個月內的資料,48個刻度就太過於緊密,

並且是不必要的。

(接下頁)

(41)

改進圖形的提示(承上頁)

3. 減少畫出的資料中零的數目。例如,適當地使用百萬元當

作單位,而不要使用元當作單位,因為每一個數字後面 都有六個零。

4. 在開始繪圖之前,先求出對應到每一個軸的最大值以及最

小值。接下來設定軸的界限範圍能夠包含整個資料範圍 以及少許額外的量使得我們能夠方便選取使用的刻度標 記間隔距離。

例如,如果在x軸上的資料範圍由1.2到9.6,則我們會採 取一個適當的界限範圍,選擇為0到10。並且這樣子的選 擇能夠讓你使用刻度間隔距離為1或者2。

(接下頁)

(42)

改進圖形的提示(承上頁)

5. 當同一張圖形中繪製了許多條相互交會的曲線時,對於每 一條曲線使用不同種類形式的線條;例如,使用實線、虛 線,以及這兩種線條的組合以及符號。如果使用黑白的列 印方式以及圖片拷貝時,要小心使用顏色來區分圖形。

6. 不要在同一張圖形上放入過多的曲線,特別是當兩條曲線 非常接近的時候,或者是某一條曲線交會另一條曲線很多 次的時候。

7. 當想要比較超過一張以上的圖形的資訊,記得對每一張圖 形都使用相同的比例大小、界限範圍以及刻度間隔距離。

(43)

圖5.3–1 直線比例圖形無法正確地顯示很大的範圍內的變化。

(44)

圖5.3–2 對數比例圖形能夠正確地顯示很大的範圍內的變化。

(45)

對數圖形

當要使用對數比例的時候,請切記下列的重要事項:

1. 你沒有辦法在對數比例圖形上畫出負數,因為負數的對

數並非定義成一個實數。

2. 你也不能夠在對數比例圖形上畫出0,因為log

10 0 = ln 0 = -。你需選取一個適當小的數字當作圖形界限範圍的下 界。

3. 對數比例圖形上的刻度標記標籤就是實際上原本的值;

而不是這些數字的對數的值。例如,圖5.3-2中x值的範 圍是由10-1 = 0.1 到 102 = 100。

(接下頁)

(46)

對數圖形(承上頁)

4. 在對數比例上的等間隔距離表示乘以同一個常數(相對

於直線比例的圖形上等間隔距離加上一個常數)。

例如,所有差異為10倍的數字在對數比例的圖形中是等 距離的。即是說,0.3與3之間的距離和30到300之間的距 離相同。這樣的差距我們稱之為一個decade或者循環。

圖5.3-2顯示的圖形涵蓋三個x的decade(由0.1到100)而 在y上所涵蓋的範圍是四個decade,因此我們稱這個圖形 是一個四乘三循環圖形。

5. 在一個decade中的格線以及刻度標記並不是等間隔距離的。

如果8條格線或者刻度標記出現在一個decade中,則對應 的是此decade中第一條格線或者刻度標記的2、3、4、…、

8、9倍。

(47)

1. 使用loglog(x,y)指令使得兩個軸都是對數比例。

2. 使用semilogx(x,y)指令使得x 軸是對數比例,而y軸則

是直線比例。

3. 使用semilogy(x,y)指令使得y 軸是對數比例,而x 軸則

是直線比例。

MATLAB具有三個指令可以產生對數比例的圖形。而哪一 個指令是適用的,則是依照哪一個軸具有對數比例而定。

指令:

loglog(x,y) semilogx(x,y) semilogy(x,y)

(48)

指令

bar(x,y)

plotyy(x1,y1,x2,y2)

polar(theta,r,’type’)

stairs(x,y) stem(x,y)

敘述

產生y對x的長條圖。

產生具有兩個y軸的圖形,y1的圖 形在左邊而y2的圖形在右邊。

根據極座標theta以及r產生極座標 圖,其中線條種類形式、數據標 記,以及顏色可以在字串type中 指定。

產生y對x的梯狀圖。

產生y對x的管狀圖。

表 5.3–1 特殊圖形指令。

(49)

>>x = [1,1.5,2,2.5,3,3.5,4];

>>y1 = [4,3.16,2.67,2.34,2.1,1.92,1.78];

>>y2 = [8.83,7.02,5.57,4.43,3.52,2.8,2.22];

>>subplot(2,2,1)

>>plot(x,y1,x,y1,'o',x,y2,x,y2,'x'),xlabel('x'),ylabel('y') ...

axis([1 4 0 10])

>>subplot(2,2,2)

>>semilogy(x,y1,x,y1,'o',x,y2,x,y2,'x'),xlabel('x'),ylabel('y')

>>subplot(2,2,3)

>>semilogx(x,y1,x,y1,'o',x,y2,x,y2,'x'),xlabel('x'),ylabel('y')

>>subplot(2,2,4)

>>loglog(x,y1,x,y1,'o',x,y2,x,y2,'x'),xlabel('x'),ylabel('y'), ...

axis([1 4 1 10])

(50)

圖5.3–3 以四種類型的圖形繪製兩組資料。

(51)

圖5.3–4 對數圖形的應用:RC電路。

(52)

Ex5.3-1低通濾波器的頻率響應圖形

RC = 0.1;

s = [1:100]*i;

M = abs(1./(RC*s+1));

loglog(imag(s),M),grid,xlabel('Frequency(rad/s)'),...

ylabel('Output/Input Ratio'),...

title('Frequency Response of a Low-Pass RC Circuit (RC = 0.1 s)')

(53)

圖5.3–5 低通濾波器的頻率響應圖形。

(54)

Set(gca,’XTick’,[xmin:dx:xmax], ’YTick’,[ymin:dy:ymax]) gca: get current axes

Set(gca,’XTicklabel’,[‘text’])

>>x = [0:0.01:2];

>>y =0.25*x.^2;

>>plot(x,y),set(gca,'XTick',[0:0.2:2],'YTick',[0:0.1:1]), ...

xlabel('x'),ylabel('y')

>>x = [1:6];

>>y = [13,5,7,14,10,12];

>>plot(x,y,'o',x,y), ...

set(gca,'XTicklabel',['Jan';'Feb';'Mar':'Apr':'May':'Jun']),...

set(gca,'XTick',[1:6]),axis([1 6 0 15]),xlabel('Month'), ...

ylabel('Monthly Sales ($1000)'), ...

title('Printer Sales for January to June, 1997')

(55)

圖5.3–6 使用set指令控制刻度標記標籤的範例。

(56)

測試瞭解問題

T5.3-1 The session is

x = [0:0.01:1.5];

y1 = 2*x.^(-.5);y2 = 10.^(1-x);

subplot(2,2,1)

plot(x,y1,x,y2,’– ‘),gtext(‘Power’),...

gtext(‘Exponential’),xlabel(‘x’), ylabel(‘y’)

subplot(2,2,2)

semilogy(x,y1,x,y2,’– ‘),gtext(‘Power’),...

gtext(‘Exponential’),xlabel(‘x’), ylabel(‘y’)

subplot(2,2,3)

loglog(x,y1,x,y2,’– ‘),xlabel(‘x’),ylabel(‘y’ ),...

axis([.01 1.5 0.1 20]),gtext(‘Power’),gtext(‘Exponential’)

(57)

圖5.3–8 冪函數y = 2x -0.5以及指數函數y = 101-x

(58)

測試瞭解問題

T5.3-2 The session is

x = [-1:0.01:1];

y =8*x.^3;

plot(x,y),set(gca,’XTick’,[-1:0.25:1],’YTick’,[-8:2:8]),...

xlabel(‘x’),ylabel(‘y’),title(‘y = 8x^3’)

T5.3-3 The session is

theta = [0:0.01:4*pi];

r = 2*theta;

polar(theta,r),title(‘Spiral of Archimedes, r = 2*theta’)

(59)
(60)

MATLAB中的互動式繪圖

這個介面在下列的情況中具有某些優點:

• 當你需要建立非常多不同種類的圖形的時候

• 當你需要建立具有非常多組資料的圖形的時候、

• 當你欲加入例如矩形或者橢圓形的註釋的時候

• 當你欲更改例如刻度間隔距離、字型的厚體、斜體以及顏 色這些特性的時候

更多相關資料請查詢課本第5-33頁

(61)

MATLAB的互動式繪圖環境是一組用來完成以下目標的 工具:

• 建立不同種類的圖形

• 直接選取工作區中的變數畫出圖形

• 建立以及編輯子圖形

• 加入例如直線、箭頭、矩形,以及橢圓形的註解

• 編輯例如顏色、線條寬度、字型這些圖形物件的特性

(62)

圖5.4–1 顯示具有圖形工具列的圖形視窗。

(63)

圖5.4–2 顯示具有圖形工具列以及圖形編輯工具列的圖形視窗。

(64)

圖形調色盤:使用此控制面板建立以及安排子圖形,並 且用來檢視以及畫出工作空間變數,並且加入註解。

圖形瀏覽器:使用此控制面板來選取並且控制圖形中的 軸或者圖形物件的能見度,以及加入繪圖的資料。

特性編輯器:使用此控制面板設定選取物件的基本特性,

並且透過特性檢查器存取所有的特性。

對於一個給定的圖形,繪圖工具介面包含了下列三個控 制面板。

(65)

圖5.4–3 開啟圖形工具的圖形視窗。

(66)

使用線性、冪次以及指數函數來描述資料

每一個函數若是以下列指定的軸畫出來都會是一條直線。

1. 線性函數y = mx + b。

2. 冪函數y = bx

m以重對數軸畫出。

3. 指數函數y = b(10)

mx或者其等效的形式為y = bemx以軸為 對數的半對數(semilog)軸畫出。

更多相關資料請查詢課本第5-40~5-41頁

(67)

函數發現的步驟

1. 檢查接近原點的資料。指數函數永遠不會通過原點

(除非是b = 0這樣的例子,這是一個無意義的例子)。

(參考我們以b = 1所得到冪函數的例子,繪於圖5.5–

1。)

線性函數在b = 0的情況之下會通過原點。而冪函數在

m > 0的情況之下才會通過原點。(參考我們以b = 1所

得到冪函數的例子,繪於圖5.5–2中。)

(接下頁)

(68)

圖5.5–1 指數函數的例子。

(69)

圖5.5–2 指數函數的例子。

(70)

2. 使用直線比例畫出資料。如果得到了直線,則表示此資料

可以使用線性函數來表示,此時工作完成。若不是這種 狀況,在x = 0處具有資料,則

a. 如果y(0) = 0,嘗試使用冪函數。

b. 如果y(0)  0,嘗試指數函數。

如果在x = 0沒有給定資料,則進行步驟3。

函數發現的步驟 (承上頁)

(接下頁)

(71)

3. 如果你懷疑可以使用冪函數來描述,則在重對數比例的圖

上畫出資料點。在重對數圖上冪函數會形成一條直線。

如果你懷疑可以使用指數函數,則使用半對數比例圖畫 出資料。指數函數只有在半對數圖上才會是一條直線。

4. 在函數發現的應用中,我們只使用重對數或者半對數圖來

辨認函數形式,但沒有辦法求得係數b以及m。原因是因 為在對數比例的圖形上很難進行內插。

函數發現的步驟 (承上頁)

(72)

指令

p = polyfit(x,y,n)

敘述

以n 次多項式配適,使用x 以及 y所 描述的資料,其中 x 是自變數。傳 回的向量 p 具有長度 n + 1,所包含 的元素是多項式的係數,並且以降 冪排列。

表5.5–1 polyfit函數。

(73)

使用polyfit函數配適資料的方程式

語法: p = polyfit(x,y,n)

其中 x 以及 y 包含了資料, n 是所想要配適出的多項 式的階數,以及 p 是多項式的係數向量。

線性函數: y = mx + b。在此情況下,多項式w = p1

z+

p

2中的變數w以及z是原本的資料變數x 以及 y,並且我 們可以藉由輸入p= polyfit(x,y,1)來求出能夠配適這些資 料的線性函數。向量p中的第一個元素p1會是m,並且 第二個元素p2為b。

(74)

冪函數: y = bxm。在此情況下

log10

y = m log

10

x + log

10

b

對應到的形式為

w = p

1

z + p

2

其中多項式變數w以及z對應到原本的資料變數x 以及 y的方 式是w = log10

y以及z = log

10

x。因此我們可以求出配適這些資

料的冪函數,方法是輸入

p = polyfit(log10(x),log10(y),1)

向量 p中的第一個元素p1會是m,並且第二個元素p2為log10

b。

我們使用 b = 10p2求出b。

(75)

指數函數: y = b(10)mx。在此情況下 log10

y = mx + log

10

b

對應到的形式為

w = p

1

z + p

2

其中多項式變數w以及z對應到原本的資料變數x 以及 y的方式 是w = log10

y以及z = x。因此我們可以求出配適這些資料的指

數函數,方法是輸入

p = polyfit(x, log10(y),1)

向量p中的第一個元素p1會是m,並且第二個元素p2為log10

b。

我們使用 b = 10p2求出b。

更多相關資料請查詢課本第5-43~5-44頁

(76)

圖5.5–3 用來測量力與懸臂樑偏離量的實驗。

(77)

% Enter the data.

deflection = [0,0.09,0.18,0.28,0.37,0.46,0.55,0.65,0.74];

force = [0:100:800];

%

% Plot the data on rectilinear scales.

subplot(2,1,1)

plot(force,deflection,'o'), ...

xlabel('Applied Force (lb)'),ylabel('Deflection (in.)'),...

axis([0 800 0 0.8])

%

% Fit a straight line to the data.

p = polyfit(force,deflection,1);

k = 1/p(1)

% Plot the fitted line and the data.

f = [0:2:800];

x = f/k;

subplot(2,1,2)

plot(f,x,force,deflection,'o'),...

xlabel('Applied Force (lb)'),ylabel('Deflection (in.)'),...

axis([0 800 0 0.8])

(78)

0 100 200 300 400 500 600 700 800 0

0.2 0.4 0.6 0.8

Applied Force (lb)

Deflection (in.)

0 100 200 300 400 500 600 700 800

0 0.2 0.4 0.6 0.8

Applied Force (lb)

Deflection (in.)

圖5.5–4 懸臂樑範例的圖形。

(79)

動態溫度temperature dynamics

% Enter the data.

time = [0,620,2266,3482];

temp = [145,130,103,90];

%Subtract the room temperature.

temp = temp - 68;

% Plot the data on rectilinear scales.

subplot(2,2,1)

plot(time,temp,time,temp,'o'),xlabel('Time (sec)'),...

ylabel('Relative Temperature (deg F)')

%

Time t (sec) Temperature T (oF)

0 145

620 130

2266 103

3482 90

(80)

% Plot the data on semilog scales.

subplot(2,2,2)

semilogy(time,temp,time,temp,'o'),xlabel('Time (sec)'),...

ylabel('Relative Temperature (deg F)')

% Fit a straight line to the transformed data.

p = polyfit(time,log10(temp),1);

m = p(1)

b = 10^p(2)

% Compute the time to reach 120 degrees.

t_120 = (log10(120-68)-log10(b))/m

% Show the derived curve and estimated point on semilog scales.

t = [0:10:4000];

T = 68+b*10.^(m*t);

subplot(2,2,3)

semilogy(t,T-68,time,temp,'o',t_120,120-68,'+'),

(81)

xlabel('Time (sec)'),...

ylabel('Relative Temperature (deg F)')

%

% Show the derived curve and estimated point on rectilinear scales.

subplot(2,2,4)

plot(t,T,time,temp+68,'o',t_120,120,'+'),xlabel('Time (sec)'),...

ylabel('Temperature (deg F)')

(82)

圖5.5–5 冷卻中的咖啡的溫度,對於不同類型的軸所畫出的圖形。

(83)

圖5.5–6 用來驗證托里切利原理(Torricelli’s principle)。

(84)

% Data for the problem.

cups = [6,9,12,15];

meas_times = [9,8,7,6];

meas_flow = 1./meas_times;

%

% Fit a straight line to the transformed data.

p =

polyfit(log10(cups),log10(meas_

flow),1);

coeffs = [p(1),10^p(2)];

m = coeffs(1)

b = coeffs(2)

%

% Plot the data and the fitted line on a loglog plot to see

% how well the line fits the data.

x = [6:0.01:40];

y = b*x.^m;

subplot(2,1,1)

loglog(x,y,cups,meas_flow,'o'),gr id,xlabel('Volume (cups)'),...

ylabel('Flow Rate

(cups/sec)'),axis([5 15 0.1 0.3])

% Plot the fill time curve extrapolated to 36 cups.

subplot(2,1,2)

plot(x,1./y,cups,meas_times,'o'), grid,xlabel('Volume(cups)'),...

ylabel('Fill Time per Cup (sec)'),axis([5 36 0 10])

%

% Compute the fill time for V = 36 cups.

V = 36;

f_36 = b*V^m

(85)

圖5.5–7 流率以及咖啡壺充滿一杯的時間。

(86)

以下僅供參考!!

(87)

p =

polyfit(x,y,n)

以n次多項式配適使用向量x以及y所 描述的資料,其中x是自變數。傳回 的列向量p具有長度n+1,所包含的 元素是多項式的係數,並且以降冪 排列。

polyfit 函數是根據最小平方法而來。其語法為

請參考課本第5-54頁,表 5.6–1。

(88)

圖5.6–3 使用一次到四次多項式做迴歸的圖形。

(89)

圖5.6–4 一個五次多項式通過所有六個資料點的例子,其中點和 點之間具有大的偏移量。

(90)

評估配適曲線品質的好壞:

我們標記 y 值到平均 y 之間的差異量的平方和為 S,

我們可以由下列公式計算

(yt – y )2

m

i1

S

(91)

此公式可以用來計算另一個此曲線配適的好壞程度的指標,

即是判定係數,又稱做 r平方值。其定義如下

(5.6–3)

J

r

2  1 

S

S的值表示此資料對於平均的散佈情形,並且J 的值表

示此模型無法說明資料散佈情形的程度。

因此 J / S是一個此模型無法說明的分數變化量的指標。

(92)

對於一個完美的配適, J 0 並且 r 2 1。因此 r 2越接 近1,則表示配適越好。而r 2最大為1。

J 的值可能會大於S,所以r

2可能會是負值。然而,若 是出現這種情況,表示這是一個很不好的模型並且不 應該使用。

一個簡易的法則是,一個好的配適至少要能夠說明 99%的資料變化量。這個值對應到r 2  0.99。

(93)

圖5.6–5 係數正確度對於六次多項式的效果。上方的圖顯示了具 有14位小數正確度的效果。而下方的圖顯示了只有8位小數正確度 的效果。

更多相關資料請查詢課本第 5-58~5-59頁

(94)

1. 當 x 的值範圍太小的時候,可以將 x 的資料減去 x 最小的值或者平均值。

2. 當 x 的值範圍太大的時候,將 x 的值除以最大值或者 平均值。

更多相關資料請查詢課本第5-61~5-62頁

調整資料的比例

在計算係數時因為計算誤差所造成的影響可以藉由適當 地調整x值的比例來減輕。

你可以在使用polyfit之前調整你的資料的比例。常用 的調整比例方法為

(95)

圖5.6–6 使用兩個三次多項式來配適資料。

(96)

圖5.6–7 四種模型的殘差圖形。

更多相關資料請查詢課本第5-63~5-64頁

(97)

圖5.6–8 一階模型以及二階模型配適的比較。

更多相關資料請查詢課本第5-66~5-68頁

(98)

基本配適介面

MATLAB透過基本配適介面支援曲線配適。使用這個介面,

你可以在容易使用的環境之下很快地進行基本曲線配適任 務。此介面是特別設計以能夠讓你達成:

• 以三次樣條,或者使用多項式來配適資料,可以使用的多 項式高達10次。

• 對於同一組給定資料同時畫出許多配適圖形。

• 畫出殘差。

• 檢查配適的數值結果。

• 對配適進行內插以及外插。

• 使用數值配適的結果以及殘差的範數註解圖形。

• 將配適以及計算所得的結果儲存於MATLAB工作區之中。

(99)

圖5.7–1 基本配適介面。

(100)

圖5.7–2 由基本配適介面所產生的圖形。

更多相關資料請查詢課本第5-68~5-71頁

(101)

三維線條圖

三維空間中的線條可以用plot3函數畫出來。下列的對話 會產生一個三維的曲線,如圖5.8–1。

>>t = [0:pi/50:10*pi];

>>plot3(exp(-0.05*t).*sin(t),...

exp(-0.05*t).*cos(t),t),...

xlabel(’x’),ylabel(’y’),zlabel(’z’),grid

(102)

圖5.8–1 使用plot3函數所畫出的x e0.05t

sin t, y e

0.05t

cos t, z t 的曲線。

更多相關資料請查詢課本第 5-71~5-72頁

(103)

表面圖

下列的對話顯示了如何產生函數z xe[(xy2)2y2]在區間2 x 

2 ,以及2 y 2之內,且間隔距離為0.1的表面圖。此圖形顯 示在圖5.8–2中。

>>[X,Y] = meshgrid(-2:0.1:2);

>>Z = X.*exp(-((X-Y.^2).^2+Y.^2));

>>mesh(X,Y,Z),xlabel(’x’),ylabel(’y’),zlabel(’z’)

(104)

圖5.8–2 以mesh函數所建立的z xe[(xy2)2y2]的表面圖。

更多相關資料請查詢課本第5-72~5-73頁

(105)

等高線圖

下列的對話會產生顯示在圖5.8–2中的函數表面圖的等高 線圖;即是畫出函數z xe[(xy2)2y2]在區間2 x 2 , 以及2 y 2之內且間隔距離為0.1的等高線圖。此圖形 顯示在圖5.8–3中。

>>[X,Y] = meshgrid(-2:0.1:2);

>>Z = X.*exp(-((X- Y.^2).^2+Y.^2));

>>contour(X,Y,Z),xlabel(’x’),ylabel(’y’)

(106)

圖5.8–3 由contour函數所建立, z xe[(xy2)2y2] 表面之等高線 圖。

更多相關資料請查詢課本第5-74頁

(107)

函數

contour(x,y,z) mesh(x,y,z) meshc(x,y,z) meshz(x,y,z) surf(x,y,z) surfc(x,y,z)

[X,Y] = meshgrid(x,y) [X,Y] = meshgrid(x) waterfall(x,y,z)

敘述

建立等高線圖。

建立三維網狀表面圖。

與mesh指令相同,但是在表面圖底下畫出等高線圖。

與mesh指令相同,但是在表面圖底下畫出鉛直參考線。

建立有深淺不同色調的三維網狀表面圖。

與surf指令相同,但是在表面圖底下畫出等高線圖。

根據向量 x 與 y 建立矩陣X以及Y定義出直角格子。

與[X,Y] = meshgrid(x,x)指令相同。

與mesh指令相同,但是往同一個方向畫出網狀線。

表 5.8–1 三維圖形函數

(108)

圖5.8–4 z xe(x2y2)的表面圖,分別以mesh函數以及其變形的形 式畫出:meshc、meshz,以及waterfall。a) mesh、b)

meshc

、c) meshz以及d) waterfall。

(109)

下列的投影片包含課本中本章節的圖片以 及習題問題。

(110)

圖 P27

(111)

圖 P28

(112)

圖 P56

參考文獻

相關文件

Lagrangian method resolve material or slip lines sharply if no grid tangling. Generalized curvilinear grid is often

Lagrangian method resolve material or slip lines sharply if no grid tangling.. Generalized curvilinear grid is often

Lagrangian method can resolve material or slip lines sharply if there is not too much grid tangling.. Generalized curvilinear grid is often

Take a time step on current grid to update cell averages of volume fractions at next time step (b) Interface reconstruction. Find new interface location based on volume

Take a time step on current grid to update cell averages of volume fractions at next time step (b) Interface reconstruction.. Find new interface location based on volume

下列哪一種記憶體屬於非揮發性記憶體, 不會因電源關閉而使其中的資料消 失, 但是可以透過電壓的方式重複抹除資料, 可用於基本輸入/ 輸出系統 (Basic Input / Output System,BIOS)

4.3.1 若要開啟 SSH,則設定為【Enabled 開啟】。不開啟,則設定為【 Disabled 關閉】。把 SSH 服務開啟,方便日後有問題可以用 SSH 連線.. VMware vSphere Client 連線 5.1

• Non-uniform space subdivision (for example, kd tree and octree) is better than uniform grid kd-tree and octree) is better than uniform grid if the scene is