matlab 使用教學 (2)

24
MATLAB 使使使使 (2) 教教 : 教 教教 教教 : 教教教 教教 、宋 Version 3.1

Upload: hoyt-mccray

Post on 30-Dec-2015

181 views

Category:

Documents


0 download

DESCRIPTION

MATLAB 使用教學 (2). 自 動 控 制. Version 3.0. 教授 : 張 仁 宗 教授 助教 : 鄭志羿 林柏伸. 目錄. 常微分方程式 MATLAB ODE 解題器 解題器語法 利用解題器求解 ODE - 一階 - 二階 隨堂練習一 利用解題器求解 ODE - 三階 - 非齊性 隨堂練習二. 常微分方程式. Can you solve this dynamic equation??. MATLAB ODE 解題器. ode23 非勁度 (nonstiff) 、低階解題器 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MATLAB  使用教學 (2)

MATLAB 使用教學 (2)

教授 : 張 仁 宗 教授助教 : 王英全、宋槐耘

Version 3.1

自 動 控 制

Page 2: MATLAB  使用教學 (2)

目錄 函數的製作 常微分方程式 MATLAB ODE 解題器 解題器語法 利用解題器求解 ODE

- 一階- 二階

隨堂練習一 利用解題器求解 ODE

- 三階- 非齊性

隨堂練習二

Page 3: MATLAB  使用教學 (2)

函數的製作輸出的參數 自己定義的

函數名稱 輸入的參數

使用的結果

Page 4: MATLAB  使用教學 (2)

常微分方程式 Can you solve this dynamic equation??

0, 0 1y y y

:

( ) t

Particular solution

y t e

Page 5: MATLAB  使用教學 (2)

MATLAB ODE 解題器 ode23 非勁度 (nonstiff) 、低階解題器 ode45 非勁度、中階解題器 ode113 非勁度、可變階數解題器 ode23s 勁度、低階解題器 ode23t 普通程度勁度、梯形法解題器 ode23tb 勁度、低階解題器 ode15s 勁度、可變階數解題器

Page 6: MATLAB  使用教學 (2)

解題器語法 [ t, y ] = ode45( ‘solver’, t_span, y0 )

[ t, y ] 在自動控制中,動態系統是利用時間 t與輸出 y 來表示,所以定義輸入參數為 t 與 y 。

‘solver’ 為函數檔名。 t_span 為變數 t 的向量空間,此向量空間包含變數 t 的初始值及終值。

y0 為 y 變數初始值的向量空間。

Page 7: MATLAB  使用教學 (2)

利用解題器求解 ODE - 一階 (1)

solver.m

function dy = solver( t, y )

dy = [ -y(1) ]; % y = y1 = y(1) ode45.m

[ t, y ] = ode45( 'solver', [0 10], [1] );

plot(t, y, '-', t, exp(-t), '*' );

xlabel('Time (sec)'); ylabel('y(t)');

legend('numerical method','analytical method')

10y,0yy

yy

Page 8: MATLAB  使用教學 (2)

利用解題器求解 ODE - 一階 (2)

Page 9: MATLAB  使用教學 (2)

利用解題器求解 ODE – 二階 (1)

solver.mfunction dy = solver( t, y )dy=[ y(2); 2*y(2)-y(1) ];

ode45.m

[ t, y ] = ode45( 'solver', [0 10], [0 1] );

plot( t, y( :,1 ), '-',t, t.*exp(t), '*');

xlabel('Time (sec)'); ylabel('value');

legend('numerical method','analytical method')

1)0(y,0)0(y,0yy2y 0 1

1 2

[ (1); (2)] [ ; ]

[ , ]

y y

y y

y y y y y

dy y y

Page 10: MATLAB  使用教學 (2)

利用解題器求解 ODE - 二階 (2)

Page 11: MATLAB  使用教學 (2)

利用解題器求解 ODE - 二階 (3)

[ t, y ] = ode45( 'solver', [0 10], [0 1] ); plot( t, y( :,1 ), 'b',t, y( :,2),'r'); xlabel('Time (sec)'); ylabel('value'); legend('y','ydot')

Page 12: MATLAB  使用教學 (2)

隨堂練習一 求解下列二階常微分方程式 ( t = [ 0 10 ] )

2 2 0, (0) 0, (0) 1

2 0, (0) 0, (0) 1

y y y y y

y y y y

Page 13: MATLAB  使用教學 (2)

隨堂練習一 - 解答 (1)

1)0(y,0)0(y,0y2y2y

時間 t

輸出

y

‘*’ 為手算結果

Page 14: MATLAB  使用教學 (2)

隨堂練習一 - 解答 (2)

1)0(y,0)0(y,0y2y

時間 t

輸出

y ‘*’ 為手算結果

Page 15: MATLAB  使用教學 (2)

利用解題器求解 ODE - 三階 (1)

solver.mfunction dy = solver( t, y )dy = [ y(2); y(3); y(3)-2*y(1) ];

ode45.m[ t, y ] = ode45( 'solver', [ 0 10 ], [ 0 0 1 ]);plot(t, y( :,1 ), '-', t, y( :, 2 ), '--', t, y( :, 3 ), '-.', t, 0.2.*exp(-t)+0.2.*exp(t).*(2.*sin(t)-cos(t)), '*' );

1)0(y,0)0(y,0)0(y,0y2yy

Page 16: MATLAB  使用教學 (2)

利用解題器求解 ODE - 三階 (2)

時間 t

輸出

y

‘*’ 為手算結果

Page 17: MATLAB  使用教學 (2)

利用解題器求解 ODE – 非齊性(1)

ph yyy 10y),tsin(yy

:

:

:h

p

y

y

y

全解(general solution),輸出響應齊性解(homogeneous solution),自然響應特解(particular solution),強制響應

Page 18: MATLAB  使用教學 (2)

利用解題器求解 ODE – 非齊性(2)

solver.mfunction dy = solver(t,y)dy = [ -y(1) + sin(t) ];

ode45.m[ t, y ] = ode45( 'solver', [ 0 10 ], [1] );plot( t, y, '-', t, 3/2.*exp(-t)-1/2.*cos(t)-1/2.*sin(t), '*', t, 3/2.*exp(-t), '--', t, -1/2.*cos(t)-1/2.*sin(t), '.-')

10y),tsin(yy

Page 19: MATLAB  使用教學 (2)

利用解題器求解 ODE – 非齊性(3)

時間 t

輸出

y

‘*’ 為手算結果

‘--’ 為齊性解

‘.-’ 為特解

Page 20: MATLAB  使用教學 (2)

隨堂練習二 (1)

請利用解題器解非齊性微分方程式,並將結果顯示為時間 t=0-20的紅色虛線表示 :

sin(3 ), 0 1y y t y

Page 21: MATLAB  使用教學 (2)

隨堂練習二 (2)

利用 MATLAB 求下列二階常微分方程式全解,並與手算結果繪圖比較之。

1)0(y,0)0(y),t(uy6y5y s

0t,0

0t,1)t(us

inputstepunit:)t(us

Page 22: MATLAB  使用教學 (2)

隨堂練習二 - 解答 (1)

Page 23: MATLAB  使用教學 (2)

隨堂練習二 - 解答 (2)

時間 t

輸出

y

‘*’ 為手算結果

Page 24: MATLAB  使用教學 (2)

謝謝各位同學光機電實驗室 12F 研究室 91C09 分機 :62262