15
MatlabTutor - sns Hal-1 Algoritma dan Pemrograman – II (4 sks) Dosen: Ir. Sihar, MT. Program studi T. Informatika – Fak. Teknik Bandung 2013 Pengantar Interpreter Menggunakan MATLAB Referensi: [1] Chapman, S.J. MATLAB Programming for Engineers, second edition. Bookware Companion Series. 2000. [2] Knight A., Basics of MATLAB and Beyond. CRC Press. 2000. [3] Simamora, S.N.M.P. “Diktat Algoritma dan Pemrograman II”. Program studi T. Informatika, Fak. Teknik. UTAMA. Bandung. 2012. [4] Simamora, S.N.M.P. “Diktat Konsep Algoritma dan Matematika”. Dept. Sistem Komputer, Fak. Teknik. ITHB. Bandung. 2002. Kasus-1 Sebuah var: z1 menampung DEC(1.5), lalu di-tambah -kan dengan DEC(-2.25) lalu di-kali - kan kembali ke bilangan awal. Tampilkan isi z1 terbaru (termutahir). Solusi: Konstruksi-algoritma z11.5; xz1; z1=z1+(-2.25); tampilkan z1; Dituliskan Matlab script pada framework M-files sebagai berikut: z1=1.5; x=z1; z1=z1+(-2.25); z1=z1*x; z1 Kasus-2 Sebuah var: xT digunakan untuk menampung nilai radius sebuah lingkaran, misalkan 3. Tampilkan luas lingkaran tersebut, jika nilainya ditampungkan kembali pada xT. Solusi: Konstruksi-algoritma xT3; xT=pi*(xT2); tampilkan xT; Dituliskan Matlab script pada command line text sebagai berikut: >> xT=3; >> xT=pi*(xT^2); >> xT

Matlab tutor sns77_utama

Embed Size (px)

Citation preview

Page 1: Matlab tutor sns77_utama

MatlabTutor - sns Hal-1

Algoritma dan Pemrograman – II (4 sks) Dosen: Ir. Sihar, MT. Program studi T. Informatika – Fak. Teknik Bandung 2013

Pengantar Interpreter Menggunakan MATLAB

Referensi: [1] Chapman, S.J. MATLAB Programming for Engineers, second edition. Bookware

Companion Series. 2000. [2] Knight A., Basics of MATLAB and Beyond. CRC Press. 2000. [3] Simamora, S.N.M.P. “Diktat Algoritma dan Pemrograman II”. Program studi T.

Informatika, Fak. Teknik. UTAMA. Bandung. 2012. [4] Simamora, S.N.M.P. “Diktat Konsep Algoritma dan Matematika”. Dept. Sistem

Komputer, Fak. Teknik. ITHB. Bandung. 2002.

Kasus-1 Sebuah var: z1 menampung DEC(1.5), lalu di-tambah-kan dengan DEC(-2.25) lalu di-kali-kan kembali ke bilangan awal. Tampilkan isi z1 terbaru (termutahir). Solusi: Konstruksi-algoritma z1←1.5;

x←z1; z1=z1+(-2.25); tampilkan z1;

Dituliskan Matlab script pada framework M-files sebagai berikut: z1=1.5;

x=z1;

z1=z1+(-2.25);

z1=z1*x;

z1

Kasus-2 Sebuah var: xT digunakan untuk menampung nilai radius sebuah lingkaran, misalkan 3. Tampilkan luas lingkaran tersebut, jika nilainya ditampungkan kembali pada xT. Solusi: Konstruksi-algoritma

xT←3;

xT=pi∗(xT∧2); tampilkan xT; Dituliskan Matlab script pada command line text sebagai berikut: >> xT=3;

>> xT=pi*(xT^2);

>> xT

Page 2: Matlab tutor sns77_utama

MatlabTutor - sns Hal-2

xT =

28.2743

>> Kasus-3 Ada enam Bilangan Genap akan ditampilkan secara vertikal, dimana bilangan awal ditetapkan adalah 2. Tuliskan script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma i←0;

x←2; while(i<6) { tampilkan x; x=x+2; i=i+1; } Dituliskan Matlab script pada framework M-files sebagai berikut: i=0;

x=2;

while(i<6)

disp (x);

x=x+2;

i=i+1;

end Kasus-4

Sebuah var: sns digunakan untuk menampung nilai cosine dari 60o. Tampilkan nilai cosine sudut tersebut tersebut, jika nilainya ditampungkan kembali pada sns. Solusi: Konstruksi-algoritma

2π rad = 360o;

1o = 360

2π rad;

= 180

πrad;

sns←60;

sns=(pi÷180) ∗ sns; sns=cos(sns); tampilkan sns; Dituliskan Matlab script pada command line text sebagai berikut: >> sns=60;

>> sns=(pi/180)*sns;

>> sns=cos(sns);

>> sns

sns =

Page 3: Matlab tutor sns77_utama

MatlabTutor - sns Hal-3

0.5000

>> Kasus-5 Sebuah var: zX digunakan untuk menampung nilai-masukan dari end-user. Tampilkan nilai-luaran jika diinstruksikan zX menampilkan hasil-kuadrat dari nilai-masukan tersebut

dimana zX∈Bil.Real. Solusi: Konstruksi-algoritma zX←?;

zX=(zX)2;

tampilkan zX; Dituliskan Matlab script pada framework M-files sebagai berikut: zX=input('Tentukan zX?: ');

zX=zX^2;

disp('Nilai terbaru zX ')

zX Tampilan jalannya program: Tentukan zX?: 2.5 Nilai terbaru zX zX = 6.2500 >>

Kasus-6 Sebuah var: z3 berperan menampung menampung dua belas Bilangan Bulat Positip, dimana dengan range: 1 s.d 12. Tampilkan isi z3 tersebut secara vertikal menggunakan struktur kendali proses for. Solusi: Konstruksi-algoritma for (i=0;i<12;i=i+1) { tampilkan i; }

Dituliskan Matlab script pada framework M-files sebagai berikut: for i=1:12

i

end

Kasus-7 Buatlah tampilan secara konvensional yang menunjukan deret bilangan dengan selisih 0.5 yang dimulai dengan bilangan-awal 3 dan diakhiri dengan bilangan 7. Jika diasumsikan deret bilangan tersebut ditampungkan ke var: xT, maka hindari menggunakan struktur kendali proses do-while atau while.

Page 4: Matlab tutor sns77_utama

MatlabTutor - sns Hal-4

Solusi: Konstruksi-algoritma xT=3; for(i=0;i<9;i=i+1) { tampilkan xT;

xT←xT+0.5; }

Dituliskan Matlab script pada command line text sebagai berikut: >> xT=3:0.5:7;

>> xT

Tampilan jalannya program: xT = Columns 1 through 8 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 Column 9 7.0000 >>

Kasus-8 Sebuah var: z1 menampung lima bilangan yakni: -1.5, 3, 1.5, -3.5, 3. Tampilkan isi z1 tersebut jika direpresentasikan dalam dimensi 1-baris;5-kolom. Solusi: Konstruksi-algoritma z1∈{-1.5,3,1.5,-3.5,3}; for(i=0;i<1;i=i+1) { for(j=0;j<5;j=j+1) { tampilkan z1[i][j]; } }

Dituliskan Matlab script pada command line text sebagai berikut: >> z1=[-1.5 3 1.5 -3.5 3];

>> z1 Tampilan jalannya program: z1 = -1.5000 3.0000 1.5000 -3.5000 3.0000 >>

Kasus-9 Sebuah var: z1 harus menampung DEC(1.5); lakukan proteksi apabila end-user tidak mengetikkan selain yang ditetapkan tersebut. Solusi: Konstruksi-algoritma z1←?;

Page 5: Matlab tutor sns77_utama

MatlabTutor - sns Hal-5

jika z1≠1.5, maka { tampilkan “Maaf, out-of-range...”; } selain itu { tampilkan “Yes!”; }

Dituliskan Matlab script pada framework M-files sebagai berikut: z1=input('Ketikkan 1.5: ');

if(z1~=1.5)

disp('Maaf, out-of-range...');

else

disp('Yes!');

end

Tampilan jalannya program: Ketikkan 1.5: 1.2 Maaf, out-of-range... Ketikkan 1.5: 1.5 Yes! >>

Kasus-10 Buatlah model grafik linier pada f(x)=x dengan hubungan absis dan ordinat sebagai berikut:

x 1 2 3 4 5 6 7 8 9

f(x) 16.836 8.164 -2.580 -24.641 -35.950 -90.685 -77.372 -49.847 -173.974

Tuliskan script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma x={1,2,3,4,5,6,7,8,9}; fx={16.836,8.164,-2.580,-24.641,-35.950,-90.685,-77.372,-49.847,-173.974}; plot(x,fx);

Dituliskan Matlab script pada command line text sebagai berikut: >> x=[1 2 3 4 5 6 7 8 9]; >> fx=[16.836 8.164 -2.580 -24.641 -35.950 -90.685 -77.372 -49.847 -173.974];

>> plot(x,fx)

Tampilan jalannya program:

Page 6: Matlab tutor sns77_utama

MatlabTutor - sns Hal-6

Kasus-11 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3, -1.5, -3.5, -3.5. Tampilkan isi zP tersebut jika direpresentasikan dalam dimensi 5-baris;1-kolom. Solusi: Konstruksi-algoritma zP∈{1.5,-3,-1.5,-3.5,-3.5}; for(i=0;i<5;i=i+1) { for(j=0;j<1;j=j+1) { tampilkan zP[i][j]; } }

Dituliskan Matlab script pada command line text sebagai berikut: >> zP=[1.5;-3;-1.5;-3.5;-3.5];

>> zP Tampilan jalannya program: zP = 1.5000 -3.0000 -1.5000 -3.5000 -3.5000 >>

Kasus-10

Buatlah model grafik kontinyu dalam bentuk sine dengan range: 2

π− s.d

2

π dengan selisih

antar-bilangan adalah 0.0001. Solusi: Konstruksi-algoritma

t=[-2

;001.0;2

ππ− ];

x←2∗sin(2∗π∗t); plot(x);

Dituliskan Matlab script pada command line text sebagai berikut: >> t=[-pi/2:0.001:pi/2];

x=2*sin(2*pi*t);

plot(x);

title('Sinyal Kontinyu','FontSize',14)

>> Tampilan jalannya program:

Page 7: Matlab tutor sns77_utama

MatlabTutor - sns Hal-7

Kasus-11 Lakukan plotting fungsi: j1(j)=j+1, dimana j dengan range: 0 s.d 9 dan selisih antar-bilangan:0.5. Solusi: Konstruksi-algoritma j=0; while(j<9) { j=j+0.5; j1=j+1; plot(j,j1); } Dituliskan Matlab script pada command line text sebagai berikut: >> j=0:0.5:9;

>> j1=j+1;

>> plot(j,j1)

>> Kasus-12

Sebuah PFK: f(x)=x2−5x+6. Tentukan akar-akar persamaan x1 dan x2 untuk f(x)=0. Solusi: Konstruksi-algoritma f(x)=x

2−5x+6;

f(x)=0;

(x−3)(x−2)=0; x1=3; x2=2; Dituliskan Matlab script pada command line text sebagai berikut: >> solve('x^2-5*x+6=0') Tampilan jalannya program: ans = 3 2 >> Kasus-13 Apabila ditetapkan sejumlah deret bilangan sebagai berikut: U1=2∗1+3;

U2=2∗2+3;

U3=2∗3+3; ...

U15=2∗15+3; Tuliskan pemrograman script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma n=1; Un=0;

Page 8: Matlab tutor sns77_utama

MatlabTutor - sns Hal-8

while(Un<15) {

Un=2∗n+3; n=n+1; tampilkan Un; } Dituliskan Matlab script pada framework M-files sebagai berikut: n=1;

Un=0;

while(Un<15)

Un=2*n+3;

n=n+1;

disp(Un);

end

Kasus-14 Buatlah script untuk menampilkan grouping kurva sinusoidal, misalkan sebanyak tiga gelombang. Solusi: Konstruksi-algoritma x1∈0,0.1,0.2,0.3,...,5,5.1,5.2,...,0.9,1; y1=cos(x1);

x2=1.5∗x1;

y2=2∗cos(x2);

x3=2∗x1;

y3=3∗sin(x3); plot(x1,y1,x2,y2,x3,y3); Dituliskan Matlab script pada framework M-files sebagai berikut: x1 = 0:.1:10;

y1 = cos(x1);

x2 = 1.5*x1;

y2 = 2*cos(x2);

x3 = 2*x1;

y3 = 3*sin(x3);

plot(x1,y1,x2,y2,x3,y3) x1 = 0:.1:10;

y1 = cos(x1);

x2 = 1.5*x1;

y2 = 2*cos(x2);

x3 = 2*x1;

y3 = 3*sin(x3);

plot(x1,y1,x2,y2,x3,y3) Tampilan jalannya program:

Page 9: Matlab tutor sns77_utama

MatlabTutor - sns Hal-9

Kasus-15 Sebuah var: zP menampung matriks dengan dimensi/ordo 3x4 sebagai berikut:

zP3x4=

0

2

2

5.1

5.1

5.1

1.0

2.0

5.0

1

2

1

;

Tampilkan isi zP tersebut. Solusi: Konstruksi-algoritma zP[3][4]={ -1,0.5,1.5,2, -2,0.2,1.5,2, -1,0.1,1.5,0 }; for(i=0;i<3;i=i+1) { for(j=0;j<4;j=j+1) { tampilkan zP[i][j]; } } Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[-1 0.5 1.5 2;

-2 0.2 1.5 2;

-1 0.1 1.5 0];

zP zP=[-1 0.5 1.5 2;

-2 0.2 1.5 2;

-1 0.1 1.5 0];

zP Tampilan jalannya program: zP = -1.0000 0.5000 1.5000 2.0000 -2.0000 0.2000 1.5000 2.0000 -1.0000 0.1000 1.5000 0 zP = -1.0000 0.5000 1.5000 2.0000 -2.0000 0.2000 1.5000 2.0000 -1.0000 0.1000 1.5000 0 >>

Kasus-16 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3, -1.5, -3.5, -3.5. Apabila zP dimodelkan dalam bentuk matriks dengan dimensi/ordo 5x1, maka carilah nilai xT bila

ditetapkan statement: xT←zP[2][1]∗1.5; dimana indeks merujuk pada math-based. Solusi: Konstruksi-algoritma zP[1][0]=-3;

xT←zP[1][0]∗1.5; tampilkan xT;

Page 10: Matlab tutor sns77_utama

MatlabTutor - sns Hal-10

Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[1.5;-3;-1.5;-3.5;-3.5];

xT=zP(2,1)*1.5;

zP

xT Tampilan jalannya program: zP = 1.5000 -3.0000 -1.5000 -3.5000 -3.5000 xT = -4.5000 >> Kasus-17 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3.5, -1.5, -3, -3.5. Apabila zP dimodelkan dalam bentuk matriks dengan dimensi/ordo 1x5, maka carilah nilai xT bila

ditetapkan statement: xT←zP∗-2; dimana indeks merujuk pada math-based. Solusi: Konstruksi-algoritma

zP∈{1.5,-3.5,-1.5,-3,-3.5};

xT←zP∗(-2); tampilkan xT; Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[1.5 -3.5 -1.5 -3 -3.5];

xT=zP*(-2);

zP

xT Tampilan jalannya program: zP = 1.5000 -3.5000 -1.5000 -3.0000 -3.5000 xT = -3 7 3 6 7 >>

Page 11: Matlab tutor sns77_utama

MatlabTutor - sns Hal-11

Kasus-18 Tampilkanlah lima perulangan untuk kata ‘maju’ menggunakan struktur kendali proses for. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { tampilkan ‘maju’; } Dituliskan Matlab script pada framework M-files sebagai berikut: for i=1:5

fprintf('maju\n');

end Tampilan jalannya program: maju maju maju maju maju >>

Kasus-19 Buatlah tujuh deret Bilangan Ganjil, dengan bilangan awal=-1, dan format tampilan sebagai berikut: Bil-1: _

Bil-2: _

...

Bil-7: _

Solusi: Konstruksi-algoritma x←(-1); for(i=0;i<7;i=i+1) { tampilkan “Bil-”,<i+1>,”: ”,<x>;

x←x+2; tampilkan new_line; } Dituliskan Matlab script pada framework M-files sebagai berikut: x=-1;

for i=1:7

fprintf('Bil-%i',i);

fprintf(': %i',x);

x=x+2;

fprintf('\n');

end Tampilan jalannya program: Bil-1: -1 Bil-2: 1 Bil-3: 3 Bil-4: 5 Bil-5: 7 Bil-6: 9 Bil-7: 11 >>

Page 12: Matlab tutor sns77_utama

MatlabTutor - sns Hal-12

Kasus-20 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3.5, -1.5, -3, -3.5. Tampilkan isi zP dengan format sebagai berikut: zP[1]: _ zP[2]: _ ... zP[5]: _ Solusi: Konstruksi-algoritma zP∈{1.5,-3.5,-1.5,-3,-3.5}; for(i=0;i<5;i=i+1) { tampilkan zP[i+1]; } Dituliskan Matlab script pada framework M-files sebagai berikut: clc

clear all

zP=[1.5 -3.5 -1.5 -3 -3.5];

for i=1:5

fprintf('zP[%i',i);

fprintf(']');

fprintf(': %f',zP(i));

fprintf('\n');

end Tampilan jalannya program: zP[1]: 1.500000 zP[2]: -3.500000 zP[3]: -1.500000 zP[4]: -3.000000 zP[5]: -3.500000 >>

Kasus-21 Buatlah tampilan bilangan acak (random) sebanyak lima kali, dimana range bilangan yang ditampilkan: 0 s.d 1. Gunakan struktur kendali proses for dalam penanganan proses looping. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { x=rand(); tampilkan “Random-”,<i+1>,“: ”; tampilkan x; } Dituliskan Matlab script pada framework M-files sebagai berikut: clc

clear all

for i=1:5

x=rand;

fprintf('Random-%i: %f \n',i,x);

end

Page 13: Matlab tutor sns77_utama

MatlabTutor - sns Hal-13

Tampilan jalannya program: Random-1: 0.655741 Random-2: 0.035712 Random-3: 0.849129 Random-4: 0.933993 Random-5: 0.678735 >> Kasus-22 Buatlah tampilan bilangan acak (random) sebanyak lima kali, dimana range bilangan yang ditampilkan: 0 s.d 1000000. Gunakan struktur kendali proses while dalam penanganan proses looping. Solusi: Konstruksi-algoritma i=0; while (i<5) { x=rand();

x=x∗1000000; z=round(x); tampilkan “Random-”,<i+1>,“: ”; tampilkan z; i=i+1; } Dituliskan Matlab script pada framework M-files sebagai berikut: i=0;

while(i<5)

x=rand;

x=x*1000000;

z=round(x);

fprintf('Random-%i: %d \n',(i+1),z);

i=i+1;

end Tampilan jalannya program: Random-1: 438744 Random-2: 381558 Random-3: 765517 Random-4: 795200 Random-5: 186873 >> Kasus-23 Buatlah tampilan enam Bilangan Genap (even-numbers) dimana bilangan-awal=-8, dan struktur kendali proses while digunakan dalam penanganan proses looping. Gunakan format tampilan sebagai berikut: Bil-1: _ Bil-2: _ ... Bil-6: _ Solusi: Konstruksi-algoritma x=-8;

Page 14: Matlab tutor sns77_utama

MatlabTutor - sns Hal-14

i=0; while(i<6) { tampilkan “Bil-”,<i+1>,“: ”; tampilkan x;

x←x+1; i=i+1; }

Dituliskan Matlab script pada framework M-files sebagai berikut: x=-8;

i=0;

while(i<6)

z=['Bil-',int2str(i+1),': ',int2str(x)];

disp(z);

x=x+2;

i=i+1;

end Tampilan jalannya program: Bil-1: -8 Bil-2: -6 Bil-3: -4 Bil-4: -2 Bil-5: 0 Bil-6: 2 >>

Kasus-24 Buatlah tampilan lima Bilangan Pecahan (floating-numbers) dengan selisih antar-bilangan adalah 0.5 dan bilangan-awal=-7.5. Tampilan disajikan secara horisontal dan gunakan struktur kendali proses for dalam penanganan proses looping. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { x=rand(); tampilkan “Random-”,<i+1>,“: ”; tampilkan x; } Dituliskan Matlab script pada framework M-files sebagai berikut: x=-7.5;

for i=1:5

fprintf('%f',x);

fprintf(' ');

x=x+1;

end Tampilan jalannya program: -7.500000 -6.500000 -5.500000 -4.500000 -3.500000 >>

Kasus-25 Sebuah kata “manalu” akan ditampilkan secara terbalik menjadi “ulanam”. Tuliskan pemrograman script untuk menyelesaikan kasus ini jika penanganan perulangan menggunakan struktur kendali proses for dan kata tersebut ditampungkan ke var: s.

Page 15: Matlab tutor sns77_utama

MatlabTutor - sns Hal-15

Solusi: Konstruksi-algoritma s∈{‘m‘,’a‘,’n‘,’a‘,’l‘,’u’}; s[0]=‘m’; s[1]=‘a’; s[2]=‘n’; s[3]=‘a’; s[4]=‘l’; s[5]=‘u’; for(i=0;i<3;i=i+1) { x=s[i]; s[i]=s[(6-1)-i]; s[(6-1)-i]=x; }

Dituliskan Matlab script pada framework M-files sebagai berikut: s=['m' 'a' 'n' 'a' 'l' 'u'];

N=length(s);

n=N/2;

fprintf('Kata: ');

for i=1:N

fprintf(s(i));

end

for i=1:n

x=s(i);

s(i)=s((N+1)-i);

s((N+1)-i)=x;

end

fprintf('\nDibalik: ');

for i=1:N

fprintf(s(i));

end

fprintf('\n'); Tampilan jalannya program: Kata: manalu Dibalik: ulanam >>