Senin, 20 Mei 2013

MATEMATIKA DALAM TEKNIK KONTROL



Tujuan
Mahasiswa menguasai teknik penyelesaian analisis matematika dalam lingkup teknik control untuk system kontinyu dengan menggunakan MATLAB


Polinomial
Matlab menyediakan fungsi operasi standar dari polinom, seperti akar polynomial, evaluasi, dan turunan. Sebagai tambahan, fungsi-fungsi berikut diberikan untuk aplikasi lebih lanjut, seperti pencocokan kurva dan ekspansi fraksi parsial.

Fungsi
Deskripsi
Conv
Perkalian polynomial
Deconv
Pembagian polynomial
Poly
Polynomial dengan akar-akar tertentu
Polyder
Turunan polynomial
Polyfit
Pencocokan kurva polynomial
Polyval
Evaluasi polynomial
Polyvalm
Evaluasi matrik polynomial
Residue
Ekspansi fraksi parsial
Roots
Mencari akar-akar polynomial

1.      Representasi MATLAB
Penggambaran polynomial sebagai vector baris yang terdiri atas koefisien-koefisien polinomnya. Sebagai contoh, persamaan berikut:
Kita masukan kedalam MATLAB sebagai berikut:
>>P=[1 0 -2 5];

2.      Akar Polinomial
Fungsi roots menghitung akar-akar dari polynomial:

>>r=roots(p);
r=
     2.0964
     -1.0473+1.1359i
     -1.0473-1.1359i
Yang disempan dalam bentuk vector kolom. Fungsi poly mengembalikan ke koefisien polinomnya:
>>p2=poly(r);
p2=
     1 8.8818e-16 -2 -5

3.      Evaluasi polinomial
Fungsi polyval mengevaluasi polynomial pada suatu nilai tertentu. Untuk mengevaluasi p pada s=5, maka digunakan:
>>polyval(p,5)
ans = 110
fungsi ini juga memungkinkan untuk mengevaluasi polynomial dalam bentuk matrik. Dalam kasus  menjadi , dimana X adalah matriks square, dan I adalah matriks identitas. Misalkan, dibuat matriks square X dan evaluasi polynomial p pada X:
>>X=[2 4 5;-1 0 3;7 1 3];
>>Y=polyval(p,X)
Y=
     377  179  439
     111  81   136
     490  253  639

4.      Perkalian dan Pembagian Polinomial
Perkalian polinom dan pembagiannya berhubungan dengan operasi konvolusi dan dekonvolusi. Fungsi conv dan deconv digunakan untuk menjalankan operasi ini. Misalkan ada dua buah polynomial,  dan . Untuk menghitung hasil kalinya kita gunakan:
>>a=[1 2 3]; b=[4 5 6];
>>c=conv(a,b)
c=
     4 13 28 27 18
Gunakan dekovolusi untuk membagi a(s) kembali kepada pengalinya:
>>[q,r]=deconv(c,a)
q=
     4 5 6
r=
     0 0 0 0 0

5.      Turunan Polinom
Fungsi polyder digunakan untuk menghitung turunan (derivasi) setiap polynomial. Untuk mendapatkan turunan polynomial , maka:
>>p=[1 0 -2 5];
>>q=polyder(p)
q=
     3 0 -2
Polyder juga menghitung turunan perkalian atau pembagian dua polynomial. Sebagai contoh, kita buat dua polynomial a dan b:
>>a=[1 3 5]; b=[2 4 6];

Turunan perkalian a*b dengan fungsi polyder menggunakan satu argument keluaran:
>>c=polyder(a,b)
c=
     8 30 56 38
Turunan dari pembagian a/b dengan memanggil polider menggunakan dua argument keluaran:
>>[q,d]=polyder(a,b)
q=
     -2 -8 -2
d=
     4 16 40 48 36



6.      Ekspansi Fraksi Parsial
Fungsi residu digunakan untuk mencari rasio ekspasi parsial dari dua polynomial. Sangat berguna untuk menggambarkan system dalam bentuk fungsi transfer. Untuk polynomial a dan b, dirumuskan sebagai fungsi transfer berikut ini:
Dimana r adalah vector kolom residu, p adalah lokasi kutub (pole) vector kolom dan k adalah vector baris. Misalkan diperoleh fungsi transfer berikut ini:
Digunakan fungsi residu untuk mencari nilai r, p dan k:
>>b=[-4 8]; a=[1 6 8];
>>[r,p,k]=residue(b,a)
r=
     -12
     8
p=
     -4
     -2
k=
     []
Untuk mengembalikan ke bentuk aslinya, kita gunakan fungsi yang sama tetapi argument keluarannya berbeda.
>>[b2,a2]=residue(r,p,k)
b2=
     -4 8
a2=
     1 6 8

Contoh lain:
Diberikan fungsi transfer sebagai berikut:
Untuk mencari r, p dan k digunakan cara seperti contoh sebelumnya:
>>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
Hasil di atas memperlihatkan fraksi parsial dari fungsi transfer di atas:

Untuk mengembalikan ke bentuk semua:
>>[num,den]=residue(r,p,k)
num=
     2.0000 5.0000 3.0000 6.0000
den=
     1.0000 6.0000 11.0000 6.0000

7.      Transformasi Laplace
Transformasi laplace digunakan untuk mengubah system fisis atau suatu fungsi dalam domain waktu ke domain frekuensi atau variable kompleks. Dalam MATLAB, sintaks yang digunakan transformasi laplace adalah sebagai berikut:
L=Laplace(F)
L=Laplace(F,t)
L=Laplace(F,w,z)

Dekripsi:
  • L=Laplace(F)
Adalah transformasi laplace dari symbol scalar F dengan variable default t. Variable tersebut mengembalikan fungsi ke variable s.
F=F(t) à L=L(s)
Jika F=F(s), fungsi Laplace akan mengembalikan fungsi dalam t ;L=L(t)

Transformasi laplace dalam fungsi matematika nya adalah sebagai berikut:

Dimana t merupakan variable simbolik domain t dalam fungsi F

  • L=Laplace(F,t)
Membuat L fungsi dari t sebagai pengganti default s.
            L menghasilkan symbol scalar.

  • L=Laplace(F,w,z)
Membuat fungsi L dari z dan F sebagai fungsi w sebagai pengganti variable s dan t

Contoh-contoh:
>>syms t a      %inisialisasi variable
>>laplace(t*exp(-a*t))
ans=
     1/(s+a)^2

>>syms t a b
>>laplace(exp(-a*t)*cos(b*t))
ans=
     (s+a)/((s+a)^2+b^2)
>>pretty(ans)


     s+a
 -------------
  (s+a)2+ b2

>>syms t
>>f=t^4
>>laplace(f)
ans=
     24/s^5

>>syms s
>>g=i/sqrt(s)
>>laplace g
ans=
     (pi/t)^(1/2)

>>syms t a x
>>f=exp(-a*t)
>>laplace(f,x)
ans=
     1/(x+a)

8.      Inverse Transformasi Laplace
Inverse laplace digunakan untuk mengembalikan suatu fungsi dari domain frekuensi atau variable kompleks ke domain waktu. Dalam MATLAB, sintaks yang digunakan adalah:
F=iLaplace(L)
F=iLaplace(L,t)
F=iLaplace(L,y,x)

Deskripsi:
·         F=iLaplace(L)
Merupakan invers transformasi laplace dari symbol scalar F dengan variable default s. variable tersebut mengembalikan fungsi ke variable t. transformasi laplace dari fungsi s dan mengembalikan ke fungsi t.
L=L(s) à F=F(t)

Jika L=L(t), iLaplace megembalikan fungsi dalam  x:

F=F(x)

Oleh definisi:

Dimana c adalah angka real terpilih sehingga singularitas L(s) adalah sebelah kiri sumbu hayal dari bidang s (variable kompleks)

·         F=iLaplace(L,t)
Menghasilkan F fungsi dari y sebagai pengganti default t:


y adalah obyek simbolik (scalar)

·         F=iLaplace(L,y,x)
Mengambil F sebagai fungsi dari x dan L fungsi dari y sebagai pengganti variable default t dan s

Contoh-contoh:
>>syms s a b
>>ilaplace((s+a)/(s+a)^2+b^2)
ans=
     Exp(-a*t)*cos(b*t)

>>syms s
>>ilaplace(1/s^2)
ans=
     t

>>syms s a
>>ilaplace(1/(s+a)^2)
ans=
     exp(-a*t)*t

>>syms t a
>>g=1/(t-a)^2
>>ilaplcae(g)
ans=
     x*exp(a*x)

>>syms x u
>>syms a real
>>f=1/(u^2-a^2)
>>simplify(ilaplcae(f,x))
ans=
     sinh(x*abs(s))/abs(s)


>>syms s
>>F=(s^2+2*s+2)/((s+1)*(s+2));
>>f=ilaplace(F)
f=
     dirac(t)+exp(-t)-2*exp(-2*t)


>>syms s
>>F=(1/((s+1)^2*(s+2)));
>>f=ilaplace(F)
f=
     exp(-2*t)+(t-1)*exp(-t)
>>syms s
>>A=((1-s-s^2)/s*(s+1)*(s+2)));
>>b=ilaplcace(A);
b=
     ½-exp(-t)-1/2*exp(-2*t)

>>syms
>>G=(s^2+9*s+19)/((s+1)*(s+2)*(s+4));
>>g=ilaplcae(G)
g=
     11/3*exp(-t)-5/2*exp(-2*t)-1/6*exp(-4*t)


>>syms s
>>F=(2*s+12)/(s^2+2*s+5);
>>f=ilaplace(F)
f=
     2*exp(-t)*cos(2*t)+5*exp(-t)*sin(2*t)


9.      Konversi Model
Ada 4 bentuk konversi yang banyak digunakan dalam teknik control, yaitu:
  1. State space to transfer function (ss2tf)
  2. Transfer function to state space (tf2ss)
  3. Continuous to discrete (c2d)
  4. Discrete to continuous (d2c)

A.    State space to transfer function (ss2tf)
State space to transfer function (ss2tf) merupakan sebuah fungsi untuk mengubah model system dari model ruang keadaan (state space) ke model fungsi alih (transfer function).
Sintaks:
     [n,d]=ss2tf(A,B,C,D)

Sebagai contoh:
  1. Ambil sebuah matriks ruang keadaan dari system

Dimana matriks:
A=           B=           C=  dan D=0
Maka untuk mengubah matriks pemodelan system dari ruang keadaan (state space) ke fungsi alih (transfer function) adalah:

>>A=[0 1 0;0 0 1;-5.008 -25.1026 -5.03247]
>>B=[0;25.04;-121.005]
>>C=[1 0 0]
>>D=0;
>>[n,d]=ss2tf(A,B,C,D)
n=
     0    0    25.0400    5.0080
d=
     1.000 5.0325     25.1026    5.00800


Artinya, fungsi alih dari ruang keadaan (state space) model  system tersebut adalah:

  1. Untuk system MIMO (Multiple Input Multiple Output) atau system yang memiliki masukan dan keluaran lebih dari satu, maka sintaks MATLAB yang digunakan adalah:

[n,d]=ss2tf(A,B,C,D,iu)
Dengan iu merupakan masukan yang lebih dari satu. Untuk ilustrasi, diberikan contoh sebagai berikut:

Matriks:
A=           B=       C=       D=[0 0;0 0]

Maka untuk mengubah matriks pemodelan system dari ruang keadaan (state space) ke fungsi alih (transfer function) adalah:
>>A=[0 1;-25 -4]
>>B=[0 1;0 1]
>>C=[1 0;0 1]
>>D=[0 0;0 0]
>>%Fungsi Alih untuk masukan pertama
>>[n,d]=ss2tf(A,B,C,D,1)
n=
     0    1    4
     0    0    -25

n=
     1    4    25

>>%Fungsi alih untuk masukan ke dua
>>[num,den]=ss2tf(A,B,C,D,2)
num=
     0    1.0000    5.0000
     0    1.0000    -25.0000
den=
     1    4    25

Sehingga fungsi alih untuk masukan pertama adalah:
Sedangkan fungsi alih untuk masukan kedua adalah

B.     Transfer function to state space (tf2ss)
Transfer function to state space (tf2ss) merupakan sebuah fungsi untuk mengubah model system dari fungsi alih ke model system ruang keadaan (state space).
Sintaks:
[A,B,C,D]=tf2ss(n,d)

Sebagai contoh:
Sebuah fungsi alih dari system dengan satu masukan dan dua keluaran dituliskan sebagai berikut:
Sintaks MATLAB nya adalah:
>>n=[0 2 3;1 2 1]
>>d=[1 0.4 1]
>>[A,B,C,D]=tf2ss(n,d)
A=
     -0.4000    -1.0000
     1.0000          0

B=
     1
     0
C=
     2.0000          3.0000
     1.6000          0
D=
     0

Kontrol Program



Tujuan
  • Memahami logika alur program
  • Mampu menggunakan sintaks kontrol program dalam pemrograman


Teori dasar dan Praktikum

Matlab bisa berlaku seperti bahasa pemrograman C ataupun pascal yang mempunyai struktur kontrol program. Biasanya pemrograman dengan matlab memerlukan lebih dari satu baris dan memungkinkan untuk didokumentasikan dalam m-file, control program ini digunakan untuk memperbaiki tampilan atau membuat tampilan sesuai yang kita inginkan. Dalam bagian ini dibahas sebagian kontrol program yang diperlukan dalam pemrograman menggunakan matlab. Operator logika yang digunakan dalam pemrograman MATLAB adalah sebagai berikut:

Simbol
Operasi
Kurang dari
<=
Kurang dari atau sama dengan
Lebih dari
>=
Lebih dari atau sama dengan
==
Sama dengan
~=
Tidak sama dengan

Berikut ini adalah kontrol program yang digunakan dalam MATLAB:
1.   for loops
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu umlah yang tetap. Bentuk umum dari loop for adalah :
for x= array
statement
end
untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop, x = array(:,n). Contoh,
  1. tulislah script ini adalam command window

>> for n=0:10
x(n+1)=sin(pi*n/10)
end

keluarannya:
x =
Columns 1 through 7
0    0.3090    0.5878    0.8090    0.9511    1.0000    0.9511
Columns 8 through 11
0.8090    0.5878    0.3090    0.0000

  1. Tulislah script ini di command window

>>for i=1:5
disp('Ini hasil looping 5 kali')
end

Keluarannya:
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali

  1. Tulislah script di command window
>> H=zeros(5);
>> for k=1:5
for l=1:5
H(k,l)=1/(k+l-1)
end
end

Keluarannya:
H =

    1.0000    0.5000    0.3333    0.2500    0.2000
    0.5000    0.3333    0.2500    0.2000    0.1667
    0.3333    0.2500    0.2000    0.1667    0.1429
    0.2500    0.2000    0.1667    0.1429    0.1250
    0.2000    0.1667    0.1429    0.1250    0.1111

2.   While loops
loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop while mengerjakan sekelompok perintah yang diulang secara tidak terbatas Bentuk umum loop while adalah
while ekpresi
statement
end
semua elemen yang dieksekusi diantara while dan end dan harus bernilai benar

  1. Tulis script ini di command window
>> q=pi
>> while q>0.01
q=q/2
end

Keluarannya:
q = 1.5708
q = 0.7854
q = 0.3927
q = 0.1963
q = 0.0982
q = 0.0491
q = 0.0245
q = 0.0123
q = 0.0061


  1. Tulislah script ini di command windows
>> x=0;
>> while x<5
disp('diulang sampai 5 kali');
x=x+1;
end

Keluarannya:
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali

3.   Konstruksi loop : if-else-end
Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes rasional. Dalam bahasa pemrograman, logika ini dikerjakan dengan variasi kontruksi if-else-end. Bentuk paling sederhana kontruksi if-else-end adalah :

If ekpresi
Pertintah
End

Konstruksi ini digunakan jika hanya ada satu alterntif. Dua atau lebih alternative memerlukan konstruksi:

If ekspresi
Perintah (dievaluasi jika ekspresi adalah benar)
Else
Perintah (dievaluasi jika ekspresi adalah salah)
end

  1. Buatlah script di bawah ini pada editor m-file. Simpan dengan nama file FirstMovie.m
%script file firstmovie
%Graphs of y=sin(kx) over the interval [0,pi],
%where k= 1,2,3,4,5
m=moviein(5);
x=0:pi/100:pi;
for i=1:5
    h1_line=plot(x,sin(i*x));
    set(h1_line,'lineWidth',1.5,'color','m');
    grid;
    title('Sine Function sin(kx), k=1,2,3,4,5');
    h=get(gca,'title');
    set(h,'FontSize',12);
    xlabel('x');
    k=num2str(i);
    if i>1
        s=strcat('sin(',k,'x)');
    else
        s='sin(x)';
    end
    ylabel(s);
    h=get(gca,'ylabel');
    set(h,'FontSize',12);
    m(:,i)=getframe;
    pause(2)
end
movie(m);

4.   Switch Case loop
Switch membandingkan ungkapan input dengan masing-masing nilai case. Sekali kesesuaian ditemukan, switch melaksanakan perintah yang berkaitan. Dalam contoh berikut, angka bilangan bulat acak dari deretan {1,2,3,…,10} dihasilkan. Jika x=1 atau x=2, maka pesan probabilitas =20% dihasilkan. Script file fswitch menggunakan switch sebagai alat untuk menangani semua kasus yang disebutkan di atas.

  1. Buatlah script di bawah ini pada editor m-file. Simpan dengan nama file fswitch.m

%Script file fswitch
x=ceil(10*rand);
switch x
    case{1,2}
        disp('Peluang = 20%');
    case{3,4,5}
        disp('Peluang = 30%');
    otherwise
        disp('Peluang = 50%');
end

  1. Jalankan file di atas dengan menekan F5. Untuk mengetahui kecenderungan peluang masing-masing nilai. Uji kode di atas dengan menggunakan script di bawah ini. Tulis pada command window
>> for k=1:10
fswtich
end

Maka keluarannya:

Peluang = 50%
Peluang = 20%
Peluang = 30%
Peluang = 50%
Peluang = 50%
Peluang = 30%
Peluang = 50%
Peluang = 20%
Peluang = 30%
Peluang = 50%

Catatan: Penggunaan tanda kurung kurawal { }setelah kata case menciptakan apa yang disebut dengan cell array bukan deret atau dimensi, yang memerlukan pemakaian tanda kurung besar.

Berikut adalah fungsi-fungsi MATLAB baru yang digunakan dalam file fswitch.m:
  • rand, yang secara seragam menyebarkan angka-angka acak dalam interval (0,1)
  • ceil, pembulatan pada angka tak terbatas.
  • Disp, menampilkan rangkaian/deter di layar.
Tugas.
1.      Buatlah program untuk mengkonversi suhu dalam Fahrenheit ke dalam derajat Celcius. Rumus yang digunakan adalah . Tampilkan hasil konversi dari Fahrenheit ke Celcius dari 0 sampai 100 Farrenheit dengan skala perubahan adalah 5 derajat. Simpan dengan nama file f2c.m

2.      Tulislah program di bawah ini simpan dengan nama file input.m dan jelaskan!
 
sum=0;
cnt=0;
val=input('Enter a number (end in 0) : ');
while (val~=0)
    sum=sum+val;
    cnt=cnt+1;
    val=input('Enter a number (end in 0) : ');
end
if (cnt > 0)
    fprintf('%d num entered. Sum=%g. Mean=%g.\n',cnt,sum,sum/cnt);
end
 
3.      Tulislah program di bawah ini simpan dengan nama file umur.m dan jelaskan!

age=input('Masukan berapa umur anda: ');
if ((age < 0)|(age >= 120))
    disp('Error');
elseif (age < 1)
    disp('Anda masih Bayi');
elseif (age < 13)
    disp('Masa Anak-anak');
elseif (age < 18)
    disp('Beranjak Remaja');
elseif (age < 60)
    disp('Sudah Dewasa');
else
    disp('Sudah Tua');
end