목차
Ⅰ. MATLAB의 소개
Ⅱ. 결과 그래프의 출력
Ⅲ. 행렬의 연산
Ⅳ. 수치 적분과 미분방정식
Ⅴ. 선형시스템의 수학적 모델 표현
Ⅱ. 결과 그래프의 출력
Ⅲ. 행렬의 연산
Ⅳ. 수치 적분과 미분방정식
Ⅴ. 선형시스템의 수학적 모델 표현
본문내용
: 벡터 X의 원소를 대각항에 가지는 대각행렬을 생성한다.
X=[1 2 3 4]; diag(X)
ans =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
2) diag(A) : 행렬 A의 대각항만을 뽑아낸다.
A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
diag(A)
ans =
1
5
9
diag(diag(A))
ans =
1 0 0
0 5 0
0 0 9
Ⅳ. 수치 적분과 미분방정식
1. function
새로운 함수를 정의할 때 쓰인다.
< Example >
f(x)= 1 over {(x-0.25)^2 +0.025} + 1 over {(x-0.75)^2 +0.05}-5
를 M-file로 표현하고 그 그래프를 구하는 법을 알아보자.
우선 다음의 M-file은 위의 함수를 표현한 것이다.
function y=funct(x)
y=1./((x-0.25).^2 + 0.025) + 1./((x-0.75).^2 +0.05) -5;
이 함수의 이름은 'funct.m'이며, 아래의 예는 x가 -2.5에서부터 2.5까지 0.02씩 변할 때의 함수값을 그래프로 나타낸 것이다.
x=-2.5:0.02:2.5;
plot(x,funct(x))
2. 수치적분(quad)
임의의 함수 f(x)의 아래 부분의 면적은 구적법(quadrature)을 사용하여 f(x)를 수치 적분함으로써 구할 수 있다. 앞에서 M-file 'funct.m'을 사용하여 정의한 함수를 0부터 1까지 적분하고자 할 때에는 다음과 같이 입력하면 된다.
quad('funct',0,1)
ans =
19.4788
구적법과 관련하여 MATLAB에서 제공하는 함수에는 두 가지가 있다.
quad : Adaptive Simpson Rule 사용
quad8 : Adaptive Newton Cotes 8 Panel Rule 사용
3. 미분방정식의 풀이
상미분방정식을 풀기 위하여 MATLAB에서 제공하는 함수들에는 다음과 같은 것들이 있다.
ode23 : 2차 및 3차 Runge-Kutta Method
ode45 : 4차 및 5차 Runge-Kutta Method
< Example >
다음의 미분방정식을 고려해 보자.
x'' +(x^2 -1)x' +x = 0
이 방정식은 다음과 같은 2개의 1차 미분 방정식으로 나타낼 수 있다.
x_1 '=x_1 (1-x_2 ^2 )-x_2
x_2 '=x_1
이 방정식을 풀기 위해서 먼저 vdpol.m이라는 M-file을 작성해 보자.
function deriv = vdpol(t,x);
deriv = zeros(2,1) ;
deriv(1)= x(1) .*(1-x(2) .^2)-x(2);
deriv(2)=x(1);
이제는 작성한 vdpol.m을
0<=t<=50
에 걸쳐서 적분해 보자.
t0=0;
tf=50;
x0=[-2.5 2.5]';
[t x]=ode23('vdpol',t0,tf,x0);
plot(t,x)
다음의 그림은 위의 입력에 대한 결과이다.
Ⅴ. 선형시스템의 수학적 모델 표현
1. [A,B,C,D]=tf2ss(num,den)
Y(s) over U(s) = {n{um}} over den
형태로 되어 있는 시스템의 전달함수로부터 상태방정식의 행렬 A, B, C, D를 이끌어 낸다.
2. [num,den]=ss2tf(A,B,C,D)
A, B, C, D로 이루어져 있는 상태방정식으로부터 전달함수
Y(s) over U(s) = {n{um}} over den
를 이끌어 낸다.
Y(s) over U(s) = {s+3} over {s^2 +3s+2}
를 상태방정식으로 바꿔보자.
num=[0 1 3];
den=[1 3 2];
[A,B,C,D]=tf2ss(num,den)
A =
-3 -2
1 0
B =
1
0
C =
1 3
D =
0
[num,den]=ss2tf(A,B,C,D)
num =
0 1 3
den =
1 3 2
3. [r,p,k]=residue(num,den)
전달함수를 부분분수로 분해할 때 사용한다.
B(s) over A(s) = {n{un}} over den = {b(1)s^n + b(2)s^{n-1} + cdot cdot cdot + b(n)} over {a(1)s^n + a(2)s^{n-1} + cdot cdot cdot + a(n)}
→
B(s) over A(s) = r(1) over {s-p(1)} + r(2) over {s-p(2)} + cdot cdot cdot + r(n) over {s-p(n)} + k(s)
num=[2 5 3 6];
den=[1 6 11 6];
[r,p,k]=residue(num,den)
r =
-6.0000
-4.0000
3.0000
p =
-3.0000
-2.0000
-1.0000
k =
2
즉,
B(s) over A(s) = {2s^3 +5s^2 +3s +6} over {s^3 + 6s^2 +11s +6}
= -6 over s+3 + -4 over s+2 + 3 over s+1 +2
이다.
4. [G,H]=c2d(A,B,Ts)
연속시간시스템을 이산시간시스템으로 변환한다(Ts는 샘플링주기).
x' =Ax +Bu
→
x(k+1)=Gx(k) +Hu(k)
A=[0 1;-25 -4];
B=[0;1]
[G,H]=c2d(A,B,0.05)
G =
0.9709 0.0448
-1.1212 0.7915
H =
0.0012
0.0448
< Example >
아래와 같이 구성된 선형시스템을 상태방정식으로 구성하고 그 시스템의 특성을 살펴보도록 하자.
먼저 전달함수를 구해보자.
num=10;
den=[1 2 10];
printsys(num,den)
num/den =
10
--------------
s^2 + 2 s + 10
이제 전달함수를 상태방정식으로 변환시키면,
[A,B,C,D]=tf2ss(num,den)
A =
-2 -10
1 0
B =
1
0
C =
0 10
D =
0
이 시스템의 Step Response를 보려면 다음과 같이 입력한다.
step(num,den) or step(A,B,C,D)
이 시스템의 Bode Plot을 보려면 다음과 같이 입력한다.
bode(num,den) or bode(A,B,C,D)
X=[1 2 3 4]; diag(X)
ans =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
2) diag(A) : 행렬 A의 대각항만을 뽑아낸다.
A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
diag(A)
ans =
1
5
9
diag(diag(A))
ans =
1 0 0
0 5 0
0 0 9
Ⅳ. 수치 적분과 미분방정식
1. function
새로운 함수를 정의할 때 쓰인다.
< Example >
f(x)= 1 over {(x-0.25)^2 +0.025} + 1 over {(x-0.75)^2 +0.05}-5
를 M-file로 표현하고 그 그래프를 구하는 법을 알아보자.
우선 다음의 M-file은 위의 함수를 표현한 것이다.
function y=funct(x)
y=1./((x-0.25).^2 + 0.025) + 1./((x-0.75).^2 +0.05) -5;
이 함수의 이름은 'funct.m'이며, 아래의 예는 x가 -2.5에서부터 2.5까지 0.02씩 변할 때의 함수값을 그래프로 나타낸 것이다.
x=-2.5:0.02:2.5;
plot(x,funct(x))
2. 수치적분(quad)
임의의 함수 f(x)의 아래 부분의 면적은 구적법(quadrature)을 사용하여 f(x)를 수치 적분함으로써 구할 수 있다. 앞에서 M-file 'funct.m'을 사용하여 정의한 함수를 0부터 1까지 적분하고자 할 때에는 다음과 같이 입력하면 된다.
quad('funct',0,1)
ans =
19.4788
구적법과 관련하여 MATLAB에서 제공하는 함수에는 두 가지가 있다.
quad : Adaptive Simpson Rule 사용
quad8 : Adaptive Newton Cotes 8 Panel Rule 사용
3. 미분방정식의 풀이
상미분방정식을 풀기 위하여 MATLAB에서 제공하는 함수들에는 다음과 같은 것들이 있다.
ode23 : 2차 및 3차 Runge-Kutta Method
ode45 : 4차 및 5차 Runge-Kutta Method
< Example >
다음의 미분방정식을 고려해 보자.
x'' +(x^2 -1)x' +x = 0
이 방정식은 다음과 같은 2개의 1차 미분 방정식으로 나타낼 수 있다.
x_1 '=x_1 (1-x_2 ^2 )-x_2
x_2 '=x_1
이 방정식을 풀기 위해서 먼저 vdpol.m이라는 M-file을 작성해 보자.
function deriv = vdpol(t,x);
deriv = zeros(2,1) ;
deriv(1)= x(1) .*(1-x(2) .^2)-x(2);
deriv(2)=x(1);
이제는 작성한 vdpol.m을
0<=t<=50
에 걸쳐서 적분해 보자.
t0=0;
tf=50;
x0=[-2.5 2.5]';
[t x]=ode23('vdpol',t0,tf,x0);
plot(t,x)
다음의 그림은 위의 입력에 대한 결과이다.
Ⅴ. 선형시스템의 수학적 모델 표현
1. [A,B,C,D]=tf2ss(num,den)
Y(s) over U(s) = {n{um}} over den
형태로 되어 있는 시스템의 전달함수로부터 상태방정식의 행렬 A, B, C, D를 이끌어 낸다.
2. [num,den]=ss2tf(A,B,C,D)
A, B, C, D로 이루어져 있는 상태방정식으로부터 전달함수
Y(s) over U(s) = {n{um}} over den
를 이끌어 낸다.
Y(s) over U(s) = {s+3} over {s^2 +3s+2}
를 상태방정식으로 바꿔보자.
num=[0 1 3];
den=[1 3 2];
[A,B,C,D]=tf2ss(num,den)
A =
-3 -2
1 0
B =
1
0
C =
1 3
D =
0
[num,den]=ss2tf(A,B,C,D)
num =
0 1 3
den =
1 3 2
3. [r,p,k]=residue(num,den)
전달함수를 부분분수로 분해할 때 사용한다.
B(s) over A(s) = {n{un}} over den = {b(1)s^n + b(2)s^{n-1} + cdot cdot cdot + b(n)} over {a(1)s^n + a(2)s^{n-1} + cdot cdot cdot + a(n)}
→
B(s) over A(s) = r(1) over {s-p(1)} + r(2) over {s-p(2)} + cdot cdot cdot + r(n) over {s-p(n)} + k(s)
num=[2 5 3 6];
den=[1 6 11 6];
[r,p,k]=residue(num,den)
r =
-6.0000
-4.0000
3.0000
p =
-3.0000
-2.0000
-1.0000
k =
2
즉,
B(s) over A(s) = {2s^3 +5s^2 +3s +6} over {s^3 + 6s^2 +11s +6}
= -6 over s+3 + -4 over s+2 + 3 over s+1 +2
이다.
4. [G,H]=c2d(A,B,Ts)
연속시간시스템을 이산시간시스템으로 변환한다(Ts는 샘플링주기).
x' =Ax +Bu
→
x(k+1)=Gx(k) +Hu(k)
A=[0 1;-25 -4];
B=[0;1]
[G,H]=c2d(A,B,0.05)
G =
0.9709 0.0448
-1.1212 0.7915
H =
0.0012
0.0448
< Example >
아래와 같이 구성된 선형시스템을 상태방정식으로 구성하고 그 시스템의 특성을 살펴보도록 하자.
먼저 전달함수를 구해보자.
num=10;
den=[1 2 10];
printsys(num,den)
num/den =
10
--------------
s^2 + 2 s + 10
이제 전달함수를 상태방정식으로 변환시키면,
[A,B,C,D]=tf2ss(num,den)
A =
-2 -10
1 0
B =
1
0
C =
0 10
D =
0
이 시스템의 Step Response를 보려면 다음과 같이 입력한다.
step(num,den) or step(A,B,C,D)
이 시스템의 Bode Plot을 보려면 다음과 같이 입력한다.
bode(num,den) or bode(A,B,C,D)
소개글