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
>> 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
>> 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.
>> 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
% 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
% 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 V1, V2 dan V3 pada Gambar 6.3.
Gambar 6.3 Rangkaian dengan Tegangan Nodal |
Untuk menghitung nilai teangan V1, V2 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
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
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
6
Script (command windows/ editor) :
rad=input('Masukkan nilai radius: ')
Keluaran
rad =
6
6
Mencoba bukau arrat
Script (command windows/ editor) :
Array=input('Masukkan nilai variabel: ')
Masukan nilai variabel : [2 4 6 8]
Masukan nilai variabel : [2 4 6 8]
Keluaran
Array =
2 4 6 8
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]
Masukan nilai variabel : [2 4 6 8]
Keluaran
rad =
6
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)
% 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
luas_lingkaran=pi*(rad^2)
end
clc;
rad=input('Masukkan nilai radius: ')
fprintf('Luas lingkaran adalah %f meter persegi \n', Rumus_luas(rad))
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
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) :
Keluaran (command windows)
aaa
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))
% 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