• Tidak ada hasil yang ditemukan

Teori

Data dalam bentuk matriks sering kali digunakan dalam perhitungan numerik. Dalam persamaan linier, agar lebih mudah, sering kali persamaan-persamaan yang menjadi problem matematik digenerate dalam bentuk matriks untuk mencari solusi penyelesaiannya. Contoh metode numerik yang berbasis matriks antara lain: decomposisi LU, eliminasi Gauss-Jordan, Tridiagonal matriks, dan lain sebagainya.

Penyelesaian eliminasi Gauss-Jordan, seperti dimisalkan terdapat proble m matematis dengan elemen-elemen matriks m x n sebagaimana Gambar 4.1, untuk mencari nilai x1, x2, x3, .., xm langkah- langkahnya adalah sebagaimana berikut:

Ga mbar 4.1 Operasi arit mat ika matriks m x n

Rubah matrik a dan b ke bentuk matrik c.

Modifikasi/eliminasi dilakukan pada matrik c ini yang ditujukan untuk mencari matriks identitas dari a

Mengacu pada baris pertama:

 Perbaharui nilai c11 dengan membagi semua, mulai kolom 1 sampai n+1 dengan c11 agar nilai c11 bernilai 1.

 Untuk baris mulai 2 sampai m, perbaharui nilai mulai kolom 1 sampai n+1 dengan mengurangi c1n yang baru diperbaharui, yang dikalikan dengan cm 1 agar nilai cm 1 bernilai nol.

26 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Dilanjutkan pada baris kedua:

 Karena pada kolom pertama telah bernilai 0, mulai baris kedua sampai ke-m, maka kalkulasi dilakukan pada indeks matriks m≥2 dan n≥2, dengan memperbaharui semua nilai pada baris kedua, dibagi dengan c22

sampai kolom ke n+1.

 Untuk baris mulai 3 sampai m, perbaharui nilai mulai kolom 2 sampai n+1 dengan mengurangi c2n yang baru diperbaharui, yang dikalikan dengan cm 2 agar nilai cm 2 bernilai nol.

Dilanjutkan pada baris ketiga dan seterusnya sampai m dengan cara yang sama, sampai didapatkan nilai diagonal matriknya bernilai 1 dan elemen matriks bagian bawah diagonalnya bernilai nol.

Setelah itu, teknik yang dilakukan pada baris satu sampai m di atas dibalik, namun hanya digunakan untuk menghitung agar nilai elemen matriks bagian atas dari diagonal bernilai nol.

MODUL PRAKTIKUM FISIKA KOM PUTASI

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 27 Nilai c1n+1, c2n+1,c3n+1, …, cmn+1 merupakan solusi yang tidak lain adalah nilai x1, x2, x3, .., xm. Langkah- langkah di atas disederhanakan dalam Pseudocode 5.

Proble m

Aplikasi program interface seperti Matlab, Maple, Octave dan Enthought Python, memiliki notasi sendiri untuk mengenerate matriks, yang mana dengan aturan notasi tersebut operasi aritmatika matriks seperti penambahan, pengurangan, perkalian, bahkan untuk mengetahui nilai invers-nya, telah disediakan dalam library dan tinggal memanggilnya saja. Namun bagaimana jika perhitungan numerik membutuhkan operasi matematik atau implementasi numerik yang tidak disediakan dalam library aplikasi tersebut?

Project IV a. Tujuan

Menentukan solusi numerik berdasarkan bentuk matriks suatu persamaan linier.

b. Pseudocode

Pseudocode 5. Alur kode progra m imple mentasi eliminasi Gauss -Jordan

Set matriks a,b Generate matriks c for k=1 to m do p=c[k,k] for j=k to (n+1) do c[k,j]=c[k,j]/p end for for i=k+1 to m do p=c[i,k] for j=k to (n+1) do c[i,j]=c[i,j]-c[k,j]*p end for end for end for for k=m downto 1 do

for i=k-1 downto 1 do p=c[i,k] for j=(m+1) downto 1 do c[i,j]=c[i,j]-c[k,j]*p; end for end for end for print c,x

28 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

c. Implementasi Kode Program

Dimisalkan terdapat suatu persamaan linier yang disusun dalam bentuk matriks sebagaimana berikut:

Ga mbar 4.2 Proble m matriks 3 x 3

Untuk mencari nilai x1, x2, dan x3 dengan metode eliminasi Gauss-Jordan, berdasarkan Pseudocode 5, implementasi kode programnya adalah:

Kode program 11. Imp le metasi untuk metode eliminasi Gauss-Jordan

Matlab m=3;n=m; a=[2 5 7;4 -5 3;8 3 -5]; b=[24 38 -18]; c=[]; %inisialisasi Matriks c for i=1:m for j=1:n c(i,j)=a(i,j); end end for i=1:m c(i,n+1)=b(i); end %proses eliminasi for k=1:m p=c(k,k); for j=k:(n+1) c(k,j)=c(k,j)/p; end for i=k+1:m p=c(i,k); for j=k:n+1 c(i,j)=c(i,j)-c(k,j)*p; end end end for k=m:-1:1 for i=k-1:-1:1 p=c(i,k); for j=(m+1):-1:1 c(i,j)=c(i,j)-c(k,j)*p; end end end %tampilkan matriks c disp(c); for j=1:n disp(sprintf('x %d=%.10f',j,c(j,n+1))); end d. Tugas 1. Analisa Pseudocode 5!

2. Buat program (berdasarkan Pseudocode 5), atau modifikasi Kode program 11, untuk mencari x1, x2, x3,..,x10 problem matriks Gambar 4.3 dengan metode eliminasi Gauss-Jordan! Bandingkan dengan hasil perhitungan x1, x2, x3,..,x10

secara analitis!

3. Buatlah pseudocode dan kode program untuk menyelesaikan problem matriks Gambar 4.3 dengan metode decomposisi LU! Bandingkan hasilnya dengan hasil implementasi Kode Program 11 di atas!

MODUL PRAKTIKUM FISIKA KOM PUTASI

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 29

MODUL PRAKTIKUM FISIKA KOM PUTASI

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 31

PRACTICE V

TRENDLINE

Teori

Metode yang dapat digunakan untuk mengenerate fungsi dari suatu deret data adalah metode iterasi Jacoby dan Gauss-Seidel. Metode iterasi ini dapat juga digunakan untuk menyelesaikan persamaan linier dan merupakan teknik pendekatan dengan melakukan perulangan substitusi nilai variabel hasil kalkulasi suatu persamaan ke variabel yang sama pada persamaan lain yang segaris.

Iterasi Jacoby dan Gauss-Seidel memiliki bentuk implementasi yang hampir sama, hanya saja yang membedakan adalah teknik substitusi yang dilakukan. Pada iterasi Jacoby obyek variabel yang akan dicari solusinya di kalkulasi terlebih dahulu dan baru disubstitusi pada iterasi selanjutnya. Sedangkan pada iterasi Gauss-Seidel, nilai variabel kalkulasi obyek langsung disubstitusikan menjadi nilai variabel yang sama pada persamaan lain yang segaris.

Untuk berbagai problem matematis, iterasi Gauss-Seidel lebih compatible dibanding iterasi Jacoby. Begitu juga dengan jumlah iterasi yang diperlukan, seringkali jumlah iterasi Gauss-Seidel lebih sedikit dibanding Jacoby. Namun meskipun demikian, untuk keperluan kalkulasi data yang bertautan dalam komputasi paralel, algoritma iterasi Jacoby lebih mudah diimplementasikan daripada Gauss-Seidel.

Untuk menggenerate fungsi dari suatu deret data, dapat dimisalkan terlebih fungsi tersebut sebagai fungsi polinomial (persamaan 9) di mana koefisien-koefisien a0 sampai an adalah variabel yang akan dicari nilainya dengan pendekatan numerik (persamaan 10), yang mana indeks k menunjukkan untuk setiap pendekatan nilai ak

menggunakan nilai x yang berbeda pula.

(9)

(10)

Sedangkan nilai error (є) dari metode pendekatan ini disebut dengan RMSE(Root Mean Square Error) yang dirumuskan:

(11)

Proble m

Iterasi Gauss-Seidel di atas berfungsi untuk menghasilkan suatu persamaan fungsi dari f(x), bagaimanakah nilai error fungsi hasil pendekatannya dibandingkan dengan fungsi yang sebenarnya?

32 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Project V a. Tujuan

Menentukan nilai error hasil pendekatan berdasarkan fungsi yang tergenerate.

b. Pseudocode

Pseudocode 6. Alur kode progra m iterasi Gauss-Seidel

Set m Inisialisasi f(x) dan x Inisialisasi n,k for l=0 to m do for k=0 to n do hitung ak (persamaan 10) end for end for hitung RMSE print f(x)

Dimana m menunjukkan jumlah iterasi, n jumlah orde polinomial perkiraan.

c. Implementasi Kode Program

Dimisalkan terdapat deret data sebagaimana berikut:

x 0 0.5π π 1.5π 2π

f(x) 0 1 0 -1 0

Untuk mengenerate fungsi yang melingkupinya, fungsi f(x) dimisalkan sebagai persamaan polinomial. Sehingga berdasarkan jumlah data, persamaan polinomial pemisalannya adalah:

(12) Implementasi kode programnya:

MODUL PRAKTIKUM FISIKA KOM PUTASI

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 33

Kode program 12. Imp le metasi metode iterasi Gauss -Seidel

Matlab

m=1000;n=5; Pi=22/7;

x=[0 (0.5*Pi) Pi (1.5*Pi) (2*Pi)]; f=[0 1 0 -1 0]; a=[0 0 0 0 0]; for l=1:m for k=1:n jum=0; for i=1:n if i~=k jum=jum+a(i)*(x(k)^(i-1)); end a(k)=(f(k)-jum)/((x(k))^(k-1)); end end end e=0; %error for k=1:n jum=0; for i=1:n jum=jum+a(i)*(x(k)^(i-1)); end e=e+(f(k)-jum)^2; end e=sqrt(e/n); disp(sprintf('Error = %.10f',e)); disp(sprintf('a = ')); disp(sprintf(' %.10f ',a)); d. Tugas

1. Jalankan Kode program 12, atau buat kode program sendiri sesuai bahasa pemrograman yang anda kuasai untuk mengenerate fungsi problem di atas, variasi nilai m dan tunjukkan pengaruhnya terhadap hasil fungsi yang tergenerate!

2. Buat grafik hubungan x dan f(x) berdasarkan fungsi polinomial yang tergenerate dari Kode program 12, atau kode program sesuai yang anda kerjakan, dan buktikan bahwa fungsi f(x) sama dengan sin(x)!

3. Tunjukkan pengaruh/hubungan antara jumlah data dengan jumlah suku Polinomial yang diambil?

4. Jelaskan apa yang anda ketahui mengenai Trendline! Apa hubungannya dengan Practice V ini?

5. Cari literatur mengenai iterasi Jacoby dan buatlah pseudocode untuk memodifikasi Kode program 12 dengan metode iterasi Jacoby!

34 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

PRACTICE VI

Dokumen terkait