• Tidak ada hasil yang ditemukan

Modul Praktikum Fisika Komputasi 1.5

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Praktikum Fisika Komputasi 1.5"

Copied!
61
0
0

Teks penuh

(1)

Oleh: Oleh:

Drs. Sugeng Rianto, M. Sc. Drs. Sugeng Rianto, M. Sc.

Ubaidillah

Ubaidillah, S. , S. Si.Si.

JURUSAN FISIKA

JURUSAN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS BRAWIJAYA

UNIVERSITAS BRAWIJAYA

MALANG

MALANG

2010

2010

(2)
(3)

2

(4)

DAFTAR ISI

DAFTAR ISI

DAFTAR ISI

DAFTAR ISI ... ... 3... 3 PRACTIC

PRACTICE I E I PENDAHULUAN PENDAHULUAN ... 5... 5 1.1.

1.1. Pendahuluan ... 5Pendahuluan ... 5 1.2.

1.2. PerbedaPerbedaan Kalkulasi Analitis dan Numerik... an Kalkulasi Analitis dan Numerik... 55 1.3.

1.3. Kode Program KomKode Program Komputer ...puter ... 5... 5 1.4.

1.4. Requirement ... 6Requirement ... 6 1.5.

1.5. Perintah-Perintah-perintah Dasar ... perintah Dasar ... 66 1.6.

1.6. Compiling Kode Compiling Kode Program Program ... ... ... 1313 1.6.1.

1.6.1. Turbo PascaTurbo Pascal for Windows (TPW) 1.5 ...l for Windows (TPW) 1.5 ... 13... 13 1.6.2.

1.6.2. Python 2.7x Python 2.7x ... ... 15... 15 1.6.3.

1.6.3. MATLAB 7.0.1 MATLAB 7.0.1 ... ... ... 1717 1.7.

1.7. Plotting Data Plotting Data ... ... ... 1717 1.7.1.

1.7.1. Plotting GNUPLOT Plotting GNUPLOT ... 18... 18 1.7.2.

1.7.2. Plotting Microsoft Excel Plotting Microsoft Excel ... 19... 19 PRACTIC

PRACTICE II E II ERROR ERROR PENDEKATAN... 23PENDEKATAN... 23 PRACTIC

PRACTICE III E III AKAR-AKAR POLIAKAR-AKAR POLINOMIAL ... 29NOMIAL ... 29 PRACTIC

PRACTICE IV E IV SOLUSI MATRISOLUSI MATRIKS PERSAMAAN LINIKS PERSAMAAN LINIER ... 35ER ... 35 PRACTIC

PRACTICE V E V TRENDLINE TRENDLINE ... ... 41... 41 PRACTIC

PRACTICE VI E VI DIFERENSIDIFERENSIASI NUMERIK ASI NUMERIK ... 47... 47 PRACTIC

PRACTICE VII E VII INTEGRASI INTEGRASI NUMERIK NUMERIK ... ... 53... 53 PRACTIC

PRACTICE VIII E VIII INTERPOLINTERPOLASI ASI ... ... 57... 57 PUSTAKA ... 61 PUSTAKA ... 61

(5)
(6)

PRACTICE I

PENDAHULUAN

1.1. Pendahuluan

Fisika komputasi pada dasarnya adalah menyelesaikan problem-problem fisika yang tidak dapat diselesaikan secara analitis dengan melakukan pendekatan numerik  berdasarkan teori yang sudah ada. Pendekatan numerik tersebut umumnya dilakukan dengan bantuan komputer dan menggunakan bahasa pemrograman tertentu, seperti Pascal, Python, C, C++, Fortran dan lain sebagainya. Hal ini dikarenakan tidak  semua problem matematik dapat diselesaikan oleh komputer secara langsung. Problem matematik yang rumit, perlu diubah terlebih dahulu ke bentuk operasi aritmatika ke penambahan, pengurangan, perkalian dan pembagian sederhana agar dapat dikalkulasi oleh komputer. Pengubahan/penurunan tersebut dikenal dengan sebutan pendekatan numerik, di mana hasil perhitungannya identik dengan adanya nilai error.

Problem matematik yang memerlukan penurunan dengan metode numerik oleh komputer antara lain: problem diferensiasi, integrasi, pencarian akar persamaan polinomial orde tinggi, eigenvaluematrik, boundary valuedan lain sebagainya.

1.2. Perbedaan Kalkulasi Analitis dan Numerik

Salah satu problem matematik yang oleh komputer diselesaikan dengan kalkulasi numerik adalah problem diferensiasi. Dimisalkan terdapat suatu problem fisika dengan persamaan matematis y(x)=2x2-3x+1, yang secara analitis untuk x=5, turunan pertamanya dapat diketahui secara secara langsung dengan penurunan

y‟(x)=dy(x)/dx=4x-3, sehingga nilai diferensiai orde satu terhadap x adalah:

Sedangkan untuk perhitungan secara numerik, problem diferensiasi dapat diturunkan dengan metode numerik beda maju ( forward different ) yang bentuk persamaannya:

(1)

dengan mengambil ∆x=0.1, didapatkan

=

17.2

Dari kedua hasil tersebut dapat dibandingkan perbedaan penyelesaian antara numerik dan analitis mempunyai selisih sebesar 0.2, di mana selisih 0.2 ini nantinya akan dikenal sebagai nilai error.

1.3. Kode Program Komputer

Salah satu teknik untuk melakukan komputasi numerik adalah dengan mengimplementasikannya ke bentuk kode program bahasa pemrograman komputer tertentu. Dalam praktikum fisika komputasi ini disarankan untuk menggunakan bahasa pemrograman Pascal, Python dan Matlab. Dengan alasannya, karena Pascal

(7)

6 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 dipahami. Sedangkan Python termasuk dalam bahasa pemrograman yang sering digunakan untuk keperluan “Scientific Programming” selain Matlab, yang mana praktikan setelah melakukan paraktikum ini diharapkan dapat menguasai setidaknya satu atau ketiga dasar-dasar macam bahasa pemrograman tersebut sebagai bekal untuk menyelesaikan problem fisika-matematik yang memerlukan penggunaan pendekatan numerik.

1.4. Requirement

Agar semua Kode program yang dituliskan dalam Modul ini dapat berjalan dengan baik, praktikum ini, menggunakan compiler-compiler yang antara lain:

1. Turbo Pascal for Windows (TPW) 2. Python 2.7

3. Matlab 7.0.1 1.5. Perintah-perintah Dasar

Perintah-perintah dasar dalam Pascal, Python dan Matlab yang akan sering digunakan dalam praktikum ini antara lain:

a. Write atau print

Perintah ini digunakan untuk menampilkan huruf atau nilai variabel hasil kalkulasi dari running kode program. Contoh source code-nya:

Kode program 1. Hello world

Pascal program hello; uses wincrt; begin write('Hello World!'); end. Python

print “Hello World!”  Matlab

disp( „Hello World!‟ );

Compiler yang digunakan dalam praktikum ini disarankan untuk menggunakan software Turbo Pascal for Windows (TPW ) sebagai compiler bahasa pemrograman Pascal, dan Python sebagai compiler bahasa Python. Oleh karena itu digunakan uses wincrt dalam source code Pascal di atas, yang berarti source codetersebut dijalankan menggunakan TPW.

Berbeda dengan Pascal yang harus mengikuti prosedur dalam penulisan  program, untuk menampilkan kata “Hello World!” Python hanya menggunakan  perintah “print”. Sedangkan untuk Matlab, kata “Hello World” dapat dituliskan

(8)

b. Read atau Input

Perintah ini digunakan untuk memasukkan suatu nilai atau karakter ke variabel dalam kode program, Contoh source code-nya seperti:

Kode program 2. Input Pascal program input; uses wincrt; var i:integer; r:real; begin

write('Masukkan bilangan bulat : '); readln(i);

write('Masukkan bilangan asli/desimal: '); readln(r);

writeln('Hasil');

writeln('Bilangan Bulat: ',i); writeln('Bilangan Asli: ',r:5:5); write('Press any key.. ');readln; end.

Python

i=input("Masukkan bilangan bulat : ")

r=input("Masukkan bilangan asli/desimal : ") print "Hasil: "

print "Bilangan bulat : ",i print "Bilangan asli : ",r input("Press any key..")

Matlab

i=input('Masukkan bilangan bulat : '); disp('Hasil: ');

disp(sprintf('Bilangan Bulat : %d',i)); disp(sprintf('Bilangan Asli : %.7f',i)); input('Press any key..');

Dalam praktikum ini, kebanyakan data yang digunakan sebagai variabel input adalah berupa angka, di mana input angka di atas dapat berupa bilangan bulat (integer ) atau asli (real). Kode program Pascal di atas menunjukkan teknik  inisialisasi type data yang berbeda, terhadap variabel yang mempunyai fungsi sebagai variabel input, dan begitu juga cara menampilkannya. Sedangkan untuk  Python, teknik untuk membedakan antara bilangan bulat dan asli pada angka yang akan dimasukkan, caranya adalah dengan masukkannya dalam bentuk angka desimal. Misalnya jika angka 2 adalah sebagai input bilangan asli, maka ketika di-input-kan harus ditulis dengan 2.0, secara otomatis Python akan menginisialisasikan angka 2 tersebut sebagai bilangan asli.

Satu kelebihan Matlab, Matlab tidak memerlukan inisialisasi variabel seperti di Pascal dan Python di atas. Misalnya ketika bilangan bulat diperlukan menjadi bilangan asli, secara otomatis bilangan tersebut diinisialisasi menjadi bilangan asli oleh Matlab meskipun sebelumnya bertindak sebagai bilangan integer.

Sedangkan kode program input pada baris akhir diperlukan agar aplikasi tidak langsung tertutup saat program telah selesai menjalankan perintah-perintah

(9)

8 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

c. Looping for atau while

Pendekatan numerik sering kali melakukan perulangan dalam perhitungannya. Perintah perulangan yang dapat digunakan adalah perintah for dan while. Perintah for digunakan jika tahap perulangannya berupa bilangan bulat. Sedangkan perintah while digunakan jika tahap perulangannya berupa bilangan asli. Berikut contoh penggunaan perintah for dan while untuk  menghitung xy dan mengetahui angka terkecil yang dapat dihitung oleh prosesor. Perintah for:

Kode program 3. Perpangkatan

Pascal program xpangkaty; uses wincrt; var x,y,i,hasil:integer; begin write('x = ');readln(x); write('y = ');readln(y); hasil:=1;

for i:=1 to y do hasil:=hasil*x; write('x^y = ',hasil); end. Python x=input('x = ') y=input('y = ') hasil=1 for i in range(y): hasil*=x print "x^y = ",hasil Matlab x=input('x = '); y=input('y = '); hasil=1; for i=1:y hasil=hasil*x; end disp(sprintf('Hasil = %d',hasil));

(10)

Perintah while:

Kode program 4. Presisi mesin Pascal program presisimesin; uses wincrt; var i:integer; angka,hasil:real; begin i:=1; angka:=2; hasil:=0; while hasil<>1 do begin angka:=angka/9; hasil:=1+angka; writeln(i:3,hasil:20:20); i:=i+1; end; end. Python i=1 angka=2.0 hasil=0 while hasil!=1 : angka/=9 hasil=1+angka print i,hasil i+=1 Matlab i=1; angka=2; hasil=0; while (hasil~=1) angka=angka/9; hasil=1+angka; disp(sprintf('%3d %.16f',i,hasil)); i=i+1; end;

Kondisi “<>” dalam contoh perulangan while di atas, berfungsi menunjukkan keadaan bahwa selama hasil nilainya tidak sama dengan 1, maka perhitungan

nilai “angka” akan dilanjutkan ke nilai berikutnya. Selama ditambahkan dengan nilai “angka”, nilai hasil tidak sama dengan 1, prosesor komputer masih dapat membedakan nilai tersebut sebagai angka yang berbeda dengan selisih yang kecil. Sedangkan ketika nilainya telah dianggap sama, nilai “angka” sebelum perulangan berakhir, nilai “angka” tersebut merupakan nilai terkecil yang dapat dihitung oleh prosesor. Kondisi “<>” di Python dituliskan dengan “!=” dan di Matlab dengan “~=”.

d. Kondisi if 

Ekspresi kondisi terdiri dari berbagai macam. Untuk bahasa pemrograman yang berbeda, berbeda pula operator pembanding yang digunakan, meskipun mempunyai fungsi yang sama. Perintah yang memerlukan kondisi ini adalah perintah if. Berikut contoh penggunaan perintah tersebut, yang digunakan untuk 

(11)

10 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Kode program 5. Akar fungsi

Pascal program akarfungsi; uses wincrt; var x,x1,xp,y,p:real; i,n:integer; begin xp:=0;x1:=15;n:=20; p:=x*x-4*x-5; writeln('x':5,' ','y':10); for i:=0 to n do begin x:=0.5*(xp+x1); y:=x*x-4*x-5; writeln(x:8:7,' ',y:8:7); if (p*y)>0 then xp:=x; if (p*y)<0 then x1:=x; if p=y then i:=n; end; writeln; writeln('x mendekati ',x:6:5); end. Python xp=0 x1=15 n=20 p=xp*xp-4*xp-5 print "{0:10} {1:10}".format("x","y") for i in range(n): x=0.5*(xp+x1) y=x*x-4*x-5 print "{0:f} {1:f}".format(x,y) if (p*y)>0: xp=x if (p*y)<0: x1=x if (p==y): break print "x mendekati ",x Matlab xp=0; x1=15;n=50; p=xp*xp-4*xp-5; disp(sprintf('x y')); for i=0:n x=0.5*(xp+x1); y=x*x-4*x-5; disp(sprintf('%.10f %.10f',x,y)); if (p*y)>0 xp=x; end if (p*y)<0 x1=x; end if (p==y) break; end end disp(sprintf('x mendekati %.10f',x));

(12)

Metode numerik yang digunakan untuk mendekati nilai akar parsamaan y=x2-4x-5 di atas adalah metode setengah selisih. Metode ini akan dijelaskan pada bab selanjutnya dan merupakan bagian pokok bahasan pencarian akar persamaan polinomial. Pemakaian perintah if di atas, digunakan untuk  mengetahui apakah kedua nilai p dan y berbeda tanda, apakah keduanya positif  atau negatif.

Sama seperti contoh program sebelumnya, Python memiliki kode program yang lebih sederhana dibandingkan Pascal. Bentuk  "{0:f} {1:f}".format(x,y)

digunakan untuk menampilkan nilai x dan y sebagai jenis bilangan  float . Sedangkan perintah break, perintah yang digunakan untuk menghentikan perulangan perintah for. Sedangkan pada Matlab, sama dengan Python, namun kode program Matlab sedikit lebih panjang.

e. Membuat fungsi

Seringkali jika dilakukan perlakuan yang sama terhadap suatu data, lebih mudah untuk meringkasnya ke perintah-perintah yang diperlukan ke dalam suatu fungsi. Contoh penggunaan fungsi tersebut adalah:

Kode program 6. Penggunaan fungsi

Pascal program fungsi; uses wincrt; var bola1,bola2:real; function luasbola(r:real):real; begin luasbola:=(22/7)*r; end; begin bola1:=luasbola(5); bola2:=luasbola(0.5);

writeln('Luas bola1 = ',bola1:8:7,' sat'); writeln('Luas bola2 = ',bola2:8:7,' sat'); end. Python def luasbola(r): return ((22/7)*r) bola1=luasbola(5) bola2=luasbola(0.5)

print "Luas bola1 = {:f}".format(bola1) print "Luas bola2 = {:f}".format(bola2) Matlab

luasbola=@(r)((22/7)*r); bola1=luasbola(5); bola2=luasbola(0.5);

disp(sprintf('Luas bola1 = %.7f',bola1)); disp(sprintf('Luas bola2 = %.7f',bola2));

Namun di Matlab, jika diperlukan lebih dari satu command yang terdapat dalam fungsi, aturan pendeklarasiannya, fungsi tersebut harus disimpan dalam file lain yang berada satu direktori dan disimpan dengan nama file yang sama dengan nama fungsi itu sendiri. Contoh:

(13)

12 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Matlab %file luasbola.m function output=luasbola(r) output=((22/7)*r); end %file main.m bola1=luasbola(5); bola2=luasbola(0.5);

disp(sprintf('Luas bola1 = %.7f',bola1)); disp(sprintf('Luas bola2 = %.7f',bola2));

f. Output to File

Untuk memudahkan dalam menganalisa hasil program, data hasil perhitungan biasanya disimpan dalam sebuah file. Selain itu, metode penyimpanan ini dapat digunakan jika diperlukan untuk memplot hasil perhitungan ke dalam bentuk grafik, di mana kompiler yang digunakan tidak  memiliki fungsi plotter-nya. Contoh kode program untuk penyimpanan data ini adalah:

Kode program 7. Output to file Pascal program kefile; uses wincrt; var x,y:real; fp:text; begin assign(fp,'data.txt'); rewrite(fp); x:=0; while x<50 do begin y:=x*x-4*x-5; writeln(fp,x:10:7,' ',y:10:7); x:=x+0.25; end; close(fp); write('Done..') end. Python fp=open("data.txt","w"); x=0 while x<50: y=x*x-4*x-5; fp.write("{:f} {:f}\n".format(x,y)) x+=0.25 fp.close() print "Done.."

(14)

Matlab fp=fopen('data.txt','w'); x=0; while (x<50) y=x*x-4*x-5; fprintf(fp,'%f %f\n',x,y); x=x+0.25; end fclose(fp); disp('Done..');

Kode program di atas digunakan untuk menghitung persamaan

dengan x mulai sama dengan 0 sampai <50 dengan ∆x=0.25. Hasil

 perhitungannya disimpan dalam bentuk file „data.txt‟ seperti diilustrasikan

Gambar 1.1.

Gambar 1.1 File data hasil perhitungan 1.6. Compiling Kode Program

1.6.1. Turbo Pascal for Windows (TPW) 1.5

Tampilan aplikasi compiler  TPW adalah sebagaimana Gambar 1.1. Untuk  menulis kode program, pilih menu FileNew. Maka akan ditampilkan sub form baru yang digunakan untuk menuliskan kode program. Gambar 1.2 juga menunjukkan contoh kode program Pascal Kode program 7 digunakan sebagai kode program yang akan di-compile.

(15)

14 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Gambar 1.2 Tampilan Turbo Pascal for Windows (TPW)

Untuk meng-compile-nya, pilih menu CompileCompile. Di sini kode program akan dicek apakah terdapat kesalahan dalam penulisan. Jika succesfully completeberarti tidak ada kesalahan dalam penulisan kode program, namun keadaan ini belum tentu menunjukkan tidak adanya error ketika program dijalankan. Sedangkan untuk menjalankannya atau melihat hasil output dari program yang kita buat, pilih menu RunRun, maka program akan berjalan sebagaimana ilustrasi Gambar 1.3. Jika ketika running program tidak terdapat error, dapat dipastikan aplikasi program yang kita buat dapat berjalan dengan baik.

(16)

Gambar 1.3 Running program output ke file Pascal 1.6.2. Python 2.7x

Cara meng-compile program Python, untuk teknik seperti yang dilakukan pada kode program Pascal di atas adalah sebagaimana berikut: Buka aplikasi Python shell, kemudian pilih menu New Window, selanjutnya akan terbuka editor file untuk  membuat module yang baru. Dengan module ini memungkinkan agar kode program yang dibuat dapat disimpan dan tidak perlu mengulang kembali dari awal seperti jika menggunakan Python Shell. Langkah-langkah tersebut diilustrasikan sebagaimana Gambar 1.4, yang mana menggunakan Kode program 7 Python sebagai kode program yang akan di compile.

(17)

16 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Gambar 1.4 Tampilan editor Python shell

Untuk menjalankannya, kode program harus disimpan dahulu dengan memilih menu save dan ditentukan sembarang nama pada module tersebut dengan ketentuan ber-ekstensi „.py‟. Setelah itu pilih menu Run-Run Module, maka program akan dijalankan yang diilustrasikan sebagaimana Gambar 1.5.

(18)

1.6.3. MATLAB 7.0.1

Gambar 1.6 merupakan contoh tampilan interface Matlab 7.0.1 yang memiliki Command Windows yang fungsinya hampir sama dengan Phython Shell pada compiler Python 2.7x. Agar dalam penulisan kode program lebih mudah untuk  dimodifikasi, kode program Matlab dapat ditulis terlebih dahulu ke file yang disebut dengan M-Files. Cara membuat M-File adalah dengan memilih menu FileNewM-File dan akan muncul kotak editor yang merupakan tempat yang digunakan untuk menulis kode program Matlab. Gambar 1.6 juga mengilustrasikan Kode Program 7 sebagai kode program yang akan di-compile. Untuk  menjalankannya, klik kanan file yang berisi kode program yang akan dijalankan, pilih Run, dan hasil compilasinya akan ditampilkan di Command Windows.

Gambar 1.6 Tampilan user interface Matlab 7.0.1 1.7. Plotting Data

Plotting data dapat dilakukan dengan berbagai cara, salah satunya dengan menggunakan fungsi yang telah disediakan dalam library compiler itu sendiri, baik  2D maupun 3D. Matlab telah memiliki fungsi plotter sendiri, sedangkan pada umumnya compiler Pascal dan Python tidak memilikinya. Di samping itu,  plotting data dapat juga dengan menggunakan aplikasi  plotter lain, seperti aplikasi khusus pembuat plot, GNUPLOT. Karena dalam praktikum ini compiler  Pascal yang digunakan tidak memiliki library untuk  plotting sendiri, di sini akan ditunjukkan 2 teknik manual plotting grafik dengan aplikasi GNUPLOT dan Microsoft Excel, yang

(19)

18 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 mana dari kedua teknik tersebut diharapkan praktikan dapat mengetahui dasar-dasar dalam membuat grafik.

1.7.1. Plotting GNUPLOT

GNUPLOT merupakan aplikasi program interface yang digunakan untuk  membuat grafik dari suatu urutan data. Tampilan aplikasi ini seperti ditunjukkan pada Gambar 1.7, yang cara menggunakannya hampir sama dengan Python shell. Contoh penggunaan GNUPLOT untuk membuat grafik 2D dari data hasil running

program adalah sebagaimana berikut: Jika data hasil perhitungan Gambar 1.1 diplotkan dengan GNUPLOT, perintah yang digunakan adalah:

Alamat „e: \data\master\lawas\tpw\ data.txt‟ merupakan contoh alamat dari file „data.txt‟ yang dapat dilihat pada Address bar windows sebagaimana ilustrasi Gambar 1.8, di mana plot grafik dari file tersebut ditunjukkan pada Gambar 1.9.

Gambar 1.7 Aplikasi GNUPLOT

(20)

Gambar 1.9Tampilan hasil plotting file „data.txt‟

1.7.2. Plotting Microsoft Excel

Untuk  plotting file „data.txt‟ dengan Microsoft Excel, caranya adalah seperti membuat grafik pada data Excel biasanya. Perbedaannya adalah ketika membuka file „data.txt‟ terdapat beberapa langkah sebagaimana diuraikan berikut:

Buka aplikasi Microsoft Excel (di sini digunakan Ms. Excel 2007)

Pilih menu Open, cari folder yang berisi file „data.txt‟ dan seleksi file dengan memilih File Type: Text File. (Gambar 1.10)

Gambar 1.10Kotak dialog open „data.txt‟

Klik open maka akan muncul kotak dialog Text Import Wizard seperti ditunjukkan Gambar 1.11.

(21)

20 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Gambar 1.11 Kotak dialog Text Import Wizard file „data.txt‟step 1

Pilih radio option: Fixed width lalu tekan Next, dan pastikan pada Data Preview data telah terbagi menjadi dua

Gambar 1.12 Kotak dialog Text Import Wizard file „data.txt‟step 2

Jika data telah terbagi seperti pada Gambar 1.12, selanjutnya dapat ditekan tombol Next atau langsung menekan tombol Finish jika tidak diperlukan

untuk mengubah format data dari file „data.txt‟. Data masukan tersebut

secara otomatis akan diatur pada kolom-kolom yang telah tersedia oleh Microsoft Excel (Gambar 1.13).

(22)

Gambar 1.13Tampilan hasil open file „data.txt‟ dengan Ms. Excel

Kemudian untuk memplotkan data-data yang telah dimasukkan diatas, seleksi semua data tersebut, pilih menu InsertScatterScatter with Smooth Lines (Gambar 1.14)

(23)

22 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Hasil tampilan plotting grafiknya adalah sebagaimana Gambar 1.15, dan selanjutnya grafik dapat dimodifikasi sesuai dengan kebutuhan.

Gambar 1.15Grafik hasil plotting „data.txt‟ Tugas

1. Jalankan Kode program 1-7, atau buatlah program serupa dengan bahasa pemrograman yang anda kuasai, sampai dihasilkan plot grafik sebagaimana Gambar 1.9 atau 1.15!

(24)

PRACTICE II

ERROR PENDEKATAN

Teori

Deret Taylor dapat digunakan untuk melakukan pendekatan numerik dari suatu fungsi f(x)berdasarkan nilai f(a) yang telah diketahui. Secara matematis deret Taylor dinotasikan:

(2) Jika f(x)=e x, dengan deret Taylor di atas, nilai  f(x) dapat didekati dengan deret seperti ditunjukkan pada persamaan 3 dengan mengambil nilai a=0.

(3) Begitu juga untuk  sin x dan cos x, dengan mengambil nilai a=0, deret pendekatannya adalah:

(4) (5)

Problem

Kemampuan komputer impossible untuk melakukan kalkulasi sampai deret tak  hingga. Oleh karena itu solusi persamaan 3, 4, dan 5 adalah dengan memotong deret pada nilai n tertentu yang mana nilai error hasil pendekatannya mendekati nol atau bergantung pada kemampuan maksimum komputer yang digunakan. Pertanyaannya adalah berapakah nilai n dari masing-masing persamaan 3, 4, dan 5 agar nilai error  pendekatannya mendekati atau sama dengan 0?

(25)

24 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Project I a. Tujuan

Mengetahui nilai error dari pendekatan numerik suatu deret tak hingga berdasarkan model matematis dan kemampuan komputer yang digunakan.

b. Pseudocode

Pseudocode 1. Alur kode program eksponen Input x, n e=1  for i=1 to n do Hitung a=x i Hitung b=i!  e= e+(a/b) end for   print e

a berfungsi sebagai pembilang dan b berkedudukan sebagai penyebut dari setiap suku deret yang dihitung.

c. Implementasi Kode Program Kode program 8. Eksponen

Pascal program exponen; uses wincrt; var e,a,x:real; i,n,b:integer; function pangkat(x:real;y:integer):real; var hasil:real; i:integer; begin hasil:=1; for i:=1 to y do hasil:=hasil*x; pangkat:=hasil; end; function factorial(m:integer):integer; var i,hasil:integer; begin hasil:=1; for i:=1 to m do hasil:=hasil*i; factorial:=hasil; end; begin write('x = ');readln(x); write('n = ');readln(n); e:=1; for i:=1 to n do begin a:=pangkat(x,i); b:=factorial(i); e:=e+(a/b); writeln(i); end; writeln('e^x = ',e:12:11); end.

(26)

Python def factorial(m): hasil=1 for j in range(1,(m+1)): hasil*=j return hasil x=input("x = ") n=input("n = ") e=1.0 for i in range(1,(n+1)): a=x**i; b=factorial(i) e+=(a/b)

print "e^x = {}".format(e)

Matlab %file faktorial.m function output=faktorial(m) hasil=1; for j=1:m hasil=hasil*j; end output=hasil; end %file eksponen.m x=input('x = '); n=input('n = '); e=1; for i=1:n a=x^i; b=faktorial(i); e=e+(a/b); end disp(sprintf('e^x = %.10f',e));

Fungsi matematika seperti perpangkatan dan factorial, sebenarnya telah disediakan dalam module math di Python dan di Matlab itu sendiri. Penjabaran fungsi factorial sebagai fungsi di atas, dalam praktikum ini dimaksudkan untuk  memberikan contoh bagaimana cara kerja sebenarnya yang dilakukan komputer untuk menyelesaikan problem perpangkatan dan factorial tersebut. Perlu diperhatikan masukan untuk variabel x berupa bilangan asli.

d. Tugas

1. Salin dan compile kedua kode program, atau buat kode program sendiri sesuai Pseudocode 1 dengan bahasa pemrograman yang anda kuasai!

2. Tentukan nilai n terbaik dan bandingkan antara keduanya, dan juga dengan membandingkan dengan nilai e x dari literatur yang lain (mis. e1= 2.718281828459045), Sertakan juga spesifikasi komputer yang anda digunakan (mis. AMD X2 4800+, P4 1800 MHz, dsb)!

3. Dari salah satu program di atas (sesuai yang anda kerjakan), tunjukkan yang disebut dengan Truncate Error ?

(27)

26 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Project II a. Tujuan

Mengetahui kelemahan dari model numerik deret tak hingga.

b. Pseudocode

Pseudocode 2. Alur kode program sinus Input x, n s=x  c=-1  for i=2 to n do if (i mod 2)=1 then Hitung a=x i Hitung b=i!  s= s+c*(a/b) c=-1*c endif  end for   print s

variabel c digunakan sebagai pengubah untuk melakukan penambahan atau pengurangan terhadap hasil penjumlahan nilai s sebelumnya. i mod 2 berfungsi agar suku-suku deret yang diambil, hanyalah deret yang berindeks n /suku ganjil.

(28)

c. Implementasi Kode Program Kode program 9. Deret sinus

Pascal program sinus; uses wincrt; var s,a,x,c:real; i,n,b:integer; function pangkat(x:real;y:integer):real ; var hasil:real; i:integer; begin hasil:=1; for i:=1 to y do hasil:=hasil*x; pangkat:=hasil; end; function factorial(m:integer):integer; var i,hasil:integer; begin hasil:=1; for i:=1 to m do hasil:=hasil*i; factorial:=hasil; end; begin write('x = ');readln(x); write('n = ');readln(n); s:=x; c:=-1; for i:=2 to n do begin

if ((i mod 2)=1) then begin a:=pangkat(x,i); b:=factorial(i); s:=s+c*(a/b); c:=-1*c; end; end; writeln('sin x = ',s:11:10); end. Python import math x=input("x = ") n=input("n = ") s=x c=-1 for i in range(2,(n+1)): if (i%2)==1: a=x**i; b=math.factorial(i) s+=c*(a/b) c*=-1

print "sin x = {}".format(s) Matlab %file sinus.m x=input('x = '); n=input('n = '); s=x; c=-1; for i=2:n if (mod(i,2)==1) a=x^i; b=factorial(i); s=s+c*(a/b); c=-1*c; end end disp(sprintf('sin x = %.10f',s));

(29)

28 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Kode program Python di atas, ditunjukkan bagaimana cara menghitung factorial menggunakan module math yang sudah ada pada compiler  Python umumnya. Sedangkan pada program Matlab di atas, langsung menggunakan fungsi factorial yang sudah ada pada Matlab.

d. Tugas

4. Bandingkan hasil pendekatan nilai sin  x di atas dengan literatur yang anda ketahui (sebutkan sumbernya) dengan nilai x ≥ 1!

5. Bandingkan dan analisa hasil pendekatan kedua kode program di atas! Jika ada tunjukkan kelemahan dari pemodelan nilai sin x tersebut!

6. Buat  pseudocode beserta kode program untuk menyelesaikan persamaan 5 (sesuai bahasa pemrograman yang anda kuasai)!

(30)

PRACTICE III

AKAR-AKAR POLINOMIAL

Teori

Bentuk persamaan polinomial untuk orde ≤n adalah:

(6) dengan nilai koefisien a0, a1, …, an tertentu. Akar-akar persamaannya dapat diketahui dengan beberapa metode seperti metode setengah selisih (biseksi), metode Secant, Newton-Raphson, dan lain sebagainya.

Ide metode setengah selisih adalah mencari nilai xi+1 yang nilai f(xi) mendekati nol berdasarkan nilai f(xi) dan f(xi-1). Ilustrasi pendekatan ini seperti Gambar 3.1 dan nilai xidan xi-1-nya harus menghasilkan nilai f(xi) dan f(xi-1) yang berbeda tanda.

Gambar 3.1 Metode setengah selisih

Metode lain yang serupa dengan metode selisih setengah adalah metode Secant. Tekniknya hampir sama dengan metode setengah selisih, namun metode ini mengambil perbandingan segitiga yang terbentuk dari xidan xi-1. Ilustrasi pendekatan ini sebagaimana Gambar 3.2.

 xi-1  x

 f(x)

 xi  xi+1

(31)

30 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Gambar 3.2 Metode setengah selisih

Sedangkan untuk metode Newton, atau disebut juga metode Newton-Raphson menggunakan pemotongan deret Taylor pada suku ketiga, yang mana untuk  mendekati nilai xi+1persamaan yang digunakan adalah:

(7) Problem

Kode program 5 merupakan contoh pancarian akar dari persamaan polinomial orde 2. Pencarian akar untuk orde <=2 dan akar-akarnya berupa bilangan bulat, mungkin tidak akan menjadi masalah jika dilakukan secara analitis, tetapi bagaimana jika persamaan polinomialnya memiliki orde >2 atau akar-akarnya merupakan bilangan asli?

Project III a. Tujuan

Menentukan akar-akar pada persamaan polinomial orde banyak. b. Pseudocode

Pseudocode 3. Alur pencarian akar dengan metode setengah selisih Input x 0 ,x 1 , n  for i=0 to n do  x  2=0.5*( x 0+x 1 ) Hitung f(x  2 ) if f(x  2 )<0 then x 0=x  2 else if f(x  2 )<0 then x 1=x  2 else break for 

end for   print x  2  xi-1  x  f(x)  xi  xi+1

(32)

Pseudocode 4. Alur kode program pencarian akar dengan metode Secant Input x 0 ,x 1 , n  f 0=f(x 0 )  f 1=f(x 1 )  for i=0 to n do Hitung f  2=f(x  2 )  x 0=x 1 , x 1=x  2  f 0=f 1 , f 1=f  2 end for   print x  2

c. Implementasi Kode program

Dimisalkan terdapat persamaan polinomial:

(8) Menggunakan metode Secant, implementasi kode program untuk mencari nilai akar-akar persamaannya adalah:

Kode program 10. Implemetasi metode Secant Pascal program secant; uses wincrt; var x0,x1,x2,f0,f1,f2:real; i,n:integer; function f(x:real):real; begin f:=x*x*x*x-31*x*x*x+230*x*x-452*x-144; end; begin write('x0 = ');readln(x0); write('x1 = ');readln(x1); write('n = ');readln(n); f0:=f(x0); f1:=f(x1); for i:=0 to n do begin if((f1-f0)<>0)then x2:=x1-(f1*(x1-x0))/(f1-f0) else begin writeln('Stoped..'); i:=n end; f2:=f(x2); x0:=x1;f0:=f1; x1:=x2;f1:=f2; writeln(i,' ',x2:11:10,' ',f2:11:10); end; end.

(33)

32 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Python def f(x): y=x*x*x*x-31*x*x*x+230*x*x-452*x-144 return y x0=input("x0 = ") x1=input("x1 = ") n=input("n = ") f0=f(x0) f1=f(x1) for i in range(n): if((f1-f0)!=0): x2=x1-(f1*(x1-x0))/(f1-f0) else: print "Break.." break f2=f(x2) x0,f0=x1,f1 x1,f1=x2,f2 print "{:.10f} {:.10f}".format(x2,f2); Matlab f=@(x)x*x*x*x-31*x*x*x+230*x*x-452*x-144; x0=input('x0 = '); x1=input('x1 = '); n=input('n = '); f0=f(x0); f1=f(x1); for i=0:n if ((f1-f0)~=0) x2=x1-(f1*(x1-x0))/(f1-f0); else disp('Break..'); break; end f2=f(x2); x0=x1;f0=f1; x1=x2;f1=f2; disp(sprintf('%f %f',x2,f2)); end

(34)

d. Tugas

1. Buatlah grafik hubungan  f(x) dan x untuk persamaan 8, berdasarkan contoh pembuatan grafik Gambar 1.9 atau 1.15!

2. Modifikasi Kode program 5, atau buat kode program sendiri sesuai bahasa pemrograman yang anda kuasai dan Pseudocode 3, untuk mencari akar-akar persamaan 8 dengan metode setengah selisih!

3. Bandingkan teknik penentuan nilai awal x 0 dan x 1 untuk mendekati salah satu nilai akar antara metode setengah selisih dan metode Secant, serta bandingkan  jumlah iterasi yang diperlukan antara kedua metode tersebut!

4. Apa yang dimaksud dengan Bracketing Method ? Jelaskan apakah yang anda lakukan pada soal no. 3 termasuk metode tersebut?

5. Tentukan nilai keempat akar-akar persamaan 8 dengan kode program yang anda pakai atau yang anda buat, yang mengacu pada grafik soal no. 1!

6. Buatlah Pseudocode atau kode program sesuai bahasa pemrograman yang anda kuasai untuk mencari akar-akar persamaan 8 dengan metode Newton Rapshon! (optional)

(35)
(36)

PRACTICE IV

SOLUSI MATRIKS PERSAMAAN LINIER

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 problem matematis dengan elemen-elemen matriks m x n sebagaimana Gambar 4.1, untuk  mencari nilai x1, x2, x3, .., xmlangkah-langkahnya adalah sebagaimana berikut:

Gambar 4.1 Operasi aritmatika matriks m xn

Rubah matrik a danbke bentuk matrik c.

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

Mengacu pada baris pertama:

 Perbaharui nilai c11dengan membagi semua, mulai kolom 1 sampai n+1 dengan c11 agar nilai c11bernilai 1.

 Untuk baris mulai 2 sampai m, perbaharui nilai mulai kolom 1 sampai

n+1 dengan mengurangi c1n yang baru diperbaharui, yang dikalikan dengan cm1 agar nilai cm1 bernilai nol.

(37)

36 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 cm2 agar nilai cm2bernilai 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.

(38)

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.

Problem

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 program implementasi 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 

(39)

38 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 c. Implementasi Kode Program

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

Gambar 4.2 Problem matriks 3 x 3

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

Kode program 11. Implemetasi untuk metode eliminasi Gauss-Jordan

Pascal program GaussJordan; uses wincrt; const m=3; n=m;

var a:Array[1..m,1..n] of real; b,d:Array[1..m] of real; c:Array[1..m,1..(n+1)] of real; k,i,j:integer; p:real; begin a[1,1]:=2;a[1,2]:=5;a[1,3]:=7; a[2,1]:=4;a[2,2]:=-5;a[2,3]:=3; a[3,1]:=8;a[3,2]:=3;a[3,3]:=-5; b[1]:=24;b[2]:=38;b[3]:=-18; {*inisialisai matriks c*} for i:=1 to m do for j:=1 to n do c[i,j]:=a[i,j]; for i:=1 to n do c[i,n+1]:=b[i]; {*Proses eliminasi*} for k:=1 to m do begin p:=c[k,k]; for j:=k to (n+1) do c[k,j]:=c[k,j]/p; for i:=k+1 to m do begin p:=c[i,k]; for j:=k to (n+1) do c[i,j]:=c[i,j]-c[k,j]*p; end; end; for k:=m downto 1 do begin

for i:=k-1 downto 1 do begin p:=c[i,k]; for j:=(m+1) downto 1 do c[i,j]:=c[i,j]-c[k,j]*p; end; end; {*tampilkan matriks c*} for i:=1 to m do begin for j:=1 to n+1 do write(c[i,j]:7:6,' '); writeln end; writeln; for j:=1 to n do writeln('x',j,' = ',c[j,n+1]:7:6,' '); end.

(40)

Python Python m=3 m=3 n=m n=m a=[[2.0,5.0, a=[[2.0,5.0,7.0],[4.0,-5.0,7.0],[4.0,-5.0,3.0],[8.0,3.0],[8.0,3.0,-5.0]]3.0,-5.0]] b=[24.0,38.0,-18.0] b=[24.0,38.0,-18.0] c=[[0 for i in r

c=[[0 for i in r ange(n+ange(n+1)] for j in range(m)]1)] for j in range(m)] #inisialisasi Matriks c

#inisialisasi Matriks c for i in r

for i in r ange(m):ange(m): for j in range(n): for j in range(n): c[i][j]=a[i][j] c[i][j]=a[i][j] for i in r

for i in r ange(m):ange(m): c[i][n]=b[i] c[i][n]=b[i] #proses eliminasi #proses eliminasi for k in range(m): for k in range(m): p=c[k][k] p=c[k][k] for j in

for j in range(k,n+1):range(k,n+1): c[k][j]/=p

c[k][j]/=p for i in r

for i in r ange(k+1,mange(k+1,m):): p=c[i][k]

p=c[i][k] for j in

for j in range(k,n+1):range(k,n+1): c[i][j]-=c[k][j]*p c[i][j]-=c[k][j]*p for k

for k in range(m-1,-1,-1):in range(m-1,-1,-1): for i

for i in range(k-1,-1,-1):in range(k-1,-1,-1): p=c[i][k]

p=c[i][k] for j in

for j in range(k,n+1):range(k,n+1): c[i][j]-=c[k][j]*p c[i][j]-=c[k][j]*p #tampilkan c #tampilkan c for i in c: for i in c: print i print i Matlab Matlab m=3;n=m; m=3;n=m; a=[2 5 7;4 -5 3;8 3 -5]; a=[2 5 7;4 -5 3;8 3 -5]; b=[24 38 -18]; b=[24 38 -18]; c=[]; c=[]; %inisialisasi Matriks c %inisialisasi Matriks c for

fori=1:mi=1:m for forj=1:nj=1:n c(i,j)=a(i,j); c(i,j)=a(i,j); end end end end for

fori=1:mi=1:m

c(i,n+1)=b(i); c(i,n+1)=b(i); end end %proses eliminasi %proses eliminasi for fork=1:mk=1:m p=c(k,k); p=c(k,k); for forj=k:(n+1)j=k:(n+1) c(k,j)=c(k,j)/p; c(k,j)=c(k,j)/p; end end for

fori=k+1:mi=k+1:m p=c(i,k); p=c(i,k); for forj=k:n+1j=k:n+1 c(i,j)=c(i,j)-c(k,j)*p; c(i,j)=c(i,j)-c(k,j)*p; end end end end for fork=m:-1:1k=m:-1:1 for

fori=k-1:-1:1i=k-1:-1:1 p=c(i,k); p=c(i,k); for forj=(m+1):-1:1j=(m+1):-1:1 c(i,j)=c(i,j)-c(k,j)*p; c(i,j)=c(i,j)-c(k,j)*p; end end end end end end %tampilkan matriks c %tampilkan matriks c disp(c); disp(c); for forj=1:nj=1:n disp(sprintf( disp(sprintf('x %d=%.10f''x %d=%.10f',j,c(j,n+1)));,j,c(j,n+1))); end end

(41)

40

40 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 d.

d. TugasTugas 1.

1. Analisa Pseudocode 5!Analisa Pseudocode 5! 2.

2. Buat program (berdasarkan Pseudocode 5), atau modifikasi Kode program 11,Buat program (berdasarkan Pseudocode 5), atau modifikasi Kode program 11, untuk mencari

untuk mencari  x x11,,  x x22,,  x x33,..,,.., x x1010 problem matriks Gambar 4.3 dengan metodeproblem matriks Gambar 4.3 dengan metode eliminasi Gauss-Jordan! Bandingkan dengan hasil perhitungan

eliminasi Gauss-Jordan! Bandingkan dengan hasil perhitungan  x x11,, x x22,, x x33,..,,.., x x1010 secara analitis!

secara analitis! 3.

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

hasil implementasi Kode Program 11 di atas!

Gambar 4.3 Problem matriks 10 Gambar 4.3 Problem matriks 10 xx1010

(42)

PRACTICE V

PRACTICE V

TRENDLINE

TRENDLINE

Teori Teori

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

persamaan ke variabel yang sama pada persamaan lain yang segaris.

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

sama pada persamaan lain yang segaris.

Untuk berbagai problem matematis, iterasi Gauss-Seidel lebih

Untuk berbagai problem matematis, iterasi Gauss-Seidel lebih compatiblecompatible

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

Seidel.

Untuk menggenerate fungsi dari suatu deret data, dapat dimisalkan terlebih Untuk menggenerate fungsi dari suatu deret data, dapat dimisalkan terlebih fungsi tersebut sebagai fungsi polinomial (persamaan 9) di mana koefisien-koefisien fungsi tersebut sebagai fungsi polinomial (persamaan 9) di mana koefisien-koefisien

a

a00 sampaisampai aann adalah variabel yang akan dicari nilainya dengan pendekatan numerik adalah variabel yang akan dicari nilainya dengan pendekatan numerik 

(persamaan 10), yang mana indeks

(persamaan 10), yang mana indeks k k menunjukkan untuk setiap pendekatan nilaimenunjukkan untuk setiap pendekatan nilai aak k 

menggunakan nilai

menggunakan nilai x x yang berbeda pula.yang berbeda pula.

(9) (9) (10) (10) Sedangkan nilai error (

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

 Mean Square Error ) yang dirumuskan:) yang dirumuskan:

(11) (11)

Problem Problem

Iterasi Gauss-Seidel di atas berfungsi untuk menghasilkan suatu persamaan Iterasi Gauss-Seidel di atas berfungsi untuk menghasilkan suatu persamaan fungsi dari

fungsi dari f(x) f(x), bagaimanakah nilai error fungsi hasil pendekatannya dibandingkan, bagaimanakah nilai error fungsi hasil pendekatannya dibandingkan dengan fungsi yang sebenarnya?

(43)

42 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 program 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:

(44)

Kode program 12. Implemetasi metode iterasi Gauss-Seidel Pascal program generate; uses wincrt; const Pi=22/7;

var x,f,a:array[0..5] of real; i,n,k,l,m:integer;  jum,e:real; function pangkat(x:real;n:integer):real; var kali:real; begin kali:=1;

for i:=1 to n do kali:=kali*x; pangkat:=kali; end; begin m:=1000;n:=4; x[0]:=0;x[1]:=0.5*Pi;x[2]:=Pi; x[3]:=1.5*Pi;x[4]:=2*Pi; f[0]:=0;f[1]:=1;f[2]:=0;f[3]:=-1;f[4]:=0; for k:=0 to n do a[k]:=0; for l:=0 to m do begin for k:=0 to n do begin  jum:=0; for i:=0 to n do if i<>k then  jum:=jum+a[i]*pangkat(x[k],i); a[k]:=(f[k]-jum)/pangkat(x[k],k); end; end; e:=0; for k:=0 to n do begin  jum:=0; for i:=0 to n do  jum:=jum+a[i]*pangkat(x[k],i); e:=e+pangkat((f[k]-jum),2); end; e:=sqrt(e/n); writeln('RMSE = ',e:11:10); write('f(x) = '); for k:=0 to n do begin write(a[k]:7:6,'*x^',k); if k<>n then write('+'); end; end.

(45)

44 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Python import math m=10 n=4 Pi=22/7 x=[0.0,0.5*Pi,Pi,1.5*Pi,2*Pi] f=[0.0,1.0,0.0,-1.0,0.0] a=[] for k in r ange(5): a.append(0.0) for l in r ange(m): for k in range(n):  jum=0 for i in range(n): if i!=k:  jum+=a[i]*x[k]**i a[k]=(f[k]-jum)/(x[k]**k) e=0 for k in range(n):  jum=0 for i in range(n):  jum+=a[i]*x[k]**i e+=(f[k]-jum)**2 e=math.sqrt(e/n)

print "Error = {:f}".format(e) print "f(x)=", i=0 for k in a: print "{:f}*x^{}".format(k,i), if i!=n : print "+", i+=1

(46)

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!

(47)
(48)

PRACTICE VI

DIFERENSIASI NUMERIK

Teori

Dalam fisika, penurunan problem diferensiasi numerik dapat menggunakan metode  finite difference. Metode ini terdiri dari metode beda maju ( forward  difference), beda mundur (backward difference) dan beda tengah (central difference) yang persamaan-persamaannya antara lain:

Beda maju

(13) Beda mundur

(14) Beda tengah

atau dapat dinotasikan (15)

Persamaan-persamaan di atas digunakan untuk penurunan numerik persamaan diferensiasi orde satu. Sedangkan untuk persamaan diferensiasi orde dua, metode yang digunakan merupakan perpaduan dari metode beda maju, beda mundur dan beda tengah di atas, yang bentuk persamaannya adalah:

(16)

Problem

Metode beda maju, beda mundur dan beda tengah memiliki ketepatan yang cukup tinggi jika fungsi yang akan didiferensiasikan termasuk persamaan linier. Namun pendekatan akan cukup menyimpang jika fungsinya termasuk fungsi polinomial orde ≥ 2, bagaimanakah nilai error dari pendekatan suatu persamaan diferensiasi yang fungsinya termasuk fungsi polinomial orde ≥ 2?

(49)

48 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Project VI

a. Tujuan

Menentukan nilai error dari masing-masing metode differensiasi numerik yang berbeda.

b. Pseudocode

Pseudocode 7. Alur kode program perbandingan pendekatan beda maju, mundur dan tengah. set x 

Set f(x) , i=0..ni

 for i=1 to n do

bd(x)i=[f(x)i- f(x)i-1 ]/  ∆ x --->backward difference

end for 

 for i=0 to n-1 do

 fd(x)i=[f(x)i+1- f(x) ]/ i  ∆ x --->forward difference

end for 

 for i=1 to n-1 do

cd(x)i=[f(x)i+1- f(x)i-1 ]/2 ∆ x --->central difference

end for 

 plot bd(x) , fd(x)i  , cd(x)i  , i=0..ni

Di mana njumlah data.

c. Implementasi Kode Program

Dimisalkan terdapat deret data hasil pengamatan gerak bola kasti dalam t , sumbu x dan sumbu y dengan ∆t=0.05 s adalah sebagai berikut:

t (s) 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45  x(m) 0.00 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90  y(m) 0.00 2.49 4.90 7.16 9.20 10.94 12.30 13.21 13.60 13.39

Gambar 6.1 Ilustrasi gerak bola kasti

Jika diplotkan berdasarkan letak posisi  x dan y, akan didapatkan ilustrasi gerakan bola sebagaimana Gambar 6.1. Untuk mengetahui kecepatan setiap t untuk arah y (v y) implementasi kode program untuk pendekatan nilai kecepatan dengan metode beda maju, beda mundur dan beda tengah adalah:

(50)

Kode program 13. Pendekatan deferensiasi orde satu dengan beda maju, mundur dan tengah Pascal program difference; uses wincrt; const n=9; var dt,t:real; i:integer; f,bd,fd,cd:array[0..n] of real; fp:text; begin assign(fp,'data.txt'); rewrite(fp); dt:=0.05; f[0]:=0;f[1]:=2.49;f[2]:=4.9; f[3]:=7.16;f[4]:=9.2;f[5]:=10.94; f[6]:=12.3;f[7]:=13.21;f[8]:=13.6; f[9]:=13.39; {inisialisasi awal} for i:=0 to n do begin bd[i]:=f[i];fd[i]:=f[i];cd[i]:=f[i]; end; {Backward difference} for i:=1 to n do bd[i]:=(f[i]-f[i-1])/dt; {Forward difference} for i:=0 to n-1 do fd[i]:=(f[i+1]-f[i])/dt; {Central difference} for i:=1 to n-1 do cd[i]:=(f[i+1]-f[i-1])/(2*dt); t:=0; writeln(fp,'t ':3,'BD':10,'FD':10,'CD':10); for i:=0 to n do begin

writeln(fp,t:4:2,' ',bd[i]:10:7,' ',fd[i]:10:7,' ',cd[i]:10:7); t:=t+dt;

end; close(fp); write('Done..') end.

(51)

50 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Python fp=open("data.txt","w"); n,dt=9,0.05 f=[0.0,2.49,4.9,7.16,9.2,10.94,12.3,13.21,13.6,13.39] bd,fd,cd=[],[],[] #inisialisasi awal for i in f: bd.append(i),fd.append(i),cd.append(i) #backward difference for i in range(1,n+1): bd[i]=(f[i]-f[i-1])/dt #forward difference for i in range(n): fd[i]=(f[i+1]-f[i])/dt #central difference for i in range(1,n): cd[i]=(f[i+1]-f[i-1])/(2*dt) t=0.0 fp.write(" {:10} {:10} {:10} {:10}\n".format("t","BD","FD","CD")) for i in range(n+1): fp.write("{:9f} {:9f} {:9f} {:9f}\n".format(t,bd[i],fd[i],cd[i])) t+=dt fp.close() print "Done.."

(52)

Matlab fp=fopen('data.txt','w'); n=10;dt=0.05; f=[0 2.49 4.9 7.16 9.2 10.94 12.3 13.21 13.6 13.39]; bd=[];fd=[];cd=[]; %inisialisasi awal bd=f;fd=f;cd=f; %backward difference for i=2:n bd(i)=(f(i)-f(i-1))/dt; end %forward difference for i=1:n-1 fd(i)=(f(i+1)-f(i))/dt; end %central difference for i=2:n-1 cd(i)=(f(i+1)-f(i-1))/(2*dt); end t=0; fprintf(fp,'t BD FD CD\n'); for i=1:n fprintf(fp,'%0.2f %2.7f %2.7f %2.7f\n',t,bd(i),fd(i),cd(i)); t=t+dt; end fclose(fp); disp('Done..'); d. Tugas

1. Jalankan Kode program 13, atau buat kode program sesuai dengan kode program yang anda kuasai berdasarkan Pseudocode 7 untuk mendapatkan data-data seperti yang terdapat pada file “data.txt”!

2. Hitung secara analitik kecepatan arah sumbu  y (v y) pada t=0.0, 0.05, 0.10, 0.15,.., 0.90!

3. Plot “data txt” dan bandingkan nilai kecepatan hasil pendekatan metode beda maju, mundur dan tengah, manakah hasilnya yang sesuai dengan perhitungan analitik?

4. Buatlah kode program (atau sesuai bahasa pemrogramanan yang anda kuasai) untuk menghitung percepatan arah  y (menggunakan persamaan 16)! Buktikan percepatan tersebut adalah percepatan gravitasi!

(53)
(54)

PRACTICE VII

INTEGRASI NUMERIK

Teori

Selain bentuk diferensiasi, problem matematik yang sering ditemui dalam fisika adalah problem integrasi. Untuk pendekatan secara numerik terdapat berbagai metode seperti metode kotak, trapesium, Simpson dan Newton-Cotes. Namun di sini akan dipelajari integrasi numerik dengan mengkhususkan pada metode trapesium.

Secara umum integrasi dapat merupakan luasan yang berada di bawah fungsi. Oleh karena itu dengan metode trapesium dapat diilustrasikan ide integrasi numeriknya sebagaimana Gambar 7.1.

Gambar 7.1 Metode trapesium Sehingga solusi persamaan integrasi numeriknya adalah:

,

f(x)<f(x+∆x) (17) Problem

Teknik untuk memperkecil nilai error untuk metode trapesium adalah dengan memperkecil ∆ x, semakin kecil ∆ x, nilai error yang diharapkan akan semakin kecil. Dalam matematik, untuk menghitung luas suatu lingkaran dan karena lingkaran mempunyai jumlah sisi tak terhingga, nilai π hanya dapat dicari dengan pendekatan numerik. Bagaimanakah pengaruh variasi ∆x terhadap nilai π?

(55)

54 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Project VII

a. Tujuan

Menggunakan integrasi numerik untuk memprediksi nilai suatu konstanta. b. Pseudocode

Pseudocode 8. Alur kode program metode trapesium

Set a,b,n dx=(b-a)/n  x=a  f 1=f(x) sum=0 while x<=b do  x=x+dx   f  2=f(x) sum=sum+0.5dx(f 1+f  2 )  f 1=f  2 end while  print sum

di mana n jumlah trapesium, semakin banyak jumlah trapesium semakin kecil ∆ x-nya

c. Implementasi Kode Program

Kode program 14. Integrasi numerik dengan metode trapesium

Pascal program nilaiPi; uses wincrt; var a,b,x,dx,sum,r,f1,f2:real; i,n:integer; function y (r:real;x:real):real; begin y:=sqrt(r*r-x*x); end; begin r:=5;b:=r;a:=0; n:=90; dx:=(b-a)/n; x:=a; f1:=y(r,x); sum:=0; for i:=1 to n do begin x:=x+dx; f2:=y(r,x); sum:=sum+0.5*dx*(f1+f2); f1:=f2; end; writeln('n = ',n); writeln('dx = ',dx:7:6); writeln('Luas O = ',(4*sum):7:6); writeln('Pi = ',((4*sum)/(r*r)):7:6); end.

(56)

Python import math def y(r,x): return (math.sqrt(r*r-x*x)) r,n=5.0,1500 a,b=0.0,r dx=(b-a)/n x,jum=a,0 f1=y(r,x) for i in range(1,n+1): x+=dx f2=y(r,x)  jum+=0.5*dx*(f1+f2) f1=f2 print "n = ",n print "dx = ",dx

print "Luas O = ",(4*jum) print "Pi = ",((4*jum)/(r*r))

Matlab y=@(r,x)(sqrt(r*r-x*x)); r=5.0;n=1500; a=0;b=r; dx=(b-a)/n; x=a;jum=0; f1=y(r,x); for i=1:n+1 x=x+dx; f2=y(r,x);  jum=jum+0.5*dx*(f1+f2); f1=f2; end disp(sprintf('n = %d',n)); disp(sprintf('dx = %.7f',dx)); disp(sprintf('Luas O = %.7f',(4*jum))); disp(sprintf('Pi = %.7f',(4*jum)/(r*r))); d. Tugas

1. Jalankan Kode program 14, atau buatlah kode program sendiri sesuai bahasa pemrograman yang anda kuasai berdasarkan Pseudocode 8 yang di modifikasi, untuk mendekati nilai π! Berapakah nilai π hasil pendekatan? 2. Analisa variasi ∆x terhadap pendekatan nilai π berdasarkan Kode program 14

atau berdasarkan kode program yang anda buat! Bandingkan dengan nilai π dari literatur lain (mis. π = 3.142857142857143)?

6. Gunakan metode numerik lain selain metode trapesium untuk mendekati nilai π! Bandingkan hasilnya?

(57)
(58)

PRACTICE VIII

INTERPOLASI

Teori

Secara garis besar, interpolasi adalah memprediksi nilai suatu titik berdasarkan titik-titik terdekat yang sudah ada/diketahui nilainya. Salah satu contoh metode interpolasi yang mudah adalah metode interpolasi bilinier, dimana idenya adalah mengambil nilai pendekatan berdasarkan asumsi persamaan gradien terhadap 4 titik  terdekat yang sudah diketahui nilainya. Dengan syarat keempat titik tersebut berada membentuk persegi dan nilai titik yang didekati berada dalam 4 titik tersebut. Ilustrasi keberadaan titik tersebut sebagaimana Gambar 8.1.

Gambar 8.1 Posisi titik obyek pada interpolasi bilinier

Persamaan interpolasi bilinier untuk mendekati nilai u di atas adalah sebagaimana persamaan 18.

] (18)

dengan u1 , u2 , u3, danu4 yang sudah diketahui. Problem

Permasalahan fisis dan matematis seperti apa yang dapat atau cocok digunakan interpolasi bilinier, karena dimungkinkan dengan asumsi titik dalam gradien yang sama dapat memiliki nilai error pendekatan yang besar?

x x2 x1 y1 y y2 u(x,y) u1 u3 u2 u4

(59)

58 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 Project VIII

a. Tujuan

Menggunakan Interpolasi untuk mendekati suatu nilai berdasarkan dua sumbu koordinat xdan y.

b. Tugas

Salah satu bentuk implementasi interpolasi Bilinier adalah digunakan untuk  mendekati nilai kecepatan suatu fluida pada suatu titik x dan y berdasarkan 4 titik  yang telah diketahui. Dimisalkan keempat titik tersebut adalah sebagaimana tabel berikut:  x y u(x,y) 1 1 2.75 5 1 3.4 1 3 -1.0 5 3 2.2

1. Buatlah Pseudocode beserta Kode program sesuai bahasa pemrograman yang Anda kuasai untuk mendekati nilai u(2.5,1.5) dengan metode interpolasi Bilinier? 2. Analisa hasil pendekatan kecepatan yang Anda peroleh soal no. 1 di atas?

(60)

SOAL UAP (Take home)

1. Simulasikan Gerak Jatuh Bebas suatu benda bermassa m, ke dalam grafik  hubungan h (ketinggian) dan t (waktu). Dari ketinggian awal h0 (yang dapat

diubah-ubah), dengan syarat ketinggian sebelum dan sesudah menumbuk lantai sama (tumbukan lenting sempurna)! (6)

2. Hampir sama dengan soal no. 1, simulasikan gerak bandul sederhana dalam grafik hubungan x (simpangan) dan t (waktu) dengan syarat gesekan udara diabaikan! (6)

3. Buatlah pseudocode beserta kode program untuk menghitung dengan pendekatan numerik dan n berupa pecahan desimal sembarang (tentukan sendiri) dan bernilai negatif?

4. Sebuah mobil bergerak berubah beraturan dengan kecepatan v tercatat di berbagai titik sepanjang jarak  xsebagai berikut:

 x(m) 0 4 8 12 16 20

(61)

60 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

Tentukan percepatan mobil dengan menggunakan pendekatan numerik? (6)

5. Suatu gerak  projectilediilustrasikan sebagaimana gambar di bawah ini:

di mana sumbu x menunjukkan

pergeseran arah mendatar,

sedangkan sumbu y menunjukkan

perubahan ketinggian (h).

Tentukan persamaan posisi

 projectile sebagai fungsi dari x

(h(x)) dengan menggunakan

pendekatan numerik?

(2)

Ketentuan mengerjakan soal

Kerjakan dengan ketentuan setiap soal terdapat/meliputi:

1. Tinjauan soal/problem (persamaan/model matematis yang digunakan) 2. Penurunan numerik (Metode yang digunakan, diskritisasi model) 3. Pseudocode

4. Grafik, data hasil kompilasi dan Visualisasi (jika ada) 5. Hasil dan Analisa (pembandingan dengan hasil analitis) 6. Kode program

NB:

Penulisan 1, 2, 4 dan 5 jangan terlalu berbelit-belit. Format bukan laporan, format resume biasa saja.

Gambar

Gambar 1.1 File data hasil perhitungan
Gambar 1.3 Running program output ke file Pascal
Gambar 1.5 Tampilan editor Python shell
Gambar 1.6 merupakan contoh tampilan interface Matlab 7.0.1 yang memiliki Command  Windows  yang  fungsinya  hampir  sama  dengan  Phython  Shell  pada compiler  Python  2.7x
+7

Referensi

Dokumen terkait

Metode sebelumnya dalam penggunaan mempunyai ruang lingkup terbatas. Untuk menyelesaikan permainan strategi campuran 3 x 3 atau dimensi yang lebih besar dapat digunakan metode

Metode penelitian yang digunakan dalam penulisan ini adalah metode iterasi variasional untuk menyelesaikan persamaan gelombang air dangkal dan elastik.. Solusi iterasi dari

Apa pengaruh dari pertukaran baris matrik persamaan linier simultan :  Penentuan nilai awal tiap variabel bebas dengan jumlah iterasi akhir  Penentuan nilai error dengan

Metode Bisection dalam persamaan nonlinear, forward dif- ference dalam diferensiasi numerik, metode Trape- zoid dalam integrasi numerik, serta metode Euler dalam persamaan

 Metode iterasi Gauss Seidel digunakan khusus untuk menyelesaikan persamaan simulasi gerak air pada

Dalam penelitian ini digunakan tiga metode iterasi untuk mencari solusi pendekatan dari sistem linier sparse yaitu metode iterasi Jacobi, Gauss-Seidel dan Successive Over Relaxation..

Metode Iterasi titik tetap merupakan metode penyelesaian persamaan non-linier dengan cara menyelesaikan setiap variabel x yang ada dalam suatu persamaan dengan sebagian yang lain

2.2 Metode Iterasi Titik Tetap Menurut Khoiriyah 2021, metode Iterasi Titik Tetap adalah metode penyelesaian persamaan non-linier dengan cara menyelesaikan setiap variabel 𝑥 yang ada