Prak-6: Menulis Program Dalam Matlab - TeachMeSoft

Prak-6: Menulis Program Dalam Matlab



Kompetensi dasar dan indikator


1 Kompetensi Dasar

Setelah mengikuti praktikum ini, mahasiswa mampu:
  • Membuat "fungsi" dan program menggunakan Matlab


2 Indikator

1 Membuat "fungsi" dan program menggunakan Matlab
  • Mahasiswa berhasil membuat "fungsi" dan program berdasarkan permasalahan yang diberikan


Dasar Teori


1. Struktur Pemrograman
Sebuah program dapat dieksekusi berdasarkan variabel Boolean dan iterasi menggunakan loops.

a. Operator Logika
Dari variabel Boolean, operator logika AND (&), OR (|), dan NOT (~) dioperasikan dalam kuantitas Boolean. Nilai Boolean dalam "False " diberi logika 0 dan nilai "True" diberi logika selain 0 atau non-zero.

Kuantitas Boolean  dapat digunakan dalam struktur seperti "If. .. elseif. . .else ...end'', "switch . ..case ...case . . .otherwise . . .end" atau "while ...end".

Contoh 1
 >> x = 1;
 >> if x==0;
 A = [1 2];
else
A = [2 1]
end

A =

     2     1




b. Loops Program
Struktur loops digunakan untuk perintah berulang (iterasi) dan dinyatakan dengan perintah "for. . .end"
Contoh 2

 >> A=[l .5; .5 .25];
 >> M=eye(2,2);     % Unit Matrix
 >> for k=l:S
 M = M * A;          % Calculation of the consecutive powers of A
 end


Loop bisa ditulis dalam satu baris, contoh : for k = 1:5;  M = M * A; end. Seperti halnya banyak interpreter bahasa permograman, loop cenderung menurunkan kinerja perhitungan.

Oleh karena itu, penggunan disarankan untuk menghindari penggunaan loop, sebagai penggantinya sebaiknya menggunakan fungsi matriks bila memungkinkan.

Contoh 3

 >> N=100; a=randn(N,N);
 >> tic, for k=1:N, for m=1:N, b(k,m)=a(k,m)^2; end, end, toc
Elapsed time is 0.001374 seconds.
 >> tic, c=a .^112; toc
Elapsed time is 0.000052 seconds.


Pada listing program diatas perintah tic dan toe digunakan untuk mengetahui waktu eksekusi program. Perintah c = a. ^2 mengembalikan matriks c identik dengan matriks b. Namun durasi eksekusi fungsi matriks tersebut lebih cepat.

c. Fungsi (Functions)
Matlab pada dasamya menyediakan fungsi yang dapat dimanfaatkan pengguna, pengguna juga dimungkinkan untuk membuat "fungsi" sendiri. Struktur "fungsi" adalah sebagai berikut  :

 function [outp1, outp2,...]=myfunc(inp1, inp2, ...)
 % Comments
 % inp1=...
 if nargin<2, imp2=10;end
 ...
return


Outp 1, outp2 dan seterusnya merupakan variabel yang dihitung oleh fungsi "myfunc '', inp 1, inp2 dan seterusnya merupakan parameter input.

Baris komentar dimulai dengan tanda "%" disediakan untuk menulis keterangan-keterangan yang dibutuhkan. "fungsi" nargin dan nargout digunakan untuk menyatakan jumlah parameter input dan output. Fungsi error digunakan untuk menampilkan kesalahan/error dan dapat juga menghentikan eksekusi program.

 function [outp]=myfunc(inp1,inp2)
 % Comments
 if nargin<2, inp2=4;end
 if nargin<1,
 error('input parameter missing');
 end
 outp=(inp1+inp2)/2;
 end




Langkah Praktikum (Latihan Membuat Program)


Matlab dapat digunakan untuk menyelesaikan masalah-masalah di bidang teknik. Melalui uraian berikut, mahasiswa diminta untuk membuat algoritma pemrograman dan program lengkap berdasarkan ilustrasi yang diberikan.

Kasus: Sebuah objek kecil diluncurkan dari tanah dengan kecepatan 50 km/jam dengan sudut 30° di atas tanah datar. Tentukan waktu peluncuran dan jarak yang ditempuh ketika objek kembali ke tanah.

1. Definisi masalah
Permasalahan di atas sudah terdefinisi dengan baik. Item berikut dapat dipertimbangkan dalam mendefinisikan masalah lebih lanjut.

a) lnformasi tambahan yang dibutuhkan:
Properti objek dan medium peluncuran dapat mempengaruhi lintasan penerbangan. Misalnya, jika objeknya ringan, memiliki luas permukaan yang relatif besar, dan bergerak di udara, hambatan udara akan mempengaruhi penerbangannya. Jika udara bergerak (oleh angin, misalnya), penerbangan objek juga akan terpengaruh.

Jika informasi ini tidak tersedia, perlu diasumsikan bahwa media tidak memiliki pengaruh pada lintasan penerbangan. Akselerasi gravitasi juga mempengaruhi peluncuran. Jika tidak ada informasi lebih lanjut tersedia, lebih baik mengasumsikan bahwa percepatan gravitasi di permukaan Bumi akan berlaku.

Keakuratan kecepatan awal dan sudut objek diperlukan untuk menentukan keakuratan yang diperlukan dari jumlah yang akan dihitung.
Konversi unit yang diperlukan:
  • 1 km = 1000 m.
  • 1 jam = 60 menit = 3600 detik. 
  • 360 derajat = 2 radian.

b) Output atau hasil yang akan didapatkan: Dari pernyataan masalah di atas output yang dihasilkan adalah waktu tempuh dan jarak yang ditempuh.

c) Input informasi atau data: Ini termasuk kecepatan awal objek 50 km per jam pada sudut 30 derajat di atas tanah datar.

2. Model matematika
Untuk mengajukan masalah ini dalam hal model matematika, pertama­ tama kita perlu nendefinisikan  notasi:
  • Waktu: t (s), dengan t = 0 saat objek diluncurkan.
  • Kecepatan awal kecepatan: v = 50 km I jam.
  • Sudut awal: θ = 30°.
  • Posisi bola horizontal: x (t) (ft).
  • Posisi bola vertikal: y (t) (ft).
  • Akselerasi gravitasi: g = 9,8 m / s2, diarahkan ke arah y negatif. Langkah kunci dalam mengembangkan model matematika adalah membagi lintasan menjadi komponen horizontal  dan vertikal. Kecepatan awal dapat dibagi dengan cara ini, seperti yang ditunjukkan pada Gambar 6.1





Mengingat komponen horisontal dan vertikal dari kecepatan awal, posisi horizontal dan vertical dapat ditentukan sebagai fungsi waktu. Karena tidak ada gaya ekstemal yang terjadi untuk gerakan horizontal, objek akan bergerak dengan kecepatan konstan vh ke arah horizontal. Dalam arah vertikal, gerakan objek terbelakang oleh gravitasi dan posisinya.

3. Metode Komputasi
Dengan menggunakan model yang dikembangkan di atas, ekspresi untuk hasil yang diinginkan dapat diperoleh. Objek akan menyentuh tanah ketika posisi vertikalnya nol.

4. Implementasi Komputasi
Persamaan yang didefinisikan dalam metode komputasi di atas selanjutnya diimplementasikan menggunakan Matlab. Perintah yang digunakan dalam solusi berikut akan dibahas secara rinci nanti dalam kursus, tetapi amati bahwa langkah-langkah Matlab cocok erat dengan langkah-langkah solusi dari metode komputasi.

5. Menguji dan Menilai Solusi
Melaksanakan pemyataan di atas memberikan hasil yang ditampilkan berikut:
waktu tempuh objek (s): tg = 2,2774

jarak yang ditempuh (m):
xg =144.6364

Gambar 6.2 Hasil Plot Trayektori Penerbangan

Hasil perhitungan program yang telah dibuat dapat diuji kemampuan dalam menyelesaikan masalah dengan membandingkan hasilnya dengan perhitungan manual.


Latihan


1. Buatlah program untuk menghitung nilai masing-masing tegangan V1Vdan V3 pada Gambar 6.3.

Gambar 6.3 Rangkaian dengan Tegangan Nodal


Untuk menghitung nilai teangan V1V2 dan V3 dapat dilakukan dengan Analisis rangkaian  menggunakan  persamaan Nodal (Nodal Analysis). Berikut adalah persamaan-persamaan yang menggambarkan proses perhitungan .

Persamaan node l,



Persamaan node 2,





Persamaan node 3




Persamaan dalam bentuk matriks adalah sebagai berikut :


Gumakan Inverse Mariks dalam menyelesaikan kasus di atas.



Jawab


Script
 clc
A=[0.15 -0.1 -0.05; -0.1 0.145 -0.025; -0.05 -0.025 0.075]
B=[5;0;2]
X=inv(A)*B


Tampilan



Catatan

tipe data:
1. integer (bilangan bulat)       -inf<int<int
2. string (karakter)          --> wors/ kata
    jika string pake petik, menggunakan petik.
3. Float (bilangan pecahan/desimal)
4. Array


Input

Script (command windows/ editor) :
 rad=input('Masukkan nilai radius: ')


Keluaran
rad =

     6


Script (command windows/ editor) :
 rad=input('Masukkan nilai radius: ')



Keluaran
rad =

     6



Mencoba bukau arrat
Script (command windows/ editor) :
 Array=input('Masukkan nilai variabel: ')
 Masukan nilai variabel : [2 4 6 8]


Keluaran
Array =

     2     4     6     8




Output (disp dan fprint)

disp = display

Menampilkan karakter menggunakan disp
Script (command windows/ editor) :
 >> disp('Hello: ')


Keluaran

 Hello:



Menampilan angka
Script (command windows/ editor) :
 rad=input('Masukkan nilai variabel: ')
 Masukan nilai variabel : [2 4 6 8]


Keluaran
rad =

     6



fprint
fprint mengkombinasikan nilai dan input variabel


Script (command windows/ editor) :
 fprintf('Nilai radiusnya adalah %d. yakni!\n', 4^3)


Keluaran

 Nilai radiusnya adalah 64. yakni!


keterangan:
nilai 4^3 akan di simpan di %d

catatan:
%d integer (in stands for decimal integer
%f float (real number)
%c character (one character)
%s string of characters


Contoh coal

Soal: Buatlah program untuk menampilkan nilai luas area lingkaran, dengan memasukkan nilai Input dan outputnya berupa kalimat:

Output
Masukkan  nilai radius lingkar:
Jadi Luas Lingkaran adalah.... meter persegi


Jawaban:
Script (command windows/ editor) :
 clc; % bisa menggunakan perintah clear atau close all
  
 % rumus luas lingkaran phi x r^2
 rad=input('Masukkan Nilai Radius Lingkaran: ')
 rad2=rad^2;
 luas=pi*rad2;
 fprintf('Jadi Luas Lingkaran adalah %f meter persegi\n',luas)


Keluaran (command windows)

 Masukkan Nilai Radius Lingkaran: 10

 rad =

    10

 Jadi Luas Lingkaran adalah 314.000000 meter persegi



luas lingkaran dengan function

Script (command windows/ editor) :
function[luas_lingkaran]=Rumus_luas(rad)
        luas_lingkaran=pi*(rad^2)
end


clc;

rad=input('Masukkan nilai radius: ')
fprintf('Luas lingkaran adalah %f meter persegi \n', Rumus_luas(rad))




Keluaran (command windows)

 Masukkan Nilai Radius Lingkaran: 10

 rad =

    10

 Jadi Luas Lingkaran adalah 314.000000 meter persegi





Function local

local function : adalah function yang terdapat di dalma program

Script (command windows/ editor) :
 x=33;
 y=11;
 a=locfn(x);     %local function
 fprintf('Nilai a adalah %d\n', a) % menampilkan local function dari variabel a
 fprintf('Nilai x adalah %d\n', x) % menampilkan nilai dari variabel x
 fprintf('Penjumlahan a dan x menghasilkan %d\n', a+x)


 function out = locfn(in)
    x=in+5;
    out=x;
 end

Keluaran (command windows)

 aaa




Perintah If

 nilai absolut adalah
%f  -->  0.1 f  
f=25 --> 2,5

number
Script (command windows/ editor) :
 num = input ('Masukkan sembaran angka: ');
 % Jika angkat yang dimasukkan negatif, beri tahu user dan ubah


if num < 0
 disp('Ok, kita akan gunakan nilai absolut')
 num = abs(num); % abs nilai absolut
end

fprintf('Nilai akar dari %. 1f adalah %.1f\n', num, sqrt (num))

Keluaran (command windows)

 aaa














NB :
Download laporan di Halaman Daftar Isi
Donwload e-book Matlab




Disqus comments