Laporan Job 2 MATLAB

61
BAB I TUJUAN Setelah melakukan praktikum maka diharapkan mahasiswa dapat : 1. Mampu mengoperasikan matlab dan memanfaatkannya sebagai perangkat simulasi untuk praktikum sinyal dan sistem 2. Memahami logika alur program 3. Mampu menggunakan sintaks kontrol program dalam pemrograman 1

description

laporan laporan Teknik Listrik

Transcript of Laporan Job 2 MATLAB

BAB I

TUJUAN

Setelah melakukan praktikum maka diharapkan mahasiswa dapat :

1. Mampu mengoperasikan matlab dan memanfaatkannya sebagai perangkat simulasi untuk praktikum sinyal dan sistem

2. Memahami logika alur program3. Mampu menggunakan sintaks kontrol program dalam pemrogramanBAB II

TEORI DASARPEMOGRAMAN MATLABKontrol ProgramKontrol program sangat berguna karena memungkinkan komputansi-komputansi yang sebelumnya mempengaruhi komputansi yang akan datang. Jika andapernah menggunakan fasilitas kontrol ini, maka bab ini bukan hal yang baru bagi anda. Namun jika kontrol program ini merupakan sesuatu yang baru bagi anda, materi ini mungkin tampak rumit..

Matlab menyediakan empat struktur kontrol program, yaitu loop for, loop while, kontruksi switch-case dan kontruksi if-else-end. Kontruksi-kontruksi tersebut seringkali melibatkan banyak perintah matlab, yang oleh karenanya kontruksi ini lebih banyak terdapat dalam M-file.

1. loop for Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah 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 :

>>for n = 1 : 10

x(n)=sin(n*pi/10);

end

>> x

x =

Columns 1 through 8

0.30900.58780.80900.95111.0000

0.9511 0.8090 0.5878

Columns 9 through 10

0.3090 0.0000

contoh 2 :

> for i=1:5

disp('Ini hasil looping 5 kali');

end

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 2. loop while 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.

Contoh :

>> x=0;

>> while x> angka=-4;

>> if angka > 0

disp('nilai nya adalah positif');

else

disp('nilainya adalah negatif');

end

nilainya adalah negatif 4. Control FlowUntuk mengontrol flow dari perintah, pembuat MATLAB mensuplai peralatan programmer yang dapat digunakan untuk menulis computer code.

_ the for loops

_ the while loops

_ the if-else-end constructions

_ the switch-case constructions

Mengulang dengan loop for Syntax nya adalah

for k = array

commands

end

For loop dapat berjaring misalkan

H = zeros(5);

for k=1:5

for l=1:5

H(k,l) = 1/(k+l-1);

end

end

H

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

Matriks H diebut Hilbert Matrix. Perintah pertama adalah untuk membuat ruang pada memori komputer untuk matriks yang akan mengembang.

Mengulang loop dengan while Syntax nya adalah

while expression

statements

endMisalkan angkadibagi dua. Hasil nya kemudian dibagi dua lagi. Proses ini diteruskan sampai harganya lebih kecil atau sama dengan 0.01. Berapa angka dari proses terakhir yang lebih dari satu?

q = pi;

while q > 0.01

q = q/2;

end

q

q =

0.0061

Konstruksi if-else-end

if expression

commands

endatauif expression

commands (evaluated if expression is true)

else

commands (evaluated if expression is false)

end

atau

if expression1

commands (evaluated if expression 1 is true)

elseif expression 2

commands (evaluated if expression 2 is true)

elseif

.

.

else

commands (executed if all previous expressions evaluate to false)

endChebyshev polynomial Tn(x)=0,1, adalah hal yang penting dalam analisis numeric. Didefinisikan secara recursive sebagai berikut.

Tn(x) = 2xTn 1(x) Tn 2(x), n = 2, 3, , T0(x) = 1, T1(x) = x.function T = ChebT(n)

% Coefficients T of the nth Chebyshev polynomial of the first kind.

% They are stored in the descending order of powers.

t0 = 1;

t1 = [1 0];

if n == 0

T = t0;

elseif n == 1;

T = t1;

else

for k=2:n

T = [2*t1 0] - [0 0 t0];

t0 = t1;

t1 = T;

end

end

coeff = ChebT(3)

coeff =

4 0 -3 0

Maka: T3(x) = 4x3 3x. M-FilesFile yang terdiri dari kode komputer disebut m-files. Terdapat beberapa m-files yaitu: script files dan function files. Script files tidak perlu menyertakan input argument atau output argument. Function file harus menyertakan input argumen atau output arugumen.Untuk membuat m-file

Click File lalu New dan M-File

Save file pertama dengan nama misalkan graph_pertama.mIni adalah contoh file script

% Script file graph_pertama.

x = pi/100:pi/100:10*pi;

y = sin(x)./x;

plot(x,y)

grid

Tanda % adalah komentar. Seluruh komentar tidak dihiraukan oleh MATLAB. Berikut adalah contoh file function

function [b, j] = descsort(a)

% Fungsi descsort menyusun secara menurun, array a

% Output parameter j merupakan tempat asal angka di array b dari

% array a.

[b ,j] = sort(-a);

b = -b;Fungsi ini menyertakan satu input argument, sebuah array angka riil, dan menyusun array yang berurutan untuk mendapatkan array b dari array a. Fungsi built-in MATLAB digunakan dalam hal ini adalah sort. Fungsi ini menyusun array secara menaik. Beberapa trik yang digunakan memperbolehkan kita untuk menyusun array angka secara menurun. Untuk mendemonstrasikan fungsi dari function yang dibahas,a = [pi 10 35 0.15];

[b, j] = descsort(a)

b =

35.0000 3.1416 0.1500 -10.0000

j =

3 1 4 2Jika dscsort digunakan tanpa output argument, maka tempat asal angka akan hilang.

descsort(a)

ans =

35.0000 3.1416 0.1500 -10.0000 Fungsi Inline dan Perintah fevalMATLAB mempunyai perintah inline untuk mendefinisikan inline functions dalam Command Window. Misalkan:

f = inline('sqrt(x.^2+y.^2)','x','y')

f =

Inline function:

f(x,y) = sqrt(x.^2+y.^2)Maka dapat dievaluasi

f(3,4)

ans = 5

Dapat juga digunakan memecahkan persoalan dalam dua process. Misalkan :

A = [1 2;3 4]

A =1 2

3 4

dan

B = ones(2,2)

B =1 1

1 1

Maka

C = f(A, B)

C =

1.4142 2.2361

3.1623 4.1231

Untuk mengeksekusi fungsi yang dispesifikasikan oleh string diperlukan perintah feval seperti dibawah ini

feval('functname', input parameters of function functname)Misalkan code m-file myclm dan isint secara bersamaan Save m-file:

function c = mylcm(a, b)

% The least common multiple c of two integers a and b.

if feval('isint',a) & feval('isint',b)

c = a.*b./gcd(a,b);

elseerror('Input arguments must be integral numbers')

end

Buka M-file lain dan save isint.

function k = isint(x);

% Check whether or not x is an integer number.

% If it is, function isint returns 1 otherwise it returns 0.

if abs(x - round(x)) < realmin

k = 1;

else

k = 0;

end

gcd (greatest common divisor) merupakan function built-in. Perintah feval digunakan dua kali pada baris kedua. Dia mengecek apakah kedua input argument adalah integer.Aturan Trapezoidal dengan bentuk koreksi sering digunakan untuk integrasi numeric dari fungsi yang terdiferensiasi pada interval integrasi.

dengan h = b a. Formula ini sangat mudah dimplementasikan di MATLAB

function y = corrtrap(fname, fpname, a, b)

% Corrected trapezoidal rule y.

% fname - the m-file used to evaluate the integrand,

% fpname - the m-file used to evaluate the first derivative

% of the integrand,

% a,b - endpoinds of the interval of integration.

h = b - a;

y = (h/2).*(feval(fname,a) + feval(fname,b))+ (h.^2)/12.*( ...

feval(fpname,a) - feval(fpname,b));

Misalkan

a = [0 0.1];

b = [pi/2 pi/2 + 0.1];

y = corrtrap('sin', 'cos', a, b)

y =

0.9910 1.0850 OPERATOR LOGIKA

MATLAB menyediakan operasi logika dan relasional, hal ini diperlukan untuk menjawab pertanyaan benar atau salah dan salah satu manfaat yang penting dari kemampuan ini adalah untuk mengontrol urutan eksekusi sederetan perintah MATLAB (biasanya dalam M-File) berdasarkan pada hasil pertanyaan benar/salah.

Sebagai masukan pada semua ekpresi relasi dan logika , MATLAB menganggap semua angka tidak nol sebagai benar, nol sebagi salah. Hasil dari semua ekspresi logika relasi dan logika adalah satu untuk benar dan nol untuk salah dengan tipe array logika yaitu hasilnya memuat bilangan 1 dan 0 yang tidak saja dapat digunakan untuk statemen matematika akan tetapi dapat juga untuk pengalamatan

Floor, Ceil, Fix, Round

randn('seed', 0) % This sets the seed of the random numbers generator to zero

T = randn(5)

T =

1.1650 1.6961 -1.4462 -0.3600 -0.0449

0.6268 0.0591 -0.7012 -0.1356 -0.7989

0.0751 1.7971 1.2460 -1.3493 -0.7652

0.3516 0.2641 -0.6390 -1.2704 0.8617

-0.6965 0.8717 0.5774 0.9846 -0.0562

A = floor(T)

A =1 1 -2 -1 -1

0 0 -1 -1 -1

0 1 1 -2 -1

0 0 -1 -2 0

-1 0 0 0 -1

B = ceil(T)

B =2 2 -1 0 0

1 1 0 0 0

1 2 2 -1 0

1 1 0 -1 1

0 1 1 1 0

C = fix(T)

C =1 1 -1 0 0

0 0 0 0 0

0 1 1 -1 0

0 0 0 -1 0

0 0 0 0 0

D = round(T)

D =1 2 -1 0 0

1 0 -1 0 -1

0 2 1 -1 -1

0 0 -1 -1 1

-1 1 1 1 0

Operasi Array Semua komputasi yang dikerjakan sejauh ini hanya melibatkan bilangan tunggal yang disebut skalar. Opeasi skalar memang merupakan dasar matematika. Namun jika dalam sesaat kita ingin melakuakan operasi yang sama pada beberapa bilangan, perulangan operasi skalar akan menghabiskan waktu dan tentu saja tidak praktis. Untuk mengatasi masalah ini matlab menyediakan operasi pada array data.

Array Sederhana

Perhatikan masalah saat kita diharuskan untuk menggambar grafik dengan fungsi y = sin(x) ; 0 x , tidak mungkin kita menghitung semua titik yang kita perlukan secara satu persatu. Sintaks sederhana untuk menunjukan semua titik tersebut adalah

>> x=0:20:180

x =

0 20 40 60 80 100 120 140 160 180

>> y=sin(x)

y =

Columns 1 through 8

0 0.9129 0.7451 -0.3048 -0.9939 -0.5064 0.5806 0.9802

Columns 9 through 10

0.2194 -0.8012

Pada tulisan x=0:20:180 dimaksudkan dengan :

x merupakan variabel yang menampung array

0 merupakan batas bawah dari array

10 merupakan selang atau interval

180 merupakan batas atas dari array

Pada tulisan y=sin(x) dimaksudkan dengan :

y merupakan variabel array yang menampung perhitungan dengan sin x dimana x dari 0 sampai 180 dengan interval 10

Jika kita hanya membutuhkan nilai dari interval tertentu maka kita bisa menuliskannya dengan sintaks:

>> x(4) % elemen array ke 4

ans = 60

Maksudnya adalah nilai dari x yang ke empat dari array x adalah 60

>> y(5) % nilai array ke 5

ans = -0.9939

maksudnya adalah nilai array y yang ke 5 adalah -0.9939 kita juga bisa menuliskan nilai array tertentu dengan menunjukan indeksnya contoh:

>> x(2:4)

ans = 20 40 60

maksudnya adalah semua nilai dengan indeks 2 sampai dengan 4 pada array x , 2:4 berarti menghitung dari 2 sampai 5

Array n dimensi Array yang kita bahas diatas merupakan array 1 dimensi, gabuangan dari array merupakan sebuah matriks, sekarang kita akan menuliskan bagaimana menuliskan array dalam n dimensi.

Contoh:

>> A=[1 2 3;4 5 6;7 8 9]

A = 1 2 3

4 5 6

7 8 9

merupakan matriks dengan 3 kolom dengan 3 baris dalam array kita juga bisa memanipulasi elemen elemen yang ada dalam array tersebut contohnya:

>> A(3,3)=0

A = 1 2 3

4 5 6

7 8 0

maksudnya mengganti elemen 3,3 menjadi 0 untuk mengetahui jumlah array kita gunakan sintaks size: contoh:

>> size(A)

ans = 3 3

maksudnya matriks A merupakan matriks 3 x 3 .Menciptakan matriks B dengan urutan baris A yang dibalik

>> B=A(3:-1:1,:)

B = 7 8 0

4 5 6

1 2 3

mengganti semua elemen baris ke 2 dari matriks B dengan 0 maka sintaksnya:

>> B(2,:)=0

B = 7 8 0

0 0 0

1 2 3

Untuk membuat transpose dari matriks B kita gunakan sintaks:

>> E=B'

E = 7 0 1

8 0 2

0 0 3

sehingga bentuk dari perkalian manual yang ada dimatriks ada yang langusng digunakan pada sintaks matlab.

Contoh Penggunaan Aplikasi Array

Problem: Elemen radioaktif polonium mempunyai waktu paruh 140 hari, yang berarti bahwa, karena radoaktif meluruh, jumlah polonium yang tertinggal setelah 140 hari adalah setengah dari jumlah semula. Jika dimiliki 10 gram polonium hari ini, berapa banyak yang tersisa pada akhir setiap minggu selama 10 minggu ?

Penyelesaian : Menggunakan persamaan :

Jumlah_tinggal = jumlah_semula*0.5waktu/waktu_paruhUntuk masalah ini, solusi dari MATLAB adalah :

>> initial_amount=10;

>> half_life=140;

>> time=7:7:70 %akhir dari 10 minggu pertama

time =

7 14 21 28 35 42 49 56 63 70

>> amount_left=initial_amount*0.5.^(time/half_life)

amount_left =

Columns 1 through 8

9.6594 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458 7.5786

Columns 9 through 10

7.3204 7.0711

Dengan matematika array sangat mudah untuk mengevaluasi suatu ekspresi dengan banyak nilai untuk satu variabel. Perhatikan bahwa pemangkatan titik .^ digunakan karena kita ingin menghitung 0.5 yang akan dipangkatkan dengan setiap elemen pada array eksponen. Data ini dengan mudah digambarkan dengan matlab.

>> plot(time/7,amount_left)

>> xlabel('Jumlah Minggu'),ylabel('Jumlah Polonium tersisa')

hasilnya:

Contoh Perhitungan Konsentrasi dengan Matematika Array

Problem : Sebagai bagian dari suatu proses pembuatan suku cadang di suatu proses pembuatan suku cadang di suatu pabrik otomatis, suku cadang tersebut dicelupkan ke air untuk pendinginan, kemudian dicelup dibak air asam untuk membersihkan. Setelah beberapa lama, konsentrasi larutan asam menurun karena air saat pencelupan bertambah dan larutan yang terbuang saat suku cadang tadi diambil dari bak. Untuk memelihara kualitas, keasaman larutan asam tidak boleh kurang dari suatu batas minimum. Dimulai dengan konsentrasi asam 90%. Jika konsentrasi minimum adalah 50%, air yang bertambah ke bak asam adalah 1% dari volume bak, dan 1 % dari larutan terbuang saat suku cadang dikeluarkan, berapa banyak suku cadang dapat dicelupkan ke bak air asam sebelum keasaman larutan dalam bak berada di bawah batas minimum?

Penyelesaian : %Script M file example.m

initial_con=90;

min_con=50;

lost=1:10 % 1% sampai 10% dengan kenaikan 1%

n=floor(log(initial_con/min_con)./log(1+lost/100))

stem(lost,n)

xlabel('Persentase yang hilang setiap kali pencelupan')

ylabel('Jumlah Pencelupan')

title('Contoh Pencelupan Bak Air-Asam')

hasil :

>> example

lost = 1 2 3 4 5 6 7 8 9 10

n = 59 29 19 14 12 10 8 7 6 6

Akar akar Persamaan Permasalahan pemecahan persamaan nonlinear sering muncul dari ebrbagai macam persoalan praktis. Bentuk umum permasalahannya secara sederhana adalah menemukan sebuah nilai variabel x sedemikian sehingga f(x) = 0, dimana f adalah sembarang fungsi nonlinear x, sedangkan x merupakan solusi atau akar persamaan ini. Sebelum kita lebih jauh tentang akar akar persamaan, sebelumnya kita ulas sedikit tentang bagaimana menggambarkan fungsi

Contoh:

Gambarkan fungsi dibawah ini :

1. y=(x 1)3(x + 2)2 ( x 3) ; 0 x 4

jawab :

% Gambar1.m

x=0:0.1:4;

y=((x + 1).^3).*((x + 2).^2) .*( x - 3);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar1

Gambar dari fungsi y=(x 1)3(x + 2)2 ( x 3) ; 0 x 4 Jawab:

% Gambar2.m

x=0:0.1:20;

y=exp(-x/10).*sin(10*x);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar2.m

Untuk persamaan non linear seperti diatas yang melibatkan fungsi transenden, tugas mencari akar akar merupakan pekerjaan yang cukup sulit apalagi ketika jumlah akar akarnya tidak diketahui atau mungkin tak terbatas banyak akarnya. (Lihat contoh no 2) . Sebetulnya secara sederhana kita bisa mencari titik di x yang berpotongan dengan sumbu y = 0 secara grafik( solusi grafik merupakan solusi juga) tapi itu masih terlalu kasar dan tidak terlalu akurat apalagi untuk fungsi fungsi yang tidak diketahui solusinya terletak di x berapa. Metoda Newton Metoda ini merupakan solusi persamaan f(x) = 0 berdasarkan pada sifat geometri sederhana tangen. Metode ini membutuhkan beberapa aprokimasi awal untuk turunan f(x)nya berada pada daerah yang diinginkan.

Coba akar1

Function[res,it]=fnewton(func,dfunc,x,tol)

% x adalah nilai awal, tol adalah akurasi yang diinginkan

it=0;

xo=x;

d=feval(func,xo)/feval(dfunc,xo);

while abs(d)>tol

x1=xo d;

it=it+1;

xo=x1;

d=feval(func,xo)/feval(dfunc,xo);

end;

res=xo

kita coba mencari sebuah akar persamaan(x 1)3(x + 2)2 ( x 3) = 0 untuk menggunkan metoda newton kita harus mendefinisikan fungsi dan turunannya sehingga :

function F=f302(x);

F=x.^3 10.0*x.^2 + 29.0*x-20.0;

Function F=f303(x);

F=2*x.^2-20*x+29;

Maka kita panggil f newton tadi sebagai berikut :

>>[x,it]=fnewton(f302,f303,7,.00005)

x=5.0000

it=6

Permasalahan yang sering muncul dalam mencari akar adalah :

1. Mencari aprokimasi awal yang baik

2. Fungsi berkondisi sakit

3. Memutuskan pada kriteria konvergensi yang paling cocok

4. Diskontinuitas pada persamaan yang dipecahkan

Fungsi fZero

Beberapa metoda di pencarian akar ini punya kelebihan dan kekurangannya. Metode Brent mengkombinasikan interpolasi kuadratik inversi dengan bisection untuk mendapatkan metode yang powerfull yang terbukti cukup sukses yang mempunyai jangkauan yang luas pada permasalahan yang cukup sulit.

Variasi metode ini secara langsung tersedia pada matlab yaitu fzero. Misalnya untuk dengan toleransi 0.00005 Jawab :

function F=f307(x);

F=(exp(x)-cos(x)).^3;

%file utama

x=-4:.0:0.5;

plot(x,f307(x));grid on;

xlabel('Sumbu X');ylabel('Sumbu Y');

root=fzero('f307',1.65, 0.00005);

fprintf('Akar persamaan ini adalah %6.4f \n',root);

Deferensial dan Pengintegralan Diferensial dan Integral merupakan operasi fundamental dalam kalkulus dan hampir setiap bidang matematika, sains dan teknik. Menentukan turunan fungsi secara analitik mungkin menyulitkan meskipun relatif langsung.

Pembalikan dari proses ini akan menentukan integral fungsi, tapi lebih sering sulit jika secara analitik atau bahkan tidak mungkin.

Dalam Matlab, diferensial untuk fungsi polinom adalah relatif mudah. Misalnya f(x) = x5 + 2x4 + 5x2 + 7x + 3 maka ambilah koefisien koefisiennya. Contoh:

>> g=[1 2 5 7 3]

g =

1 2 5 7 3

>> h=polyder(g)

h =

4 6 10 7

Bentuk-bentuk deferensial lain juga bisa diperoleh apalag jika menggunakan symbolyc math toolbox. Tapi tidak setiap matlab dilengkapi dengan toolbox ini. Namun itu tidak masalah, kita akan coba membuat sendiri penyelesaiannya dengan memanfaatkan deret Taylor. Diferensial Numerik function q=diffgen(func,n,x,h);

if ((n=1)|(n==2)|(n==3)|(n==4))

c=zeros(4,7);

c(1,:)=[ 0 1 -8 0 8 -1 0];

c(2,:)=[0 -1 16 -30 16 -1 0];

c(3,:)=[1.5 -12 19.5 0 -19.5 12 -1.5];

c(4,:)=[-2 24 -78 112 -78 24 -2];

y=feval(func,x+ [-3:3]*h);

q=c(n,:)*y' ; q = q/(12*h^n);

else

disp('n harus 1, 2, 3 atau 4 ');break

end Penggunaan fungsi diatas: Jika kita mempunya y = cos(x) dan kita akan menghitung turunan kedua dengan x = 1.2 dengan h atau ketelitian 0.01 maka dituliskan:

>> hasil=diffgen('cos',2,1.2,.01)

hasil =

-0.3624

Jika kita ingin menghitung sebuah diferensial disuatu titik maka kita harus mendefinisikan fungsinya terlebih dahulu. Integrasi Numerik Integral biasanya didefinisikan sebagai proses penjumlahan tetapi juga diinterpretasikan sebagai daerah dibawah kurva y = f(x) dari a ke b

daerah diatas x dihitung positif sementara dibawah x dihitung negatif. Banyak metode numerik untuk integrasi didasarkan pada impretasi untuk mendapatkan aprokimasi integralnya. Misalnya fungsi trapz berdasarkan impretasi bangunan trapesium.

Kita akan mencoba menghitung integral dengan berbagai metoda numrik untuk menghitung integral fungsi

Jawab:

Pertama kita buat dulu fungsi dari persamaan diatas

function y=humps(x)

y=1./(x-3).^2+.01)+1./((x-9).^2+.04)-6;

1. Mengitung menggunakan trapz >> x=-1:.17:2;

>> y=humps(x);

>> area=trapz(x,y)

area =

-16.6475

2. Menghitung menggunakan quad >> x=-1:.17:2;

>> y=humps(x);

>> area=quad('humps',-1,2)

area =

-17.2104

Permasalahan yang mungkin muncul adalah :

1. Fungsi kontinu pada daerah integral tetapi turunannya diskontinu atau singular

2. Fungsi diskontinue pada daerah integrasi

3. Fungsi mempunyai singularitas pada daerah integrasi

4. Daerah integrasi tak berhingga

BAB IIIPERANGKAT YANG DIPERLUKAN

1. PC yang dilengkapi dengan perangkat multimedia (sound card, Microphone, Speaker active, atau headset)2. Sistem Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi dengan tool box DSPBAB IVLANGKAH PERCOBAAN

1. Memahami intruksi-instruksi pada pengoperasian MATLAB sebelum menggunakan program MATLAB.

2. Menghidupkan komputer dan monitor.

3. Mengaktifkan program MATLAB.

4. Mengoperasikan program MATLAB dan melakukan percobaan sesua dengan instruksi-instruksi yang telah ditentukan.

5. Melakukan penganalisaan terhadap percobaan dan pengoperasian yang telah dilakukan.

BAB VIANALISA

Pada praktikum kali ini,praktikan telah melakukan praktek dengan menggunakan program MATLAB,sebagaimana yang telah diketahui program MATLAB ini merupakan sebuah program yang dirancang sebagai bahasa pemrograman level tinggi yang dikhususkan untuk kebutuhan komputasi teknis, visualisasi dan pemrograman seperti komputasi matematik, analisis data, pengembangan algoritma, simulasi dan pemodelan dan grafik-grafik perhitungan.Jadi sebelum memasuki perancangan sistem kendali lebih mendalam praktikan harus memepelajari pemprograman MATLAB ini terlebih dahulu.

Pada JOB 2 ini praktikan mempelajari beberapa instruksi-instruksi baru

Seperti instruksi : loop for,loop while,if-else-end,contrl flow dan instruksi lainnya.Berikut penganalisaanterhadap beberapa instruksi tersebut:

Loop for

Pada loop for ini digunakan untuk menampikan suatu instruksi atau suatu penyataan secara ber ulang-ulang contoh pada intruksi yang telah praktikan kerjakan sebelumnya:

> for i=1:5

disp('Ini hasil looping 5 kali');

end

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

Dalam instruksi di atas,praktikan menampilakan kalimat ini hasl loping 5 kali.cara nya adalah dengan membuat :

for i=1:5

disp('Ini hasil looping 5 kali');

end.

dengan artian unuk i dari 1 sampai 5,tampilakan 5 kali kalimat yang ada di dalam kurung setelah itu end .

Loop while

Pada penggunaan loop while urutan pembuatan intruksi nya adalah:

>> x=0;

>> while x> x=0:20:180

x =

0 20 40 60 80 100 120 140 160 180

>> y=sin(x)

y =

Columns 1 through 8

0 0.9129 0.7451 -0.3048 -0.9939 -0.5064 0.5806 0.9802

Columns 9 through 10

0.2194 -0.8012

Pada tulisan x=0:20:180 dimaksudkan dengan :

x merupakan variabel yang menampung array

0 merupakan batas bawah dari array

10 merupakan selang atau interval

180 merupakan batas atas dari array

Pada tulisan y=sin(x) dimaksudkan dengan :

y merupakan variabel array yang menampung perhitungan dengan sin x dimana x dari 0 sampai 180 dengan interval 10

Jika kita hanya membutuhkan nilai dari interval tertentu maka kita bisa menuliskannya dengan sintaks:

>> x(4) % elemen array ke 4

ans = 60

Maksudnya adalah nilai dari x yang ke empat dari array x adalah 60

>> y(5) % nilai array ke 5

ans = -0.9939

maksudnya adalah nilai array y yang ke 5 adalah -0.9939 kita juga bisa menuliskan nilai array tertentu dengan menunjukan indeksnya contoh:

>> x(2:4)

ans = 20 40 60

maksudnya adalah semua nilai dengan indeks 2 sampai dengan 4 pada array x , 2:4 berarti menghitung dari 2 sampai 5

Array n dimensi

Array yang kita bahas diatas merupakan array 1 dimensi, gabuangan dari array merupakan sebuah matriks, sekarang kita akan menuliskan bagaimana menuliskan array dalam n dimensi.

Contoh:

>> A=[1 2 3;4 5 6;7 8 9]

A = 1 2 3

4 5 6

7 8 9

merupakan matriks dengan 3 kolom dengan 3 baris dalam array kita juga bisa memanipulasi elemen elemen yang ada dalam array tersebut contohnya:

>> A(3,3)=0

A = 1 2 3

4 5 6

7 8 0

maksudnya mengganti elemen 3,3 menjadi 0 untuk mengetahui jumlah array kita gunakan sintaks size: contoh:

>> size(A)

ans = 3 3

maksudnya matriks A merupakan matriks 3 x 3

Menciptakan matriks B dengan urutan baris A yang dibalik

>> B=A(3:-1:1,:)

B = 7 8 0

4 5 6

1 2 3 mengganti semua elemen baris ke 2 dari matriks B dengan 0 maka sintaksnya:

>> B(2,:)=0

B = 7 8 0

0 0 0

1 2 3

Untuk membuat transpose dari matriks B kita gunakan sintaks: >> E=B' E = 7 0 1

8 0 2

0 0 3

sehingga bentuk dari perkalian manual yang ada dimatriks ada yang langusng digunakan pada sintaks matlab. Contoh Penggunaan Aplikasi Array

Problem: Elemen radioaktif polonium mempunyai waktu paruh 140 hari, yang berarti bahwa, karena radoaktif meluruh, jumlah polonium yang tertinggal setelah 140 hari adalah setengah dari jumlah semula. Jika dimiliki 10 gram polonium hari ini, berapa banyak yang tersisa pada akhir setiap minggu selama 10 minggu ?

Penyelesaian : Menggunakan persamaan :

Jumlah_tinggal = jumlah_semula*0.5waktu/waktu_paruhUntuk masalah ini, solusi dari MATLAB adalah :

>> initial_amount=10;

>> half_life=140;

>> time=7:7:70 %akhir dari 10 minggu pertama

time =

7 14 21 28 35 42 49 56 63 70

>> amount_left=initial_amount*0.5.^(time/half_life)

amount_left =

Columns 1 through 8

9.6594 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458 7.5786

Columns 9 through 10

7.3204 7.0711

Dengan matematika array sangat mudah untuk mengevaluasi suatu ekspresi dengan banyak nilai untuk satu variabel. Perhatikan bahwa pemangkatan titik .^ digunakan karena kita ingin menghitung 0.5 yang akan dipangkatkan dengan setiap elemen pada array eksponen. Data ini dengan mudah digambarkan dengan matlab. >> plot(time/7,amount_left)

>> xlabel('Jumlah Minggu'),ylabel('Jumlah Polonium tersisa')

hasilnya:

Contoh Perhitungan Konsentrasi dengan Matematika ArrayProblem : Sebagai bagian dari suatu proses pembuatan suku cadang di suatu proses pembuatan suku cadang di suatu pabrik otomatis, suku cadang tersebut dicelupkan ke air untuk pendinginan, kemudian dicelup dibak air asam untuk membersihkan. Setelah beberapa lama, konsentrasi larutan asam menurun karena air saat pencelupan bertambah dan larutan yang terbuang saat suku cadang tadi diambil dari bak. Untuk memelihara kualitas, keasaman larutan asam tidak boleh kurang dari suatu batas minimum. Dimulai dengan konsentrasi asam 90%. Jika konsentrasi minimum adalah 50%, air yang bertambah ke bak asam adalah 1% dari volume bak, dan 1 % dari larutan terbuang saat suku cadang dikeluarkan, berapa banyak suku cadang dapat dicelupkan ke bak air asam sebelum keasaman larutan dalam bak berada di bawah batas minimum?

Penyelesaian : %Script M file example.m

initial_con=90;

min_con=50;

lost=1:10 % 1% sampai 10% dengan kenaikan 1%

n=floor(log(initial_con/min_con)./log(1+lost/100))

stem(lost,n)

xlabel('Persentase yang hilang setiap kali pencelupan')

ylabel('Jumlah Pencelupan')

title('Contoh Pencelupan Bak Air-Asam')

hasil : >> example

lost = 1 2 3 4 5 6 7 8 9 10

n = 59 29 19 14 12 10 8 7 6 6

Akar akar Persamaan Permasalahan pemecahan persamaan nonlinear sering muncul dari ebrbagai macam persoalan praktis. Bentuk umum permasalahannya secara sederhana adalah menemukan sebuah nilai variabel x sedemikian sehingga f(x) = 0, dimana f adalah sembarang fungsi nonlinear x, sedangkan x merupakan solusi atau akar persamaan ini. Sebelum kita lebih jauh tentang akar akar persamaan, sebelumnya kita ulas sedikit tentang bagaimana menggambarkan fungsi

Contoh:

Gambarkan fungsi dibawah ini :

1. y=(x 1)3(x + 2)2 ( x 3) ; 0 x 4

jawab :

% Gambar1.m

x=0:0.1:4;

y=((x + 1).^3).*((x + 2).^2) .*( x - 3);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar1

Gambar dari fungsi y=(x 1)3(x + 2)2 ( x 3) ; 0 x 4

Jawab:

% Gambar2.m

x=0:0.1:20;

y=exp(-x/10).*sin(10*x);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar2.m

Untuk persamaan non linear seperti diatas yang melibatkan fungsi transenden, tugas mencari akar akar merupakan pekerjaan yang cukup sulit apalagi ketika jumlah akar akarnya tidak diketahui atau mungkin tak terbatas banyak akarnya. (Lihat contoh no 2) . Sebetulnya secara sederhana kita bisa mencari titik di x yang berpotongan dengan sumbu y = 0 secara grafik( solusi grafik merupakan solusi juga) tapi itu masih terlalu kasar dan tidak terlalu akurat apalagi untuk fungsi fungsi yang tidak diketahui solusinya terletak di x berapa.

Metoda Newton Metoda ini merupakan solusi persamaan f(x) = 0 berdasarkan pada sifat geometri sederhana tangen. Metode ini membutuhkan beberapa aprokimasi awal untuk turunan f(x)nya berada pada daerah yang diinginkan. Pada praktikum ini ada beberapa instruksi yang tidak praktikan pahami namun perlu penyempurnaan laporan ini untuk lapora-laporan selanjtnya.

PERCOBAAN AKAR FUNGSI:

Function[res,it]=fnewton(func,dfunc,x,tol)

% x adalah nilai awal, tol adalah akurasi yang diinginkan

it=0;

xo=x;

d=feval(func,xo)/feval(dfunc,xo);

while abs(d)>tol

x1=xo d;

it=it+1;

xo=x1;

d=feval(func,xo)/feval(dfunc,xo);

end;

res=xo

kita coba mencari sebuah akar persamaan(x 1)3(x + 2)2 ( x 3) = 0 untuk menggunkan metoda newton kita harus mendefinisikan fungsi dan turunannya sehingga : function F=f302(x);

F=x.^3 10.0*x.^2 + 29.0*x-20.0;

Function F=f303(x);

F=2*x.^2-20*x+29;

Maka kita panggil f newton tadi sebagai berikut :

>>[x,it]=fnewton(f302,f303,7,.00005)

x=5.0000

it=6

Permasalahan yang sering muncul dalam mencari akar adalah :

1. Mencari aprokimasi awal yang baik

2. Fungsi berkondisi sakit

3. Memutuskan pada kriteria konvergensi yang paling cocok

4. Diskontinuitas pada persamaan yang dipecahkan

BAB VIIPENUTUP

Kesimpulan :

Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap. loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop while mengerjakan sekelompok perintah yang diulang secara tidak terbatas.

Mfile merupakan sederetan perintah matlab yang dituliskan secara berurutan sebagai sebuah file.

Permasalahan yang sering muncul dalam mencari akar adalah :

1. Mencari aprokimasi awal yang baik

2. Fungsi berkondisi sakit

3. Memutuskan pada kriteria konvergensi yang paling cocok

4. Diskontinuitas pada persamaan yang dipecahkan DAFTAR PUSTAKA-MATLAB Bahasa Komputansi Teknis, Penerbit ANDI Yogyakarta 2000-Mastering Matlab Web site: http://www.eece.maine.edu/mm

-Numerical Methods Using Matlab, ELLIS HORWOOD, 1995-Getting Started With MATLAB, Version 6, The MathWorks.Inc, 2002

-Mastering MATLAB 5. A Comprehensive Tutorial and reference, Prentice Hall32