Ketika ingin membuat posting baru, saya jadi teringat akan 1 mata kuliah yang cukup menarik bagi saya sehingga berniat untuk dibagikan pada postingan ini.
Nah metode numerik dengan sub method nya yang dikenal dengan Metode Bisection atau kata lainnya metode bagi dua.
Metode ini digunakan untuk mencari solusi dari suatu permasalahan yang ada dengan nilai signifikan dan ketentuan error yang telah ditetapkan.
Algoritmanya sendiri tidak begitu rumit dan cukup mudah untuk dipahami,
Nah metode numerik dengan sub method nya yang dikenal dengan Metode Bisection atau kata lainnya metode bagi dua.
Metode ini digunakan untuk mencari solusi dari suatu permasalahan yang ada dengan nilai signifikan dan ketentuan error yang telah ditetapkan.
Algoritmanya sendiri tidak begitu rumit dan cukup mudah untuk dipahami,
dimana solusi sederhana pemecahan masalah tersebut adalah merupakan akar kuadrat dari persamaan tersebut yaitu X1 = 2 dan X2 = 4.
Kemudian bagaimana jika untuk kasus X1 = 3 dan X2 = 6.
Nahh,, untuk mencari pemecahan masalah dari kasus diatas menggunakan metode bisection, maka perlu melalui suatu ketentuan bahwa masing-masing koordinat fungsi dari perhubungan 2 titik yang ditemukan harus berbeda tanda (+/-), sehingga metode bagi dua dapat dilakukan. dan jika kondisi seperti itu tidak memenuhi, maka metode bagi dua tidak bisa dilakukan.
kita misalkan XL = 3 dan XR = 6 ,,
XL adalah X Left --> terletak diantara titik 2 dan 4.
XL adalah X Right --> terletak setelah titik X=4.
Nah,,jika ditarik koordinat maka (XL,f(XL)) = (3, +),,dan (XR,f(XR)) = (4, -)
Kondisi yang memenuhi untuk perhitungan bisection.
Sehingga dapat dibuatkan suatu aturan Logika Algoritmanya seperti berikut :
1. Tentukan nilai XL, XR
Syarat : f(XR) != F(XR) --> beda tanda
2. Tentukan Errornya berapa,,contoh E = 0.01
3. Dapatkan nilai XT (X tengah ) = (XL + XR)/2
4. Hitung F(XT) dengan memasukan Nilai XT pada persamaan X2 – 6X + 8 = 0
5. Cek kondisi apakah nilai Mutlak hasil fungsi F(XT) kurang dari atau sama dengan Error
Jika Ya , maka Solusi adalah XT
Jika Tidak, maka lakukan pengecekan ulang apakah tanda dari fungsi F(XL) sudah sama dengan
fungsi F(XT).
Jika Ya , maka tukar nilai XL = XR dan XR = XR
Jika Tidak, Tukar nilai XR = XT dan XL = XL
Setelah itu lanjutkan loop ke langkah nomor 3, hingga Solusi ditemukan dengan semua kondisi terpenuhi maka pencarian selesai.
Berikut adalah contoh Output Program dengan XL = 3, XR = 6 dan E = 0.01 dengan float 4 desimal.
Source Code :
XP-Emergency
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
float XL,XR,E,FXL,FXR,XT,FXT;
XL=3; XR=6; E=0.01;
int n=1;
FXT=fabs(FXT);
printf("\nE = %1.4f\n\n",E);
printf("No. | XL | XR | F(XL) | F(XR) | XT | F(XT) | |F(XT)|<= E\n\n");
why:
FXL=pow(XL,2)-6*(XL)+8;
FXR=pow(XR,2)-6*(XR)+8;
XT=(XL+XR)/2;
FXT=pow(XT,2)-6*(XT)+8;
printf("%d. %1.4f, %1.4f, %1.4f, %1.4f, %1.4f, %1.4f\n" n,XL,XR,FXL,FXR,XT,FXT);
if ( (FXL*FXR) < 0 ) //agar 1 positif dan 1 negatif
{
if ( fabs(FXT) <= E )
{
printf("\nSolusi (XT)= %1.4f",XT)
}
else
{
if ( (FXL*FXT) > 0 )
{
XL = XT; XR = XR;
n=n+1;
goto why;
}
else
{
XR = XT; XL = XL;
n=n+1;
goto why;
}
}
}
else
{
cout<<"\nTidak Memenuhi Persyaratan";.
}
getch();
}
XP-Emergency
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
float XL,XR,E,FXL,FXR,XT,FXT;
XL=3; XR=6; E=0.01;
int n=1;
FXT=fabs(FXT);
printf("\nE = %1.4f\n\n",E);
printf("No. | XL | XR | F(XL) | F(XR) | XT | F(XT) | |F(XT)|<= E\n\n");
why:
FXL=pow(XL,2)-6*(XL)+8;
FXR=pow(XR,2)-6*(XR)+8;
XT=(XL+XR)/2;
FXT=pow(XT,2)-6*(XT)+8;
printf("%d. %1.4f, %1.4f, %1.4f, %1.4f, %1.4f, %1.4f\n" n,XL,XR,FXL,FXR,XT,FXT);
if ( (FXL*FXR) < 0 ) //agar 1 positif dan 1 negatif
{
if ( fabs(FXT) <= E )
{
printf("\nSolusi (XT)= %1.4f",XT)
}
else
{
if ( (FXL*FXT) > 0 )
{
XL = XT; XR = XR;
n=n+1;
goto why;
}
else
{
XR = XT; XL = XL;
n=n+1;
goto why;
}
}
}
else
{
cout<<"\nTidak Memenuhi Persyaratan";.
}
getch();
}
Gak bisa Running Mas
BalasHapusBisa,, periksa lagi dimana letak errornya . . .
BalasHapusmasalah kecil itu
Thank you pe...
BalasHapusemangnya pake go to bisa ya??
BalasHapusko ga running