Upload
hoangngoc
View
212
Download
0
Embed Size (px)
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