Anda di halaman 1dari 31

for k = array perintah end Perintah antara for dan end dijalankan untuk semua nilai k yang didefinisikan

pada array. Mungkin bahasa sederhananya untuk loop for ini sebagai berikut :

Untuk semua k yang sudah didefinisikan, kerjakan perintah, baru selesai.


Contoh : Misalkan kita menginginkan nilai fungsi sin pada 11 titik seragam x = n /10 untuk n = 0,1, . . . , 10. >>for n = 0:10;(tekan Enter) x(n+1) = sin(pi*n/10);(tekan Enter) >>end (tekan Enter) >> x x= Columns 1 through 8 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 9 through 11 0.5878 0.3090 0.0000 Loop for dapat disusun dalam bentuk sub loop for dengan struktur sebagai berikut : for k1 = array1 for k2 = array2 for k3 = array3 perintah

end end end Contoh : Mari tulis dan simpan kode berikut pada suatu m-file. function H = Hilbert(n) H = zeros(n); for k = 1:n for l = 1:n H(k,l) = 1/(k+l-1); end end Loop for sebaiknya digunakan apabila cara langsung tidak dapat digunakan. Contoh : Andai kita ingin membangun suatu matriks berukuran 10x10, di mana berikut : >>H = zeros(10) >>for k = 1:10 for l = 1:10 A(k,l) = sin(k)*sin(l); end >>end Namun tanpa menggunakan loop for kita dapat menggunakan kode lebih sederhana berikut : k = 1:10; ,

. Menggunakan loop for kita dapat menggunakan kode

A = sin(k)*cos(k); Tanda aksen () menyatakan transpose suatu vector/matriks. Perintah baris pertama membuat array k yang terdiri dari bilangan bulat 1, 2, . . . . , 10. Perintah sin(k) membentuk vector kolom sedangkan cos(k) membentuk vector baris. 1.2 Pengulangan dengan loop while Struktur : while ekspresi pernyataan end Loop ini digunakan bilamana kita tidak mengetahui banyaknya (pengulangan) yang dibutuhkan. Pemahaman loop while sebagai berikut, repitisi

Selagi ekspresi masih dipenuhi, lakukan terus pekerjaan yang ada pada pernyataa, baru setelah itu berhenti.
Contoh : Andaikan kita ingin membagi dengan 2 bilangan . Kemudian hasilnya kita bagi lagi dengan 2 dan seterusnya sampai hasil pembagian kurang dari atau sama dengan 0.01. Berapa hasil bagi terbesar yang lebih besar dari 0.01 ! >>q = pi; >>while q > 0.01 q = q/2; end >>q q= 0.0061 1.3 Konstruksi if-else-end Struktur paling sederhana dari konstruksi ini adalah :

if expresi perintah end Konstruksi ini digunakan jika hanya terdapat satu alternative. Jika terdapat dua alternative kita menggunakan struktur berikut : if ekspresi perintah (dijalankan bila ekspresi benar) else perintah (dijalankan bila ekspresi salah) end Konstruksi ini sudah kita lakukan sebelumnya pada fungsi is_int dan mylcm pada bagian sebelumnya Tutorial ini. Namun jika terdapat banyak alternative kita gunakan struktur berikut : if ekspresi 1 perintah (dijalankan bila ekspresi 1 benar) elseif ekspresi 2 perintah (dijalankan bila ekspresi 2 benar) elseif . . . else perintah(dikerjakan bila semua ekspresi sebelumnya salah)

end

Jika ekspresi 1 benar langsung lakukan perintah, bila tidak lakukan perintah berikutnya, bila tidak lakukan perintah berikutnya lagi, dan seterusnya.
Contoh : Polinomial Chebyshev adalah salah satu polynomial yang sangat penting pada analisis numeric. Mereka didefinsikan secara rekursif sebagai berikut : = 1, , untuk .

Kita ingin menyusun secara eksplisit polynomial dalam bentuk,

Untuk itu kita akan membuat kode dengan input n dan output koefisien polynomial Chebyshev dalam bentuk T = function T=cheb(n) %menghitung koefisien polinomial Chebyshev T_n(x) %yang tersusun dengan urutan menurun 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 >> T=cheb(4) T= 8 0 -8 0 1 Ini berarti .

Pada kode ini diperkenalkan notasi ==. Ini adalah adalah relasi logika yang berarti sama dengan. Tidak sama dengan notasi =. Operator dan relasi logika akan dibahas pada bagian berikutnya pada lesson ini juga. 3. Relasi dan operator logika Relasi di dalam MATLAB dibangun dengan operator-operator berikut : Operator < <= > >= == ~= Deskripsi Kurang dari Kurang dari atau sama dengan Lebih dari Lebih dari atau sama dengan Sama dengan Tidak sama dengan

Operator == membandingkan dua variabel dan menghasilkan 1 bila mereka sama dan 0 bila tidak sama. >>a = [1 1 3 4 1] a= 11341

>> ind1 = (a==1) ind1 = 11001 Ini berarti elemen pertama sama dengan 1, elemen kedua sama dengan 1, elemen ketiga tidak sama dengan 1, elemen keempat tidak sama dengan 1 dan elemen kelima sama dengan 1. Untuk mengetahui elemen ke berapa saja pada array a yang sama dengan 1, gunakan fungsi find. >> ind2 = find(a==1) >> ind2 125 Sedangkan operator logika pada MATLAB adalah sebagai berikut : Operator logika | & ~ Deskripsi Atau (disjungsi) Dan (konjungsi) Tidak (ingkaran)

Andaikan kita ingin memilih elemen-elemen x yang memenuhi x > 1 atau x <-0.2 di mana >> x = randn(1,7) r= -0.4326 -1.6656 0.1253 0.2877 -1.1465 1.1909 1.1892 >> ind3 = (x >=1) | (x < -0.2) ind3 = 1100111 >> y = x(ind3)

y= -0.4326 -1.6656 -1.1465 1.1909 1.1892 3. Pembulatan ke bilangan bulat, fungsi ceil, floor, fix dan round Terdapat 4 fungsi MATLAB untuk membulatkan suatu bilangan real ke bilangan bulat. Keempat fungsi tersebut adalah sebagai berikut : Fungsi floor(x) ceil(x) fix(x) round(x) Deskripsi Pembulatan ke bilangan bulat terbesar <= x Pembulatan ke bilangan bulat terkecil >= x Pembulatan ke bagian bulatnya Pembulatan ke bilangan bulat terdekat

Untuk jelasnya, diperhatikan beberapa contoh berikut : >> T=randn(5) %membangkitkan matrix random 5x5. T= -1.0982 -0.9778 -0.5077 -0.6129 1.1330 1.1226 -1.0215 0.8853 -0.2091 0.1500 0.5817 0.3177 -0.2481 0.5621 0.7031 -0.2714 1.5161 -0.7262 -1.0639 -0.0524 0.4142 0.7494 -0.4450 0.3516 2.0185 >> A=floor(T) A= -2 -1 -1 -1 1 1 -2 0 -1 0 0 0 -1 0 0

-1 1 -1 -2 -1 0 0 -1 0 2 >> B=ceil(T) B= -1 0 0 0 2 2 -1 1 0 1 11011 0 2 0 -1 0 11013 >> C=fix(T) C= -1 0 0 0 1 1 -1 0 0 0 00000 0 1 0 -1 0 00002 >> D=round(T) D= -1 -1 -1 -1 1 1 -1 1 0 0 10011 0 2 -1 -1 0 01002

Untuk menggambar grafik fungsi := bilangan bulat terkecil yang kurang dari atau sama dengan pada interval [-5 5] cukup dengan perintah berikut : >> x=-4:0.01:4; >> y=floor(x); >> plot(x,y) Apa yang anda dapatkan. Selanjutnya perhatikan pemakaian fungsi floor dan ceil untuk menentukan bilangan bulat m dan bilangan real 0.25 <= r <>sehingga x = (4^m)*r. function [m,r] = res_exp(x); %menentukan bilangan bulat positip m dan bilangan real 0.25<=r<1 %sehingga x = (4^m)*r if x==0 m=0; r=0; return end u = log10(x)/log10(4); if u <> m = floor(u); else m = ceil(u); end r = x/4^m; Perintah return pada program ini meminta MATLAB untuk mengahiri eksekusi, sedangkan fungsi log10 menyatakan logaritma dengan bilangan pokok 10.

[m,r] = res_exp(pi) m= 1 r= 0.7854 Coba check ! >> format long >> (4^m)*r ans = 3.14159265358979 >> pi ans = 3.14159265358979 Diposkan oleh bisonerich di 21.45 Tidak ada komentar: Label: komputasi, Matematika, Matlab, Numerik

Grafik 3 D dengan Matlab


Grafik 3 dimensi Pada bagian ini akan dijelaskan cara menggambar grafik pada ruang tiga dimensi dengan menggunakan fungsi-fungsi built-in pada MATLAB. Ada empat macam fungsi MATLAB yang sering digunakan untuk menggabar grafik tiga dimensi ini, yaitu : 1. plot3 2. mesh 3. surf 4. contour

Untuk menjelaskan fungsi-fungsi tersebut, diperhatikan beberapa contoh berikut. Contoh 1. Misalkan akan digambar kurva yang didefinisikan secara parametric berikut :

Tulis script file berikut %script file graph4 %kurva r(t) = (t*cos(t),t*sin(t),t) t=-10*pi:pi/100:10*pi; x=t.*cos(t); y=t.*sin(t); h=plot3(x,y,t); title('Kurva r(t) = (t*cos(t),t*sin(t),t)') xlabel('x') ylabel('y') zlabel('z') grid Hasilnya adalah sebagai berikut

PLOT3(x,y,z), di mana x, y and z are tiga vector dengan panjang sama menggambar lintasan garis dalam ruang 3-d yang melalui koordinat-koordinat x, y dan z. Sedangkan PLOT3(X,Y,Z), di mana X, Y dan Z are tiga matriks berukuran sama adalah memplot beberapa lintasan garis yang masing-masing melaui kolom-kolom matriks X, Y dan Z. Sebelum dijelaskan fungsi mesh, terlebih dulu anda diperkenalkan dengan fungsi meshgrid. Diperhatikan ilustrasi berikut > x=[0 1 2]; >> y=[10 12 14]; >> [X,Y]=meshgrid(x,y) X= 012 012

012 Y= 10 10 10 12 12 12 14 14 14 Jadi perintah meshgrid diterapkan array x dan y yang menghasilkan dua matriks X yang baris-barisnya adalah array x, dan matriks Y yang kolom-kolomnya adalah array y. Tujuan dari perintah ini untuk membuat semua kemungkinan pasangan (xi,yi), xi x, yi y. Contoh 2. Misalkan akan digambar grafik dari parabolaide hyperbolic pada daerah Perhatikan script file berikut, %script file graph5 %grafik z=y^2-x^2 pada domain [-1,1]x[-1,1] x=-1:0.05:1; y=x; [X,Y]=meshgrid(x,y); Z=Y.^2-X.^2; mesh(X,Y,Z) Hasilnya seperti ditunjukkan oleh gambar berikut ,

Coba bandingkan bila pada m-file di atas, fungsi mesh diganti surf yang memberikan hasil seperti berikut

Sedangkan untuk melihat grafik 3-d beserta contournya digunakan fungsi meshc sebagai ganti mesh, hasilnya sebagai berikut:

Untuk lebih jelas mengenai contour atau level kurva, diperhatikan kembali m-file berikut. %script file graph6 %grafik z=y^2-x^2 pada domain [-1,1]x[-1,1] dan contournya x=-1:0.05:1; y=x; [X,Y]=meshgrid(x,y); Z=Y.^2-X.^2; contourf(Z) hold on colorbar

[c,h] =contour(Z,'k-');clabel(c,h) title('LEVEL KURVA dari z=y^2-x^2.') hold off Hasilnya adalah sebagai berikut.

Kurva contour ini sangat berguna untuk mengetahui level kurva, yaitu mengidentifikasi titik-titik pada domain x-y yang mempunyai nilai sama. Sebagai contoh, pada garis x=y, x=-y, fungsi kita mempunyai nilai sama, yaitu z = 0. Masih banyak sekali fungsi-fungsi menarik yang berkaitan dengan grafik 3-d ini, sehingga tidak mungkin terangkum semuanya pada tutorial singkat ini. Untuk lebih lengkapnya, silahkan lihat pada MATLAB help dengan mengetik >>help graph3d Diposkan oleh bisonerich di 21.44 2 komentar: Label: komputasi, Matematika, Matlab, Numerik

Grafik 2 D dengan Matlab


MATLAB mempunyai beberapa fungsi built-in yang dapat digunakan untuk membuat grafik, yang mencakup grafik 2 dimensi, grafik 3 dimensi, graphical user interfaces (GUI) dan animasi. Pada tutorial ini kita hanya mempelajari grafik sederhana 2 dimensi dan 3 dimensi. Di sini kita memanfaatkan materi yang telah diberikan pada tutorial sebelumnya, seperti m-file, operasi array, pemrograman dengan control flow, dan lain-lain. 1. Grafik 2 dimensi Fungsi dasar yang digunakan untuk membuat grafik dua dimesi adalah plot. Fungsi ini membutuhkan input berupa pasangan-pasangan array. Contoh 1: Misalkan kita ingin menggambar grafik fungsi rasional berikut :

, Perhatikan script file berikut : %script file graph1 %grafik dari fungsi rasional y = x/(1+x^2) for n=1:2:5 nn = 10*n; x = linspace(-2,2,nn); y = x./(1+x.^2); plot(x,y,r.-) title(sprintf(Grafik %g. Plot didasarkan pada n = %g point. , (n+1)/2, nn)) axis([-2, 2,-0.8,0.8]) xlabel(x)

ylabel(y) grid pause end Mari kita analisa isi dari file ini : 1. Loop for dieksekusi tiga kali, yaitu n=1, 3, 5. Jadi tiga grafik untuk fungsi yang sama ditampilakan pada figure window. 2. Fungsi MATLAB linspace(a,b,n) membangun array seragam pada interval [a,b]. 3. Ordinat y dari titik-titik x yang dibangun oleh linspace didefinisikan sesuai dengan fungsi yang akan digambar grafiknya. 4. Perintah plot(x,y,pilihan) dimaksudkan untuk menggambar kurva dengan memasangkan titik-titik x dan y yang sudah didefinsikan. Pilihan di sini untuk memberikan tanda/cirri khusus pada grafik yang digambar. Pada contoh di atas, pilihan r.- berarti kurva berwarna merah (red), titik-titiknya ditandai oleh dot (.) dan mereka dihubungkan oleh garis padat (solid). 5. Fungsi title memberikan keterangan/judul grafik. Perintah sprintf di sini menggunakan tiga input, yaitu string dan nama dua variabel yang tercetak pada tiap-tiap grafik. Notasi %g dimaksudkan untuk fomat integer pada tampilan. 6. Perintah axis meminta MATLAB untuk membuat ukuran/dimensi kotak yang akan ditempati oleh grafik. 7. Untuk menambah informasi terhadap sumbu koordinat, digunakan perintah xlabel dan ylabel. 8. Perintah grid untuk membuat garis-garis skala pada grafik. 9. Perintah pause sebelum penutupan loop end dimaksudkan agar computer berhenti sejenak menjalankan proses sebelum ada respon dari pemakai. Sedangkan perintah pause(m) memintah computer berhenti selama m detik sebelum melakukan proses berikutnya.

Misalkan script file di atas telah disimpan dengan nama graph1.m. Pada command window lakukan >> graph1 diperoleh grafik berikut :

Bila anda tekan Enter maka akan diperoleh grafik berikut :

Bila ditekan Enter lagi diperoleh grafik terahir berikut

Dari contoh di atas terlihat bahwa semakin banyak titik yang diambil semakin bagus pula grafik yang dihasilkan, namun membutuhkan lebih banyak waktu. Untuk menggambar beberapa grafik pada command graph yang sama digunakan fungsi subplot. Contoh 2. %script file graph2 %beberapa grafik fungsi rasional y = x/(1+x^2) %pada window yang sama k =0 for n=1:3:10 nn = 10*n; x = linspace(-2,2,nn);

y = x./(1+x.^2); k = k+1; subplot(2,2,k) plot(x,y,r.-) title(sprintf(Grafik %g. Plot didasarkan pada n = %g point. , k, nn)) axis([-2, 2,-0.8,0.8]) xlabel(x) ylabel(y) grid end subplot(m1,m2,k) membuat window graph menjadi m1xm2 daerah di mana k = 1, 2, . . ., m1xm2 menunjukkan daerah mana yang akan ditempatkan grafik. Andaikan script file ini disimpan dengan nama graph2.m. >> graph2 diperoleh grafik berikut

Berikutnya kita perhatikan contoh yang sedikit rumit berikut : Contoh 3. Misalkan akan membuat grafik dua ellips

dan pada satu gambar. Akan lebih mudah ditrasformasikan ke bentuk parametric berikut , dan , Perhatikan script file berikut %script file graph3

%grafik dua ellips x(t) = 3+6cos(t), y(t)=-2+9sin(t) %dan % x(t) = 7+2cos(t), y(t)=8+6sin(t) t=0:pi/100:2*pi; x1=3+6*cos(t);y1=-2+9*sin(t); x2=7+2*cos(t);y2=8+6*sin(t); h1=plot(x1,y1,'r',x2,y2,'b'); set(h1,'LineWidth',1.5) axis('square') xlabel('x') h=get(gca,'Xlabel'); set(h,'FontSize',14) set(gca,'XTick',-4:10) ylabel('y') hh=get(gca,'ylabel'); set(hh,'FontSize',14) set(gca,'YTick',-12:2:14) title('Grafik dari (x-3)^2/36+(y+2)^2/81=1 dan (x-7)^2/4+(x-8)^2/36 =1.') hhh=get(gca, 'Title'); set(hhh,'FontSize',14) grid

Terdapat beberapa fungsi MATLAB baru yang kita gunakan di sini. Diperhatikan h1 = plot() merupakan variabel berkenaan dengan informasi tentang grafik yang digambarkan dan ia disebut handle graphics. Perintah set yang digunakan pada baris berikutnya untuk memanipulasi plot. Contoh di atas, set(h1,'LineWidth',1.5) meminta MATLAB untuk membuat plot dengan ketebalan garis (linewidth) 1.5. Perintah axis('square') agar box yang akan ditempati grafik berupa bujur sangkar. Perintah h=get(gca,'Xlabel') untuk merujuk pada label sumbu x pada sumbu koordinat yang sedang aktif, note : gca adalah singkatan dari get current axis. Baris berikutnya, set(h,'FontSize',14) memberikan ukuran font 14 pada label sumbu x. Kemudian set(gca,'XTick',-4:10) menempatkan titiktitik 4, -3, . . . ,10 pada sumbu x. Baris-baris berikutnya mempunyai maknanya dapat di analogkan seperti sebelumnya. >> graph3 diperoleh

Secara umum terdapat 7 langkah dalam menggambar grafik 2 dimensi dengan MATLAB. Ketujuh langkah tersebut dapat dilihat pada table berikut : Langkah 1. Mempersiapkan x = 0:0.2:12; Contoh kode MATLAB

data

y1=bessel(1,x); y2=bessel(2,x); y3=bessel(3,x);

2. Memilih window and menentukan posisi plot pada window 3. Memanggil fungsi plot 4. Memilih tipe line, tanda-tanda untuk cirri khas. 5. Tetap batas sumbu koordinat, garis skala (grid) 6. Lengkapi grafik dengan keterangan, seperti label dan legend

figure(1) subplot(2,2,1)

h = plot(x,y1,x,y2,x,y3);

set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'}) set(h,{'Color'},{'r';'g';'b'})

axis([0 12 -0.5 1]) grid on

xlabel('Time') ylabel('Amplitude') legend(h,'First','Second','Third') title('Bessel Functions') [y,ix] = min(y1);text(x(ix),y, 'FirstMin\rightarrow',... 'HorizontalAlignment','right') Untuk penyimpanan lihat window berikut print -depsc -tiff -r200 myplot

7. Simpan /export grafik

Langkah-langkah ini dapat ditulis dalam m-file, sebagai berikut : %grafik beberapa fungsi bessel

x = 0:0.2:12; y1=bessel(1,x); y2=bessel(2,x); y3=bessel(3,x); %figure(1) %subplot(2,2,1) h = plot(x,y1,x,y2,x,y3); set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'}) set(h,{'Color'},{'r';'g';'b'}) axis([0 12 -0.5 1]) grid on xlabel('Time') ylabel('Amplitude') legend(h,'First','Second','Third') title('Bessel Functions') [y,ix] = min(y1); text(x(ix),y,'FirstMin\rightarrow',... 'HorizontalAlignment','right') Bila ingin melihat grafiknya silahkan dilakukan sendiri.
Berbagai jenis garis, symbol dan warna pada plot dapat diperoleh dengan perintah

plot(x,y,pilihan)
di mana pilihan adalah salah satu karakter string pada ketiga kolom berikut :

WARNA b biru g hijau r merah c cyan m magenta y kuning k hitam

SIMBOL . titik o lingakaran x tanda silang x + tanda plus + * tanda bintang s kotak d diamond v segitiga (bawah) ^ segitiga (atas) < segitiga (kiri) > segitiga (kanan) p pentagram h heksagram

JENIS GARIS - garis padat (solid) : dot -. garis putus + dot -- garis putus

Silahkan anda coba untuk masing-masing pilihan tersebut. Untuk menyimpan grafik sebagai file grafik, ekstension fig, pada window graph, lakukan cara berikut
klik File pilih Save isi file name (misalnya, grafik1) - Save Untuk membukanya kembali, melalui cuurent directory sorot file dengan nama grafik1.fig, klik mouse kiri 2 kali, atau dapat pula dari File Open pilih grafik1.fig Open Grafik yang telah kita buat dapat dieksport ke dalam bentuk lain, seperti eps, ps, jpg, bmf, dan lain-lain. Untuk mengetahui informasi bagaimana cara mengeksport grafik MATLAB ketik >>help print Bila anda hanya ingin mengambil grafik MATLAB untuk dipindahkan ke aplikasi lain, misalnya MS word, dapat dilakuakan klik Edit Copy Figure kemudian paste pada MS word. Cara lain untuk mengedit grafik MATLAB adalah dengan menggunakan property editor. Melalui window figure,

klik edit sorot ke salah satu dari 4 pilihan (Figure properties, Axes properties, Current Object Properties dan colormap)