MODUL PRAKTIKUM ALGORITMA DAN KOMPUTASI NUMERIK
LABORATORIUM KOMPUTASI PROGRAM STUDI FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS PADJADJARAN 2019
KATA PENGANTAR Diktat ini disusun untuk pedoman dalam melaksanakan praktikum Algoritma dan Komputasi Numerik di Program Studi Fisika FMIPA Universitas Padjadjaran, khususnya untuk mahasiswa Fisika semester empat. Diktat ini terdiri dari duabelas modul yang terdiri dari 3 modul pengenalan matlab dan 8 modul metoda numerik, ditambah dengan satu modul untuk proyek mandiri dimana proyek tersebut merupakan penerapan pe nerapan dari seluruh metode yang telah dipelajari. Diharapkan dengan adanya diktat ini mahasiswa dapat mempelajari metode numerik dengan baik. Kami menyadari bahwa diktat ini masih jauh dari kata sempurna. Oleh karena itu, kami mengharapkan kritik dan saran yang membangun untuk perbaikan diktat ini menjadi lebih baik. Semoga diktat inidapat bermanfaat untuk perkembangan ilmu komputasi di Program Studi Fisika.
Jatinangor, Februari 2019
Dr. Sahrul Hidayat
DAFTAR ISI KATA PENGANTAR ..........................................................................................................................
2
DAFTAR ISI ........................................................................................................................................
1
Modul 1. ...............................................................................................................................................
4
1.1.
Tujuan ..................................................................................................................................
4
1.2.
Percobaan ............................................................................................................................
4
1.3.
Tugas Pendahuluan ........................................................................................................... 10
1.4.
Tugas Akhir .......................................................................................................................
10
Modul – 2. 2. ..........................................................................................................................................
11
2.1.
Tujuan ................................................................................................................................ 11
2.2.
Percobaan ..........................................................................................................................
2.3.
Tugas Pendahuluan ........................................................................................................... 13
2.4.
Tugas Akhir .......................................................................................................................
13
Modul – 3 3 ...........................................................................................................................................
15
11
3.1.
Tujuan ................................................................................................................................ 15
3.2.
Percobaan ..........................................................................................................................
3.3.
Tugas Pendahuluan ........................................................................................................... 18
3.4.
Tugas Akhir .......................................................................................................................
18
Modul – 4 4 ...........................................................................................................................................
20
15
4.1.
Tujuan ................................................................................................................................ 20
4.2.
Teori ...................................................................................................................................
20
4.2.1.
Metode Tertutup .......................................................................................................
20
4.2.2.
Metode Terbuka ........................................................................................................
21
4.3.
Percobaan ..........................................................................................................................
22
4.4.
Tugas Pendahuluan ........................................................................................................... 23
4.5.
Tugas Akhir .......................................................................................................................
23
Modul – 5 5 ...........................................................................................................................................
24
5.1.
Tujuan ................................................................................................................................ 24
5.2.
Teori ...................................................................................................................................
24
5.2.1.
Metode Pangkat (Power Method) ............................................................................
5.2.2.
Metode Pangkat Inversi (Invers Power Method) ............................ ........................ 26
5.2.3.
Spektral Radius .........................................................................................................
Diktat Praktikum Algoritma dan Komputasi Numerik N umerik – LABKOM LABKOM 2019
24
26
1
5.3.
Percobaan ..........................................................................................................................
5.4.
Tugas Pendahuluan ........................................................................................................... 27
5.5.
Tugas Akhir .......................................................................................................................
27
Modul – 6 6 ...........................................................................................................................................
28
26
6.1.
Tujuan ................................................................................................................................ 28
6.2.
Teori ...................................................................................................................................
28
6.2.1.
Metode Iterasi Jacobi ................................................................................................ 29
6.2.2.
Metode Iterasi Gauss-Seidel ..................................................................................... 29
6.2.3.
Successive Over Relaxation (SOR) ...........................................................................
30
6.3.
Percobaan ..........................................................................................................................
30
6.4.
Tugas Pendahuluan ........................................................................................................... 30
6.5.
Tugas Akhir .......................................................................................................................
31
Modul – 7 7 ...........................................................................................................................................
32
7.1.
Tujuan ................................................................................................................................ 32
7.2.
Teori ...................................................................................................................................
32
7.2.1.
Interpolasi Polinomial dan Polinomial Taylor ........................................................ 33
7.2.2.
Interpolasi Lagrange ................................................................................................. 33
7.3.
Percobaan ..........................................................................................................................
7.4.
Tugas Pendahuluan ........................................................................................................... 34
7.5.
Tugas Akhir .......................................................................................................................
34
Modul – 8 8 ...........................................................................................................................................
35
34
8.1.
Tujuan ................................................................................................................................ 35
8.2.
Teori ...................................................................................................................................
35
8.3.
Percobaan ..........................................................................................................................
36
8.4.
Tugas Pendahuluan ........................................................................................................... 37
8.5.
Tugas Akhir .......................................................................................................................
37
Modul – 9 9 ...........................................................................................................................................
38
9.1.
Tujuan ................................................................................................................................ 38
9.2.
Teori ...................................................................................................................................
38
9.2.1.
Metode Trapesium ....................................................................................................
38
9.2.2.
Metode Simpson ........................................................................................................
38
9.3.
Percobaan ..........................................................................................................................
39
9.4.
Tugas Pendahuluan ........................................................................................................... 39
9.5.
Tugas Akhir .......................................................................................................................
Diktat Praktikum Algoritma dan Komputasi Numerik N umerik – LABKOM LABKOM 2019
39
2
Modul – 10 .........................................................................................................................................
41
10.1.
Tujuan ............................................................................................................................
41
10.2.
Teori ...............................................................................................................................
41
10.3.
Percobaan ......................................................................................................................
42
10.4.
Tugas Pendahuluan ....................................................................................................... 42
10.5.
Tugas Akhir ...................................................................................................................
42
Modul – 11 .........................................................................................................................................
43
11.1.
Tujuan ............................................................................................................................
43
11.2.
Teori ...............................................................................................................................
43
11.2.1.
Metode Forward Euler .............................................................................................
43
11.2.2.
Metode Runge-Kutta Orde Empat ...........................................................................
44
11.3.
Percobaan ......................................................................................................................
44
11.4.
Tugas Pendahuluan ....................................................................................................... 45
11.5.
Tugas Akhir ...................................................................................................................
45
Modul – 12 .........................................................................................................................................
46
12.1.
Tujuan ............................................................................................................................
46
12.2.
Percobaan ......................................................................................................................
46
Daftar Pustaka ..................................................................................................................................... 47
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
3
Modul 1 Pengenalan Matlab 1.1. Tujuan
Dalam modul ini mahasiswa diharapkan mengetahui dan memahami konsep-konsep dasar pemrograman dengan matlab yang diindikasikan dengan kemampuan membuat program sederhana, mampu menggunakan statement input dan output , serta mampu membuat visualisasi grafik dan animasi sederhana. 1.2. Percobaan a. Pengenalan windows matlab
Ketika memulai menjalankan MATLAB, window utama akan terlihat seperti gambar berikut:
Keterangan : o o o o
Current Folder – untuk mengakses file-file pada direktori saat ini. Command Window – untuk menuliskan perintah (sintak program). Workspace – untuk mengeksplorasi data yang dibuat atau diimport dari file lain. Command History – untuk melihat atau menjalankan kembali perintah yang pernah
dimasukkan sebelumnya pada command line. Dalam melakukan pemrograman menggunakan bahasa MATLAB, Anda dapat menggunakan beberapa cara sebagai berikut : Menggunakan Command Window
Cara ini adalah yang paling sering dilakukan oleh pemula. Perintah akan dieksekusi secara langsung baris perbaris. Untuk membuat program, Anda hanya perlu mengetikkan perintah pada prompt MATLAB dalam Command Window Contoh:
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
4
>> p = 10; >> l = 7; >> luas = p * l
Tekan tombol enter kemudian ketikkan : Tekan tombol enter kemudian ketikkan : Hasil akhir :
>> luas = 70 >> Jika Anda mengakhiri perintah dengan tanda (;) titik koma, MATLAB akan melakukan komputasi namun tidak menampilkan display output pada Command Window. Anda dapat memanggil kembali perintah sebelumnya dengan menekan tombol up dan down-arrow ( ↑ dan ↓). Jika perhitungan menggunakan langkah-langkah yang cukup panjang, maka menggunakan Command Window menjadi kurang efisien. Menggunakan M-File
Tekan enter, selanjutnya akan muncul MATLAB editor. Disini Anda dapat mengetikkan program yang akan dijalankan. % MATLAB programming % by : (tuliskan nama anda) clear all; clc; disp(‘Selamat Pagi Fisika! Selamat belajar MATLAB’); p = 10; l = 7; area = p * l; disp([‘Luas area : ‘ num2str(area)]);
Langkah selanjutnya adalah menyimpan file tersebut, misalnya simpan dengan nama latihan1.m. Untuk menjalankannya, buka kembali Command Window, kemudian ketikkan nama file (tanpa ekstensi) sebagai berikut : >> latihan1 Tekan enter. Program Anda selesai dijalankan b. Sintak Dasar pada MATLAB
Seperti bahasa pemrograman lainnya, MATLAB juga memiliki sintak tersendiri. Pada MATLAB hanya terdapat dua tipe data, yaitu numerik dan string. Tidak dibutuhkan pendeklarasian secara eksplisit karena tipe data akan dikenali oleh MATLAB secara otomatis. Namun demikian terdapat beberapa hal penting yang harus diperhatikan dalam penulisan sintak: • Penamaan variabel bersifat case sensitive. Penamaan variabel harus selalu diawali dengan huruf, tidak boleh dengan simbol atau • angka. Penamaan variabel dan M-File tidak boleh sama dengan nama-nama default yang • dikenal MATLAB. Cara Penulisan Variabel
Data Numerik Tunggal: x = 20; Data Numerik Berdimensi Banyak (Array/Matrik): x = [ 20 11; 20 13 ]; Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
5
Data String: x = ‘bonjour’; Operasi dan Fungsi-Fungsi Matematika
Berikut ini adalah tabel operator matematika yang digunakan dalam pemrograman MATLAB: Operasi Simbol Contoh Penjumlahan + X+Y Pengurangan X – Y Perkalian * X*Y Pembagian / atau \ X / Y atau X \ Y Perpangkatan ^ X^Y Selain itu MATLAB juga menyediakan fungsi-fungsi matematika, di antaranya: Fungsi Keterangan exp Eksponensial log Logaritma natural log10 Logaritma basis 10 log2 Logaritma basis 2 sqrt Akar pangkat cos Kosinus sin Sinus tan Tangen Input dan Output
Untuk meminta input dari user, MATLAB menyediakan fungsi input. Contoh sintak penulisannya sebagai berikut: rho = input('Masukkan nilai hambatan: ') kalimat = input('Masukkan kata/kalimat: ','s') Baris pertama digunakan jika input yang diharapkan berupa angka sedangkan baris kedua digunakan jika input yang diharapkan berupa string. Sedangkan untuk menampilkan output program ke layar, MATLAB menyediakan fungsi disp dan fprintf. Sintak penulisannya sebagai berikut: a=input ('masukkan panjang sisi bujur sangkar: '); luas=a*a; disp ('Luas persegi adalah: '); disp (luas)
Atau: a=input ('masukkan panjang sisi bujur sangkar: '); luas=a*a; fprintf('Luas bujur sangkar adalah: %5.2f \n', luas) Kontrol Aliran a. Kondisional dengan (if … elseif … else … end)
Kondisional digunakan untuk mengontrol alur suatu program. Kondisional if-else sering digunakan di dalam program. Cara penulisannya sebagai berikut:
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
6
if syarat1 perintah-perintah elseif syarat2 perintah-perintah else perintah-perintah end
Contoh 1: a=input(Masukkan bilangan a: '); if rem(a,2) == 0 disp('a adalah bilangan genap') end
Contoh 2: n=input('Masukkan nilai n: '); if n < 0 % jika n negatif disp('Masukan harus bilangan positif'); elseif rem(n,2) == 0 % jika n posisif dan bulat A = n/2; fprintf('A= %3.0f \n', A); else A = (n+1)/2; % jika n positif dan ganjil fprintf('A= %3.0f \n', A); end b. Perulangan dengan (for … end)
Sintak ini digunakan untuk melakukan pengulangan proses yang telah diketahui banyaknya perulangan yang harus dijalankan. Cara penulisannya sebagai berikut: for variabel = mulai: interval: akhir perintah-perintah end
Contoh : N=5; for i=1:N fprintf ('%i. Saya mahasiswa Fisika \n',i); end
c. Perulangan dengan (while … end)
Sintak ini digunakan untuk melakukan pengulangan proses yang tidak diketahui banyaknya perulangan yang harus dijalankan. Yang diketahui hanyalah syarat atau kondisi kapan program akan tetap dijalankan. Cara penulisannya sebagai berikut: while syarat perintah-perintah end
Cara penulisan syarat, menggunakan ekspresi matematika yang meliputi : == sama dengan ~= tidak sama dengan
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
7
> lebih besar dari >= lebih besar atau sama dengan < lebih kecil dari <= lebih kecil atau sama dengan Sedangkan untuk mengkombinasikan menggunakan operator logika berikut ini : & and | or Contoh : %Program mencetak deret bilangan i=1; while(i<=6) x=1; while(x<=i) fprintf('%i',x); x=x+1; end fprintf('\n'); i=i+1; end
d. K ondisional dengan (switch … case … otherwise … end)
Penulisan sintak switch-case sebagai berikut : switch variabel case nilai1 perintah-perintah case nilai2 perintah-perintah . . . otherwise perintah-perintah end
Contoh : fprintf('Pilih salah satu program..\n'); fprintf('1: menghitung luas bujur sangkar: \n '); fprintf('2: menghitung luas persegi panjang: \n '); fprintf('3: menghitung luas persegi panjang: \n '); fprintf('4: menghitung luas persegi panjang: \n '); no=input('Anda ingin menghitung luas 1,2,3 atau 4 \n'); switch no case 1 a=input('masukkan panjang sisi bujur sangkar:'); luas=a*a; fprintf('Luas bujur sangkar adalah %5.2f \n',luas); case {2,3,4} a=input('masukkan panjang persegi panjang: '); b=input('masukkan lebar persegi panjang: '); luas=a*b;
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
8
fprintf('Luas persegi panjang adalah %5.2f',luas); otherwise fprintf('Ulangi pilihan yang ada...!!') end
e. Pernyataan continue
Pernyataan continue berfungsi melewatkan kendali ke iterasi berikutnya di dalam perulangan for maupun while. N=20; for i=1:N if (i<5) continue; end fprintf('%i. Saya mahasiswa Fisika \n',i); end
f. Pernyataan break
Pernyataan break berfungsi untuk menghentikan eksekusi loop for maupun loop while. N=20; for i=1:N if (i>5) break; end fprintf('%i. Saya mahasiswa Fisika \n',i); end
g. Interaksi dengan File MAT
File dengan ekstensi MAT adalah file biner yang hanya dapat dibuka oleh MATLAB. Jenis file MAT dapat menyimpan informasi data berupa variabel beserta nilai-nilainya tanpa merepotkan Anda untuk mengatur format datanya. Satu file MAT dapat menyimpan beberapa variabel sekaligus beserta nilainya. Berikut ini adalah sintak untuk menggunakan fungsi save: save [nama_file] var1 var2;
Nama_file diisi dengan nama file yang akan kita simpan, diketikkan tanpa ekstensi. File tersebut akan otomatis berekstensi MAT dan menyimpan data nilai-nilai var1 dan var2. Contoh: clear all; clc; X = rand(20,20); Y = rand(10,10); save datarandom X Y; disp('Data telah disimpan!');
Setelah script tersebut dijalankan maka pada directori aktif saat ini akan ada file baru dengan nama datarandom.mat. Untuk mengambil kembali data yang telah disimpan tadi, gunakan fungsi load dengan sintak sebagai berikut: load datarandom.mat disp(X)
h. Interaksi dengan File Teks
Untuk menyimpan dalam format teks ascii menggunakan sintak sebagai berikut : save nama_file variabel – ascii
Contoh:
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
9
disp('Program save file txt'); A = input('masukkan nama depan : ','s'); B = input('masukkan nama belakang : ','s'); save namadepan.txt A -ascii; save namabelakang.txt B -ascii; disp('Data telah disimpan!');
Untuk memanggil dan membaca file script nya sama seperti membaca file mat. i. Interaksi dengan Ms. Excel
Anda dapat membaca sebuah file Ms. Excel dari MATLAB dengan cara sebagai berikut: num = xlsread(filename)
Sintak tersebut bertujuan untuk membaca data dari worksheet pertama pada file Ms. Excel dengan nama sesuai dengan filename dan mengembalikan data numerik yang akan disimpan pada array num. Apabila yang akan dibaca adalah worksheet tertentu maka sintaknya sebagai berikut: num = xlsread(filename,sheet)
Untuk menuliskan data pada sebuah file Ms. Excel menggunakan cara sebagai berikut: xlswrite('filename',A)
Sintak tersebut bertujuan untuk menuliskan array A ke dalam worksheet pertama pada file Excel, dimulai pada cell A1. Apabila akan dituliskan bukan pada worksheet pertama maka menggunakan sintak sebagai berikut : xlswrite('filename',A,sheet)
Contoh: d = {'waktu', 'suhu'; 1 23; 2 25; 3 27}; xlswrite('contoh.xls',d);
Untuk membaca file Excel yang telah anda simpan, ketikan perintah berikut: A = xlsread('contoh.xls')
Jika muncul error, perhatikan direktori tempat anda menyimpan file, pastikan di direktori Document. 1.3. Tugas Pendahuluan
1. Pelajari program yang dituliskan pada Modul 1 dan cobalah jalankan setiap contoh tersebut. 2. Buatlah Algoritma ( flow chart ) dari Tugas membuat program pada Tugas Akhir di bawah 1.4. Tugas Akhir
1. Buatlah script matlab yang meminta inputan dari user untuk menghitung luas dan volume dari bangun ruang (Balok, Tabung dan kerucut). Contoh tampilan: Pilihan bangun ruang : 1. Balok 2. Tabung 3. Kerucut (jika 1) Masukkan Panjang, lebar dan tinggi Balok:
2. Buatlah program untuk menampilkan solusi dari persamaan kuadrat ( ax2 + bx + c ) dengan meng-inputkan koefisien a, b dan c. Solusi terdiri dari 3 kemungkinan: akar kembar, akar berbeda dan solusi komplek. 3. Buatlah algoritma dan program untuk menampilkan Tabel perkalian dari 1 sampai 100 dengan menggunakan perulangan.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
10
Modul – 2 Array dan Matrik
2.1. Tujuan
Dalam modul ini mahasiswa diharapkan dapat mengoperasikan array dalam berbagai macam pengolahan data matriks. 2.2. Percobaan
Untuk memasukkan matrik pada MATLAB, ada beberapa cara yang dapat dilakukan : • Memasukkan secara langsung dengan menuliskan semua elemennya. • Meng-load matrik dari file eksternal • Meng-generate matrik menggunakan fungsi-fungsi built-in • Membuat matrik dengan fungsi yang Anda buat sendiri dan disimpan dalam file Untuk membuat array dengan empat elemen pada satu baris, setiap elemen harus dipisahkan dengan koma (,) atau spasi. Contohnya sebagai berikut : A = [1 2 3 4]
Untuk membuat matrik yang memiliki beberapa baris, maka setiap barisnya harus dipisahkan dengan tanda titik koma (;). Contohnya sebagai berikut : A = [1 2 3; 4 5 6; 7 8 10]
Selain itu MATLAB juga menyediakan empat buah fungsi untuk membuat matrik : • zeros : semua elemennya bernilai nol. • ones : semua elemennya bernilai satu. • rand : elemen-elemennya bernilai random dengan distribusi uniform. randn : elemen-elemennya bernilai random dengan distribusi normal. • Sebagai contoh perintah untuk menampilkan matrik berukuran 5x1 dengan elemennya semua bernilai nol : Z = zeros(5,1)
Sedangkan contoh untuk menampilkan matrik berukuran 3x3 dengan elemen-elemennya dibangkitkan secara random : R = rand(3,3)
a. Operasi-Operasi pada Array dan Matrik
MATLAB memungkinkan pemrosesan semua nilai pada sebuah matrik menggunakan sebuah operator matematika atau fungsi tunggal. A = [1 2 3; 4 5 6; 7 8 10]; A + 10 Untuk melakukan transpose pada sebuah matrik, gunakan tanda petik atas (‘) : A’
Untuk melakukan perkalian pada matrik, gunakan operator (*). Sebagai contoh, sebuah matrik apabila dikalikan dengan hasil inversnya maka akan menghasilkan matrik identitas : P = A * inv(A)
Untuk melakukan perkalian elemen by elemen pada matrik (bukan perkalian matrik), gunakan operator (.*) : P = A .* A
Berikut ini daftar operator pada array :
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
11
Operator + .* ./ .\ .^
Deskripsi Penambahan Pengurangan Perkalian per elemen Pembagian per elemen Pembagian kiri per elemen Perpangkatan per elemen
Operasi pada array sangat bermanfaat untuk pembentukan tabel. Misal diberikan n sebuah vector kolom sebagai berikut : n = (0:9) ';
kemudian fungsi berikut ini akan membuat sebuah table yang berisi bilangan kuadrat dan perpangkatan dari 2 : B = [n n.^2 2.^n]
Selain operasi-operasi yang telah dijelaskan di atas, MATLAB memiliki beberapa fungsi yang sering digunakan untuk operasi pada matrik, di antaranya : Fungsi diag inv size sort
Deskripsi Untuk mengambil elemen diagonal pada sebuah matrik Untuk melakukan operasi inverse pada matrik Untuk mengetahui dimensi sebuah matrik Untuk melakukan pengurutan pada matrik
Untuk mengetahui lebih detail cara penggunaan dari masing-masing fungsi tersebut, pada Command Window ketikkan : help nama_fungsi
b. Konkatenasi
Konkatenasi merupakan proses penggabungan dua buah array sehingga diperoleh sebuah array dengan ukuran yang lebih besar. Tanda [ ] merupakan operator untuk konkatenasi. A = [1 2 3; 4 5 6; 7 8 10]; B = [A, A]
Operasi di atas disebut dengan konkatenasi horizontal dan dapat dilakukan apabila banyaknya baris kedua array sama. Selain itu, apabila banyaknya kolom pada dua buah array sama maka dapat dilakukan operasi konkatenasi vertikal sebagai berikut : B = [A; A]
c. Indeks pada Array
Setiap variabel pada MATLAB merupakan sebuah array yang dapat terdiri atas beberapa bilangan. Jika Anda ingin mengakses sebuah elemen pada array, maka harus menggunakan indeks. Sebagai contoh, diberikan matrik magic square 4x4 sebagai berikut : A = magic(4)
Terdapat dua buah cara untuk mengakses suatu elemen tertentu pada sebuah array. Cara paling umum adalah dengan menyebutkan baris dan juga kolomnya seperti contoh berikut : A(3,4)
Cara kedua adalah dengan melakukan iterasi ke bawah pada setiap kolom secara berurutan : A(15)
Anda juga dapat menambahkan satu elemen baru pada matrik di luar ukuran dimensi saat ini. Secara otomatis ukuran matrik akan bertambah sehingga dapat menampung elemen tersebut. Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
12
A(4,5) = 17
Untuk mengakses beberapa elemen pada array, gunakan operator (:) yang memungkinkan Anda untuk menspesifikasikan rentang dalam format start:end. Sebagai contoh, berikut ini akan ditampilkan tiga elemen pertama pada kolom ke-2 matrik A : A(1:3,2)
Jika tidak dituliskan nilai awal maupun nilai akhir, maka penggunaan tanda (:) akan menspesifikasikan semua elemen pada baris atau kolom yang dimaksud. Sebagai contoh, berikut ini akan ditampilkan semua elemen pada baris ke-3 matrik A : A(3,:)
d. Menghapus Baris dan Kolom
Anda dapat menghapus baris atau kolom dari sebuah matrik dengan menggunakan sepasang tanda kurung siku ([]). Misalkan terdapat matrik X sebagai berikut : X = magic(4);
Kemudian akan dihapus kolom kedua dari matrik X, menggunakan : X(:,2) = []
Untuk menghapus baris pertama dari matrik X, menggunakan : X(1,:) = []
Jika yang ingin dihapus hanya satu buah elemen saja, maka hasilnya bukan lagi sebuah matrik, sehingga ekspresi seperti berikut ini : X(1,2) = []
akan menghasilkan error. 2.3. Tugas Pendahuluan
1. Pelajari program yang dituliskan pada Modul 2 dan cobalah jalankan setiap contoh tersebut. 2. Pelajari dan jelaskan fungsi dari beberapa script matlab berikut: pascal, round, ceil, fix, floor, eye, eig, repmat 2.4. Tugas Akhir
1. Buat program untuk menginput angka sebanyak N, dimana N ditentukan oleh inputan user. Output program adalah bilangan maksimum, minimum dan rata-rata dari angkaangka tersebut. (Gunakan array untuk menyimpan data angka-angka tersebut) Contoh: input N: 4 angka[1]: 3 angka[2]: 11 angka[3]: 8 angka[4]: -5 Nilai maksimum= 11 Nilai minimum=-5 Rata-rata= 4.25
2. Buatlah program untuk menyimpan inputan berupa N buah bilangan integer ke dalam array, kemudian dari bilangan-bilangan yang disimpan tersebut dapat ditampilkan bilangan-bilangan yang habis dibagi 4, bilangan ganjil, bilangan genap dan bilangan prima. Contoh: input: 1 1 2 2 8 6 3 4 2 18 16 7 4
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
13
output bilangan yang habis dibagi 4: 8 4 16 4 output bilangan ganjil: 1 1 3 7 output bilangan genap: 2 2 8 6 4 2 18 16 4 output bilangan prima: 3 7
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
14
Modul – 3 Visualisasi Data 3.1. Tujuan
Mahasiswa diharapkan mampu menampilkan data dalam bentuk grafik dengan beragam jenis tampilan 1D, 2D dan 3D. 3.2. Percobaan
Terdapat beberapa bentuk dari fungsi plot, tergantung pada argumen inputnya. • Jika y adalah sebuah vector, maka sintak plot(y) akan menghasilkan sebuah grafik linear dengan sumbu x merupakan nilai index dari elemen y, sedangkan sumbu y merupakan nilai y itu sendiri. Jika terdapat dua vector sebagai argumennya, maka sintak plot(x,y) akan • menghasilkan grafik y versus x. Sebagai contoh, sebuah vektor x bernilai antara 0 sampai dengan 2 , hitung nilai sinusnya, kemudian plot hasilnya : x = 0: 0.01: 2*pi; y = sin(x); plot(x,y)
Tambahkan label axis dan judul grafik : xlabel('x = 0 s.d 2\pi') ylabel('sinus dari x') title('Plot grafik sinus','FontSize',12) Karakter \ pi digunakan untuk membuat simbol π dan properti FontSize digunakan untuk
memperbesar ukuran text yang digunakan untuk judul. Hasilnya sebagai berikut :
a. Membuat Plot Multiple Dataset pada Satu Gambar
Beberapa pasangan argumen x-y akan menghasilkan beberapa grafik dengan menggunakan sekali pemanggilan fungsi plot. MATLAB akan menggunakan warna yang berbeda untuk masing-masing garis. Sebagai contoh, perintah berikut ini akan melakukan plot terhadap tiga buah fungsi yang berbeda : x = 0:pi/100:2*pi; y = sin(x); y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3) legend('sin(x)','sin(x-.25)','sin(x-.5)')
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
15
Tampilannya adalah sebagai berikut:
b. Mengubah Bentuk dan Warna Garis
Anda dapat mengubah warna, bentuk garis, dan juga marker (seperti tanda plus dan lingkaran) ketika Anda melakukan plot data menggunakan perintah berikut ini : plot(x,y,'color_style_marker')
color_style_marker merupakan sebuah string yang terdiri atas satu sampai empat buah karakter yang merepresentasikan warna, bentuk garis, dan tipe marker. Sebagai contoh : plot(x,y,'r:+')
Perintah di atas akan melakukan plot data menggunakan dotted line berwarna merah dan menempatkan sebuah marker + pada setiap titik data. Berikut ini tabel simbol yang dapat digunakan:
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
16
c. Menampilkan Beberapa Plot dalam Satu Figure
Perintah subplot memungkinkan Anda untuk menampilkan beberapa plot pada sebuah window yang sama. Perintah berikut ini, subplot(m,n,p)
akan membagi figure window ke dalam matrik subplot berukuran mxn dan memilih subplot ke-p untuk plot saat ini. Penomoran plot dimulai dari baris pertama pada figure window, kemudian baris kedua, dst. Sebagai contoh, perintah berikut ini akan melakukan plot data ke dalam empat buah bagian subregion pada figure window: t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X) subplot(2,2,2); mesh(Y) subplot(2,2,3); mesh(Z) subplot(2,2,4); mesh(X,Y,Z)
d. Visualisasi Data 2D dengan Fungsi Bar
Fungsi bar digunakan untuk menampilkan data dalam grafi k batang. Sintak penulisannya sebagai berikut : bar(x,y);
Contoh: sudut = [0:5:180]; y = cos(sudut*pi/180); bar(sudut,y) title('Grafik Cosinus'); xlabel('Sudut dalam derajat'); ylabel('Nilai cosinus');
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
17
e. Visualisasi Data 3D
Plot tiga dimensi biasanya digunakan untuk menampilkan suatu permukaaan yang didefinisikan oleh fungsi dengan dua buah variabel, z = f(x,y). Untuk memperoleh z, pertamatama buatlah sekumpulan titik (x,y) pada domain fungsi menggunakan meshgrid. [X,Y] = meshgrid(-2:.2:2); Z = X .* exp(-X.^2 - Y.^2);
Kemudian buat plot permukaannya. surf(X,Y,Z)
Selain surf, dapat juga menggunakan fungsi mesh untuk menampilkan data dalam bentuk permukaan 3D. Cirinya berupa grid-grid yang menghubungkan 4 titik terdekat dalam ruang 3D. Sintak penulisannya sebagai berikut : mesh(Z)
Dapat juga menggunakan pcolor untuk menampilkan data 3D dalam bentuk permukaan 2D (tampak atas). Cirinya berupa grid berwarna yang menunjukkan bobot nilai tertentu. Sintak penulisannya sebagai berikut : pcolor(Z) Fungsi contourf digunakan untuk membuat garis kontur dari data 3D. Garis-garis kontur ini
dibuat dengan teknik interpolasi dari titik-titik terdekat dan pada setiap level kontur diberikan warna sesuai bobot garis konturnya. Sintak penulisannya sebagai berikut : obj_handle = contourf(Z) clabel(obj_handle)
obj_handle adalah object handle yang dibutuhkan untuk menampilkan label pada garis kontur. Hasilnya sebagai berikut :
3.3. Tugas Pendahuluan
1. Pelajari contoh-contoh pada latihan di atas 2. Pelajari dan cobalah fungsi marker untuk menghasilkan plot grafik dengan beragam variasi warna dan style (seperti di tuliskan di table di atas). 3.4. Tugas Akhir
Berikut ini adalah data nilai matakuliah pemrograman dari sekelompok mahasiswa :
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
18
No mhs
Kuis
UTS
UAS
81 65 86 1 90 75 78 2 91 93 79 3 63 67 54 4 50 75 48 5 27 74 44 6 7 54 39 64 8 95 65 70 9 96 71 75 10 15 70 27 11 97 75 67 12 95 72 65 13 48 46 32 14 80 97 88 15 14 28 49 16 42 69 59 17 91 85 68 18 79 95 58 19 95 68 66 20 80 76 86 Salinlah data tersebut ke dalam file excel, kemudian bacalah file excel tersebut menggunakan MATLAB. Hitunglah nilai akhir tiap mahasiswa dengan rumus sebagai berikut :
Nilai akhir = 40% x UTS + 40% x UAS + 20% x Kuis
a. Plot grafik nilai mahasiswa, sumbu Y terdiri dari nilai kuis, UTS dan UAS, sedangkan sumbu X menyatakan no. mahasiswa b. Laporkan nilai akhir mahasiswa dalam bentuk grafik batang, sumbu x menyatakan no. mahasiswa dan sumbu y menyatakan nilai akhir dari mahasiswa
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
19
Modul – 4 Solusi Persamaan Non-linier 4.1. Tujuan
Mahasiswa diharapkan mampu menemukan solusi persamaan non-linier menggunakan metode terbuka dan tertutup, mengetahui bagaimana menentukan laju konvergensi setiap metode, serta mengetahui perbedaan dan cara penggunaan setiap metode. 4.2. Teori
Persamaan non-linier banyak digunakan dalam bidang teknik maupun sains. Secara umum, semua persamaan pada permasalahan dalam bentuk ini akan diubah menjadi bentuk
0
, dengan f yang merupakan bentuk fungsi non-linier dari variabel x. Contoh dari
bentuk fungsi non-linier adalah : a. b.
20 .2 0 0
Bentuk umum dari
merupakan persamaan dengan variabel tunggal yaitu
.
Akan tetapi, persamaan non-linier juga dapat terdiri dari variabel ganda (multivariabel) atau lebih dari satu variabel. Nilai dari x pada persamaan
0
merupakan penyelesaian dari
persamaan tersebut yang kemudian disebut sebagai akar persamaan. Sebagai contoh, bentuk persamaan kuadrat
0 ±√ , 2 4
mempunyai akar-akar persamaan dengan
bentuk penyelesaian secara analitis dengan menggunakan Persamaan 2.1
2.1
Metode penyelesaian akar-akar persamaan secara komputasi numerik dapat dibedakan menjadi dua macam, yaitu metode tertutup dan metode terbuka. Setiap metode memiliki karakteristik penggunaan masing-masing serta memiliki kelebihan tersendiri. 4.2.1. Metode Tertutup
Salah satu jenis dari metode tertutup adalah metode bisection. Tahap pertama metode bisection adalah menetapkan nilai sembarang a dan b sebagai batas segmen nilai fungsi yang
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
20
× <0
dicari. Batasan a dan b memberikan harga bagi fungsi selanjutnya adalah memeriksa apakah
untuk
dan
. Langkah
. Apabila terpenuhi syarat tersebut,
berarti terdapat akar fungsi dalam segmen tinjauan.
+ <10− × <0 × >0 <10− ≈0 Dengan rumusan
, diperiksa apakah nilai mutlak
simpangan kesalahan). Jika benar, nilai
adalah solusi yang dicari. Jika tidak, ditetapkan
batasan baru dengan mengganti nilai bila
(batas
apabila
, dan mengganti
. Begitu seterusnya hingga kondisi
terpenuhi.
Dalam proses perulangan, khususnya menentukan nilai
, suatu kriteria untuk
menghentikan proses tersebut akan diperlukan. Kriteria tersebut antara lain : 1.
Jumlah iterasi maksimum.
2.
Tingkat kesalahan maksimum atau nilai
minimum.
4.2.2. Metode Terbuka a. Metode Iterasi Titik Tetap
Metode ini menawarkan pencarian akar-akar persamaan dari persamaan non-linier
0 +
dengan metode iterasi. Tahap pertama metode ini adalah menyusun persamaan
0
menjadi bentuk
sebuah nilai awal sehingga
. Lalu, bentuklah menjadi prosedur iterasi
, lalu hitung nilai
dan
,
,
dan tebaklah
, …, yang akan konvergen ke akar sejati
atau diperoleh hasil yang divergen. Kondisi berhentinya
iterasi dinyatakan bila memenuhi Persamaan 2.2 atau Persamaan 2.3 jika menggunakan perumusan kesalahan relatif.
|+ | < ++< Sebagai contoh, untuk mendapatkan akar persamaan
3200
pertama yang dilakukan adalah mengubah persamaan dalam bentuk dapat dilakukan melalui empat cara : 1. 2.
2.2 2.3 , langkah
. Perubahan ini
/ 320 20/3
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
21
20/ 3/ 3 3200
3. 4.
Semua persamaan di atas harus diuji secara numerik yang akan menghasilkan solusi yang sama dengan persamaan
.
b. Metode Newton-Raphson
Salah satucara untuk menentukan akar persamaan non-linier adalah dengan menggunakan metode Newton-Raphson yang dasarnya menggunakan uraian deret Taylor. Pada mulanya, nilai awal
akan diperkirakan, kemudian titik tersebut dipotongkan dengan
kurva dari persamaan non-linier yang diketahui. Selanjutnya garis singgung ditarik dari titik tersebut sehingga memotong sumbu x di titik
+
. Garis singgung tersebut pada dasarnya
merupakan tangen atau slope pada titik yang ditentukan sebelumnya. Slope merupakan turunan pertama dari
sehingga hubungan yang didapatkan adalah
′ +
2.4
Apabila Persamaan 2.4 diatur kembali, akan menghasilkan Persamaan 2.5 yang disebut dengan persamaan Newton-Raphson.
+ ′
2.5
4.3. Percobaan
Buatlah program dengan menggunakan bahasa matlab untuk menentukan solusi dari persamaan non-linier berikut menggunakan metode Bisection, iterasi titik tetap, dan NewtonRaphson : a. b. c. d. e.
3100 1≤≤1 sin 0 ≤≤ −3200 1 ≤≤4 4 0 ≤≤1 − cos2 0 ≤≤1 1 ≤≤2 1≤≤1 untuk
untuk
untuk
untuk
untuk
dan
dan
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
22
4.4. Tugas Pendahuluan
Hitunglah berapa iterasi yang diperlukan untuk mencapai konvergensi dalam mencari solusi persamaan
3100 10−
menggunakan metode Bisection dengan tingkat
kesalahan yang diperbolehkan bernilai
serta nilai
1 3, 5 dan
. Bandingkan
dengan hasil yang didapat jika dikerjakan secara analitik menggunakan Persamaan 2.1. 4.5. Tugas Akhir
1. Buatlah program dengan menggunakan bahasa matlab untuk menentukan solusi dari persamaan non-linier pada bagian Percobaan menggunakan metode Secant dan Regula Falsi. 2. Buatlah tabel perbandingan untuk metode Bisection, iterasi titik tetap, NewtonRaphson, Secant, dan Regula Falsi dalam menentukan solusi persamaan
0
− 4
dengan parameter yang sama ( error , toleransi, batas/tebakan awal, dan hasilnya
apakah
konvergen/divergen)
untuk
setiap
metode.
Sertakan
pula
jumlah
langkah/jumlah iterasi yang terjadi saat melakukan proses perhitungan. Kemudian buatlah analisa berdasarkan tabel tersebut.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
23
Modul – 5 Nilai dan Vektor Eigen 5.1. Tujuan
Mahasiswa diharapkan mampu menghitung nilai dan vektor eigen dari suatu matriks bujursangkar menggunakan metode pangkat ( Power Method ) dan metode pangkat inversi ( Invers Power Method ). 5.2. Teori
Nilai eigen atau nilai karakteristik dan vektor eigen atau vektor karakteristik yang sesuai dari suatu matriks
×
nol dan memenuhi Persamaan 3.1
, × dengan
yaitu A didefinisikan sebagai nilai skalar dan vektor yang bukan
↔ 0 0
3.1
disebut sebagai pasangan eigen danada sejumlah N pasangan eigen dari matriks
. Bagaimana cara menentukan nilai eigen? Ada beberapa hal yang perlu diperhatikan,
yaitu :
a. Agar Persamaan 3.1 berlaku untuk matriks bukan nol , matriks singular. Artinya, nilai determinan dari matriks b. Determinan dari matriks
.
harus bersifat
harus bernilai 0.
merupakan deret polynomial derajat N dalam bentuk
Hal yang pertama kali harus dilakukan untuk menghitung nilai eigen menemukan solusi dari persamaan karakteristik seperti pada Persamaan 3.2.
| | −− ⋯ 0
adalah
3.2
Lalu substitusikan nilai , satu per satu, kedalam Persamaan 3.1 untuk menentukan vektor eigen
.
5.2.1. Metode Pangkat (Power Method)
Secara teoritis, metode pangkat dapat dijelaskan sebagai berikut :
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
24
× | || > || >⋯> | ⋯ 3. 3 = , , … , , 1, 2, … , 3. 4 = ( ) 3. 5 = || > || 1, 2, … , →∞ →0 3.6 1 3.7 •
Untuk matriks persegi A yang berukuran dimana
mempunyai nilai eigen
dengan N vektor eigen bebas
maka ada suatu vektor
,
,
, …,
, …,
,
yang dapat dituliskan sebagai penjumlahan dari vektor-
vektor eigen tersebut.
Dengan mengalikan kedua sisi Persamaan 3.3 dengan ,
dan menggunakan
, kita bisa peroleh Persamaan 3.4.
Faktorkan nilai eigen terbesar
Tetapi karena
keluar
untuk
, jika
maka
dan Persamaan
3.5berubah menjadi Persamaan 3.6.
Pada Persamaan 3.6 dengan menggunakan
dapat diekspresikan
, sehingga
diperoleh Persamaan 3.7 untuk nilai salah satu vektor eigen.
Setelah
dihitung,
diambil dari nilai elemen terbesar vektor
sehingga
akan
mempunyai sebuah elemen unitas. Proses ini terus diulang hingga memenuhi kondisi rasio
perbedaan nilai eigen lebih kecil dari toleransi yang diinginkan sesuai dengan Persamaan 3.8.
+ < Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
3.8 25
5.2.2. Metode Pangkat Inversi (Invers Power Method)
Tujuan dari penggunaan metode pangkat inversi adalah untuk menentukan nilai eigen terkecil dengan menerapkan metode pangkat pada matriks
−
. Metode ini digunakan pada
kasus dimana matriks A bersifat non singular dan tidak memiliki nilai eigen bernilai nol. Asal pemikiran dari metode ini adalah Persamaan 3.9
→−− − 1 −
Ini berarti bahwa matriks invers
3.9
memiliki nilai-nilai eigen yang merupakan kebalikan dari
nilai-nilai eigen matriks A.
3.10
5.2.3. Spektral Radius
Spektral radius
dari matriks definisikan degan Persamaan 3.11.
max||
3.11
5.3. Percobaan
Buatlah program dengan menggunakan bahasa matlab untuk menentukan nilai dan vektor eigen menggunakan metode pangkat serta metode pangkat inversi untuk matriksmatriks berikut: (Tidak diperbolehkan menggunakan toolbox eigen dari matlab )
a.
b.
c.
4 1 0 [00 12 11] 3 1 0 [20 14 31 ] 20 4 8 [4060 128 2026]
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
26
5.4. Tugas Pendahuluan
1. Buatlah program dengan menggunakan bahasa matlab untuk mencari invers dari sebuah matriks
3×3
. (tidak menggunakan toolbox invers dari matlab )
2. Hitung nilai dan vektor eigen dari matriks no (a) yang terdapat pada bagian Percobaan secara analitik menggunakan bantuan persamaan karakteristik.
5.5. Tugas Akhir
1. Bagaimana cara menentukan semua nilai eigen dari matriks A yang berukuran
3×3
?
(Sebagai catatan: metode pangkat hanya menghitung nilai eigen terbesar sedangkan metode pangkat inversi hanya menghitung nilai eigen terkecil. Bagaimana jika kita ingin menghitung nilai eigen diantara nilai eigen terbesar dan terkecil?) Buatlah program dengan menggunakan bahasa matlab untuk menghitung semua nilai eigen dari matriks A yang berukuran
3×3
. (Matriks yang digunakan ditentukan oleh asisten)
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
27
Modul – 6 Metode Iterasi Untuk Sistem Persamaan Linier 6.1. Tujuan
Mahasiswa diharapkan mampu menentukan solusi dari sistem persamaan linier menggunakan metode iterasi serta mampu membedakan penggunaan metode langsung dan metode tidak langsung dalam menentukan solusi persamaan linier. Selain itu, mahasiswa juga diharapkan mampu menentukan laju konvergensi dari metode iterasi yang digunakan.
6.2. Teori
Sistem persamaan linier (SPL) terdiri dari banyak persamaan, metode langsung seperti eliminasi Gauss menjadi tidak efisien jika digunakan dalam perhitungan komputasi karena ukuran matriks yang besar. Untuk permasalahan seperti ini, metode iterasi menjadi lebih efisien untuk digunakan dalam perhitungan komputasi. Bentuk umum dari SPL ditunjukkan oleh Persamaan 4.1.
⋯ ⋯ ⋯ ⋮ ⋮ ⋮ ⋮ ⋮ ⋯
4.1 4.2
Persamaan 4.1 dapat juga dinyatakan dalam bentuk matriks menjadi Persamaan 4.2
× dengan
merupakan matriks yang terdiri dari koefisien-koefisien pada SPL dan berukuran
, merupakan matriks vektor yang merupakan solusi dari SPL, serta matriks
terdiri dari nilai-nilai pada sisi kanan SPL. Elemen-elemen pada matriks
yang dan
vektor mempunyai nilai yang didapat dari formulasi permasalahan sedangkan elemen-elemen pada vektor merupakan jawaban permasalahan yang harus dihitung.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
28
Metode iterasi melibatkan sebuah proses yang mengonversi sistem
menjadi
{}= − , 1,2, 3,… 4.3 4.4 sistem ekuivalen
, untuk matriks
dan vektor yang tetap. Metode ini diawali
dengan aproksimasi awal
untuk mencapai solusi dengan menggenerasi vektor barisan
yang konvergen terhadap , atau dapat ditulis
Persamaan 4.3 dapat didekomposisi menjadi Persamaan 4.4.
dengan merupakan matriks lower triangular dengan nilai nol pada diagonal, matriks diagonal dengan elemen yang tidak nol, dan
merupakan
merupakan matriks upper triangular
dengan nilai nol pada elemen diagonalnya. 6.2.1. Metode Iterasi Jacobi
Metode iterasi Jacobi dilakukan dengan mengubah Persamaan 4.2 menjadi Persamaan
−− −, 1, 2,…
4.3 dengan terlebih dahulu didekomposisikan matriks sesuai dengan Persamaan 4.4. Metode ini dapat ditulis dalam bentuk matriks menjadi Persamaan 4.5.
4.5
Secara komponen, Persamaan 4.5 dapat ditulis menjadi Persamaan 4.6.
− 1 , 1, 2 ,…, = =+ <1
Norm yang sering digunakan adalah
4.6
norm. Sedangkan kriteria konvergensi untuk metode
iterasi ditunjukkan oleh Persamaan 4.7.
dengan
4.7
menyatakan spektral radius dari matriks .
6.2.2. Metode Iterasi Gauss-Seidel
Metode ini merupakan perbaikan dari metode iterasi Jacobi yang dianggap memiliki laju konvergen yang lambat. Metode ini dapat dilakukan dengan cara yang sama pada metode Iterasi Jacobi, namun dengan mengubah Persamaan 4.5 menjadi Persamaan 4.8.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
29
−− −, 1, 2,…
4.8
Secara umum, Persamaan 4.8 dapat ditulis menjadi Persamaan 4.9.
− 1 + , 1,2,…, 4.9 = =+ 6.2.3. Successive Over Relaxation (SOR)
Metode ini diperoleh dengan cara mengekstrapolasi metode iterasi Gauss-Seidel sehinga
− 1+ − 4.10 1
muncul faktor relaksasi . Secara matriks, metode ini dapat dituliskan dalam Persamaan 4.10.
Jika nilai
, maka metode ini akan kembali menjadi metode iterasi Gauss-Seidell.
6.3. Percobaan
Buatlah program dengan menggunakan bahasa matlab untuk menentukan solusi persamaan linier dari persamaan-persamaan berikut menggunakan metode Iterasi Jacobi, Gauss-Seidel, dan SOR : a. b.
c.
26395 30.1 0.710. 0.3219. 7.835 0.30. 3 0.2 10 71.4 3 28 9. 8 12 3422 1.42.43
6.4. Tugas Pendahuluan
1. Turunkan Persamaan 4.5, 4.8, dan 4.10 menggunakan metode dekomposisi matriks serta nyatakan dalam bentuk komponen. 2. Apakah yang dimaksud dengan norm matriks dan norm vektor? 3. Hitunglah solusi dari sistem persamaan linier di bawah menggunakan iterasi Jacobi hingga iterasi ke-3.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
30
30.1 0.710. 0.3219. 7.835 0.3 0.2 10 71.4 6.5. Tugas Akhir
Tentukan besar masing-masing arus listrik (I1, I2, dan I3) pada rangkaian dibawah ini, dengan menggunakan sistem persamaan linier.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
31
Modul – 7 Interpolasi 7.1. Tujuan
Mahasiswa diharapkan mampu menentukan solusi dari permasalahan interpolasi dengan menggunakan metode Polinomial, Lagrange, dan Newton Forward Difference , serta mampu membedakan penyelesaian masalah dengan metode interpolasi dan ekstrapolasi.
7.2. Teori
Interpolasi digunakan untuk menghubungkan titik data diskrit dengan cara yang dapat diterima sehingga seseorang bisa mendapatkan perkiraan yang beralasan dari suatu titik data diantara data-data yang diberikan. Kurva yang dibentuk oleh proses interpolasi akan selalu melewati seluruh titik data yang ada. Sebagai ilustrasi, terdapat data tentang jumlah penduduk pada suatu daerah dalam kurun waktu 1950 hingga 2000 dengan pengambilan data setiap 10 tahun. Hal itu dijelaskan pada Tabel 5.1 Tabel 5.1 Jumlah penduduk di daerah X pada tahun 1950-2000
Tahun
1950
1960
1970
1980
1990
2000
Jumlah
34.704
69.168
97.115
148.442
211.707
264.002
Penduduk
Jika dilihat berdasarkan tabel data di atas, akan muncul pertanyaan yang baru bagaimana jika kita ingin mengetahui jumlah penduduk pada tahun 1955 atau pada tahun 1998? Bila hubungan fungsional antara kedua variabel, tahun dan jumlah penduduk, diketahui maka masalah ini tentunya mudah untuk diselesaikan. Tetapi pada umumnya hubungan tersebut tidak diketahui atau bila diketahui maka hanya dalam bentuk umumnya saja dimana koefisien-koefisien dari hubungan fungsional itu tetap tidak diketahui. Dalam situasi seperti ini, biasanya yang dapat dilakukan untuk menentukan solusi permasalahan tersebut adalah menggunakan metode
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
32
interpolasi. Dengan kata lain, interpolasi mengijinkan kita untuk membuat suatu fungsi pendekatan yang mampu merepresentasikan hubungan antara variabel bebas dan variabel terikat secara pasti. Fungsi pendekatan itu dapat berupa fungsi polynomial maupun fungsi trigonometri. Dasar pemilihan fungsi pendekatan tersebut dapat ditetapkan dengan teorema Weierstrass : Teorema I
Bagi setiap fungsi
, | | <
kontinu dalam suatu interval
dalam interval tersebut suatu fungsi polynomial tertentu sedemikian rupa sehingga
, maka dapat dinyatakan
dengan suatu derajat ketelitian
untuk setiap nilai x dalam
dimana merupakan bilangan positif.
,
Teorema II
sin 2 sin2⋯ sin cos | | cos2⋯ < , cos Setiap fungsi
trigonometri
kontinu periodik dapat disajikan dalam bentuk fungsi seri
hingga
dengan
untuk
dalam interval
dimana merupakan bilangan positif.
7.2.1. Interpolasi Polinomial dan Polinomial Taylor
Salah satu teknik interpolasi yang sering digunakan untuk menghampiri suatu fungsi kontinu adalah interpolasi polynomial yang dirumuskan dengan Persamaan 5.1.
⋯−− , ,…,
dengan merupakan bilangan integer non-negatif dan
5.1
merupakan konstanta riil.
7.2.2. Interpolasi Lagrange
Apabila pengamatan data tidak berjarak sama atau interval antar variabel bebas tidak seragam, perumusan interpolasi yang digunakan mengacu pada penurunan rumusan oleh Lagrange. Polinomial Lagrange dapat dinyatakan dalam bentuk Persamaan 5.2.
∑= ⋯
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
(5.2)
33
Dengan
, 0, 1 , 2 , … , ∏= ≠
7.3. Percobaan
sin l+ 21 +
1. Untuk fungsi
di bawah ini dengan diketahui data
0, 0.6, 0.0.459
gunakan interpolasi polynomial derajat satu dan dua untuk menghampiri nilai
, .
Buatlah dalam program dengan menggunakan bahasa matlab. 1. 2. 3. 4.
2. Gunakan metode Interpolasi Lagrange derajat satu, dua dan tiga untuk memprediksi populasi daerah “X” sesuai dengan Tabel 5.1 pada tahun 1945, 1955, 1965, 1975, 1985,
1995, 2005.
7.4. Tugas Pendahuluan
Jelaskan apa yang dimaksud dengan ekstrapolasi. Apa perbedaan ekstrapolasi dan interpolasi? 7.5. Tugas Akhir
Buatlah program menggunakan bahasa matlab untuk soal-soal yang ada pada Percobaan dengan menggunakan metode Newton Forward Difference.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
34
Modul – 8 Regresi 8.1. Tujuan
Mahasiswa mampu mengaproksimasi suatu kelompok data dengan pendekatan suatu fungsi menggunakan metode regresi. 8.2. Teori
Regresi adalah teknik pencocokan kurva yang dilakukan untuk mengaproksimasi suatu kelompok data berketilitian rendah dengan suatu fungsi. Contoh data berketelitian rendah adalah hasil pengamatan, percobaan di laboratorium atau data statistik. Tabel 6.1Contoh data hasil percobaan
X Y
1 1.8
2 3.5
3 4.2
4 4.9
5 5.3
6 6
7 6.8
8 6.5
9 6.4
10 6.9
Jika data di dalam tabel 6.1 diplotkan ke dalam grafik, maka dapat terlihat hubungan antara variabel x dan y cenderung memiliki hubungan yang linier . 8 7 6 5 Y 4
3 2 1 0 0
2
4
6
8
10
12
X
Gambar 6.1.Grafik hubungan y terhadap x pada data Tabel 6.1
Garis putus-putus pada grafik diatas merupakan hasil dari interpolasi, sedangkan garis lurus merupakan hasil dari regresi. Bagaimana bentuk fungsi yang cocok untuk mewakili tren data tersebut? Bagaimana error yang dihasilkan oleh fungsi yang kita buat dalam mengaproksimasi data tersebut?
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
35
Salah satu pendekatan dalam menentukan approksimasi linier terbaik dengan cara meminimasi penjumlahan kuadrat error yang dihasilkan antara nilai yang dibuat
, =| |
dengan kurva linier
6.1
Pendekatan ini disebut dengan metoderegresi kuadrat terkecil. Untuk menentukan konstantakonstanta
dan
kita gunakan pendekatan turunan parsial Persamaan 6.1 terhadap masing-
masing konstanta, lalu kita set persamaan tersebut sama dengan nol. Persamaan terakhir yang diperoleh disebut dengan persamaan normal. Dengan cara ini kitaakan bertemu kembali dengan masalah aljabar linier seperti dalam percobaan Metnum-4. Adakalanya aproksimasi linier bukan merupakan aproksimasi terbaik.Oleh karena itu digunakan aljabar polinum seperti pada Persamaan 5.1, sehingga Persamaan 6.1 akan berubah menjadi Persamaan 6.2, yang merupakan formulasi umum untuk menghitung error pada metoderegresi kuadrat terkecil.
,…, =| |
6.2
Dari Persamaan 6.2 dapat pula kita turunkan persamaan normal untuk pendekatan Regresi Kuadrat Terkecil untuk polinom derajat ke n. 8.3. Percobaan
1. Gunakan aproksimasi linier menggunakan metode regresi kuadrat terkecil untuk mencocokan kurva dengan data pada tabel 6.1. 2. Amati kurva yang dihasilkan apabila pendekatan kurva tabel 6.1 menggunakan metode regresi kuadrat terkecil untuk polinom derajat 2. 3. Plot kurva yang dihasilkan oleh percobaan 1 dan 2 4. Aproksimasi data pada tabel 6.2 di bawah ini menggunakan metode regresi kuadrat terkecil untuk polinom derajat 1, 2 dan 3. Plot data beserta polinomnya. Tabel 6.2. Data percobaan
1.3 2.54
1.5 2.21
1.9 2.18
2.1 2.6
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
36
8.4. Tugas Pendahuluan
1. Turunkan persamaan normal untuk metode regresi kuadrat terkecil untuk polinom derajat ke-n. 2. Bagaimana cara kita mengaproksimasi suatu data yang mempunyai tren eksponensial? 8.5. Tugas Akhir
Buat program dengan Bahasa matlab untuk menyelesaikan contoh kasus yang diberikan oleh asisten! Plot kurvanya!
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
37
Modul – 9 Integrasi Numerik 9.1. Tujuan
Mahasiswa mampu menghitung integral secara numerik suatu fungsi menggunakan metode segiempat, trapesium, titik tengah dan simpson. 9.2. Teori 9.2.1. Metode Trapesium
Metode trapesium merupakan metode integrasi numerik yang diturunkan melalui interpolasi linier yang dituliskan dengan Persamaan 7.1.
2
7.1
Metode ini mengaproksimasi suatu fungsi dengan pendekatan trapesium, dalam Persamaan 7.1 terlihat bahwa suatu fungsi f ( x) dihampiri dengan perhitunganluas trapesium. Persamaan 7.1 merupakan formulasi integrasi numerik menggunakan satu buah trapesium, dengan demikian error E yang dihasilkan cukup besar. Oleh karena itu Persamaan 7.1 diperluas, sehingga jumlah
trapesium yang digunakan sebanyak N buah, shingga persamaan 7.1 berubah menjadi Persamaan 7.2.
− ℎ 2 2 = ℎ
7.2
ℎ −
dengan
9.2.2. Metode Simpson
Metode ini diturunkan melalui polinom Newton orde dua yang dirumuskan melalui Persamaan 7.3.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
38
− − ℎ 4 ℎ 2 ℎ 7. 3 3 = = Persamaan 7.3 merupakan formulasi Simpson 1/3 dimana penjumlahan pertama dikhususkan untuk i yang ganjil dan penjumlahan kedua untuk i genap. Metode ini hanya berlaku untuk nilai N genap, dan nilai hyang sama dengan yang dirumuskan pada metode trapesium. Kekurangan
38 ℎ 3 3 ℎ −
metode Simpson 1/3 yang hanya berlaku untuk
genap diperbaiki oleh metode Simpson 3/8
yang dirumuskan sebagai berikut :
dengan
7.4
. Persamaan 7.4 hanya berlaku untuk satu interval saja. Jika interval data yang
digunakan lebih dari satu, persamaan 7.4 harus diubah ke dalam bentuk umum persamaan metode Simpson 3/8. Metode simpson 3/8 berlaku untuk nilai N berupa bilangan kelipatan 3. 9.3. Percobaan
1. Aproksimasi integral-integral berikut menggunakan metode trapesium dengan nilai
∈{2,4,6,8,16,32,64} ∫− l+ ∫ ∫ − a.
b. c.
2. Ulangi percobaan no.1 dengan menggunakan metode Simpson 1/3 3. Ulangi percobaan no.1 dengan menggunakan metode Simpson 3/8 9.4. Tugas Pendahuluan
1. Jelaskan bagaimana nilai N sangat berpengaruh terhadap error yang dihasilkan! 2.
Kerjakan soal pada percobaan no.1 dengan menggunakan metode persegi dan titik tengah secara numerik. Bandingkan dengan hasil yang diperoleh secara analitik.
9.5. Tugas Akhir
1. Laju seorang penerjun payung selama melayang di udara setelah payungnya mengembang adalah
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
39
dimana
− 9, 8 12,5 .−
penerjun,
1 − /
adalah percepatan gravitasi,
68,1
adalah massa
adalah hambatan oleh udara. Berapa jarak yang ditempuh
oleh penerjun tersebut selama 10 detik? Jarak yang ditempuh penerjun dapat dihitung dengan menggunakan hubungan
ℎ
buatlah program menggunakan bahasa matlab dengan metode yang telah dipelajari pada modul ini. 2. Bandingkan hasil percobaan untuk metode trapesium dan simpson 1/3. 3. Diberikan tabel sebagai berikut :
0 0.25 0.625 0.75 0.875 1
1 0.8 0.6 0.57 0.53 0.5
Bagaimana cara mencari integral dari data dengan interval yang tidak seragam seperti pada tabel di atas?
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
40
Modul – 10 Diferensiasi Numerik 10.1. Tujuan
Mahasiswa mampu mendiferensiasi numerik suatu fungsi dengan menggunakan metode aproksimasi beda hingga.
10.2. Teori
Diferensiasi numerik adalah proses perhitungan turunan fungsi dari data suatu fungsi. Untuk beberapa kasus, suatu fungsi memiliki bentuk yang rumit sehingga perhitungan dengan cara analitik merupakan pekerjaan yang tidak praktis. Namun fungsi tersebut dapat kita cari turunannya dengan pendekatan numerik, salah satu metodenya adalah metode aproksimasi beda hingga. Metode aproksimasi beda hingga untuk menentukan turunan suatu fungsi didasari oleh ekspansi deret Taylor dari suatu fungsi f(x) disekitar titik x. Dari ekspansi deret taylor akan diperoleh Persamaan 8.1 – 8.3
′ ℎℎ ℎ2 ′ ′ ℎℎ ℎ2 ′ ′ ℎℎ ℎ6 ′ ′
8.1 8.2 8.3
Persamaan 8.1 merupakan persamaan untuk forward difference orde pertama. Persamaan 8.2 merupakan persamaan untuk backward difference orde pertama. Persamaan 8.3 merupakan persamaan untuk central difference orde pertama. Dimana suku kedua pada ruas kanan persamaan-persamaan ini merupakan error pemotongan. Untuk orde kedua atau orde yang lebih tinggi, ekspansi deret taylor dapat digunakan kembali.
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
41
10.3. Percobaan
32 1 sin ℎ∈{0.001 , 0.005 ,0.05 , 0.1 , 0.5} 1 {0.001 ,0.005 ,0.05 , 0.1 , 0.5}
1. Hitung turunan pertama dari fungsi
pada
dengan nilai
untuk setiap metode. Hitung pula error yang
dihasilkan.
2. Hitung turunan pertama dari fungsi
pada
dengan nilai
ℎ∈
untuk setiap metode. Hitung pula error yang
dihasilkan.
10.4. Tugas Pendahuluan
1. Jelaskan apa yang dimaksud dengan h, dan apa pengaruhnya terhadap nilai error ! 2. Hitunglah nilai turunan untuk soal No. 1 dan No. 2 pada Percobaan praktikum dengan cara analitik.
10.5. Tugas Akhir
1. Selidiki apa yang terjadi apabila step size h(intervalnya) berbeda. 2. Sebuah mobil dengan massa
1200
melaju dengan kecepatan yang berubah-ubah.
Diperoleh data jarak yang ditempuh mobil terhadapa waktu sebagai berikut: t (s) 0 0.1 0.25 0.38 0.56
x (m) 0 2 2.8 3.5 4
Tentukan impuls yang terjadi yang dihasilkan mobil saat
0,0.25, 0.56 dan
.
3. Dalam kondisi seperti apa setiap metode dapat digunakan? jelaskan
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
42
Modul – 11 Persamaan Diferensial Biasa 11.1. Tujuan
Dalam modul ini mahasiswa diharapkan mampu memecahkan masalah persamaan diferensial biasa menggunakan metode Euler dan Runge – Kutta.
11.2. Teori
Kasus persamaan diferensial biasa (PDB) merupakan salah satu kasus yang sering dijumpai dalam bidang sains maupun teknik. Persamaan diferensial biasa menggambarkan suatu bentuk persamaan matematis yang mengandung turunan dari suatu fungsi terhadap satu variabel bebas. Secara sederhana, persamaan diferensial biasa dapat dituliskan sebagai berikut
′ ,
0
Dalam Persamaan9.1 turunan pertama dari y diketahui sebagai fungsi
0
fungsi dari dan dengan
9.1
,
yang merupakan
merupakan nilai awalnya. Untuk menghitung fungsi
yang tidak diketahui maka kita dapat secara langsung mengintegrasi secara numerik Persamaan9.1. Akan tetapi bila berbeda.
merupakan fungsi dari
maka proses integrasi menjadi
11.2.1. Metode Forward Euler
Metode Forward Euler ini diturunkan melalui deret Taylor (lihat modul 7), bila ditulis kembali menggunakan pendekatan forward difference, maka metode Euler dapat ditulis menjadi Persamaan 9.2
′ ≈ +ℎ + ℎ ,
Seringkali Persamaan 9.2 ditulis dalam bentuk Persamaan 9.3
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
9.2 9.3 43
dengan h menyatakan interval waktu. Untuk memecahkan Persamaan 9.1, maka Persamaan 9.3
diselesaikan secara rekursif sampai dengan akhir interval waktu . Selain itu Persamaan 9.2 dapat dinyatakan dalam bentuk backward difference. Meskipun metode forward Euler sangat sederhana, namun kita harus hati-hati terhadap dua kemungkinan error yang muncul, pertama adalah error dalam pemotongan deret ( truncation error ) dan yang kedua adalah konstanta waktu yang berharga negatif. Hal ini bisa kita atasi dengan menggunakan nilai kecil sekali.
ℎ
yang sangat
11.2.2. Metode Runge-Kutta Orde Empat
Metode ini merupakan metode yang cukup handal dalam menyelesaikan masalah persamaan diferensial biasa. Beberapa pendahulunya seperti metode RK orde 1,2 dan 3, telah ditutupi oleh metode RK-4, karena metode ini mempunyai orde akurasi yang lebih tinggi dibandingkan yang lainnya. Metode RK-4 diturunkan melalui pendekatan integral Simpson 1/3 atau 3/8. Melalui integral Simpson 1/3 maka metode RK-4 dapat ditulis menjadi Persamaan 9.4.
ℎ1, 1 ℎ( 2 ℎ, 2 ) ℎ( 12 ℎ, 12 ) ℎ1 ℎ, + 6 2 2
9.4
11.3. Percobaan
1. Diketahui PDB sebagai berikut: a. b. c.
5exp0.2 0 0 1 0 1 10exp 0 5 dengan
dengan
dengan
0. 1 {0.01 ;0.001 ;0.0001} Tentukan
menggunakan metode Forward Euler! Gunakan variasi
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
ℎ∈ 44
2. Selesaikan persoalan no. 1 untuk menentukan
0.1
menggunakan metode RK-4!
Kemudian bandingkan hasilnya dengan metode Forward Euler. 11.4. Tugas Pendahuluan
1. Turunkan formulasi error untuk masing-masing metode di atas! 2. Jelaskan mengapa nilai
ℎ 4 107
sangat berpengaruh terhadap error yang dihasilkan!
Selesaikan persamaan diferensial biasa di atas secara analitik!
11.5. Tugas Akhir
1. Pergerakan suatu sistem massa, pegas dan damper mengalami pergerakan setelah gaya aktuasi F(t) diberikan seperti gambar dibawah ini.
Jika persamaan pergerakan oleh massa ini diberikan oleh hukum Newton berupa persamaan :
̈ ̇ 0 ̇0 50000 , 50000 ≤≤1 , 5000/0 , 50000/ >1 1exp 1 10 ℎ∈ {0.1 ;0.01} 0! Jika
dan
gaya aktuasi sebesar
untuk
detik dan
untuk
detik. Maka
hitunglah pergerakan dari massa benda selama 10 detik ! 2.
dengan
dan
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
. Tentukan nilai
45
Modul – 12 Proyek 12.1.
Tujuan
Mahasiswa mampu menyelesaikan masalah dalam fisika melalui pendekatan solusi numerik. 12.2.
Percobaan
Buatlah program numerik yang dapat menyelesaikan permasalahan fisika. Percobaan pada modul ini dilakukan dalam dua pertemuan. Permasalahan yang diajukan akan dipresentasikan di hadapan asisten pada pertemuan pertama. Jika tidak disetujui maka praktikan perlu mencari topik baru untuk dijadikan kajian pada proyek ini dan dipresentasikan pada waktu yang disepakati. Jika telah disetujui maka praktikan akan membuat program dan program yang telah dibuat akan dipresentasikan pada pertemuan kedua. Proyek ini dikerjakan secara berkelompok yang diatur oleh asisten. Masalah yang diajukan harus menggunakan metode numerik yang telah diajarkan selama kuliah/praktikum dan TIDAK BOLEH SAMA antara satu kelompok dengan kelompok lainnya. Laporan proyek dikumpulkan pada pertemuan ketiga dengan sistematika sebagai berikut : 1. Pendahuluan 1.1.Latar Belakang 1.2.Rumusan Masalah 1.3.Tujuan 2. Teori Dasar 1.1.Tinjauan pustaka secara fisika 1.2.Tinjauan pustaka secara metode numerik 2. Deskripsi program 3. Flowchart 4. Pembahasan (program, tampilan, analisa) 5. Kesimpulan 6. Daftar Pustaka
Diktat Praktikum Algoritma dan Komputasi Numerik – LABKOM 2019
46