LEMBAR LAPORAN PRAKTIKUM · Web viewAdalah metode pencarian akar persamaan dengan memanfaatkan...

Preview:

Citation preview

LEMBAR LAPORAN PRAKTIKUM

Nomor : 3 (Tiga)

Nama Mata Kuliah : Praktikum Teknik Komputasi

Kode MK / Bobot SKS : 41323115/ 1 SKS

Program Studi : D3 Manajemen Informatika

Dosen / Instruktur : Unit Tree Kartini, S. T.,M.T.

Nama Mahasiswa / NRP : Andriyan Dwi Putranto / 115623003

LEMBAR LAPORAN PRAKTIKUM

Nomor : 3 (Tiga)

Nama Mata Kuliah : Praktikum Teknik Komputasi

Kode MK / Bobot SKS : 41323115/ 1 SKS

Program Studi : D3 Manajemen Informatika

Dosen / Instruktur : Unit Tree Kartini, S. T.,M.T.

Nama Mahasiswa / NRP : Ferdian Budi Cahyono / 115623005

LEMBAR LAPORAN PRAKTIKUM

Nomor : 3 (Tiga)

Nama Mata Kuliah : Praktikum Teknik Komputasi

Kode MK / Bobot SKS : 41323115/ 1 SKS

Program Studi : D3 Manajemen Informatika

Dosen / Instruktur : Unit Tree Kartini, S. T.,M.T.

Nama Mahasiswa / NRP : Sarah Ivanda Pradani / 115623006

LEMBAR LAPORAN PRAKTIKUM

Nomor : 3 (Tiga)

Nama Mata Kuliah : Praktikum Teknik Komputasi

Kode MK / Bobot SKS : 41323115/ 1 SKS

Program Studi : D3 Manajemen Informatika

Dosen / Instruktur : Unit Tree Kartini, S. T.,M.T.

Nama Mahasiswa / NRP : Ricky Faturahman / 115623211

A. Judul

Penyelesaian Persamaan Non Linear dengan Metode regula falsi

B. Dasar Teori

METODE REGULA FALSI

Adalah metode pencarian akar persamaan dengan memanfaatkan kemiringan dan selisih tinggi dari dua titik batas range. Seperti halnya metode biseksi, metode ini bekerja secara iterasi dengan melakukan update range. Titik pendekatan yang digunakan oleh metode regula falsi adalah :

                     Dengan kata lain titik pendekatan x adalah nilai rata-rata range berdasarkan F(x).

Perhatikan kebangunan 2 segitiga  Pcb dan  PQR di atas, sehingga persamaan berikut dapat digunakan:

D. Listing Program

A. Algoritma

Algoritma Metode Regula Falsi

1. Definisikan fungsi f(x)2. Tentukan batas bawah (a) dan batas atas (b)

3. Tentukan toleransi error (e) dan iterasi maksimum (n)

4. Hitung F(a) = f(a) dan F(b) = f(b)

5. Untuk Iterasi I=1 s/d n atau error > e

 

Hitung F(x) = f(x)

Hitung error = [Fx]

Jika Fx . Fa < 0 maka b=x dan Fb=Fx jika tidak a=x dan Fa=Fx

Akar persamaan adalah x

#include <iostream.h>

#include <stdlib.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

#define e 2.718281828

#define error_limit 0.00000000000001 //flexible sesuai kebutuhan

main()

{

FILE *regula_falsi, *regula_x;

double fx1, fx2, fx3,

x1, x2, x3,

x10, x20, f1f2,

x, dx, y1, y2, dy;

int i, j, k;

char lagi, belum;

do

{

clrscr();

j=0;

regula_falsi = fopen("regula_falsi.txt", "w+");

regula_x = fopen("cross_regula.txt", "w+");

do

{

clrscr();

cout << "Metode Regula-Falsi\n";

cout << "===================\n\n";

//Persamaan utama dan persamaan untuk mencari titik potongnya

cout << "f(x) = 3*e^x - x - 3\n\n";

cout << "y1 = 2e^x dan y2 = x+3\n\n";

cout << "Mencari Titik Potong terdekat\n";

cout << "-----------------------------\n\n";

cout << "Berapa Nilai awal x = ";

cin >> x;

cout << "\nBerapa Nilai Interval x = ";

cin >> dx;

cout << "\nBerapa kali Iterasi = ";

cin >> k;

printf("\n\t-------------------------------------------------\n");

printf("\tIterasi ke-\tx\ty1\ty2\tselisih\n");

printf("\t-------------------------------------------------\n\n");

fprintf(regula_x,"\n\t-------------------------------------------------\n");

fprintf(regula_x,"\tIterasi ke-\tx\ty1\ty2\tselisih\n");

fprintf(regula_x,"\t-------------------------------------------------\n\n");

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

{

y1 = 2*pow(e,x);

y2 = x + 3;

dy = y1 - y2;

printf("\t\t%d\t%.1f\t%.2f\t%.2f\t%.2f\n", i+1, x, y1, y2, dy);

fprintf(regula_x, "\t\t%d\t%.1f\t%.2f\t%.2f\t%.2f\n", i+1, x, y1,y2,dy);

x+=dx;

}

printf("\n\t-------------------------------------------------\n\n");

fprintf(regula_x, "\t-------------------------------------------------\n\n");

fclose(regula_x);

cout << "\nApakah Titik Potong telah ditemukan ? ";

cin >> belum;

}while(belum != 'y');

cout << "\nMencari Titik Potong sebenarnya\n";

cout << "===============================\n\n";

cout << "Masukkan Nilai x1 = ";

cin >> x1;

x10 = x1;

fx1 = (3*pow(e,x1)) - x1 - 3;

cout << "\nMasukkan Nilai x2 = ";

cin >> x2;

fx2 = (3*pow(e,x2)) - x2 - 3;

x20 = x2;

f1f2 = fx1*fx2;

(f1f2 >= 0.0);

printf("\n----------------------------------------------------------------\n");

printf("Iterasi ke-\tx3\tfx3\t\tfx3 (16 digit) Error Aproksimasi\n");

printf("----------------------------------------------------------------\n\n");

fprintf(regula_falsi,"\n--------------------------------------------------\n");

fprintf(regula_falsi,"Iterasi ke-\tx3\tfx3\t\tfx3(16digit) ErrorAproksimasi\n");

fprintf(regula_falsi, "-------------------------------------------------\n\n");

do

{

j++;

x3 = (x1*fx2 - x2*fx1)/(fx2 - fx1);

fx3 = (3*pow(e,x3)) - x3 - 3;

printf("\t%d\t%.3f\t%.6f\t%.16f\n", j, x3, fx3, fabs(fx3));

fprintf(regula_falsi,"\t%d\t%.3f\t%.6f\t%.16f\n", j, x3, fx3,

fabs(fx3));

if(fx1*fx3 < 0)

{

x2 = x3;

}

else

{

x1 = x3;

fx1 = fx3;

}

}while(fabs(fx3) > error_limit);

printf("\n----------------------------------------------------------------\n");

fprintf(regula_falsi,"\n---------------------------------------------------");

printf("\n\nDengan Nilai awal x1 = %.2f dan x2 = %.2f", x10, x20);

printf("\n\nDiperoleh Akar Persamaan x = %.3f", x3);

printf("\n\nDengan Error sebesar = %.16f", fabs(fx3));

fprintf(regula_falsi,"\n\nDengan Nilai awal x1 = %.2f dan x2 = %.2f", x10, x20);

fprintf(regula_falsi,"\n\nDiperoleh Akar Persamaan x = %.3f", x3);

fprintf(regula_falsi,"\n\nDengan Error sebesar = %.16f", fabs(fx3));

fclose(regula_falsi);

cout << "\n\nTekan Enter untuk melanjutkan .........";

MULAI

DEFINISIKAN FUNGSI

Baca: a, b, tol, iter max

Iter = 0

Fa = F(a)

Fb = F(b)

Fa * Fb > 0

Tulis : Fa * Fb > 0

iter = iter + 1

, Fm = F(m)

, Fm = F(m)

m-a < tol, iter > iter_max

Fa * Fm < 0

b = m, Fb=Fm

a = m, Fa = Fm

Tulis hasil: m,F(m)

SELESAI

getch();

clrscr();

cout << "\n\nCoba lagi dengan x dan y berbeda (y/t) ? ";

cin >> lagi;

}while(lagi != 't');

return 0;

}

E. Gambar Skema/Flowchart

F. Bahan dan peralatan :

Komputer Laboratorium

Software C++

Disket/Flashdisk

G. Langkah-langkahKegiatan :

1. Mendefinisikan dari permasalahan matematis nonlinear untuk menentukan

nilai x yang memotong sumbu x,

2. Pengamatan awal:

Dapatkan dua nilai pendekatan awal diantara nilai x yang memotong sumbu

x sebagai nilai a (batas atas) dan nilai b (batas bawah)

3. Pengamatan hasil :

a. Dapatkan nilai akar dan f(x) yang = 0 atau mendekati nilai 0 pada setiap

iterasi dari awal sampai akhir iterasi

b. Dapatkan nilai x dengan persamaan :

c. Akhir iterasi ditentukan sampai dengan n iterasi atau jika nilai < error

4. Pengamatan terhadap hasil dengan bermacam-macam parameter input:

a. Nilai error (e) akar ditentukan = 0.00000001 sebagai pembatas iterasi

nilai f(x)

b. Jumlah iterasi maksimum

c. Bandingkan antara hasil yang diperoleh

d. Pengubahan nilai awal batas atas dan batas bawah

H. Hasil Kegiatan Praktikum

1. Tabel Hasil Percobaan

2. Pengamatan Terhadap Hasil

3. Pengubahan nilai awal batas atas dan batas bawah terhadap

perhitungan

Jika batas atas dan batas bawahnya diubah maka akan mempengaruhi titik potongnya. Begitu juga dengan keeror-annya.

I. Analisa dan Kesimpulan

Secara umum konvergensinya lebih cepat dibandingkan dengan metode biseksi. Namun, pada beberapa kasus kecepatan konvergensinya justru lebih lambat.Dari perhitungan manual dan program didapatkan hasil yang sama.

J. Tugas dan Pertanyaan :Dari suatu perhitungan tentang kebutuhan akan produksi optimal suatu

perusahaan didapat persamaan biaya yang dibutuhkan untuk pengadaan produksi dalam satu hari sebagai berikut :

C = 13000 N-1 + 158.11 N-0.5 + N + 0.0025 N2

dengan

C = biaya per hari

N = jumlah komponen yang diproduksi

Hitunglah jumlah optimal komponen yang diproduksi sehingga biaya produksi menjadi minimum.

Penyelesaian

Biaya minimum turunan pertama dari persamaan biaya harus nol.. Ini berarti : C ‘ (N) = - 13000 N-2 - 79.055 N-1.5 + 1 + 0.005 N = 0

Nyatakan kembali persamaan dalam varibel bebas x :

- 13000 x -2 - 79.055 x -1.5 + 1 + 0.005 x = 0

Maka, menghitung akar persamaan dengan program 1.5 setelah modifikasi pada definisi fungsi adalah:

return -13000 /(x * x) - 79.055 / (x * sqrt(x)) + 1 + 0.005 * x; (C++)

f : = -13000 /(x * x) - 79.055 / (x * sqrt(x)) + 1 + 0.005 * x; (Pascal)

yang memberikan hasil eksekusi program :

Harga awal = 100

Harga kedua = 90

Toleransi = 0.001

Jumlah iterasi maksimum = 10

Toleransi terpenuhi

Hasil akhir = 96.4122577

Jumlah produksi optimal dalam satu hari adalah : N = 94 buah

x f(x) epsilon96.71768 0.01074 6.7E+00

96.43829 0.00092 2.8E-0196.41215 -0.00000 2.6E-0296.41226 0.00000 1.1E-04

K.Daftar Pustaka

http://saluky.blogspot.com/2011/12/metoda-rugula-false-dengan-php.html

Recommended