Anda di halaman 1dari 11

Laporan Metode Numerik

Penyelesaian Persamaan Non-Linier


Metode Secant

Nama : Mirza Rafdi Rosada


NIM : 15665040
Kelas : Teknik Informatika Multimedia 3B

Teknologi Informasi
Teknik Informatika Multimedia
Politeknik Negeri Samarinda
2016
Algoritma Metode Secant:
1. Definisikan fungsi f(x)
2. Masukkan range: batas bawah (a) dan batas atas (b).
3. Uji nilai range apakah memiliki akar atau tidak. Jika tidak memiliki akar, perbarui
nilai a dan b sampai range tersebut memiliki akar.
4. Masukkan toleransi error (е) dan jumlah maksimum iterasi N
5. Tentukan p0 = a, p1 = b
6. Hitung fp0 = fx(p0) dan fp1 = fx(p1)
7. Untuk iterasi i = 1 s/d N, hitung:
p2 = p1 – fp1 * (p1 – p0)/(fp1 – fp0)
fp2 = fx(p2).
Jika | (p2-p1) | < error, cetak p2 sebagai hampiran akar. Keluar dari looping.
Jika tidak, tentukan:
p0 = p1.
p1 = p2.
fp0 = fp1.
fp1 = fx(p1).
8. Jika (i > N), hampiran akar tidak ditemukan.
Listing program:
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <math.h>

using namespace std;

float FX(float x)
{
return exp(-x) -x;
}

int main (void)


{
float a, b, e, Fp0, Fp1, Fp2,p0,p1,p2;
int n, kondisi;

cout << "Masukkan NIlai Batas Bawah: ";


cin >> a;
cout << "Masukkan NIlai Batas Atas: ";
cin >> b;
cout << "Masukkan NIlai Batas Toleransi Error: ";
cin >> e;

p0=a;
p1=b;
Fp0 = FX(p0);
Fp1 = FX(p1);

if(Fp0*Fp1 < 0)
{
kondisi = 1;
int itr = 0;

cout << "+---+------------+-------------+-------------+-------------+--------------


+--------------+" << endl;
cout << "|Itr| p0 | p1 | p2 | F(p0) | F(p1) | F(p2)
|" << endl;
cout << "+---+------------+-------------+-------------+-------------+--------------
+--------------+" << endl;

do{
itr++;

p2 = p1-Fp1*(p1-p0)/(Fp1-Fp0);

Fp2 = FX(p2);
cout << setiosflags(ios::fixed);
cout << setprecision(8) << "|" << setw(3) << itr << "| " << setw(7)
<< p0 << " | " << setw(7) << p1 <<
" | " << setw(8) << p2 << " | " << setw(8) << Fp0 << " | " <<
setw(8) << Fp1 << " | " << setw(9) << Fp2 <<
" |" << endl;

if(fabs(p2-p1)<e)
{
kondisi = 0;
e = fabs(p2-p1);
}
else
{
p0 = p1;
p1=p2;
Fp0=Fp1;
Fp1 = FX(p1);
}
}while(kondisi == 1);

cout << "+---+------------+-------------+-------------+-------------+--------------


+--------------+" << endl;

cout << "Jadi Akar yang mendekati adalah " << p2<< endl;
}else{
cout << "Tidak Ada Akar...!!!" << endl;
}

getch();
}
Grafik dari fungsi f(x) = EXP-x – x :
a 0
b 1
error 0,1

iterasi(i) p0 p1 p2 fp0 fp1 fp2 Keterangan


1,00000 0,00000 1,00000 0,61270 1,00000 -0,63212 -0,07081 LANJUT
2,00000 1,00000 0,61270 0,56384 -0,63212 -0,07081 0,00518 STOP

f(x) = EXP-x - x
1,2
1
0,8
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1 1,2
-0,2
-0,4
-0,6
-0,8

a 0
b 1
error 0,01

iterasi(i) p0 p1 p2 fp0 fp1 fp2 Keterangan


1,00000 0,00000 1,00000 0,61270 1,00000 -0,63212 -0,07081 LANJUT
2,00000 1,00000 0,61270 0,56384 -0,63212 -0,07081 0,00518 LANJUT
3,00000 0,61270 0,56384 0,56717 -0,07081 0,00518 -0,00004 STOP
f(x) = EXP-x - x
1,2
1
0,8
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1 1,2
-0,2
-0,4
-0,6
-0,8

a 0
b 1
error 0,001

iterasi(i) p0 p1 p2 fp0 fp1 fp2 Keterangan


1,00000 0,00000 1,00000 0,61270 1,00000 -0,63212 -0,07081 LANJUT
2,00000 1,00000 0,61270 0,56384 -0,63212 -0,07081 0,00518 LANJUT
3,00000 0,61270 0,56384 0,56717 -0,07081 0,00518 -0,00004 LANJUT
4,00000 0,56384 0,56717 0,56714 0,00518 -0,00004 0,00000 STOP

f(x) = EXP-x - x
1,2
1
0,8
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1 1,2
-0,2
-0,4
-0,6
-0,8

a 0
b 1
error 0,0001
iterasi(i) p0 p1 p2 fp0 fp1 fp2 Keterangan
1,00000 0,00000 1,00000 0,61270 1,00000 -0,63212 -0,07081 LANJUT
2,00000 1,00000 0,61270 0,56384 -0,63212 -0,07081 0,00518 LANJUT
3,00000 0,61270 0,56384 0,56717 -0,07081 0,00518 -0,00004 LANJUT
4,00000 0,56384 0,56717 0,56714 0,00518 -0,00004 0,00000 STOP

f(x) = EXP-x - x
1,2
1
0,8
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1 1,2
-0,2
-0,4
-0,6
-0,8

a 0
b 1
error 0,00001

iterasi(i) p0 p1 p2 fp0 fp1 fp2 Keterangan


1,00000 0,00000 1,00000 0,61270 1,00000 -0,63212 -0,07081 LANJUT
2,00000 1,00000 0,61270 0,56384 -0,63212 -0,07081 0,00518 LANJUT
3,00000 0,61270 0,56384 0,56717 -0,07081 0,00518 -0,00004 LANJUT
4,00000 0,56384 0,56717 0,56714 0,00518 -0,00004 0,00000 LANJUT
5,00000 0,56717 0,56714 0,56714 -0,00004 0,00000 0,00000 STOP
f(x) = EXP-x - x
1,2
1
0,8
0,6
0,4
0,2
0
0 0,2 0,4 0,6 0,8 1 1,2
-0,2
-0,4
-0,6
-0,8
Hasil praktikum :
a 0
b 1
error 0,1

a 0
b 1
error 0,01

a 0
b 1
error 0,001
a 0
b 1
error 0,0001

a 0
b 1
error 0,00001
Kesimpulan :
Dari percobaan yang telah dilakukan, kita dapat menentukan nilai akar xi dari fungsi
f(x) = EXP-x - x menggunakan metode Secant. Nilai masukkan yang yang diinput antara lain:
Nilai p0, p1, p2. Dengan kesimpulan sebagai berikut:
Menentukan jumlah itterasi dengan nilai a=0, b=1 :
Nilai Error Jumlah itterasi
0.1 2
0.01 3
0.001 4
0.0001 4
0.00001 5

Menentukan nilai error dengan jumlah iterasi=4:

a b Error [ p2-p1 ]
0 1 0.0000270518
0.25 0.75 0.00000066655
0.25 0.6 0.000000004137
0.5 0.6 0.00000000017

Dari percobaan di atas dapat disimpulkan bahwa semakin kecil nilai Error yang
diberikan, maka semakin banyak jumlah iterasi yang dihasilkan. Demikian juga jika semakin
kecil range di antara nilai atas dan nilai bawah, maka semakin kecil nilai Errornya.

Anda mungkin juga menyukai