Tugas (M.file dan Penyelesaian Persamaan Linear Simultan) Disusun Oleh Nama Npm Chairul Umam (1415041009) Fadhlan Pratama M. (1415041016) Fajar Riza Fahlevi (1415041017) Nurul Izzati Hanifah (1415041043) Okta Fiyana (1415041045) Mata Kuliah : Analisa dan Komputasi Numeris Dosen Pembimbing : Muhammad Hanif,S.T.,M.T. JURUSAN TEKNIK KIMIA FAKULTAS TEKNIK UNIVERSITAS LAMPUNG BANDAR LAMPUNG 2016
Tugas I Mata kUliah ANalisis dan Komputasi Numeris
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Tugas
(M.file dan Penyelesaian Persamaan Linear Simultan)
Disusun Oleh
Nama Npm
Chairul Umam (1415041009)
Fadhlan Pratama M. (1415041016)
Fajar Riza Fahlevi (1415041017)
Nurul Izzati Hanifah (1415041043)
Okta Fiyana (1415041045)
Mata Kuliah : Analisa dan Komputasi Numeris
Dosen Pembimbing : Muhammad Hanif,S.T.,M.T.
JURUSAN TEKNIK KIMIA
FAKULTAS TEKNIK UNIVERSITAS LAMPUNG
BANDAR LAMPUNG
2016
A. Rangkuman m.files
Cara yang paling umum untuk mengoperasikan MATLAB adalah dengan
memasukkan perintah setiap waktu pada command window. M-files menyediakan
sebuah alternatif untuk melakukan operasi yang sangat memperluas kemampuan
memecahkan masalah MATLAB. Sebuah m-file terdiri dari seri-seri pernyataan
yang dapat dijalankan dalam satu waktu. Catatan bahwa istilah “M-file” datang dari
fakta bahwa sebuah file tersimpan dengan sebuah ekstensi .m. M-file terdiri dari
dua yaitu script files dan function files.
M-files dapat berisi program, scripts, persamaan atau data yang dipanggil
selama eksekusi. Jika m-files adalah definisi fungsi, selanjutnya bagian
yang terpenting dari jenis m-file ini adalah baris pertama. Baris
pertama harus mengandung definisi fungsi sehingga MATLAB dapat
menemukan m-files yang dipanggil. M-files tipe ini disebut dengan fungsi m-
files atau fungsi file. Kode yang digunakan untuk mendefinisikan file adalah
sebagai berikut:
function z = file_name(x,y)
‘file_name’ adalah nama sederhana m-file (nama file harus sama dalam definisi
dan nama file. Baris script selanjutnya dalam m-file dapat mendefinisikan
fungsi atau fungsi dan label beberapa variable yang diperlukan.
Command workspace adalah area di dalam memori komputer dimana tersimpan
berbagai parameter dan variabel yang telah didefinisikan pada command line (baik
pada command window ataupun pada m-file) MATLAB. Masing – masing m-file
memiliki workspace khusus yang masing – masing tidak dapat berkomunikasi
sampai kita membuatnya saling berkomunikasi. Salah satu cara untuk
mengkomunikasikan masing – masing workspace tersebut adalah dengan perintah
global.
A. Script Files
Sebuah script file adalah selalu seri-seri dari perintah-perintah MATLAB yang
tersimpan dalam sebuah file. Script file berguna untuk menahan sebuah seri-seri
perintah-perintah yang akan dieksekusi pada lebih dari peristiwa. Script dapat
dieksekusi dengan mengetik nama file pada command window atau dengan memilih
pada pilihan menu pada jendela Edit: Debug, Run.
Hampir seluruh operasi Matlab dilaksanakan melalui script, yang dituliskan
dalam bentuk teks. Script Matlab harus dijalankan dalam program Matlab sebagai
lingkungannya.
Script matlab dapat merupakan urutan perintah, tetapi juga dapat berupa fungsi-
fungsi atau subfungsi. Script Matlab dapat menerima variabel dan menghasilkan
besaran.
Contoh 1. Script File
Problem Statement. Develop a script file to compute the velocity of the free-
falling bungee jumper for the case where the initial velocity is zero.
Solution. Open the editor with the menu selection: File, New, M-file. Type in the
following statements to compute the velocity of the free-falling bungee jumper at
a specific time
[recall Eq. (1.9)]:
g = 9.81; m = 68.1; t = 12; cd = 0.25;
v = sqrt(g * m / cd) * tanh(sqrt(g * cd / m) * t)
Simpan file sebagai scriptdemo.m. Kembali ke command window dan ketik
>>scriptdemo
Hasilnya akan ditampilkan sebagai
v =
50.6175
Demikian, script dieksekusi hanya jika user telah mengetik setiap barisnya di
command window.
Sebagai langkah terakhir, tentukan niai g dengan mengetik
>> g
g =
9.8100
Jadi dapat dilihat bahwa meski pun g terdefinisi dalam script, g menahan
nilainya kembali ke command worspace. Seperti yang akan kita lihat di bagian
berikut, adalah merupakan perbedaan penting antara script dan fungsi.
B. Function Files
Function files adalah M-files yang dimulai dengan kata function. Perbedaannya
dengan script files, adalah function files dapat menerima input argumen-argumen
dan output hasil. Karenanya function files beranalogi dengan fungsi pengguna
terdefinisi dalam bahasa pemrograman seperti Fortan, Visual Basic atau C.
Syntax untuk function files dapat direpresentasikan secara umum sebagai
berikut:
function outvar = funcname(arglist)
% helpcomments
statements
outvar = value;
dimana outvar adalah nama variable output, funcname adalah nama fungsi,
arglist adalah daftar argumen fungsi (sebagai contoh, nilai koma batas yang
lewat ke fungsi), helpcomments adalah teks yang menyediakan kepada user
informasi mengenai fungsi (dapat dipanggil dengan mengetik Help funcname
pada command window), statements dan adalah pernyataan MATLAB yang
menghitung value yang ditugaskan kepada outvar.
Di atas peran function files dalam mendeskripsiskan fungsi, baris pertama
dari helpcomments, yang disebut sebagai H1 line, adalah baris yang dicari oleh
perintah lookfor. Demikian, maka sebaiknya harus disertakan kata kunci
deskriptif yang berhubungan dengan file pada barisini.
M-file harus disimpan sebagai funcname.m. fungsi dapat dijalankan
selanjutnya dengan mengetik funcname pada command window. Catatan bahwa
meski pun MATLAB adalah case-sensitive, sistem opersai komputer yang
digunakan mungkin tidak sensitif. Dimana MATLAB akan membaca nama fungsi
freefall dan Freefall sebagai dua variabel yang berbeda, sedangkan
komputer membacanya sebagai sesuatu yang sama. Sebagai contoh adalah sebagai
berikut
Contoh 2. Function File
Problem Statement. As in Example 3.1, compute the velocity of the free-
falling bungee jumper but now use a function file for the task.
Solution. Type the following statements in the file editor:
function v = freefall(t, m, cd)
% freefall: bungee velocity with second-order drag
% v=freefall(t,m,cd) computes the free-fall velocity
% of an object with second-order drag
% input: % t = time (s)
% m = mass (kg)
% cd = second-order drag coefficient (kg/m)
% output:
% v = downward velocity (m/s)
g = 9.81; % acceleration of gravity
v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);
Save the file as freefall.m. To invoke the function, return to the command window
and
type in
>> freefall(12,68.1,0.25)
The result will be displayed as
ans =
50.6175
One advantage of a function M-file is that it can be invoked repeatedly for
different argument values. Suppose that you wanted to compute the velocity of a
100-kg jumper after 8 s:
>> freefall(8,100,0.25)
ans =
53.1878
To invoke the help comments type
>> help freefall
which results in the comments being displayed
freefall: bungee velocity with second-order drag
v=freefall(t,m,cd) computes the free-fall velocity
of an object with second-order drag
input:
t = time (s)
m = mass (kg)
cd = second-order drag coefficient (kg/m)
output:
v = downward velocity (m/s)
If at a later date, you forgot the name of this function, but remembered that it
involved bungee jumping, you could enter
>> lookfor bungee
and the following information would be displayed
freefall.m - bungee velocity with second-order drag
Catatan bahwa, pada akhir pada contoh sebelumnya, jika kita sudah mengetik
>> g
maka pesan berikut akan ditampilkan
??? Undefined function or variable ‘g’.
Jadi meski pun g memiliki nilai 9,81 dalam M-file, g tidak akan memiliki
sebuah nilai pada command workspace. Seperti yang menjadi catatan pada akhir
contoh 1, ini adalah perbedaan penting antara fungsi dan script. Variabel dalam
sebuah fungsi dikatakan merupakan local dan dihapus setelah fungsi dieksekusi.
Berbeda dengan fungsi, sebuah variabel dalam script mempertahankan
keberadaannya setelah dieksekusi.
Fungsi M-file dapat menghasilkan lebih dari satu hasil. Dalam beberapa
kasus, variabel mengandung hasil adalah comma-delimited dan ditutup oleh tanda
kurung. Sebagai contoh, fungsi berikut, stats.m, menghitung rata-rata dan standar
deviasi sebuah vektor:
function [mean, stdev] = stats(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/(n-1)));
Here is an example of how it can be applied:
>> y = [8 5 10 12 6 7.5 4];
>> [m,s] = stats(y)
m =
7.5000
s =
2.8137
Meskipun kita juga akan menggunakan script M-file, fungsi M-file dapat menjadi
alat pemrograman utama.
C. Subfungsi
Fungsi dapat memanggil fungsi. Meski pun sseperti fungsi dapat ada sebagai
M-file yang terpisah, fungsi tersebut juga dapat terdapata dalam M-file tunggal.
Contoh 2 (tanpa komentar) dapat dibagi menjadi dua fungsi dan disimpan sebagai
satu M-file.
function v = freefallsubfunc(t, m, cd)
v = vel(t, m, cd);
end
function v = vel(t, m, cd)
g = 9.81;
v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);
end
M-file ini dapat disimpan sebagai freefalsubfunc.m. dalam beberapa kasus,
fungsi pertama disebut sebagai main atau primary function. Hanya fungsi yang
dapat diakses di command window dan fungsi-fungsi serta scripts lainnya. Semua
fungsi-fungsi lain (dalam hal ini, vel) mrujuk pada subfungsi.
Sebuah subfungsi hanya dapat diakses kepada fungsi utama dan semua
subfungsi dalam M-file dimana subfungsi tersebut berada. Jika kita menjalankan
freefallsubfunc dari command window, hasilnya akan sama dengan contoh 2:
>> freefallsubfunc(12,68.1,0.25)
ans =
50.6175
Bagaimana pun, jika kita mencoba untuk menjalankan subfunction vel sebuah
pesan eror akan terjadi:
>> vel(12,68.1,.25)
??? Undefined function or method 'vel' for input arguments
of type 'double'.
D. Membuat File Program yang Dapat dieksekusi
File script adalah sebuah file teks biasa dan bisa dibuat menggunakan editor
teks biasa seperti notepad pada windows atau editor edit.exe pada DOS. Tetapi pada
Matlab versi 7.x yang baru, editor khusus telah disediakan. Editor ini dilengkapi
dengan pustaka kata-kata kunci Matlab yang berwarna lain sehingga
memudahkan penyuntingan program.
Untuk mengeksekusi script atau fungsi, tuliskanlah nama fungsi tersebut pada
prompt (»). Jangan gunakan huruf kapital karena nama fungsi di Matlab
diharuskan menggunakan huruf non-kapital.
1. Script: Urutan Perintah
Untuk membuat script biasa, tuliskan perintah-perintah Matlab dengan urutan
yang benar. Script dapat menerima masukan melalui input dari keyboard, tetapi
tidak dapat menerima masukan berupa argumen. Karena itu script hanya digunakan
untuk program-program singkat, atau program induk.
2. Fungsi: Subfungsi Matlab
Fungsi dapat menerima masukan berupa argumen dan dapat pula menerima
masukan dari keyboard, tetapi biasanya pekerjaan ini tidak ditempatkan dalam
fungsi kecuali ada tujuan khusus untuk itu.
Sebuah fungsi harus memiliki header yang ditandai dengan kata-kunci function.
Pada header tersebut terdapat variabel output, nama fungsi dan variabel input.
Nama fungsi disini tidak selalu mencerminkan nama fungsi yang sebenarnya.
Nama fungsi sebenarnya adalah nama file .m yang berisi fungsi tersebut. Walaupun
demikian, nama fungsi pada header sebaiknya sama dengan nama file agar tidak
membingungkan.
Matlab membedakan variabel di luar fungsi dan variabel di dalam fungsi.
Variabel di dalam fungsi bersifat lokal dan hanya berlaku di dalam fungsi. Hal ini
akan dibahas pada sub-bagian lain.
E. Mengatur Alur Program
Ada beberapa perintah Matlab yang dapat digunakan untuk mengatur alur
program antara lain :
1. If.....else
Perintah ini adalah perintah klasik pemrograman. Identik dengan jika ..
maka, perintah ini dapat digunakan untuk menguji suatu kondisi tertentu.
Sintaks dari perintah ini diperlihatkan pada contoh berikut :
% program : test.m a = input('a = ');
if a == 0
disp('a sama dengan nol');
elseif a < 0
disp('a negatif');
else
disp('a positif');
end
»test a = 4a positif
» test
a = -4
a negatif
» test a = 0
a sama dengan nol
2. For
Perintah ini juga merupakan perintah klasik bahasa pemrograman. Fungsi
for adalah
untuk melakukan loop sejumlah urutan yang telah ditentukan. Sintaks dari
1. Jadikan semua persaman diatas menjadi bentuk matriks
1 1 1 1 1 1 1 1 1 x1 17
3 4 6 1 4 7 5 3 2 x2 30
5 6 7 8 1 0 4 5 6 x3 25
5 6 2 1 9 8 0 0 0 x4 15
1 3 6 8 9 2 8 9 21 x5 = 70
10 2 -3 5 -4 5 -6 8 9 x6 40
-2 -6 7 -3 1 -9 4 -1 -4 x7 34
0 2 4 5 -9 2 -2 1 1 x8 61
9 5 3 9 0 3 4 5 6 x9 85
2. Lalu dapat dibuat script matlab seperti gambar dibawah berikut
Latihan 4
Seorang petani ingin menanam padi, jagung dan ketela di atas tanahnya seluas 12 hektare.
Dengan ketentuan:
Untuk setiap hektare padi membutuhkan 10 kg pupuk urea dan 6 kg pestisida.
Untuk setiap hektare jagung membutuhkan 8 kg pupuk urea dan 4 kg pestisida
Untuk setiap hektare ketela pohon membutuhkan 5 kg pupuk urea dan 3 kg pestisida
Berapa hektare padi, jagung dan ketela yang harus ditanam bila tersedia 97 kg pupuk urea
dan 55 kg pestisida ?
Penyelesaian:
Model persamaan linear
x1 Luas Padi (ha)
x2 Luas Jagung (ha)
x3 Luas Ketela (ha)
Lalu susun persamaan linear seperti dibawah ini
𝑥1 + 𝑥2 + 𝑥3 = 12
10𝑥1 + 8𝑥2 + 5𝑥3 = 97
6𝑥1 + 4𝑥2 + 3𝑥3 = 55
Lalu susun kedalam bentuk matriks
[1 1 110 8 56 4 3
] [
𝑥1
𝑥2
𝑥3
] = [129755
]
Lalu untuk menggunakan matlab bisa dibuat script seperti dibawah ini
Script dari Gauss.m
Sehingga Padi yang dibutuhkan adalah 5 Hektar, Jagung 4 Hektar, Ketela 3 Hektar.
Latihan 5
Tentukan nilai dari masing- Masing Variabel dibawah ini
𝑥1 + 2𝑥2 + 3𝑥3 + 4𝑥4 + 5𝑥5 = 45
−𝑥1 − 2𝑥2 + 3𝑥3 − 4𝑥4 + 6𝑥5 = 103
9𝑥1 + 2𝑥3 + 3𝑥4 = 29
3𝑥1 + 5𝑥2 + 𝑥3 + 2𝑥4 + 10𝑥5 = 77
4𝑥1 + 5𝑥2 + 10𝑥3 + 3𝑥4 − 5𝑥5 = 44
Penyelesaian
𝑥1 + 2𝑥2 + 3𝑥3 + 4𝑥4 + 5𝑥5 = 45
−𝑥1 − 2𝑥2 + 3𝑥3 − 4𝑥4 + 6𝑥5 = 103
9𝑥1 + 2𝑥3 + 3𝑥4 = 29
3𝑥1 + 5𝑥2 + 𝑥3 + 2𝑥4 + 10𝑥5 = 77
4𝑥1 + 5𝑥2 + 10𝑥3 + 3𝑥4 − 5𝑥5 = 44
5 Persamaan diatas merupakan persamaan linear simultan dengan 5 variabel yang tidak
diketahui dan dapat diselesaikan dengan matlab menggunakan Pivoting Eliminasi Gauss
seperti gambar di bawah ini
Sehingga x1=3, x2=-2, x3=10, x4=-6 dan x5= 8
Script GaussPivot.m
Script Gauss.m
Script Gauss.m
function x = GaussPivot(A,b) % GaussPivot(A,b): % Eliimasi Gauss dengan Pivoting Parsil. % input: % A = coefficient matrix % b = right hand side vector % output: % x = solution vector [m,n] = size(A); if m ~= n, error('Matrix A must be square'); end nb = n+1; Aug = [A b]; % forward elimination for k = 1:n-1 % partial pivoting [b, i] = max(abs(Aug(k:n,k))); ipr = i+k-1; if ipr ~= k % pivot the rows Aug([k, ipr],:) = Aug([ipr,k],:); end for i = k+1:n factor = Aug(i,k)/Aug(k,k); Aug(i,k:nb) = Aug(i,k:nb)-factor*Aug(k,k:nb); end end % back substitution x = zeros(n,1); x(n) = Aug(n,nb)/Aug(n,n); for i = n-1:-1:1 x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); end
function x=Gauss(a,b) %Persamaan untuk gauss ab=[a,b]; [R, C]=size(ab); %R jumlah baris dan C jumlah kolom for j= 1:R-1 %untuk kolom for i = j+1:R %untuk Baris ab(i,j:C)=ab(i,j:C)-ab(i,j)/ab(j,j)*ab(j,j:C); end end x=zeros(R,1); %menolkan segitiga bawah x(R)=ab(R,C)/ab(R,R); %menentukan nilai X for i =R-1:-1:1 x(i)=(ab(i,C)-ab(i,i+1:R)*x(i+1:R))/ab(i,i); end
Sumber:
Chapra, Steven C. 2012. Applied Numerical Methods with MATLAB for Engineers
and Scientist, 3 Ed. Newyork: McGraw-Hill.
Rustamaji, Heri. 2010. Pengantar Aplikasi MATLAB dalam Teknik Kimia. Bandar
Lampung: Jurusan Teknik Kimia Universitas Lampung.