modul prak metnum

19
 Modul Praktikum Metode Numerik 2012 FMIPA UNLAM PROGRAM STUDI ILMU KOMPUTER

Upload: noor-herlinawati-tinami

Post on 18-Jul-2015

526 views

Category:

Documents


1 download

TRANSCRIPT

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 1/19

Modul Praktikum

Metode Numerik 

2 0 1 2

FMIPA UNLAM

PROGRAM STUDI ILMU KOMPUTER

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 2/19

1

Praktikum 1

Persamanan Non Linier

A. Metode Bisection

a.  Dasar Teori

Metode bisection merupakan metode pencarian akar yang menggunakan cara

pembagian dua dari range yang ditentukan sebelumnya. Dua bagian yang tercipta ini

kemudian diperiksa bagian yang ada akar persamaan di dalamnya secara matematis.

Perumusan mencari nilai tengah range :

Metode bisection dapat divisualkan dengan gambar berikut:

b. Algoritma Program

start 

f(x), a, b, del dx,x=0, k=0 

While dx>del 

(a).f(x)<0

x= (a+)/2 

b=x, dx= b-a 

Finish 

yes 

no 

no 

yes 

a=x, dx= a-b 

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 3/19

2

c.  Pelaksanaan Praktikum

Menuliskan kode program bisection pada IDE NetBean atau Eclipse lalu melakukan

run program untuk mengetahui hasilnya. Berikut kode program yang dicobakan:

package bisection;

public class Bisection {

public static double f(double x) {return Math.exp(x)*Math.log(x)-x*x;}

public static void main(String[] args) {

// TODO code application logic here

double x = 0, del = 1e-6, a = 1, b = 2;double dx = b-a;int k = 0;

while (Math.abs(dx) > del) {

x = (a+b)/2;

if ((f(a)*f(x)) < 0) {b = x;dx = b-a;}

else {a = x;dx = b-a;}k++;}

System.out.println("Iterasi ke-: " + k);System.out.println("Nilai Akar: " + x);System.out.println("error: " + dx);

}

}

B.  Metode Regulasi Falsi

a.  Dasar Teori dan Algoritma

Teori dan algoritma regulasi falsi sama dengan bisection. Perbedaannya hanya pada

metode pencarian titik antara yang menggunakan rumus berbeda. Rumus ini

memungkinkan titik antara mempunyai jarak lebih dekat dengan nilai akar yang

dituju sehingga jumlah perulangan yang diperlukan untuk mencapai toleransi error

yang dituju menjadi sedikit. Rumus yang digunakan adalah:

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 4/19

3

b. Pelaksanaan Praktikum

Menuliskan kode program Regulasi Falsi pada IDE NetBean atau Eclipse lalu

melakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

package regufal;

public class Regufal {

public static double f(double x) {return Math.exp(x)*Math.log(x)-x*x;}

public static void main(String[] args) {

// TODO code application logic heredouble x = 0, del = 1e-6, a = 1, b = 2;double dx = b-a;int k = 0;

while (Math.abs(dx) > del) {

x=b-(f(b)*(b-a))/(f(b)-f(a));

if ((f(a)*f(x)) < 0) {b = x;dx = b-a;

}else {a = x;dx = b-a;}k++;}

System.out.println("Iterasi ke-: " + k);System.out.println("Nilai Akar: " + x);System.out.println("error: " + dx);

}

}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 5/19

4

Praktikum 2

Metode Newton Raphson

a.  Dasar Teori

Metode pendekatan yang menggunakan satu titik awal dan mendekatinya dengan

memperhatikan slope atau gradien pada titik tersebut.Titik pendekatan ke n+1 dituliskan

dengan :

Xn+1 = xn -

b. Algoritma Program

a.  Definisikan fungsi f(x) dan f 1

(x)b.  Tentukan toleransi error (e) dan iterasi maksimum (n)

c.  Tentukan nilai pendekatan awal x0 

d.  Hitung f(x0) dan f ’(x0)

e.  Untuk iterasi I = 1 s/d n atau |f(xi)|> e

a.  Hitung f(xi) dan f 1(xi)

Akar persamaan adalah nilai xi yang terakhir diperoleh 

a.  Pelaksanaan Praktikum

Menuliskan kode program metode Newton Raphson pada IDE NetBean atau Eclipse lalu

melakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

Package newtonraphson;import java.io.BufferedReader;import java.io.InputStreamReader;

public class Main {

n

n

 xF 

 xF 

1

i

iii

 x f 

 x f  x x

11

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 6/19

5

public static void main(String[] args) {double del=0, x=0;double dx=0;double x1;int k=0;BufferedReader data=new BufferedReader(new

InputStreamReader(System.in));try{while (dx<=del){System.out.print("Nilai Awal :

");x=Double.parseDouble(data.readLine());System.out.print("Pendekatan :

");dx=Double.parseDouble(data.readLine());System.out.print("Error :

");del=Double.parseDouble(data.readLine());}

while (Math.abs(dx)>del){x1=x-f(x)/d(x);dx=((x1-x)/x1)*100;x=x1;k++;

System.out.println("Iterasi ke-:" + k);System.out.println(" Pendekatan :" + x1);System.out.println(" error :" + Math.abs(dx));}System.out.println("Nilai Akar:" +x);System.out.println("error:" +dx);

} catch(Exception e)

{}}

//Method untuk menghitung fungsi f(x)=exp(x)*log(x)-x*x

public static double f(double x){return ((x*x)-(2*x)-3);

}//Method untuk menghitung turunan pertama, fungsi f'(x)public static double d(double x){

return ((2*x)-2);}

}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 7/19

6

Praktikum 3

Solusi Sistem Persamaan Linier dengan Eliminasi Gaus

a.  Dasar Teori

Metode Eliminasi Gauss : metode yang dikembangkan dari metode eliminasi, yaitu

menghilangkan atau mengurangi jumlah variable sehingga dapat diperoleh nilai dari suatu

variable bebas. Metode eliminasi gauss: metode dimana bentuk matrik augmented, pada

bagian kiri diubah menjadi matrik segitiga atas/segitiga bawah dg menggunakan OBE

(Operasi Baris Elementer).

Sehingga penyelesaian dapat diperoleh dengan:

b. Algoritma Program

Algoritma Metode Eliminasi Gauss adalah sbb :

1. Masukkan matrik A, dan vektor B beserta ukurannya n

2. Buat augmented matrik [A|B] namakan dengan A

3. Untuk baris ke i dimana i=1 s/d n, perhatikan apakah nilai ai,i =0 :

Bila ya :

 pertukarkan baris ke i dan baris ke i+k≤n, dimana ai+k,i ≠0, bila tidak ada berarti

perhitungan tidak bisa dilanjutkan dan proses dihentikan dengan tanpa penyelesaian.

Bila tidak : lanjutkan

4. Untuk baris ke j, dimana j = i+1 s/d n

Lakukan operasi baris elementer:

Hitung : 

Untuk kolom k dimana k=1 s/d n+1 hitung

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 8/19

7

Hitung akar, untuk i = n s/d 1 (bergerak dari baris ke n sampai baris pertama) :

dimana nilai i+k≤n 

c.  Pelaksanaan Praktikum

Menuliskan kode program eleminasi Gauss pada IDE NetBean atau Eclipse lalumelakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

//Eliminasi Gauss

// Mencari solusi sistem persamaan linier

// melalui eliminasi gauss

public class EliminasiGauss {

private static final double EPSILON = 1e-10;

// Eliminasi Gauss

public static double[] lsolve(double[][] A, double[] b) {

int N = b.length;

for (int p = 0; p < N; p++) {

// mencari baris pivot dan menukar-tempat

int max = p;

for (int i = p + 1; i < N; i++) {

if (Math.abs(A[i][p]) > Math.abs(A[max][p])) {

max = i;

}

}

double[] temp = A[p]; A[p] = A[max]; A[max] = temp;

double t = b[p]; b[p] = b[max]; b[max] = t;

// matriks tunggal

if (Math.abs(A[p][p]) <= EPSILON) {

throw new RuntimeException("Matriks tunggal");

}

// pivot dalam A dan b

for (int i = p + 1; i < N; i++) {

double alpha = A[i][p] / A[p][p];

b[i] -= alpha * b[p];

for (int j = p; j < N; j++) {

A[i][j] -= alpha * A[p][j];

}

}

}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 9/19

8

// Subtitusi balik

double[] x = new double[N];

for (int i = N - 1; i >= 0; i--) {

double sum = 0.0;

for (int j = i + 1; j < N; j++) {

sum += A[i][j] * x[j];}

x[i] = (b[i] - sum) / A[i][i];

}

return x;

}

// masukkan data persamaan linier dengan matriks

public static void main(String[] args) {

int N = 3;double[][] A = { { 0, 1, 1 },

{ 2, 4, -2 },

{ 0, 3, 15 }

};

double[] b = { 4, 2, 36 };

double[] x = lsolve(A, b);

// print

for (int i = 0; i < N; i++) {

System.out.println(x[i]);

}

}

}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 10/19

9

Praktikum 4

Metode Secant

a.  Dasar Teori

Metode Secant merupakan perbaikan dari metode regula-falsi dan Newton Raphson,

dimana kemiringan dua titik dinyatakan secara diskrit, dengan mengambil bentuk garis

lurus yang melalui satu titik.

)

Dimana m diperoleh dari

Jika y=F(x), ny dan xn diketahui, maka titik ke n+1 adalah :

Bila titik xn+1 dianggap sebagai akar persamaan maka yn+1 = 0 sehingga

b. Algoritma Program

a.  Definisikan fungsi F(x)

b.  Definisikan torelansi error (e) dan iterasi maksimum (n)

c.  Masukkan dua nilai pendekatan awal yang di antaranya terdapat akar yaitu x0 dan x1,

sebaiknya gunakan metode tabel atau grafis untuk menjamin titik pendakatannya

adalah titik pendekatan yang konvergensinya pada akar persamaan yang diharapkan.

d.  Hitung F(x0) dan F(x1) sebagai y0 dan y1

e.  Untuk iterasi I = 1 s/d n atau |F(xi)|

hitung yi+1 = F(xi+1)

f.  Akar persamaan adalah nilai x yang terakhir.

c.  Pelaksanaan Praktikum

Menuliskan kode program metode Secant pada IDE NetBean atau Eclipse lalu melakukan

run program untuk mengetahui hasilnya. Berikut kode program yang dicobakan:

public class demoSecant{public static void main(String[] args){

double e, x1, x2, x0, fx1,fx2,fx0;x0=1.0;x1=2.0;e=0.001;System.out.println("\t\tProgram Demo Metode Secant");System.out.println("\t\t\tOleh Waskita");System.out.println("\t\t\tVersi 1.0");System.out.println();for(int i=1;i<=4;i++){

fx0 = (x0*x0*x0) + 2*(x0*x0) -3* x0 - 3;fx1 = (x1*x1*x1) + 2*(x1*x1) -3* x1 - 3;x2 = x1 - ( fx1 *((x0 - x1)/(fx0 - fx1)));

1

11

ii

iiiii

 y y

 x x y x x

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 11/19

10

fx2 = (x2*x2*x2) + 2*(x2*x2) - 3*x2 - 3;System.out.println("iterasi ke-"+i);System.out.println("nilai x0 = "+x0);System.out.println("nilai x1 = "+x1);System.out.println("nilai x2 = "+x2);System.out.println("nilai fx0 = "+fx0);System.out.println("nilai fx1 = "+fx1);System.out.println("nilai fx2 = "+fx2);System.out.println();if(fx2<0){

fx2=-1*fx2;if(fx2<=e){System.out.println("akar telah ditemukan");break;}else {

x0 = x1;x1 = x2;}

if(fx2<=e){System.out.println("akar telah ditemukan");break;} else {

x0 = x1;x1 = x2;}

}}

}} 

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 12/19

11

Praktikum 5

Metode Trapezoid

a.  Dasar Teori

Pada metode trapezoida ini setiap bagian dinyatakan sebagai trapezium seperti gambar

berikut :

Luas trapezium ke-i (Li) adalah :

Dan luas keseluruhan dihitung dengan menjumlahkan luas dari

semua bagian trapezium. Sehingga diperoleh

b. Algoritma Program

1. Definisikan fungsi f(x)

2. Tentukan batas bawah dan batas atas integrasi

3. Tentukan jumlah pembagi area N

4. Hitung h=(b-a)/N

5. Hitung

c.  Pelaksanaan Praktikum

Menuliskan kode program metode Trapezoid pada IDE NetBean atau Eclipse lalu

melakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

import java.io.*;

import java.util.Scanner;

public class Trapezoid

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 13/19

12

{

static double trapezoidRule (int size, double[] x, double[] y)

{ double sum = 0.0,

increment;

for ( int k = 1; k < size; k++ )

{//Trapezoid rule: 1/2 h * (f0 + f1)

increment = 0.5 * (x[k]-x[k-1]) * (y[k]+y[k-1]);

sum += increment;

}

return sum;

}

public static void main ( String[] args ) throws Exception

{ String fileName = args.length > 0 ? args[0] :

"InpData.txt";

Scanner inp = new Scanner(new File(fileName));

int k, size;

double[] x, y;

double integral;

size = inp.nextInt();

System.out.println ("Number of points: " + size);

x = new double[size];

y = new double[size];

for ( k = 0; k < size; k++ )

{ x[k] = inp.nextDouble();

y[k] = inp.nextDouble();

}

integral = trapezoidRule (size, x, y);

System.out.printf ("Integral: %4.4f\n", integral);

System.out.printf ("Check: log(%2.2f) = %8.8f\n",

x[size-1], Math.log(x[size-1]) );

}

}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 14/19

13

Praktikum 6

Interpolasi Langrange

a.  Dasar Teori

  Interpolasi Lagrange adalah salah satu formula untuk interpolasi berselang tidak samaselain formula interpolasi Newton umum & metoda Aitken. Walaupun demikian dapat

digunakan pula untuk interpolasi berselang sama.

 Misalkan fgs. y(x) kontinu & diferensiabel sampai turunan (n+1) dalam interval buka

(a,b). Diberikan (n+1) titik (x0,y0), (x1,y1), …, (xn,yn) dengan nilai x tidak perlu berjarak 

sama dengan yang lainnya, dan akan dicari suatu polinom berderajat n. Untuk 

pemakaian praktis, formula interpolasi Lagrange dapat dinyatakan sbb. :

Jika y(x) : nilai yang diinterpolasi; x : nilai yg berkorespondensi dg y(x)

x0, x1, …., xn : nilai x dan y0, y1, …., yn : nilai y

b. Algoritma Program

(1) Tentukan jumlah titik (N) yang diketahui

(2) Tentukan titik-titik Pi(xi,yi) yang diketahui dengan i=1,2,3,…,N

(3) Tentukan x dari titik yang dicari

(4) Hitung nilai y dari titik yang dicari dengan formulasi interpolasi lagrange

(5) Tampilkan nilai (x,y)

c.  Pelaksanaan Praktikum

Menuliskan kode program Interpolasi Langrange pada IDE NetBean atau Eclipse lalu

melakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

// Solusi Numerik dengan Lagrange interpolation

public class Lagrange {

public static void main(String argv[]) {double xi[] = {0, 0.5, 1, 1.5, 2};

0

02010

21

))...()((

))...()(()( y

 x x x x x x

 x x x x x x x y

n

n

1

12101

20

))...()((

))...()(( y

 x x x x x x

 x x x x x x

n

n

n

nnnn

n

 y

 x x x x x x

 x x x x x x

))...()((

))...()((

.

.

110

110

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 15/19

14

double fi[] = {1, 0.938470, 0.765198, 0.511828,0.223891};

double x = 0.9;

double f = aitken(x, xi, fi);

System.out.println("Nilai Interpolasi: " + f);

}

// Method Aitken untuk melaksanakan rekursi.

public static double aitken(double x, double xi[],

double fi[]) {

int n = xi.length-1;

double ft[] = (double[]) fi.clone();

for (int i=0; i<n; ++i) {

for (int j=0; j<n-i; ++j) {

ft[j] = (x-xi[j])/(xi[i+j+1]-xi[j])*ft[j+1]

+(x-xi[i+j+1])/(xi[j]-xi[i+j+1])*ft[j];}

}

return ft[0];

}

}

Penyelesaian Pers.Diferensial

//penyelesaian pers.diferensial dengan metode Euler dan

Runge_Kutta

public class EulerKutta

{

// Jumlah langkah yang digunakan

public static final int STEPS = 100;

// turunan dy/dx untuk nilai x dan y.

public static double deriv(double x, double y)

{

return x * Math.sqrt(1 + y*y);

}

// `main' method

public static void main(String[] argv)

{

// `h' adalah ukuran setiap langkah.

double h = 1.0 / STEPS;

double k1, k2, k3, k4;

double x, y;

int i;

// perhitungan dengan metode Euler// inisialisasi y

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 16/19

15

y = 0;

for (i=0; i<STEPS; i++)

{

// perbaharui nilai x dan nilai y

x = i * h;

y += h * deriv(x, y);

}

// Print out hasil yang diperoleh.

System.out.println("Menggunakan Metode Euler "

+ "nilai pada x=1 adalah :");

System.out.println(y);

// Perhitungan dengan Runge-Kutta Orde ke 4// inisialisasi y

y = 0;

for (i=0; i<STEPS; i++)

{

// updating x

x = i * h;

// Menghitung nilai K

k1 = h * deriv(x, y);

k2 = h * deriv(x + h/2, y + k1/2);

k3 = h * deriv(x + h/2, y + k2/2);

k4 = h * deriv(x + h, y + k3);

// Incrementing y

y += k1/6 + k2/3+ k3/3 + k4/6;

}

// Print out hasil yang diperoleh.

System.out.println();

System.out.println("Runge-Kutta dengan menggunakan Orde ke 4 "+ "Nilai pada x=1 adalah:");

System.out.println(y);

// Print out hasil yang diperoleh.

System.out.println();

System.out.println("Nilai sesungguhnya :");

y = (Math.exp(0.5) - Math.exp(-0.5)) / 2;

System.out.println(y);

}}

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 17/19

16

Praktikum 7

Integral

a.  Dasar Teori

Metode integrasi Simpson merupakan pengembangan metode integrasi trapezoida, hanyasaja daerah pembaginya bukan berupa trapesium tetapi berupa dua buah trapesium dengan

menggunakan pembobot berat di titik tengahnya seperti telihat pada gambar berikut ini.

Atau dengan kata lain metode ini adalah metode rata-rata dengan pembobot kuadrat.

Luas daerah yang dibatasi fungsi y=f(x) dan sumbu x, dihitung dengan aturan Simpson :

Atau dapat ditulis :

b. Algoritma Program

1. Definisikan fungsi f(x)

2. Tentukan batas bawah dan batas ata integrasi

3. Tentukan jumlah pembagi area N

4. Hitung h=(b-a)/N

5. Hitung:

• Metode ini akan mendapatkan hasil yang baik bila diambil n genap.  

c.  Pelaksanaan Praktikum

Menuliskan kode program metode Simpson pada IDE NetBean atau Eclipse lalu

melakukan run program untuk mengetahui hasilnya. Berikut kode program yang

dicobakan:

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 18/19

17

Metode Sepertiga Simpson 

package metnum_sepertigasimpson;import java.util.Scanner;public class Main {

public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("Metode 1/3 Simpson dengan banyak

pias");

System.out.println("=====================================");System.out.println("Fungsi = -X^3 - X^2 + 5X + 3");System.out.print("Batas Bawah (a) = ");double a = input.nextDouble();

System.out.print("Batas Atas (b) = ");double b = input.nextDouble();

System.out.print("Banyak Pias (n) = ");

double n = input.nextDouble();double hasil = In(a,b,n);if (hasil < 0) {

hasil=hasil*(-1);}System.out.println("Hasil yang diperoleh = "+hasil);double mula = asal(a,b);if (mula<0) {

mula = mula*(-1);}double error = ((mula-hasil)/mula)*100;System.out.println("Nilai error = "+error+" %

");}

public static double In(double a,double b, double n) {double deltax = (b-a)/n;double ulang = a;double intgrl = f(a) + f(b);double jmlganjil = 0;double jmlgenap = 0;for (int i=1;i<n;i++) {

ulang+=deltax;if (i % 2==1) {

jmlganjil+=(4*f(ulang));} else jmlgenap+=(2*f(ulang));

}return ((intgrl+jmlganjil+jmlgenap)*deltax/3);

}

public static double asal(double a,double b){return (fungsierror(b)-fungsierror(a));

}public static double f(double x) {

return (-(x*x*x)-(x*x)+(5*x)+3);}

public static double fungsierror(double x) {return ((-0.25*x*x*x*x)-(0.333*x*x*x)+(2.5*x*x)+3*x);

5/16/2018 Modul Prak Metnum - slidepdf.com

http://slidepdf.com/reader/full/modul-prak-metnum 19/19

18

}

}

Metode Tigaperdelapan Simpson

package metnum_tigaperlapansimpson;import java.util.Scanner;public class Main {

public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("Metode 3/8 simpson");System.out.println("==================");System.out.println("Fungsi = -X^3 - X^2 + 5X + 3");

System.out.print("Batas Bawah (a) = ");double a = input.nextDouble();System.out.print("Batas Atas (b) = ");double b = input.nextDouble();

double hasil = In(a,b);if (hasil<0) {

hasil=hasil*(-1);}System.out.println("Hasil yang diperoleh = "+hasil);

double mula = (fungsierror(b))-(fungsierror(a));if (mula < 0) {

mula = mula*(-1);}double error = (((mula-hasil)/mula)*100);System.out.println("Nilai error = "+error+" %

");}

public static double In(double a,double b) {double deltax = (b-a);double ulang = 0;double intgrl = f(a) + f(b);double temp = 0;

for (int i=1;i<3;i++) {ulang+=(a+b)/3;temp+=(3*f(ulang));

}return ((intgrl+temp)*deltax/8);

}public static double f(double x) {

return (-(x*x*x)-(x*x)+(5*x)+3);}public static double fungsierror(double x) {

return (-(0.25*x*x*x*x)-(0.333*x*x*x)+(2.5*x*x)+3*x);}

}