Hello Sobat
blogger. Beberapa hari yang lalu saat
mata kuliah Metode Numerik aku dapat materi Metode Iterasi Sederhana.
Kali ini aku akan berbagi mengenai Metode Iterasi sederhana. Metode Iterasi
Sederhana adalah metode yang digunakan untuk mencari akar dari persamaan
kuadrat dengan memisalkan nilai y = 0, kemudian memisahkan nilai x satu dengan
x yang lainnya sehingga memunculkan fungsi yang baru, misal :
Fungsi baru ini digunakan
untuk mencari nilai x yang pertama. Kemudian nilai tersebut dimasukan kedalam fungsi x (f(x)). Lihat contoh dibawah ini :
untuk mencari nilai x yang pertama. Kemudian nilai tersebut dimasukan kedalam fungsi x (f(x)). Lihat contoh dibawah ini :
Misal
x awal (x0) = 0 à x awal merupakan nilai input
awal(terserah sobat).
Nilai
x0 dimasukan kedalam persamaan g(x) (persamaan untuk mencari nilai x) hasil
dari gx kemudian dimasukan dalam fungsi f(x), jika nilai absolut f(x) mendekati
0, maka nilai dari x adalah adalah akar
dari persamaan.
Untuk lebih jelasnya perhatikan
algoritma berikut :
- Inisialisasi fungsi f(x) = x + e, g(x)= - e, dan g’(x) = - e;
- Inisialisasi String s;
- Inisialisasi int n, i = 1;
- Inisialisasi double x0, fx, gx, g’x;
- Tentukan nilai awal (x), toleransi error, dan banyak iterasi maksimal;
- Temp = x
- x = g(x);
- fx = f(x);
- g’(x) = g’(temp)
- temp = x;
- jika fx > 0 dan fx <1 data-blogger-escaped-:="" data-blogger-escaped-monoton="" data-blogger-escaped-s="“Konvergen" data-blogger-escaped-span="">
- jika fx> -1 dan fx <0 data-blogger-escaped-:="" data-blogger-escaped-berisolasi="" data-blogger-escaped-s="“Konvergen" data-blogger-escaped-span="">
- jika fx > 1 : s = “Divergen Monoton”;
- selain itu : s = “Divergen Berisolasi”;
- Cetak x, fx, g’x dan s;
- Naikan +1 nilai i;
- x = g(x);
- apakah i < n atau nilai absolut fx < e?;
- Ya : keluar perulangan;
- Tidak : kembali ke ke 8.
Listing program
:
#include
#include
#include
double fungsif (double);
double fungsig (double);
double diffungsig(double);
main(){
double x0=-1,tempx, fx0,fx1,
e=0.001;
int n=10, i=1, status;
char *s="";
puts("\t\tMETODE
ITERASI");
puts("\t\t f(x)=x+e^x");
printf("Masukan nilai
x0 : ");
scanf("%lf",
&x0);
printf("Masukan nilai
error : ");
scanf("%lf",
&e);
printf("Masukan jumlah
iterasi : ");
scanf("%d", &n);
tempx = x0;
x0 = fungsig(x0);
puts("=================================================================");
printf("| n | gx
| fx |
dif gx | status |\n");
puts("=================================================================");
while (i<=n){
fx0 = fungsif(x0);
fx1 =
diffungsig(tempx);
tempx=x0;
if(fx1> 0 &&
fx1<1 data-blogger-escaped-o:p="">
s =
"Konvergen Monoton";
else if (fx1>-1
&& fx1<0 data-blogger-escaped-o:p="">
s =
"Konvergen berisolasi";
else if (fx1>1){
s =
"Divergen Monoton";
status = 0;
}
else {
s =
"Divergen Berisolasi";
status = 1;
}
printf("|%2d | %8lf
| %9lf | %lf | %20s |\n",i ,x0,
fx0, fx1,s);
x0 = fungsig (x0);
i++;
if(fx0<0 data-blogger-escaped-o:p="">
fx0 = fx0*-1;
if(fx0
break;
}
puts("=================================================================");
}
double fungsif (double a){
double hasil;
hasil =a + exp(a);
return hasil;
}
double fungsig (double b ){
double hasil2;
hasil2 = - exp(b);
return hasil2;
}
double diffungsig(double c){
double hasil3;
hasil3 = -exp(c);
return hasil3;
}
Output:
Sekian sobat blogger untuk post hari ini..nantikan ilmu-ilmu yang berikutnya. Berbagi itu memang menyenangkan!
"Usaha tanpa henti adalah kunci membuka gembok pontensi diri bukan kekuatan atau kecerdasan." ~Winston Churchill
No comments:
Post a Comment