Tuesday, March 26, 2013

Eliminasi Gauss dan Bagaimana Implementasinya di Matlab




  • Pengertian Eliminasi Gauss
Eliminasi Gauss : Metode Gauss-Seidel digunakan untuk menyelesaikan sistem persamaan linear (SPL) berukuran besar dan proporsi koefisien nolnya besar, seperti sistem-sistem yang banyak ditemukan dalam sistem persamaan diferensial. Metode iterasi Gauss-Seidel dikembangkan dari gagasan metode iterasi pada solusi persamaan tak linier.
 
Teknik iterasi jarang digunakan untuk menyelesaikan SPL berukuran kecil karena metode-metode langsung seperti metode eliminasi Gauss lebih efisien daripada metode iteratif. Akan tetapi, untuk SPL berukuran besar dengan persentase elemen nol pada matriks koefisien besar, teknik iterasi lebih efisien daripada metode langsung dalam hal penggunaan memori komputer maupun waktu komputasi. Dengan metode iterasi Gauss-Seidel sesatan pembulatan dapat diperkecil karena dapat meneruskan iterasi sampai solusinya seteliti mungkin sesuai dengan batas sesatan yang diperbolehkan.

Implementasi di matlab

function [X1,g,H] = seidel(A,b,X0,T,N)
H = X0';
n = length(b);
X1 = X0 ;
for k=1:N,
for i=1:n,
S=b(i)-A(i,1:i-1)*X1(1:i-1)-A(i,i+1:n)*X0(i+1:n);
X1(i)=S/A(i,i);
end
g=abs(X1-X0);
err=norm(g);
relerr=err/(norm(X1)+eps);
X0=X1;
H=[H,X0'];
if(err<T)|(relerr<T),break,end
end

Perulangan dan Percabangan di Matlab


Control statement

               Seperti halnya bahasa pemrograman pada umumnya, kta bisa mengendalikan arah program dengan berbagai cara, berupa percabangan arah program berdasarkan kondisi tertentu, ataupun loop ( perulangan ) ketika kita melakukan iterasi.
¤ Statement if….ifelse….else….end
Merupakan statement untuk percabangan program berdasarkan satu/beberapa kondisi tertentu. Sintak yang digunakan pada MATLAB meliputi :

matlab11
matlab12
matlab13
Selain itu, dimungkinkan pula membuat pernyataan if di dalam pernyataan yang lain (disebut nested-if), misalkan :
matlab14


¤ Statement switch ….case
Sebagai alternatif dari statement if…elseif…else…end, kita bisa menggunakan statement switch. Sintaknya ialah :
matlab15
¤ Statement for…end
Statement ini digunakan untuk loop/perhitungan berulang. Sintak yg digunakan dalam MATLAB ialah :
matlab16
Adapun sintaks yang digunakan untuk membatasi loop mirip dengan yang kita pakai untuk membuat deret. Misalakan untuk menampilkan bilangan kelipatan 3 dari 30 sampai 100.
matlab17
Hasilnya ialah :
matlab18
Sementara untuk nilai inkremen  = 1, cukup dituliskan nilai awal dan akhir. Misalkan untuk mendaftar bilangan bulat dari -10 hingga 10 dan menyimpannya dalam satu vektor.
matlab19
Menghasilkan :
matlab20
Atau untuk memplot kurva parabola:
matlab21
dengan berbagai nilai parameter A, yaitu 0,5 , 1 , 1,5 , dan 2.
Dalam hal ini indeks vektor A kita iterasi dari 1 hingga indeks terakhir.

matlab22
Menghasilkan :
matlab23
Perhatikan bahwa setiap selesai satu loop, variable (dalam contoh diatas adalah i) akan otomatis mengalami inkremen. Demikian seterusnya hingga nilai_akhir ( yaitu lenght (A) ) tercapai dan program dilanjutkan ke baris selanjutnya.
¤ Statement while…end
Alternatif dari sintaks loop ialah berikut ini.

matlab24

Misalkan untuk memplot fungsi kuadrat

matlab25
dengan berbagai nilai parameter B.
matlab26
Menghasilkan :
matlab27
¤ Statement break dan return
ketika kita sudah berada dalam satu loop, kita bisa keluar dengan break tanpa menunggu nilai_akhir tercapai, atau tanpa menunggu kondisi loop tidak dipenuhi lagi. Sementara return digunakan untuk keluar dari fungsi yang sedang berjalan. Berikut ini adalah sedikit gambaran dalam kasus penentuan apakah suatu bilangan bersifat prima atau tidak.
Algoritma yang akan digunakan ialah sebagai berikut :
• Userr memasukkan satu bilangan bulat positif N sebagai argument input.
• Apabbila N bukan bilangan bulat positif, maka perhitungan tidak dilanjutkan, dan digunakan return untuk keluar.
N kita coba-coba bagi dengan 2,3,4,5,….dst. dengan loop. Apabila satu waktu ditemukan N habis terbagi, berrati N bukan bilangan prima. Selanjutnya kita langsung keluar loop dengan break dan menampilkan hasilnya di layar.
• Apabila N tidak perrnah habis dibagi oleh 2,3,4,…, N/2 (sampai loop selesai), maka N pasti bilangan prima. Selanjutnya kita tampilkan dilayar dan progam selesai.
• Untuk mengetahui apakah N habis terbagi atau tidak, kita bisa menggunakan fungsi rem(N,Pembagi).

matlab28
Simpanlah fungsi di atas dengan nama apakah_prima.m di dalam direkori Matlab\work.
Kita coba alankan fungsi di atas pada command window.
matlab29
Perlu di ingat bahwa fungsi apakah_prima.m di atas tidak memiliki arguman keluaran, karena hasil perhitungan langsung kita tampilkkan di layar menggunakan disp, sehingga hasil tersebut tidak bisa disimpan dalam variable.
¤ Statement Continue
Statement continue digunakan untuk memaksa program untuk langsung menuju iterasi berikutnya dari suatu loop, tanpa mengeksekusi command yang masih ada di bawahnnya.
Sebagai contoh kita akan membuat fungsi untuk mengumpulkan billangan tak nol dari suatu vektor.
matlab30

LANGKAH – LANGKAH MEMBUAT PROGRAM DI MATLAB

                                      Langkah – langkah membuat program di MATLAB
Pertama : Siapkan perangkat yang diperlukan.
• Siapkan PC/Laptop yang telah tersedia perangkat multimedia (SoundCard, Microphone, Headset, dan Speaker Active ).
• Sistem Operasi Windows dan Perangkat Lunak MATLAB yang dilengkapi dengan tool box DSP.
Kedua : Langkah Percobaan Menggunakan MATLAB.
• Memulai MATLAB
Perhatikan Desktop pada layar monitor PC/Laptop anda, kemudian cari dan double-click pada shortcut icon MATLAB.
matlab3
Gambar : Icon MATLAB pada Desktop PC/Laptop
Selanjutnya anda akan mendapati tampilan awal pada MATLAB.
matlab5
Gambar : Tampilan awal MATLAB
Ketiga : Cara menggunakan atau membuat Program di MATLAB langsung dari Command Window dan M file editor.
• Dari Command Window :
° Perintah di ketik perBaris,Enter, dan langsung di Eksekusi.
° Gunakan tanda keatas (↑) dan  kebawah (↓) untuk melihat perintah yang telah diketikkan sebelumnya.
° Jika telah selesai mengetikkan perintah, dan tidak diakhiri dengan tanda titik koma ( ; ) maka perintah tadi akan langsung di eksekusi atau langsung tampil (di assign ke variable ans),jika ada tanda titik koma ( ; ) maka perintah tadi tidak akan langsung di eksekusi atau di tampilkan.
° Nilai yang digunakan adalah nilai terakhir pada variable.
° Kelemahan :
» Sulit mengevaluasi perintah secara keseluruhan.
» jika ada perubahan nilai pada beberapa variabel.
Contoh Program dari Command Window :
Contoh Soal :
Hitung Luas persegi panjang berikut p= 20 dan l = 10 ?
Dalam command window dapat di tulis sebagai berikut.
matlab6matlab7
• Menggunakan M file :
° Caranya : Click file -> pilih New -> pilih Blank M-file .
matlab8
Gambar : Tampilan M file editor.
• Kemudian pada M file editor buat program yang di inginkan.
matlab9
Hasil Program di Command Window seperti berikut.

matlab10 



Tentang Matlab

I. Pengertian Matlab

            Matlab merupakan bahasa pemrograman yang hadir dengan fungsi dan karakteristik yang berbeda dengan bahasa pemrograman lain yang sudah ada lebih dahulu seperti Delphi, Basic maupun C/C++. MATLAB merupakan bahasa pemrograman dengan kemampuan tingkat tinggi dalam bidang teknik komputasi. Matlab memiliki kemampuan mengintegrasikan komputasi, visualisasi, dan pemrograman. Oleh karenanya Matlab banyak digunakan dalam bidang riset-riset yang memerlukan komputasi numerik yang komplek.
Penggunaan MATLAB meliputi bidang-bidang :
* Matematika dan Komputasi.
* Pembentukan Algorithma.
* Akusisi data.
* Pemodelan, Simulasi, dan Pembuatan Prototype.
* Analisa Data, explorasi, dan visualisasi.
* Grafik keilmuan dan rekayasa.

             Matlab merupakan kepanjangan dari Matlab Laboratory. Sesuai dengan namanya, struktur data yang terdapat dalam Matlab menggunakan matriks atau array berdimensi dua (double). Oleh karenanya penguasaan teori matriks mutlak di perlukan bagi pengguna pemula MATLAB agar mudah dalam mempelajari dan memahami operasi-operasi yang ada di matlab. Matlab hadir dalam nuansa warna yang berbeda, hal ini karena membawa keistimewaan dalam fungsi-fungsi matematika, fisika , statistik, dan visualisasi. MATLAB di kembangkan oleh MathWork, yang pada awalnya dibuat untuk memberikan kemudahan mengakses data matrik pada proyek LINPACK dan EISPACK. Saat ini matlab memiliki ratusan fungsi yang dapat digunakan sebagai problem solver mulai dari simple sampai masalah – masalah yang kompleks dari berbagai disiplin ilmu.

II. KELENGKAPAN PADA SISTEM MATLAB
                           Sebagai sebuah sistem,MATLAB tersusun dari 5 bagian utama :
1. Development Environment. Merupakan sekumpulan perangkat dan fasilitas yang membantu anda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Beberapa perangkat ini merupakan sebuah graphical user interface (GUI). Termasuk didalamnya adalah MATLAB desktop dan Command Window, command history, sebuah editor dan debugger, dan browsers untuk melihat help, workspace, file, dan serch path.
2. MATLAB Mathematical Function Library. merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar seperti : sum, sin, cos, dan complex arithmetic, sampai dengan fungsi-fungsi yang lebih kompek seperti matrix inverse, matrix eigenvalues, Bessel functions, dan fast Fourier transforms.
3. MATLAB Language. Merupakan suatu high-level matrix/array language dengan control
flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented
programming. Ini memungkinkan bagi kita untuk melakukan kedua hal baik “pemrograman dalam lingkup sederhana ” untuk mendapatkan hasil yang cepat, dan “pemrograman dalam lingkup yang lebih besar” untuk memperoleh hasil-hasil dan aplikasi yang komplek.
4. Graphics. MATLAB memiliki fasilitas untuk menampilkan vector dan matrices sebagai
suatu grafik. Didalamnya melibatkan high-levelfunctions (fungsi-fungsi level tinggi) untuk visualisasi data dua dikensi dan data tiga dimensi, image processing, animation, dan presentation graphics. Ini juga melibatkan fungsi level rendah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkan grafik mulai dari benutk yang sederhana sampai dengan tingkatan graphical user interfaces pada aplikasi MATLAB anda.
5. MATLAB Application Program Interface (API). Merupakan suatu library yang memungkinkan program yang telah anda tulis dalam bahasa C dan Fortran mampu berinterakasi dengan MATLAB. Ini melibatkan fasilitas untuk pemanggilan routines dari MATLAB (dynamic linking), pemanggilan MATLAB sebagai sebuah computational engine, dan untuk membaca dan menuliskan MAT-files.

III. MEMULAI MATLAB
Perhatikan Desktop pada layar monitor PC, mulailah MATLAB dengan melakukan double-clicking pada shortcut icon MATLAB. Selanjutnya akan muncul tampilan seperti pada Gambar berikut ini.
matlab
Gambar 1 : Jendela Utama Matlab
Pada gambar diatas, terlihat beberapa jendela yang merupakan bagian penting di dalam MATLAB, antara lain :
a. Jendela perintah (Command Window)
Pada command window, semua perintah MATLAB dituliskan dan dieksekusi. Kita dapat menulliskan perintah perhitungan sederhana, memanggil fungsi, mencari informasi tentang sebuah fungsi dengan aturan penulisannya (help), demo program, dan sebagainya.
Pada saat memulai progam atau mau membuat program di MATLAB selalu di awali dengan prompt ” >> “. Misal kita ingin mencari sin 45 derajat.
>> sin(45)
ans =
0.8509
b. Jendela ruang kerja (Workspace)
Jendela ini berisi suatu informasi berupa pemakaian variable di dalam memori matlab. Misalkan kita akan menjlahkan dua buah bilangan, maka pada command window kita dapat mengitikkan :
>> bilangan1 = 10
bilangan1=10
>> bilangan2 = 5
bilangan1=10
>> hasil= bilangan1 + bilangan2
hasil=15
Untuk melihat variabel yang aktif saat ini, kita dapat menggunakan perintah who.
>> who
Your variables are:
bilangan1 bilangan2 hasil
c. Jendela History (Command History)
Jendela ini berisi informasi tentang perintah yang pernah dituliskan sebelumnya.Kita dapat mengambil kembali perintah dengan menekan tombol panah ke atas atau mengklik perintah
pada jendela histori, kemudian melakukan copy‐paste ke command window.
matlab2
Gamabar  : Command History

Wednesday, March 20, 2013

tugas teknik komputasi 2



NAMA     : NYUDA RESIO BUDIYARTO
NIM          : 125623267
PRODI     : D3 MANAJEMENT INFORMATIKA [ A ]




1.      Tarif Surat Kabar


clear all
disp('Tarif Pemasangan Iklan Surat Kabar');
disp('**********************************');
disp ('(Minggu, Senin, Selasa, Rabu, Kamis dan Jumat, per baris Rp. 33.000,-');
disp (' Sabtu, per baris Rp. 40.000,-)');
disp(' ');
disp('Hari ke 1 = Minggu - Hari ke 2 = Senin - Hari ke 3 = Selasa');
disp('Hari ke 4 = Rabu - Hari ke 5 = Kamis - Hari ke 6 = Jumat - Hari ke 7 = Sabtu');
disp(' ');
hari = input('Pasang Iklan di Hari ke = ');
bar = input('Jumlah Baris yang Akan di Buat = ');
a = bar * 33000;
b = bar * 40000;
if hari == 1 || hari == 2 || hari == 3 || hari == 4 || hari == 5 || hari == 6;
    disp(['Total yang Harus di Bayar Adalah ', num2str(a)]);
elseif hari == 7
    disp(['Total yang Harus di Bayar Adalah ', num2str(b)]);
end














2.      Tarif PDAM


clear all
disp ('Berikut ini adalah tarif pemakaian Air PDAM Kota Surabaya');
disp ('Jumlah Pemakaian (m3)    Harga/m3');
disp ('Pemakaian I      (     <  50 m3) Rp.  200,-');
disp ('Pemakaian II     (    51 – 150 ) Rp.  500,-');
disp ('Pemakaian III    ( 151 – 300 )   Rp.  1.000,-');
disp ('Pemakaian I V    ( >  300 m3 )   Rp.  1.500,-');
disp(' ');
tot = input('jumlah pemakaian = ');
p1 = 50 * 200;
p2 = 100 * 500;
p3 = 150 * 1000;
p4 = (tot - 300) * 1500;
p4i = tot-300;
jum = p1 + p2 + p3 + p4;
disp (['Jumlah Pemakaian = ', num2str(tot), 'm3']);
disp (['Pemakaian I     (<  50 m3)         Rp.   200,-  *   50  = Rp.', num2str(p1),',-']);
disp (['Pemakaian II    (51 -  150 m3)     Rp.   500,-  *   100 = Rp.', num2str(p2),',-']);
disp (['Pemakaian III   (151 -  300 m3)    Rp.   1000,- *   150 = Rp.', num2str(p3),',-']);
disp (['Pemakaian IV    ( >  300 m3)       Rp.   1500,- *   ', num2str(p4i),' = Rp.',num2str(p4),',-']);
disp (['Biaya Total                                             = Rp.', num2str(jum), ',-']);










3. Nilai Pajak



clear all
disp('Rincian Pajak Penhasilan dan Besar Take Home Pay');
disp(' ');

peng = input('Besarnya Penghasilan = ');
p1= 0.05 * 25000000;
p2= 0.10 * 25000000;
p3= 0.15 * 50000000;
p4= 0.25 * 100000000;
p5= 0.35 * (peng-200000000);
a5=(peng-200000000);
jum=p1+p2+p3+p4+p5;
bay=peng-jum;

disp('5%      x     Rp 25000000     =   Rp  1250000');
disp('10%     x     Rp 25000000         =   Rp  2500000');
disp('15%     x     Rp 50000000         =   Rp  7500000');
disp('25%     x     Rp 100000000        =   Rp  25000000');
disp(['35%    x     Rp ',num2str(a5),'  =   Rp  ',num2str(p5)]);
disp(['Total                            =   Rp  ',num2str(jum)]);
disp(['Take Home Pay = ',num2str(peng),' – ',num2str(jum),' = Rp.  ',num2str(bay)]);
end









4.      Konversi Nilai



clear all
t1=input('Masukkan Nilai Tugas 1 = ');
t2=input('Masukkan Nilai Tugas 2 = ');
t3=input('Masukkan Nilai Tugas 3 = ');
UTC=input('Masukkan Nilai UTC  = ');
UAC=input('Masukkan Nilai UAC = ');
rata=(t1+t2+t3)/3;
nil=((rata*0.3)+(UTC*0.3)+(UAC*0.4));

if nil > 80 && nil <= 100
disp('Nilai Anda Adalah A');
elseif nil > 70 && nil <= 80
disp('Nilai Anda Adalah AB');
elseif nil > 65 && nil <= 70
disp('Nilai Anda Adalah B');
elseif nil > 60 && nil <= 65
disp('Nilai Anda Adalah BC');
elseif nil > 55 && nil <= 60
disp('Nilai Anda Adalah C');
elseif nil > 40 && nil <= 55
disp('Nilai Anda Adalah D');
elseif nil > 0  && nil <= 40
disp('Nilai Anda Adalah E');
end
 



























5.      Tarif Bioskop




clear all
disp('Harga Tiket di Surabaya City');
disp('- Senin – Kamis       : Rp 15.000,-');
disp('- Jumat s/d Minggu    : Rp 35.000,-');
disp('- Hari Libur          : Rp 35.000,-');
disp('1 = Senin - 2 = Selasa - 3 = Rabu');
disp('4 = Kamis - 5 = Jumat - 6 = Sabtu - 7 = Minggu ');
disp('8 = Hari Libur - 9 = Bukan Hari Libur');
hari = input('Masukkan Kode Hari = ');
jum = input('Jumlah Tiket = ');
lib = input('Apakah Hari Libur = ');
a = jum * 15000;
b = jum * 35000;
if hari == 1 && lib ~= 8 || hari == 2 && lib ~= 8 || hari == 3 && lib ~= 8 || hari == 4 && lib ~= 8
    disp(['Total yang Harus di Bayar Adalah ', num2str(a)]);
elseif hari == 1 && lib == 8 || hari == 2 && lib == 8 || hari == 3 && lib == 8 || hari == 4 && lib == 8
    disp(['Total yang Harus di Bayar Adalah ', num2str(b)]);
elseif hari == 5 ||  hari == 6 || hari == 7
    disp(['Total yang Harus di Bayar Adalah ', num2str(b)]);
end