Anda di halaman 1dari 14

Modul Praktikum

Matakuliah Metode Komputasi II

disusun Oleh
Dedy Farhamsa

Prodi Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Tadulako
2015

Daftar Isi
Praktikum 1. Menghitung Integral ............................................................................................................................ 3
1.1. Teori Simson 1/3................................................................................................................................................. 3
1.2. Program................................................................................................................................................................... 4
1.3. Tugas ........................................................................................................................................................................ 4
Praktikum 2. Differensial .............................................................................................................................................. 5
2.1. Teori Differensial Numerik ............................................................................................................................. 5
2.2. Program................................................................................................................................................................... 6
2.3. Tugas ........................................................................................................................................................................ 6
Praktikum 3. Mencari Akar Persamaan................................................................................................................... 7
3.1. Teori Metode Newton Rapson ....................................................................................................................... 7
3.2. Program................................................................................................................................................................... 8
3.3. Tugas ........................................................................................................................................................................ 8
Praktikum 4. Interpolasi ................................................................................................................................................ 9
4.1. Teori Polinom Newton ...................................................................................................................................... 9
4.2. Program................................................................................................................................................................ 11
4.3. Tugas ..................................................................................................................................................................... 11
Praktikum 5. Persamaan Differensial ................................................................................................................... 12
5.1. Teori Runga Kutta ............................................................................................................................................ 12
5.2. Program................................................................................................................................................................ 13
5.3. Tugas ..................................................................................................................................................................... 14

Praktikum 1. Menghitung Integral

1.1. Teori Simson 1/3


Bentuk umum integral yang digunakan adalah

( )

Yang merupakan nilai luas dari suatu curva dari batas titik a
hingga titik b. Untuk mempermudah perhitungan, aturan
trapesium diperkenalkan oleh Newton-Cotes berdasarkan
polinomial orde pertama. Hasil integrasi merupakan luas trapesium antara ( ) dan ( )
[ ( )

( )

( )]

Salah satu cara untuk meningkatkan akurasi perhitungan aturan trapesium adalah membagi
interval lintasan integrasi antara a ke b menjadi beberapa segmen dan menerapkan aturan ini
kesetiap segmen. Luas area setiap segmen dapat dijumlahkan untuk menghasilkan area seluruh
interval. Metode ini disebut multi integral.

( )

[ ( )

[ ( )

dimana

( )]

( )

( )

[ ( )

( )]

( )

( )

( )

[ ( )

( )]

( )

)]

[ (

)]

1.2. Program
public class Integral {
public double integral(double a, double b, int n) {
double I = 0;
double dx = (b-a)/n;
for(int i=0; i<=n; i++) {
if(i==0 || i==n)
I = I + getFx(a+i*dx);
else
I = I + 2*getFx(a+i*dx);
}
I = dx*I/2;
return I;
}
public double getFx(double x) {
double f = //(tugas 1)
return f;
}
public static void main(String[] args) {
Integral in = new Integral();
double a =
double b =
int N =
double I = in.integral(a, b, N);
System.out.println(I);
}
}

1.3. Tugas
1. Isi method fungsi() dengan fungsi

[double f = 3*Math.pow(x,2)-5]

2. Kerjakan integral fungsi diatas secara manual dengan batas a=0 dan b=5;
3. Dalam metode integral trapesium, hasil integral akan mendekati nilai sebenarnya (manual)
jika jumlah cacahan trapesium (N) lebih banyak, coba running program untuk N=4 dan
N=100, bandingkan hasilnya dengan hasil perhitungan manual.
4. (Seperti no.1) Rubah fungsi dengan
perhatikan hasilnya.

( ) [double f = x*Math.tan(x)], running dan

Praktikum 2. Differensial
2.1. Teori Differensial Numerik
Secara matematika, differensial berarti rata-rata perubahan variabel tak bebas terhadap
perubahan variabel bebas.
(
Jika

( )

sangat kecil mendekati nol maka differensial menjadi turunan (derivative)


(

( )

Bentuk turunan kedua adalah turunan dari bentuk turunan pertama, yang mengidentifikasikan
seberapa cepat slope berubah.
(

(
(

)
)

( )
)

( )

( )

( )
)

2.2. Program
public class Differensial {
/*methode untuk menghitung differensial orde 1*/
public double diffOrde1(double x, double dx) {
double hasil = 0;
hasil = (getFx(x+dx) - getFx(x))/dx;
return hasil;
}
/*methode untuk menghitung differensial orde 2*/
public double diffOrde2(double x, double dx) {
double hasil = 0;
hasil = (getFx(x+2*dx) - 2*getFx(x+dx) + getFx(x))/Math.pow(dx,2);
return hasil;
}
/*methode untuk mengisi fungsi(x)*/
public double getFx(double x) {
double f = //(tugas 1)
return f;
}
public static void main(String[] args) {
Differensial diff = new Differensial();
double x = //(tugas 3);
doubel deltaX = //(tugas 3);
double hasil1 = diff.diffOrde1(x, deltaX);
double hasil2 = diff.diffOrde2(x, deltaX);
System.out.println(hasil+" "+hasil2);
}
}

2.3. Tugas
1. Isi method fungsi() dengan fungsi
2. Kerjakan integral fungsi diatas secara manual untuk

dan

dititik x=2;

3. Dalam metode differensial numerik, hasil differensial akan mendekati nilai sebenarnya
(manual) jika nilai deltaX mendekati 0, coba running program untuk deltaX=0.1 dan
N=0.0001, isi x=2 dan bandingkan hasilnya dengan hasil perhitungan manual.
4. (Seperti no.1) Rubah fungsi dengan

), running dan perhatikan hasilnya.

Praktikum 3. Mencari Akar Persamaan

3.1. Teori Metode Newton Rapson


Akar-akar suatu persamaan dari suatu fungsi x sebenarnya adalah harga x yang membuat fungsi
. Menyelesaikan suatu akar persamaan dapat dikerjakan dengan metode analitis dan

( )

komputasi. Contoh menggunakan metode analitik adalah sebagai berikut :berapakah akar
persamaan dari ( )
jawab :

Contoh lain : berapakah akar persamaan dari ( )

?. Fungsi ini sangat sulit untuk

diselesaikan menggunakan metode analitis, jadi kita akan menggunakan metode komputasi.
Yang harus dilakukan pertama kita harus menebak nilai awal
taksiran akar persamaan

, kemudian sebuah nilai

akan dihitung dari ekstrapolasi garis singgung f(x) dibawah

sumbu x
( )
( )

jika nilai

benar adalah akar persamaan yang dicari, maka error

| pasti bernilai

kecil (kurang dari 1%), jika tidak, lakukan ektrapolasi kembali pada

hingga kita

mendapatkan error<<1%
Iterasi ke-0

Iterasi ke-1

Iterasi ke-2

(nilai tebakan awal)


(

( )
(

( )
( )
|

|
Karena error<1%, maka

Karena error masih tinggi lakukan Karena error masih tinggi


ektrapolasi kembali
lakukan ektrapolasi kembali

nilai x =

adalah nilai

akar persamaan yg dicari.

3.2. Program
public class NewtonRaphson {
double e = 0.001; //nilai error 1%
public double getRootSquare(double xi) {
double xn = 0;
Differensial diff = new Differensial();
double fx, dfx;
for(int i=0; i<100; i++) { //dicoba iterasi sampai 100 kali
fx = diff.getFx(xi);
dfx = diff.diffOrde1(xi, 0.0001);
xn = xi - fx/dfx;
if(Math.abs((xn-xi)/xn)<e) break; //jika error<1% hentikan iterasi
else xi = xn;
}
return xn;
}
public static void main(String[] args) {
NewtonRaphson nr = new NewtonRaphson();
System.out.println(nr.getRootSquare(1.5));
}
}

3.3. Tugas
1. Buka kembali program Differensial pada praktikum 2.
2. Pada class Differensial, isi method fungsi()

[Math.exp(x)-2-Math.pow(x, 2)]

3. Gunakan class NewtonRapshon untuk mencari akar persamaannya.


4. Kerjakan secara manual mencari akar persamaan fungsi
hasilnya secara komputasi.

dan bandingkan

Praktikum 4. Interpolasi
4.1. Teori Polinom Newton
Adaikan kita memiliki tabulasi data dan ingin menaksir nilai-nilai yang terletak diantara titiktitik data tersebut, metode yang digunakan untuk tujuan tersebut adalah interpolasi. Secara
umum interpolasi digunakan untuk mengkonstruksi suatu fungsi dari himpunan titik yang telah
diketahui, kemudian kita bisa memperkirakan nilai titik lain yang belum diketahui
menggunakan fungsi tersebut. Misal diberikan dua pasangan titik yaitu (x0, f(x0)) dan (x1, f(x1))
dengan x0

x1. Maka dengan menggunakan persamaan garis antara 2 titik (P1(x))


(
(

( )

)
(
)

disebut polinomial linier, persamaan diatas bisa juga ditulis dengan


(

( )

dimana

)
(
(

( ) dan

)
)

].

Untuk persamaan polinomial orde dua, tiga dan seterusnya ditulis sebagai berikut :
Polinomial kuadratik :
Polinomial qubik :

( )

( )

(
(

)(
)(

)
)

)(

)(

dan seterusnya, dimana


( )

( )

( )

( )

( )

( )

[
( )

( )

]
( )

( )

[
( )

[
( )

]
( )

]
( )
[

dan seterusnya. Algoritma untuk mencari nilai

mengikuti tabel dibawah ini

Contoh : Konstruksikan fungsi f(x) = cos x dari titik-titik x0 = 0.2, x1 = 0.3 dan x2 = 0.4
menggunakan Interpolasi Newton, kemudian taksir nilai cos(0.25)
Penyelesaian :

( )
[
[

)
(

]
]

)
]

)
(

(
[

)
[

= +0.756

( )

= 0.98 0.247x + 0.756x2


inilah fungsi polinomial yang dihasilkan, untuk taksiran nilai fungsi dititik x=0.2
(

bandingkan dengan hasil cos(0.25)= 0.96891.

4.2. Program
public class Interpolasi {
double xn[] = {0.2, 0.3, 0.4};
int orde = xn.length;
double an[][] = new double[xn.length][xn.length];
double getFx(double x) { //setting fungsi
double f = Math.cos(x);
return f;
}
void getFPolinomial() {
//membuat an
for(int j=0; j<orde; j++) {
for(int i=0; i<(orde-j); i++) {
if(j==0) an[i][j] = getFx(xn[i]);
else
an[i][j] = (an[i+1][j-1]-an[i][j-1])/(xn[i+1]-xn[0]);
}
}
//menampilkan pers polinomial
System.out.print("f(x) = ");
for(int j=0; j<orde; j++) {
if(j==0) System.out.print(an[0][j]);
else System.out.print(" + "+ an[0][j] +"x^"+j);
}
System.out.println();
}
double getValue(double x) { //mencari nilai fungsi f dititik x
double P = 0;
for(int j=0; j<orde; j++)
P = P + an[0][j]*Math.pow(x, j);
return P;
}
public static void main(String args[]) {
Interpolasi inter = new Interpolasi();
inter.getFPolinomial();
System.out.println(inter.getFx(2));
}
}

4.3. Tugas
1. Buatlah program diatas untuk membandingkan perhitungan manual dan komputasi.
2. Kontruksi persamaan polinomial orde 3 dari fungsi ln(x) untuk titik [1, 4, 5, 6], kemudian
tentukan nilai log(2) secara komputasi.
Catatan : fungsi ln(x) pada program java ditulis Math.log(x), merujuk logaritma natural
( )

( )

Praktikum 5. Persamaan Differensial

5.1. Teori Runga Kutta


Metode Runga Kutta digunakan untuk menyelesaikan persamaan differensial. Metode ini
menawarkan truncation error yang lebih kecil dibandingkan metode lain seperti metode Euler.

Persamaan-persamaan yang menyusun metode Runge-Kutta Orde Empat adalah sebagai


berikut :

)
(

Contoh : Diketahui persamaan diferensial

Jawab : dengan mengganti y menjadi , kita bisa nyatakan (


(
Jika

dan ( )

dimana

) sebagai

)
N=10,

maka

dan

serta

. Sekarang mari kita demonstrasikan metode Runge-Kutta Orde Empat ini. Untuk
menghitung
(

, tahap-tahap perhitungannya dimulai dari menghitung


)

)
*(

*(
)

)
)

(
)

)
+

)
*(

*(

)
)

[(

)
)

+
+

[(

dan akhirnya diperoleh


(

dengan cara yang sama,

dan seterusnya dapat dihitung. Tabel berikut menunjukan

hasil perhitungannya.
( )
0
1
2
3
4
5
6
7
8
9
10

0,0
0,2
0,4
0,6
0,8
1,0
1,2
1,4
1,6
1,8
2,0

0,5000000
0,8292933
1,2140762
1,6489220
2,1272027
2,6408227
3,1799942
3,7323401
4,2834095
4,8150857
5,3054720

0,5000000
0,8292986
1,2140877
1,6489406
2,1272295
2,6408591
3,1799415
3,7324000
4,2834838
4,8151763
5,3053630

0,0000000
0,0000053
0,0000114
0,0000186
0,0000269
0,0000364
0,0000474
0,0000599
0,0000743
0,0000906
0,0001089

5.2. Program
public class RungeKutta {
double a = 0.0, b = 2.0; //batas nilai t : a < t < b
int N = 10;
double h = (b-a)/N;
double w0=0.5; //wi=y(0)
double getFx(double ti, double wi) { //setting fungsi y'=f(ti,wi)
double f = wi - Math.pow(ti,2) + 1;
return f;
}
void run() {
double k1, k2, k3, k4;
double wi = w0;
for(double ti=a; ti<=b; ti+=h) {
System.out.println(ti+"\t"+wi);
k1 = h*getFx(ti,wi);
k2 = h*getFx((ti+h/2),(wi+k1/2));
k3 = h*getFx((ti+h/2),(wi+k2/2));

k4 = h*getFx((ti+h),(wi+k3));
wi = wi + (k1 + 2*k2 + 2*k3 + k4)/6;
}
}
public static void main(String args[]) {
RungeKutta rk = new RungeKutta();
rk.run();
}
}

5.3. Tugas

Sebuah kapasitor yang tidak bermuatan dihubungkan secara seri dengan sebuah
resistor dan baterry. Diketahui = 12 volt, C = 5,00 F dan R = 8,00 105. Saat saklar
dihubungkan (t=0) muatannya tidak ada (q=0)

Tentukan muatan q dari selang waktu 0.0<t<1.0 detik.


Petunjuk : deklarasikan double e=12, C=0.000005, R = 800000;
kemudian ganti fungsi menjadi f = e/R wi/R8C. Tidak ada variable ti difungsi ini.

Anda mungkin juga menyukai