Minggu, 22 Februari 2009

M File Matlab

1. m-file

File-file pada MATLAB yang memuat kode/notasi computer disebut m-file. Ada dua macam m-file, yaitu :

a. script file, yaitu m-file yang tidak memerlukan input dan

output argument

b. function file, yaitu m-file yang memerlukan input dan output

argument

Untuk membuat m-file, lakukan :

klik File – pilih New – klik M-file

Akan muncul window MATLAB Editor / Debugger. Di sini kita dapat membuat kode baru atau memodifikasi kode yang sudah ada. Kode yang telah diketik perlu disimpan sebelum dieksekusi.

Pada MATLAB Editor :

klik File– pilih Save As – beri nama file - Save

Contoh script file :

% script file firstgraph

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

y = sin(x)./x;

plot (x,y)

grid

Dengan prosedur di atas, simpan m-file ini dengan nama firstgraph. Mari kita analisa isi dari file ini :

Baris 1 diawali tanda % berarti komentar, diabaikan oleh MATLAB. Tujuannya untuk memberikan keterangan tentang file tersebut. Baris 2 membangun array x, mulai dari p/100, stepsize p/100 sampai dengan 10p. Notasi semicolon (;) agar array x tidak ditampilkan. Baris 3 membangun array y yang diperoleh dari fungsi sinc, y = sin(x)/x. Notasi dot (.) sebelum operator pembagian (/) meminta kepada MATLAB untuk melakukan pembagian per komponen. Baris 4, perintah plot membangun grafik fungsi sinc dengan menggunakan titik-titik yang dibangun pada dua baris sebelumnya. Akhirnya, perintah grid dimaksudkan untuk menampilkan grid (garis skala) pada grafik. Untuk menjalankan program ini, ketik nama file pada command window kemudian tekan Enter.

>>firstgraph

Contoh function file :

function [mean,stdev] = stat(x)

% program untuk menghitung mean dan standard deviasi

n = length(x);

mean = sum(x)/n;

stdev = sqrt(sum((x-mean).^2)/n);

Setelah file disimpan dengan nama stat, untuk menjalankan program ini diperlukan input argument vector data x, dan akan menghasilkan dua output, yaitu mean dan stdev dari x.

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

>>[mean,stdev] = stat(x)

mean =

4.5000

stdev =

2.2913

Pada file ini diperkenalkan tiga fungsi baru, yaitu length (panjang vector), sum (jumlahan) dan sqrt (akar kuadrat). Fungsi-fungsi ini adalah fungsi built-in, artinya mereka sudah terdefinisi di dalam MATLAB. Terdapat ratusan fungsi built-in lainnya di dalam MATLAB.

2. Fungsi inline dan fungsi feval

Kadang-kadang kita hanya memerlukan fungsi yang hanya akan digunakan sesaat dan tidak perlu disimpan sebagai m-file. Fungsi seperti ini dapat didefinisikan langsung pada command window dan disebut fungsi inline.

Contoh :

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

f =

Inline function:

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

Fungsi ini mendefinisikan fungsi dua variabel, . Fungsi ini dapat dievaluasi dengan cara biasa atau array.

Contoh :

>> f(3,5)

ans =

5.8310

>> A=[1 2;3 4]

A =

1 2

3 4

>> B=[3 2;1 1]

B =

3 2

1 1

>> f(A,B)

ans =

3.1623 2.8284

3.1623 4.1231

Kita telah mempelajari bagaimana membuat file fungsi. Beberapa fungsi mempunyai argument input merupakan nama dari fungsi lainnya, yang dispesifikasi oleh string. Agar dapat mengeksekusi fungsi yang dispesifikasi oleh string kita gunakan perintah feval sebagai berikut :

feval(‘func_name’, parameter input pada fungsi ‘func_name’)

Untuk mengilustrasikan fungsi feval ini, perhatikan dengan seksama contoh-contoh berikut :

function k = is_int(x)

%memeriksa apakah x integer atau bukan

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

k=1;

else

k=0;

end

Kode (routine) ini disimpan sebagai m-file dengan nama is_int. Fungsi baru yang digunakan di sini adalah abs (harga mutlak/magnitude) dan round (pembulatan). Sedangkan fungsi realmin telah dibahas pada tutorial 1. Control flow yang memuat if, else, end akan dibahas lebih mendalam pada bagian lain dalam tutorial ini. Bulat tidaknya bilangan x ditunjukkan oleh nilai k. Bila k bernilai 1 berarti x bulat dan k bernilai 0 menunjukkan x bukan bulat.

>> k = is_int(3)

k =

1

>> k = is_int(3.5)

k =

0

Selanjutnya kita coba membuat suatu program untuk menghitung kelipatan persekutuan terkecil (lcm) dengan menggunakan rumus :

lcm(a,b) = ab/gcd(a,b)

MATLAB memiliki fungsi built-in gcd untuk menghitung factor persekutuan terbesar dari dua bilangan bulat.

function c = lcm_ku(a,b)

%menghitung kelipatan persekutuan terkecil dari

%dua bilangan bulat a dan b.

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

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

else

error('bilangan yang dimasukkan haruslah bulat')

end

Silahkan simpan m-file ini dengan nama lcm_ku.

Fungsi feval('is_int',a) berarti nilai fungsi is_int di titik a, yaitu feval('is_int',a) = is_int(a). Operator logika & akan dinilai benar jika kedua pernyataan memberikan nilai 1 (keduanya benar).

>> c = lcm_ku(3,4)

c =

12

>> c = lcm_ku(3,4.2)

??? Error using ==> lcm_ku

bilangan yang dimasukkan haruslah bulat

Contoh berikutnya adalah metoda trapezium terkoreksi untuk integral numeris fungsi yang terdiferensial pada suatu interval,

di mana .

Formula ini mudah diimplementasikan pada MATLAB. Kita membutuh-kan input parameter terdiri dari dan .

function s = corrtrap(fname,derf,a,b)

%metoda trapesium terkoreksi.

%fname - m-file yang digunakan sebagai integrand.

%derf - derivative dari fungsi fname.

%a, b - batas interval integrasi

h = b-a ;

s = (h/2).*(feval(fname,a) + feval(fname,b)) + ...

(h.^2)/12.*(feval(derf,a)-feval(derf,b));

Silahkan simpan dengan nama corrtrap.

Misalkan kita ingin menghitung integral dan . Karena fungsi sin adalah fungsi built-in kita tidak perlu mendefinisikan nya lagi. Cukup dilakukan pada command window sebagai berikut

>> a=[0 0.1];

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

>> s = corrtrap('sin','cos',a,b)

s =

0.9910 1.0850

Untuk kasus lainnya di mana fungsi yang diintegralkan bukan fungsi built-in kita harus mendefinisikan dua m-file, masing-masing untuk fungsi integrand dan derivatifnya.

1 komentar:

  1. tolong berikan rumus untuk memasukkan variebel dunx....
    ex: nama=input ('masukkan nama=')
    tapi cara di atas error,,, tolong berikan yang efisien n efektif yax.....

    BalasHapus