Anda di halaman 1dari 8

LAPORAN UJJIAN TENGAH SEMESTER METODE NUMERIK

PROGRAM C++ PERHITUNGAN SECANT DAN ITERASI SEDERHANA

Dosen Pengampu
Eva Yulia Puspaningrum, S.Kom, M.Kom

Tim Penyusun
Gredy Christian Hendrawan Putra 22081010195

Mata Kuliah Reguler


Metode Numerik H081
23 Oktober 2023

PROGRAM STUDI INFORMATIKA


FAKULTAS ILMU KOMPUTER
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAWA TIMUR
2023
DAFTAR ISI

A. Program Secant.................................................................................................................3
1. Deskripsi Program...........................................................................................................3
2. Penjelasan Algoritma Program.......................................................................................3
3. Source Code Program.....................................................................................................4
4. Hasil Output Program.....................................................................................................5
B. Program Iterasi Sederhana..............................................................................................6
1. Deskripsi Program...........................................................................................................6
2. Penjelasan Algoritma Program.......................................................................................6
3. Source Code Program.....................................................................................................7
4. Hasil Output Program.....................................................................................................8
A. Program Secant
1. Deskripsi Program
Program ini mengimplementasikan metode Secant untuk mencari akar dari
persamaan matematika f (x)=x3 + x 2−3 x−3 , dengan menampilkan tabel iterasi
untuk memantau perkembangan algoritma.

2. Penjelasan Algoritma Program


a. #include <iostream> digunakan untuk melakukan operasi input dan output
standar di C++.
b. #include <cmath> digunakan untuk melakukan operasi matematika khusus,
seperti fabs (menghitung nilai absolut).
c. #include <iomanip> digunakan untuk mengatur lebar kolom tabel (setw).
d. Double f(double x) merupakan definisi fungsi f(x) yang
mengimplementasikan persamaan f(x) = x^3 + x^2 - 3x - 3. Fungsi ini akan
digunakan dalam algoritma Secant untuk menghitung nilai fungsi pada titik
tertentu x.
e. double secant(double x1, double x2, double epsilon, int maxIterasi) Ini
adalah definisi fungsi secant yang mengimplementasikan metode Secant
untuk mencari akar dari persamaan f(x) = 0. Fungsi ini mengambil empat
parameter: x1 dan x2 sebagai tebakan awal, epsilon sebagai toleransi
errornya, dan maxIterasi sebagai jumlah iterasi maksimum sesuai permintaan
user.
f. double x3 digunakan sebagai variabel untuk menyimpan nilai perkiraan
iterasi selanjutnya.
g. Mencetak header tabel dan menggunakan setw untuk mengatur lebar kolom.
h. while (iterasi < maxIterasi) adalah loop while yang akan berjalan selama
jumlah iterasi masih kurang dari maxIterasi.
i. x3 = x2- (f(x2) * (x2 – x1)) / (f(x2) - f(x1)) adalah rumus iterasi utama dari
metode Secant. Formula tersebut menghitung nilai perkiraan baru x3
berdasarkan x1, x2, dan nilai fungsi pada kedua titik tersebut (f(x1) dan
f(x2)).
j. Mencetak hasil iterasi ke dalam tabel dengan cout.
k. if (fabs(x3 – x2) < epsilon) adalah kondisi yang memeriksa apakah selisih
antara x3 dan x2 lebih kecil daripada toleransi error. Jika ya, iterasi
dihentikan dan x3 dikembalikan sebagai hasil akhir.
l. x1 = x2; x2 = x3, Nilai x1 diperbarui dengan x2, dan nilai x2 diperbarui
dengan x3 untuk persiapan iterasi berikutnya.
m.iterasi++ menambah jumlah iterasi.
n. return x3 Setelah loop selesai, nilai akhir x3 dikembalikan sebagai hasil dari
fungsi secant.
o. int main() Ini adalah fungsi utama program.
3. Source Code Program
1 #include <iostream>
2 #include <cmath>
3 #include <iomanip>
4
5 using namespace std;
6
7 //DEKLARASI PERSAMAAN
8 double f(double x) {
9 return x * x * x + x * x - 3 * x - 3; //MASUKKAN PERSAMAAN DISINI
10 }
11
12 //FUNGSI RUMUS SECANT
13 double secant(double x1, double x2, double epsilon, int maxIterasi) { //x0 = x1 di algoritma
14 double x3;
15 int iterasi = 0;
16
17 cout << setw(8) << "\nIterasi" << setw(13) << "x1" << setw(13) << "x2" << setw(13) << "x3" <<
18 setw(15) << "f(x3)" << endl;
19 cout << "------------------------------------------------------------------" << endl;
20
21 while (iterasi < maxIterasi) {
22 x3 = x2 - (f(x2) * (x2 - x1)) / (f(x2) - f(x1));
23
24 cout << setw(5) << iterasi + 1 << setw(15) << x1 << setw(15) << x2 << setw(15) << x3 << setw(15)
25 << f(x3) << endl;
26
27 if (fabs(x3 - x2) < epsilon) {
28 return x3;
29 }
30
31 x1 = x2;
32 x2 = x3;
33 iterasi++;
34 }
35 return x3;
36 }
37
38 //FUNGSI UTAMA PROGRAM
39 int main()
40 {
41 system("cls");
42 double x1 = -4; //MASUKKAN TEBAKAN x1 DISINI
43 double x2 = 3; //MASUKKAN TEBAKAN x2 DISINI
44 double epsilon = 0.0001; //Toleransi = epsilon
45 int maxIterasi = 40; //Iterasi maksimumnya
46
47 cout << "Persamaan\t\t\t: f(x)= x^3 + x^2 - 3x - 3 = 0" << endl;
48 cout << "Tebakan Awal\t\t\t: x1 = " << x1 << ", x2 = " << x2 << endl;
49 cout << "Toleransi Error (epsilon)\t: " << epsilon << endl;
50 cout << "Maksimal Iterasi\t\t: " << maxIterasi << endl;
51
52 double result = secant(x1, x2, epsilon, maxIterasi);
53
54 cout << "\nAkar Persamaan = " << fabs(result) << endl;
55
56 return 0;
57 }
58
59

4.

Hasil Output Program


B. Program Iterasi Sederhana
1. Deskripsi Program
Program ini adalah implementasi metode iterasi sederhana untuk mencari
akar dari sebuah persamaan matematika. Dalam kasus ini, persamaan yang ingin
dipecahkan adalah f ( x )=x 3 + x 2−3 x−3. Metode iterasi sederhana memanfaatkan
fungsi iterasi g(x) untuk mendekati akar persamaan.

2. Penjelasan Algoritma Program


a. #include <iostream> digunakan untuk melakukan operasi input dan output
standar di C++.
b. #include <cmath> digunakan untuk melakukan operasi matematika khusus,
seperti fabs (menghitung nilai absolut).
c. #include <iomanip> digunakan untuk mengatur lebar kolom tabel (setw).
d. double f(double x) definisi fungsi f(x) untuk mengimplementasi persamaan
yang ingin dihitung. Fungsi ini mewakili persamaan f(x) = x^3 + x^2 - 3x - 3.
e. double g(double x) Ini adalah definisi fungsi g(x) yang digunakan dalam
metode iterasi sederhana. Fungsi ini mewakili fungsi iterasi yang akan
digunakan untuk mencari akar persamaan.
f. void IterasiSederhana(double x0, double toleransi, int maxIterasi) Ini adalah
definisi fungsi yang akan melakukan iterasi sederhana untuk mencari akar
persamaan. Fungsi ini mengambil tiga parameter: tebakan awal x0, toleransi
kesalahan toleransi, dan jumlah iterasi maksimum maxIterasi.
g. cout << "\nIterasi\t x(i)\t\t epsilon" << untuk mencetak header tabel.
h. for (int i = 0; i < maxIterasi; i++) loop for yang akan berjalan sebanyak
permintaan user.
i. double x1 = g(x0) adalah langkah iterasi, di mana nilai baru x1 dihitung
dengan menggunakan fungsi iterasi g(x) pada x0.
j. double epsilon = fabs(x1 - x0);: Ini menghitung kesalahan atau selisih antara
x1 dan x0, yang disimpan dalam variabel epsilon dan hasilnya menjadi
absolut.
k. cout mencetak hasil iterasi saat ini ke dalam tabel. setprecision(5) digunakan
untuk mengatur jumlah angka desimal yang ditampilkan sebanyak 5 angka
belakang koma.
l. if (epsilon < toleransi) adalah kondisi yang memeriksa apakah epsilon
(kesalahan) lebih kecil dari toleransi. Jika ya, iterasi dihentikan karena
konvergen telah tercapai, dan hasil akhir dicetak.
m. x0 = x1 Nilai x0 diperbarui dengan nilai x1 untuk digunakan dalam iterasi
berikutnya.
n. int main() adalah fungsi utama program dan memanggil fungsi-fungsi
perhitungan.
3. Source Code Program
1 #include <iostream>
2 #include <iomanip>
3 #include <cmath>
4
5 using namespace std;
6
7 // Mengganti fungsi f(x) yang ingin dihitung
8 double f(double x) {
9 return x * x * x + x * x - 3 * x - 3;
10 }
11
12 // Mengganti fungsi g(x) yang digunakan dalam metode iterasi sederhana
13 double g(double x) {
14 return cbrt(3 + (3 * x) - (x * x));
15 }
16
17 void IterasiSederhana(double x0, double toleransi, int maxIterasi) {
18 cout << "\nIterasi\t x(i)\t\t epsilon" << endl;
19 cout << "-----------------------------------" << endl;
20
21 for (int i = 0; i < maxIterasi; i++) {
22 double x1 = g(x0); // Iterasi menggunakan g(x)
23 double epsilon = fabs(x1 - x0);
24
25 cout << i + 1 << "\t " << x1 << fixed << setprecision(5) << "\t " << epsilon << endl;
26
27 if (epsilon < toleransi) {
28 cout << "Konvergensi tercapai. \n\nHasil akhir: " << x1 << endl;
29 break;
30 }
31
32 x0 = x1;
33 }
34 }
35
36 int main() {
37 double x0, toleransi;
38 int maxIterasi;
39
40 cout << "Persamaan: \nf(x) = x^3 + x^2 - 3x - 3=0\n"; //Copy persamaan pada line ini di dalam tanda
41 petik
42 cout << "g(x) = (-x^2+3x+3)^1/3\n\n"; //Copy persamaan g(x) pada line ini di dalam tanda petik
43
44 cout << "Masukkan tebakan awal (x0): ";
45 cin >> x0;
46 cout << "Masukkan toleransi error: ";
47 cin >> toleransi;
48 cout << "Masukkan maksimum iterasi: ";
49 cin >> maxIterasi;
50
51 IterasiSederhana(x0, toleransi, maxIterasi);
52
53 return 0;
54 }
55
56
57

4. Hasil Output Program

Anda mungkin juga menyukai