FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 1 dari 6
1. Kompetensi Setelah melakukan praktik, mahasiswa diharapkan kompetensi: dapat memahami fungsi terdefinisi bagi pemakai.
memiliki
2. Sub Kompetensi Setelah melakukan praktik, mahasiswa diharapkan memiliki sub kompetensi : a. Memahami tentang fungsi feval. b. Memahami tentang parameter fungsi. c. Memahami tentang fungsi dalam script file. d. Memahami tentang penerapan feval dalam metode bisection.
3. Dasar Teori a. Fungsi Terdefinisi Bagi Pemakai inv, det, log, abs, sqrt, dan apapun keseluruhan fungsi MATLAB, fungsi – fungsi tersebut mempunyai parameter sebagai inv(x), det(x), log(x), abs(x), sqrt(x). Pada pemanggilan fungsi – fungsi ini, nilai variabel dilewatkan melalui parameter, dan kemudian perhitungannya dibentuk pada fungsi dan nilai akhir. Penggunaan fungsi yang sangat mudah membuat fungsi tersebut sangat berguna. Untuk alasan inilah MATLAB menyajikan kepada pemakai untuk mendefinisikan fungsi –fungsi tersebut. Fungsi garis pertama berbentuk function [output-parameters]=function-name(input-parameters) paramater input dan output merupakan daftar nama variabel yang bila jumlahnya lebih dari satu dapat dipisahkan dengan koma. Jika parameter keluaran adalah variabel tunggal, kemudian mengabaikan tanda kurung kotak. Fungsi tubuh program terdiri dari instruksi – instruksi yang dieksekusi. Instruksi – instruksi ini seharusnya termasuk sebuah penandaan parameter output. Pada akhirnya, fungsi tersebut harus disimpan sebagai m-file dengan nama yang sama dengan nama fungsi. Kemudian setelah disimpan, fungsi dapat dipanggil dengan format [output-parameters]=function-name(input-parameters); Tanda kurung siku tidak perlu ditulis bila parameter output hanya satu variabel saja. Parameter input dan output pada fungsi pemanggilan harus sesuai dengan parameter – parameter fungsi pemanggilan. Kita akan mengubah contoh yang diberikan pada modul 5 menjadi suatu fungsi yang menentukan persamaan akar kuadrat. Contoh ini akan Dibuat oleh : Deny Budi H
Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 2 dari 6
memberikan pemecahan dengan menggunakan sebuah fungsi dimana parameter – parameternya adalah a, b, c dan parameter – parameter output adalah x1, x2. function [x1,x2]=quadratic(a,b,c) %Finds the roots of the quadratic equation %ax^2+bx+c=0 disc=b*b-4*a*c; x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); Pada command window MATLAB, fungsi kuadratis ini dapat dikatakan sebagai perintah (command) » [r1,r2]=quadratic(3,2,2); dimana r1 dan r2 mempunyai nilai persamaan 3x2+2x+2=0. Akar – akar persamaan ini ditampilkan dengan kode » disp(['Roots are ',num2str(r1),' and ', num2str(r2)]) Roots are -0.33333+0.74536i and -0.33333-0.74536i Dengan mengikuti contoh lainnya untuk penggunaan sebuah fungsi dimana fungsi tersebut mempunyai satu input dan parameter output, function p=myfun(x); p=2*x+1; Fungsi ini harus disimpan dengan nama myfun. » for i=1:5 y=myfun(i); disp([num2str(i),' ',num2str(y)]) end Fungsi myfun dipanggil pada loop 5 kali perulangan dan mengikuti keluaran yang menghasilkan, 1 2 3 4 5 Dibuat oleh : Deny Budi H
3 5 7 9 11 Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 3 dari 6
Cara lain pemanggilan fungsi dengan memanggil sebuah parameter input ke fungsi lainnya. Pada contoh berikutnya, tentukanlah fungsi MATLAB feval. Fungsi feval digunakan pada fungsi evaluasi. Dengan bentuk umumnya adalah, [output-parameter]=feval(‘function-name’, input-parameters) Fungsi pemanggilan ini melewati parameter input untuk sebuah nama fungsi. Tentukan dengan contoh yang telah diberikan, function gabungfungsi(suatufungsi,k); for i=1:k y=feval(suatufungsi,i); disp([num2str(i),' ', num2str(y)]) end dimana fun adalah nama fungsi sebagai pemanggilan fungsi sebuah argument string dan feval. Pada akhirnya, pemanggilan myfuncall dengan tepat adalah, » gabungfungsi('myfun', 5) dimana fungsi myfun dipanggil dengan fungsi myfuncall. Hal ini menghasilkan keluaran yang sama seperti contoh diatas : 1 3 2 5 3 7 4 9 5 11 b. Contoh Fungsi Pada Metode Bisection Penulisan MATLAB untuk metode bisection diberikan pada bagian 5.7. Pada penulisan tersebut dimplementasikan untuk fungsi khusus f(x)=x2-64. Jika anda ingin menggunakan solusi fungsi yang lain, anda harus mengedit beberapa jalur perintah program. Hali ini tidak layak, kita dapat menggunakan fungsi untuk menghindari cara pengeditan ini. Tentukanlah metode bisection yang telah diberikan dibawah: function root=bisect(fun,a,b,tole); % % approximates the positive root of the equation % f(x)=0 by using bisection method. % inputs: fun is the function input as a string Dibuat oleh : Deny Budi H
Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 4 dari 6
% a and b are left and right end points % tole is the error estimate for the root % output: root of the function f(x) % ya=feval(fun,a); yb=feval(fun,b); % terminate the function % if there are no real roots in the interval [a,b] if ya*yb>0 break end % Evaluate the root while abs(b-a)>=tole c=(a+b)/2; yc=feval(fun,c); if yc==0 a=c; b=c; elseif yb*yc>0 b=c; yb=yc; else a=c; ya=yc; end end root=c; Fungsi yang akan kita tentukan akarnya, seperti contoh dibawah ini: function f=fun1(x); f=x*x-64; Fungsi bisection dapat dipanggil pada command window sebagai : » funname='fun1'; » akar=bisect(funname,0,10,0.01); Pengembalian akar fungsi f(x)=x2-64 dengan cara bisection dan penandaan variabel approot. Akar fungsi tersebut adalah, » disp(['Approximate root is ', num2str(akar)]) Approximate root is 7.998 Dibuat oleh : Deny Budi H
Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 5 dari 6
Kita dapat menggunakan fungsi bisection ini untuk fungsi yang berbeda. Hanya modifikasi yang harus dilakukan pada fungsi fun1. Untuk melihat seluruh iterasi, tidak hanya pendekatan akhir akar, fungsi bisection seharusnya juga dimodifikasi seperti: function root=bisect(fun,a,b,tole); % % approximates the positive root of the equation % f(x)=0 by using bisection method. % inputs: fun is the function input as a string % a and b are left and right end points % tole is the error estimate for the root % output: root of the function f(x) % ya=feval(fun,a); yb=feval(fun,b); % % terminate the function % if there are no real roots in the interval [a,b] % if ya*yb>0 break end % Evaluate the root k=1; while abs(b-a)>=tole c(k)=(a+b)/2; yc=feval(fun,c(k)); if yc==0 a=c(k); b=c(k); elseif yb*yc>0 b=c(k); yb=yc; else a=c(k); ya=yc; end k=k+1; end root=c; Ketika fungsi tersebut dipanggil dan ditampilkan, Dibuat oleh : Deny Budi H
Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (TEKNIK KOMPUTASI) Semester 4
Fungsi Terdefinisi Bagi Pemakai
No. LSKD/EKO/DEL221/01
Revisi : 03
Tgl : 11/12/2012
Jam Pertemuan 4 x 50 menit Hal 6 dari 6
» funname='fun1'; » akar=bisect(funname,0,10,0.01); » fprintf('%8.5f\n', akar) kita akan mendapatkan hasil keluaran 5.00000 7.50000 8.75000 8.12500 7.81250 7.96875 8.04688 8.00781 7.98828 7.99805
4. Tugas Carilah akar-akar persamaan di bawah ini menggunakan fungsi bisect! a. -3x4+2x2+200=0 b. x5-3x2+3=0 c. x5-4x3-x2+8=0 d. x*exp(-x)+5=0
Dibuat oleh : Deny Budi H
Dilarang memperbanyak sebagian atau seluruh isi dokumen tanpa ijin tertulis dari Fakultas Teknik Universitas Negeri Yogyakarta
Diperiksa oleh :