widget

Senin, 24 April 2017

Pengertian,Struktur,dan Contoh LOOP C++ WHILE, DO WHILE AND FOR

Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam-macam.

1.) Struktur Perulangan “ While”
Perulangan WHILE banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah. Ekspresi Umum :
for( awal ; kondisi ; counter )
{
Statementl;
Statement2;
}
Statement3;
Contoh Program Perulangan While 1
#include <stdio.h>
#include <conio.h>
int main(){
int x;
x = 1; /* awal variabel */
while (x <= 10) /* Batas akhir perulangan */
{
printf(” Belajar C++\n”, x);
x++; /* variabel x ditambah dengan 1 */
}
getch();
}
Outputnya seperti gambar dibawah ini
https://alcantana.files.wordpress.com/2014/01/1.jpg
Pada perulangan while di atas, proses atau perintah mencetak kata-kata “Belajar C/C++” akan terus dilakukan selama variabel x masih kurang atau sama dengan 10. Setiap kali melakukan perulangan, nilai dari variabel x akan bertambah 1.
Contoh Program Perulangan While 2
#include <stdio.h>
#include<conio.h>
int main()
{
int i=1,x;
while(i<=5)
{
x=1;
while(x<=i)
{
printf(“%d “,x); x=x+1;
}
printf(“\n”);
i=i+1;
}
getch();
}
Outputnya seperti gambar dibawah ini
https://alcantana.files.wordpress.com/2014/01/2.jpg
2. Struktur Perulangan “Do…..While…”
Pada dasarnya struktur perulangan do….while sama saja dengan struktur while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do….while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan, Bentuk Umum
do
{
Statementl;
Statement2;
}
while( expression )
Statement3;
Contoh Program Perulangan Do .. While 1
#include <stdio.h>
#include <conio.h>
int main()
{
int x;
x = 1;
do
{
printf(“Belajar C++\n”, x);
x++;
}while(x <= 10);
getch();
}
Outputnya sama seperti diatas pada perulangan While 1.
Contoh Program Perulangan Do .. While 2
#include <stdio.h>
#include<conio.h>
int main()
{
int i=1,x;
do
{
x=1;
do
{
printf(“%3i”,x);
x=x+1;
}while(x<=i);
printf(“\n”);
i=i+1;}while(i<=5);
getch();
}
Outputnya juga sama seperti diatas pada perulangan While 2.
3. Struktur Perulangan “For”
Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana. Bentuk umum perulangan for adalah sebagai berikut :
for( Inisialisasi ; Kondisi ; Counter )
{
Statementl;
Statement2;
}
Statement3;
Keterangan :
Inisialisasi : Pernyataan untuk menyatakan keadaan awal dari variabel kontrol.
Kondisi : Ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan. 
Counter : Pengatur perubahan nilai variabel kontrol.
Contoh Program Perulangan For 1
#include <stdio.h>
#include <conio.h>
int main()
{
int x;
for(x = 1; x<= 10; x++)
{
printf(“Belajar C++\n”, x);
}
getch();
}
Outputnya sama seperti diatas pada perulangan While 1.
Contoh Program Perulangan For 2
#include<stdio.h>
#include<conio.h>
int main()
{
int i,x;
for(i=1; i<=5; i++)
{
for(x=1; x<=i; x++)
{
printf(“%3i”,x);
}
printf(“\n”);
}
getch();
}
Outputnya sama seperti diatas pada perulangan While 2.
Contoh Program Perulangan For 3
#include<stdio.h>
#include<conio.h>
int main()
{
float r,i,x,t=0;
int y;
for(y = 1; y <= 3; y++)
for(i = 0; i <= 2; i++)
{
printf(“Entry bilangan %i : “,y);scanf(“%f”,&x);
t = t + x;
y = y + 1;
}
printf(“\n Total : %.2f”,t);
r = t / i;
printf(“\n Rata rata : %.2f”,r);
getch();
}
ketika program pertama kali dijalankan program meminta 3 inputan.
Outputnya seperti pada gambar dibawah ini..
https://alcantana.files.wordpress.com/2014/01/3.jpg

Tipe Data, Perulangan, & Percabangan : Perbedaan do-while, while, for, break, continue, & goto

4. Jelaskan perbedaan dari pernyataan do-while, while, for, break, continue, goto! Berikan contoh penggunaan dari masing-masing pernyataan!
a. Pernyataan Do…While
Digunakan untuk menjalankan suatu pernyataan lalu diuji apakah kondisi sudah bernilai benar, tapi jika bernilai salah maka pernyataan tidak dijalankan. Pada dasarnya perulangan do….while sama saja dengan perulangan while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do….while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Contoh Program :
#include<stdio.h>
 
main()
 
{
 
int pencacah;
 
pencacah = 0;
 
do
 
{
 
puts("C-16 Teknik Informatika");
 
pencacah++;
 
}
 
while(pencacah < 7);
 
}
Berarti program ini akan menampilkan tulisan C-16 Teknik Informatika secara berulang – ulang dengan batas 7 tulisan .
b. Pernyataan While
Perulangan while banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah atau batas yang ditentukan telah terpenuhi..
Contoh Program :
#include<stdio.h>
 
main()
 
{
 
int I, Jum;
 
I = 7; Jum = 0;
 
while (I--)
 
{
 
printf("%d", I);
 
Jum = Jum * I;
 
}
 
printf("\n%d", Jum);
 
}
Berarti program ini akan membuat pola bilangan decimal 6543210 dengan formula Jum =Jum * I dimana Jum dan I mempunyai batas yang telah ditentukan sebelumnya.
c. Pernyataan For
Merupakan salah satu bentuk fungsi perulangan, digunakan untuk melaksanakan pernyataan berulang kali terhadap sejumlah nilai yang telah ditetapkan (jumlah putaran harus ditetapkan terllebih dahulu).
Contoh Program :
#include<stdio.h>
 
main()
 
{
 
int bilangan;
 
for(bilangan = 20; bilangan <= 100; bilangan += 10)
 
printf("%d\n", bilangan);
 
}
Berarti program ini akan mengurutkan bilangan dengan selisih 10 dari 20 sampai 100.
d. Pernyataan Break
Pernyataan yang berfungsi untuk melepaskan diri dari loop for, do-while, dan while. Sedangkan pada switch yaitu untuk menuju ke akhir (keluar) struktur switch. Kalau pernyataan break dijalankan maka eksekusi akan dilanjutkan ke pernyataan yang terletak sesudah akhir tubuh loop.
Contoh Program :
#include<stdio.h>
 
#include<conio.h>
 
#define ENTER '/r'
 
main()
 
{
 
char karakter;
 
puts("Anda bisa mengetik apa saja");
 
puts("Sampai tombol enter anda tekan.\n");
 
for(; ;)
 
{
 
karakter = getche();
 
if(karakter == ENTER)
 
break;
 
}
 
}
Berarti perintah break membuat program berhenti menulis setelah tombol ENTER.
e. Pernyataan Continue
Digunakan untuk mengarahkan eksekusi ke proses berikutnya pada loop yang sama. Pada do-while dan while, pernyatan continue menyebabkan eksekusi menuju kondisi pengujian pengulangan. Namun, pada loop for, pernyataan continue menyebabkan bagian penaik variable pengendali loop dikerjakan dan kondisi untuk keluar dari loop for diuji kembali.
Contoh Program :
#include<stdio.h>
 
main()
 
{
 
int jum_data = 0;
 
int nomor = 1;
 
float total_nilai = 0;
 
float nilai, rata_rata;
 
while( 1 )
 
{
 
printf("Data ke-%d : ", nomor);
 
scanf("%f", &nilai);
 
if(nilai > 100)
 
continue;
 
if(nilai < 0)
 
{
 
jum_data = nomor - 1;
 
rata_rata = total_nilai / jum_data;
 
break;
 
}
 
total_nilai += nilai;
 
nomor++;
 
}
 
printf("Jumlah data = %d\n", jum_data);
 
printf("Rata-rata   = %g\n", rata_rata);
 
}
Berarti program ini akan mengulangi pemasukan input dan baru berakhir setelah input yang dimasukkan negative ( diluar batas).
f.  Pernyataan Goto
Pernyataan goto merupakan instruksi untuk mengarahkan eksekusi ke pernyataan yang diawali dengan suatu label. Label sendiri berupa suatu pengenal (identifier) yang diikuti dengan tanda titik koma(;).
Contoh Program :
#include<stdio.h>
 
main()
 
{
 
int pencacah = 1;
 
cetak :
 
puts("cygnus");
 
if(++pencacah <= 10)
 
goto cetak;
 
}
Berarti goto akan membawa string Cygnus ke perintah cetak yang ada di atas setelah perintah perulangan.
Posted By : Evan
Perulangan data atau yang biasa disebut dengan “looping” adalah proses yang dilakukan secara berulang-ulang sampai batas yang ditentukan.
Struktur Perulangan digunakan untuk mengulang sekumpulan perintah sesuai dengan kondisi yang diberikan. Proses perulangan biasanya digunakan untuk mengulang proses pemasukan data, mengulang proses perhitungan dan mengulang untuk proses penampilan hasil pengolahan data, dengan jumlah tertentu jika sebuah kondisi belum terpenuhi.
A loop statement allows us to execute a statement or group of statements multiple times and following is the general from of a loop statement in most of the programming languages
Pada bahasa pemrograman, perulangan proses ditangani dengan suatu mekanisme yang dinamakan dengan nama loop. Dengan loop, suatu proses yang berulang dapat diimplementasikan dengan menggunakan statement-statement yang pendek, tanpa harus menuliskan statemen berulang-ulang.
Ada 3 (tiga) cara untuk melakukan perulangan di C++ yaitu :
  1. for
  2. while
  3. do-while Sumber  : http://kangjintile.blogspot.co.id/2015/09/struktur-loop-c-while-do-while-and-for.html

struktur Perulangan Dalam Java

contoh loop

Contoh Loop
Halo teman - teman, ? bagaimana kabarnya ? semoga dalam keadaan sehat ya. Oke kali ini saya akan posting sebuah artikel tentang Stuktur Perulangan Dalam Java. Mungkin dari kalian ada yang tau ga ? jika tidak mungkin artikel ini bisa membantu. Oke langsung saja !
  • Perulangan.
Struktur kontrol perulangan atau looping adalah berupa statement dari java yang mengijinkan kita untuk mengeksekusi blok kode berulang - ulang sesuai dengan jumlah tertentu yang diinginkan.
Statement ini terdapat 3 macam yaitu :
  1. While
  2. Do-while
  3. For loop 
Pernyataan di atas menciptakan loop. Loop secara berulang mengeksekusi sebarisan instruksi yang sama sampai kondisi akhir ditemui. Looping atau loop artinya mengulangi eksekusi blok program tertentu sampai tercapai kondisi untuk menghentikanya. Setiap statement atau pernyataan perulangan memiliki 4 bagian :
  1. Inisialisasi
  2. Badan Program / Statement
  3. Iterasi
  4. Termination
1. Statement While. 
Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang - ulang sampai mencapai kondisi yang cocok.
Bentuk umum dari pernyataan While.
while (boolean_expression){
sstatement1;
statement2;
..............
}
Pernyataan di dalam while loop akan dieksekusi berulang - ulang selama kondisi boolean_expression di atas bernilai benar (true). 
Berikut contoh penggunaan kode program dalam java :
int i=4
while(i>0){
System.out.print(i);
i--;
}
Contoh di atas akan mencetak angka 4321 pada layar. Catatan bahwa pada bagian i--; jika di hilangkan, maka akan menghasilkan perulangan yang terus menerus atau kita bisa katakan error, sehingga ketika menggunakan while loop atau bentuk perulangan lainya, pastikan anda telah memberikan pernyataan yang membuat perulangan berhenti pada suatu kondisi.
2. Statement Do While.
Do while loop mirip dengan statement while loop. Pernyataan di dalam do while loop akan dieksekusi beberapa kali selama kondisi bernilai benar . Perbedaan mendasar antara pernyataan while dengan do while loop adalah dimana pernyataan di dalam do while akan dieksekusi sedikitnya satu kali.
Bentuk umum statement do while.
do{
statement1;
statement2;
.........
}(while(boolean_expression);
 
Pernyataan di dalam do while loop akan dijalanjakn pertama kali, dan akan dievaluasi kondisi dariboolean_expression. jika pada boolean_expression bernilai benar, maka pernyataan di dalam do while loop akan di eksekusi lagi.
Berikut contoh penggunaannya dalam java:
int x=0;
do{
System.out.print(x);
x++;
}while(x<10);
Output yang dihasilkan dari kode diatas adalah 0123456789 pada layar. 
3. Statement For
Perulangan for menyediakan sarana mengulang kode program dalam jumlah tertentu. Pengulangan ini terstruktur untuk mengulangi kode sampai tercapai batas tertentu.
Berikut bentuk umum statement for:
for(initialisationExpression;LoopCondition;StepExpression){
statement;
}
  • InitializationExpression digunakan untuk inisialisasi variabel atau memberikan nilai pada variabel kendali perulangan.
  • LoopCondition digunakan untuk membandingkan variabel kendali perulangan dengan suatu nilai yang dibatasi.
  • StepExpression menspesifikasikan cara variabel kendali dimodifikasi sebelum iterasi atau penaikan nilai pada variabel berikutnya dari perulangan.
Contoh penggunaanya dalam java.
public class for{
public static void main(String[] args){
int i;
for (i=1; i<11; i++){
System.out.print(i);
}
}
}
Dari kode program di atas akan menghasilkan output 12345678910.
 
Sumber : http://bukaakal.blogspot.co.id/2015/05/struktur-perulangan-dalam-java.html

Solusi Persamaan Diskrit

Persamaan – persamaan hasil diskritisasi volume untuk perhitungan numeric, seperti pada gambar 1, dapat diselesaikan dengan berbagai metode. Metode – metode apapun yang digunakan, pada prinsipnya, dapat menyelesaikan persamaan – persamaan ini untuk mencari solusi dari sistem persamaannya sendiri. Namun, untuk perhitungan – perhitungan yang rumit dengan jumlah persamaan dan variable yang banyak, dimana computer digunakan, algoritma kalkulasi yang efisien serta bersahabat dengan performa computer yang ekonomis perlu untuk dipahami.
Secara umum, metode yang digunakan adalah metode langsung (Direct) dan tidak langsung (Indirect atau Iterative). Yang dimaksud dengan metode langsung adalah suatu metode analitis yang digunakan langsung untuk mencari solusi dari sistem persamaan, contohnya adalah metode aturan cramer dan eliminasi Gauss. Pada metode ini, jumlah operasi perhitungan yang dilakukan dapat diketahui sebelumnya, yaitu, untuk menyelesaikan sebanyak N persamaan dengan N variable yang tidak diketahui, diperlukan N3 operasi dimana sebanyak N2 koefisien harus disimpan pada memori computer.
Gambar 1. Contoh sistem persamaan linear
Tentunya, hal ini menjadi suatu hambatan tersendiri jika kemampuan computer yang akan digunakan mempunyai performa yang minim pada saat ingin dilakukan komputasi mengenai permasalahan, yang pada saat sudah didiskritisasi, membentuk suatu sistem persamaan dengan jumlah persamaan dan jumlah variable yang banyak sehingga akan diperlukan memori computer yang besar untuk menyimpan N2 koefisien.
Sedangkan metode tidak langsung atau iterative, merupakan metode yang berbasiskan terhadap aplikasi dari langkah – langkah/algoritma sederhana yang diulang – ulang pada sistem persamaan tersebut hingga sistem persamaan mencapai keadaan konvergen yang merepresentasikan solusi dari sistem persamaan tersebut. Pada metode iterative, banyaknya langkah – langkah perhitungan yang dilakukan tidak dapat diprediksi, dimana tipikalnya adalah sebanyak N perhitungan per satu kali iterasi. Kekurangan lainnya adalah, jika sistem persamaan tidak berada pada kondisi yang kondusif, maka konvergensi dari suatu sistem persamaan tidak dapat terjamin. Satu – satunya kelebihan dari penggunaan metode iterative adalah sedikitnya memori computer yang digunakan sebagai akibat dari algoritma yang mendesain agar computer hanya menyimpan koefisien – koefisien yang tidak nol. Simulasi – simulasi aliran fluida dapat memiliki jumlah persamaan dan variabel yang sangat banyak, mulai dari 1000 – 2 juta persamaan, yang tentunya dari sistem persamaan tersebut akan terdapat koefisien – koefisien nol, yang jika tidak disimpan pada memori computer, akan menghemat banyak ruang untuk performa computer.
Dikarenakan sistem persamaan Jacobi dan Gauss – Siedel yang lambat mencapai konvergensi pada saat sistem persamaan yang ditinjau mempunyai jumlah persamaan dan variable yang banyak, maka metode ini tidak digunakan pada prosedur kalkulasi CFD. Metode iterative selain Jacobi dan Gauss – Siedel, metode lain yang dapat digunakan adalah kalkulasi dengan menggunakan algoritma matrix tri – diagonal (TDMA) yang diperkenalkan oleh Thomas pada tahun 1949.
Tri – Diagonal Matrix Algorithm (TDMA)
TDMA merupakan metode kalkulasi iterative untuk komputasi CFD dua atau tiga dimensi dan merupakan algoritma standar untuk kalkulasi solusi persamaan aliran pada koordinat cartesius. Dapat diperhatikan salah satu contoh matriks tri – diagonal pada gambar 2.

Gambar 2. Contoh sistem persamaan yang membentuk matriks tri – diagonal
Pada gambar di atas, Ï•1 dan Ï•n+1 adalah merupakan nilai batas yang diketahui. Bentuk umum dari setiap persamaan adalah seperti berikut,

Persamaan – persamaan pada gambar 2 dapat di atur ulang seperti berikut,

Gambar 3.
Untuk mendapatkan solusi terhadap Ï•, langkah kalkulasi yang pertama dilakukan adalah forward elimination dengan kemudian dilakukan back substitution untuk mendapatkan nilai – nilai Ï•. Inti dari forward elimination adalah mengatur ulang persamaan – persamaan pada gambar di atas. Dapat diperhatikan urutannya seperti pada gambar 4 untuk contoh forward elimination untuk Ï•3. Untuk langkah pertama, Ï•2 disubtitusi dari persamaan pertama seperti pada gambar 3 di atas.

Gambar 4. Forward Elimination  pada Ï•3
Setelah langkah pada gambar 4 diteruskan sampai Ï•n, langkah back substitution dilakukan untuk kalkulasi solusi terhadap nilai – nilai Ï•. Dengan Back Substitution adalah langkah yang mencari solusi variable dari persamaan yang terakhir, dengan kemudian mensubtitusi persamaan terakhir tersebut ke persamaan sebelumnya, langkah ini terus dilakukan hingga nilai semua variable diperoleh.
Aplikasi TDMA
Pada kasus dua dimensi (lihat gambar 5), TDMA akan dilakukan dengan mengkalkulasi sistem persamaan pada satu arah dengan kemudian berpindah ke garis lainnya. Untuk lebih jelasnya, misal akan dilakukan suatu kalkulasi pada bidang dua dimensi seperti pada gambar 5, maka perlu dibuat sistem persamaan dari 1 sampai titik n. Setelah kalkulasi dari titik satu sampai titik n selesai, kalkulasi berpindah ke samping dengan arah yang sama dengan kalkulasi sebelumnya.

Gambar 5. Bidang dua dimensi
Misal, pada titik 2, persamaan yang terbentuk dapat berupa seperti pada gambar di bawah ini.
Gambar 6.
Untuk menyesuaikannya seperti persamaan pada gambar 2, maka persamaan di atas diatur seperti di bawah ini.
Gambar 7.
Dengan subskrip S, N, W, E, P adalah masing – masing koefisien dan variable sebelah selatan titik, koefisien dan variable sebelah utara titik, koefisien dan variable sebelah barat titik, koefisien dan variable sebelah timur titik, dan titik yang bersangkutan, serta b yang adalah suku sumber atau factor yang berkontribusi terhadap perubahan nilai – nilai atau distribusi variable Ï• pada daerah komputasi. Karena perhitungan bergerak dari selatan ke utara, maka nilai – nilai yang bersangkutan dengan titik sebelah barat dan sebelah timur titik yang bersangkutan dianggap diketahui (biasanya diberikan nilai nol). Begitu terus perhitungan dilakukan hingga variable – variable Ï• di setiap titik pada bidang diperoleh. Setelah itu, perhitungan dilakukan lagi (diulang/iterasi) hingga error terhadap solusi dari sistem persamaan mencapai toleransi yang telah ditetapkan sebelumnya.
Sedangkan untuk kasus tiga dimensi, perhitungan pada dasarnya sama seperti pada kasus dua dimensi. Namun, sebelum kalkulasi sistem persamaan diiterasi, pergerakan perhitungan bergerak ke atas/ bawah terlebih dahulu untuk mendapatkan variable pada semua daerah komputasi. Berikut contoh gambar untuk memperjelas aplikasi TDMA pada kasus tiga dimensi.

Gambar 8. Daerah komputasi tiga dimensi
Serta berikut contoh persamaan pada setiap titik di kasus komputasi tiga dimensi.

Untuk contoh kalkulasi pada model fisikanya, referensi versteeg [1] dapat menjadi bahan acuan. Sedangkan beberapa contoh – contoh kalkulasi iterasi dapat diperhatikan pada Metoda Iterative Bisection dalam kalkulasi solusi persamaan polynomial orde tiga, Kalkulasi ketinggian cairan pada tanki horizontal dengan menggunakan Microsoft Visual Basic. Serta berikut pembahasan  – pembahasan singkat mengenai kalkulasi solusi sistem persamaan, Kalkulasi solusi persamaan aljabar simultan, Metoda Iterasi.
Referensi:
[1] HK Versteeg. Malalasekera W. An Introduction to Computational Fluid Dynamic : Chapter 7. Longman Scientific and Technical. 1995.

Metoda Iterasi

Post kali ini, mengenai metode – metode iterasi yang sering digunakan pada metode numerik untuk kalkulasi solusi suatu persamaan atau sistem persamaan. Jadi, inti dari Iterasi adalah, menyelesaikan atau mencari solusi dari suatu persamaan atau sistem persamaan tertentu dengan:
– mengestimasi nilai awal salah satu variabel
– menentukan toleransi error untuk solusi akhir
– Memulai perhitungan pada persamaan atau sistem persamaan dengan algoritma metode iterative
– Kemudian mengulang lagi perhitungan dengan adanya variabel yang digantikan oleh variable baru hasil perhitungan dari perhitungan sebelumnya sesuai dengan kondisi algoritma metode iterative yang digunakan
– Perhitungan terus berulang hingga error dari variabel hasil perhitungan, relatif terhadap suatu variabel lainnya, mencapai nilai yang sudah ditetapkan
Pengulangan – pengulangan perhitungan yang terjadi, berdasarkan error, adalah yang disebut dengan iterasi, dan dilakukan terus sampai error mengecil, yang mengartikan bahwa nilai variabel solusi sudah mulai menuju satu titik (Konvergen)
Berikut beberapa metode iterative yang sering digunakan untuk mencari solusi dari persamaan atau sistem persamaan:
1. Metode Bisection
2. Metode “False Position”
3. Metode Newton – Raphson
4. Metode Secant
5. Metode Aproksimasi “Succesive”
Berikut sedikit penjelasan mengenai metode – metode iterative yang disebutkan di atas:
1. Metode Bisection
Metode bisection merupakan metode yang digunakan untuk mencari solusi dari persamaan tertentu. Filosofi yang digunakan pada metode bisection adalah memperkecil rentang nilai variabel bebas yang di dalamnya terdapat solusi ingin dicari. Jadi, seni yang terdapat pada metode bisection ini adalah mencari rentangan nilai variabel bebas yang di dalamnya terdapat solusi yang diinginkan. Mungkin dapat diperhatikan pada gambar di bawah ini untuk lebih jelasnya.

Jadi, pada gambar di atas, dapat diperhatikan bahwa untuk menemukan solusi persamaan (akar persamaan), yang sesuai dengan persamaan yang ditunjukkan pada grafik tersebut, dipilih dua nilai a dan b yang merupakan nilai dari sumbu x. Salah satu ketetapan yang perlu untuk dijelaskan terlebih dahulu pada metode Bisection adalah, pada perkiraan nilai yang akan menjadi interval estimasi penentuan solusi akar persamaan (pada kasus gambar di atas, merupakan nilai a dan b), perlu agar nilai a dan b untuk menghasilkan nilai persamaan (f(a) dan f(b)) yang mempunyai tanda yang berlainan (+ atau -).
Setelah interval awal ditetapkan, maka iterasi dengan metode bisection dapat dilakukan, hal ini dilakukan dengan pertama – tama menentukan nilai x (pada gambar di atas, merupakan nilai x1) di tengah – tengah nilai a dan b. Setelah itu, dicari nilai persamaan untuk terhadap nilai x dan nilai a (f(x) dan f(a)). Kemudian, jika tanda pada nilai persamaan f(x) dan f(a) sama, maka pada kalkulasi berikutnya, x1 akan berperan menjadi a pada perhitungan selanjutnya. Namun, jika tidak, maka nilai x1 akan berperan sebagai nilai b pada perhitungan selanjutnya.
Selanjutnya kalkulasi dihitung kembali dengan interval baru yang dimana salah satu dari nilai intervalnya digantikan oleh nilai x1, sesuai dengan ketetapan tanda pada nilai persamaan di perhitungan sebelumnya. Setelah itu, dicari kembali nilai tengah antara interval yang baru, dan perhitungan diulang lagi (iterasi) sampai pada tingkat keakuratan tertentu (e). Dimana e < (b – a)/b. Untuk lebih jelasnya, dapat diperhatikan gambar di bawah ini yang mengilustrasikan langkah iterative pada metode Bisection, atau dengan memperhatikan posting saya sebelumnya, Metoda Iterative Bisection dalam kalkulasi solusi persamaan polynomial orde tiga.

2. Metode “False Position”
Metode “false position” merupakan improvisasi dari metode Bisection. Jadi, pada metode “false position” tetap digunakan dua nilai interval (misal a dan b) di antara nilai solusi akar persamaan yang memiliki tanda berlainan pada masing – masing nilai persamaannya. Namun, yang berbeda dari iterasi “false position” dengan metode Bisection adalah pencarian nilai diantara interval pertama yang dicari dengan menarik garis lurus antara f(a) dan f(b) dan mengambil nilai x1 (nilai di antara a dan b) dari perpotongan garis f(a) -> f(b) dengan sumbu x. Jadi, dibandingkan dengan mengambil nilai x1 sebagai pertengahan nilai a dan b pada metode bisection, algoritma pada metode “false position” dapat diartikan memiliki jumlah pengulangan perhitungan yang lebih kecil (cepat) dibandingkan metode bisection karena dengan mengambil nilai x1 sebagai perpotongan garis f(a) -> f(b), maka nilai x1 lebih mendekati solusi akar persamaan dibandingkan metode bisection. Lebih jelasnya, dapat diperhatikan pada gambar di bawah ini (dengan berikut variabel – variabel pada gambar yang relevan dengan variabel – variabel pada penjelasan paragraf di atas, a = z1, b = z2, x1 = zs, f(x) = g(z), f(a) = g(z1), f(b) = g(z2), f(x1) = g(zs).

Persamaan untuk menentukan nilai zs (sesuai dengan gambar di atas) dapat diturunkan dari persamaan tangensial sudut. Singkatnya, nilai zs dapat ditentukan sesuai dengan persamaan sebagai berikut.

kemudian, dicari nilai fungsi persamaan berdasarkan nilai zs. Jika masih diluar toleransi keakuratan, maka kalkulasi diulang kembali (iterasi) dengan mengganti salah satu nilai z1 atau z2 dengan nilai zs sesuai dengan ketetapan tanda nilai fungsi z1 dan zs. Jadi, jika tanda g(z1) sama dengan tanda g(zs), maka nilai z1 pada perhitungan selanjutnya digantikan dengan nilai zs, namun jika tidak, maka z2 yang digantikan oleh zs. Jadi, perhitungan tetap beriterasi selama g(zs) belum mendekati nilai 0, tentunya sesuai dengan toleransi keakuratan yang sudah ditetapkan.
3. Metode Newton – Raphson
Metode Iterasi Newton – Raphson merupakan metode yang benar – benar berlainan dengan metode – metode iterasi sebelumnya yang sudah dijelaskan. Untuk lebih jelasnya, perlu untuk pertama – tama memperhatikan gambar di bawah ini.

Jadi, dipilih suatu nilai estimasi xo sembarang. Kemudian ditentukan titik x1 yang merupakan antara perpotongan garis singgung f(x0) dengan sumbu x. Dimana kemiringan garis singgung f(x0) adalah f'(x0). Persamaan untuk mendapatkan nilai x1 dapat diperoleh dengan meninjau persamaan tangensial sudut antara garis singgung f(x0) dengan sumbu x, yang adalah

yang sederhananya adalah sebagai berikut

Kemudian, kalkulasi diulang kembali dengan menggati nilai x0 dengan x1 untuk mencari nilai x2. Berikut bentuk umum persamaan di atas,

Jadi, perhitungan terus beriterasi sampai pada nilai f(x(i+1)) atau selisih antara xi dan x(i+1) mendekati nol atau sesuai dengan tingkat tolerasi keakuratan yang diinginkan. Dari algoritma perhitungan yang dijelaskan ataupun dari gambar ilustrasi metode newton – raphson di atas , dapat kita ambil kesimpulan bahwa iterasi pada metode Newton – Raphson jauh lebih cepat dibandingkan dengan iterasi pada metode Bisection dan “False Position”. Namun, kekurangan yang dimiliki oleh metode Newton – Raphson adalah perlunya ketepatan dalam pemilihan nilai estimasi awal, yang dengan demikian menyebabkan tidak terjaminnya konvergensi pada metode newton – Raphson. Untuk lebih mudahnya, dapat diperhatikan salah satu contoh divergensi pada gambar di bawah ini.

Gambar di atas mengilustrasikan salahnya estimasi nilai awal pada kalkulasi newton – raphson. Jadi, dengan menetapkan estimasi nilai x0 seperti pada gambar di atas, berakibat kepada kemiringan garis singgung yang nilainya mendekati nol (f'(x2) mendekati nol). Jadi, dapat juga dilihat pada persamaan umum newton – raphson di atas, yang perhitungannya memerlukan ketetapan awal yang dimana f'(xi) tidak boleh sama dengan nol atau mendekati nol. Karena, sesuai peninjauan grafis, jika kemiringan garis singgung fungsi sama dengan nol, maka garis singgung tidak akan pernah memotong sumbu x yang berakibat tidak diperolehnya estimasi lanjutan nilai x.
4. Metode Secant
Metode secant adalah metode yang menyederhanakan perhitungan yang akan dilakukan, relatif terhadap metode Newton – Rephson. Penyederhanaan yang dilakukan adalah dengan mengeliminasi kalkulasi f'(x) pada algoritma. Hal ini dikarenakan, sering suatu bentuk persamaan tertentu mempunyai bentuk persamaan yang kompleks, rumit, dan panjang sehingga memerlukan waktu komputasi yang lebih lama.

Pada metode iterative secant, diperlukan dua nilai estimasi awal, yang dimana nilai ini tidak perlu merupakan interval yang di dalamnya terdapat solusi akar persamaan. Jadi, jika merujuk dari gambar di atas, dengan z1 dan z2 adalah merupakan dua nilai estimasi awal, ditarik garis secant antara g(z1) dan g(z2). Perpotongan antara garis secant tersebut dengan sumbu x, menghasilkan nilai zs(1). Selanjutnya, ditarik kembali garis secant antara g(z2) dan g(zs(1)) yang akan berpotongan dengan sumbu x di zs(2). Kemudian berlanjut lagi dengan menarik garis secant antara g(zs(1)) dan g(zs(2)) yang akan berpotongan di nilai zs selanjutnya. Begitu seterusnya hingga nilai g(z) mendekati nol sesuai dengan toleransi keakuratan yang telah ditetapkan sebelumnya. Namun, estimasi nilai awal tetap merupakan faktor penting dalam konvergensitas iterasi. Oleh karena itu, sama halnya dengan metode newton – raphson, metode secant tidak menjamin suatu konvergensitas iterasi di semua nilai estimasi awal solusi.
Persamaan berikut ini, yang diturunkan dari persamaan tangensial dapat diperhatikan seperti berikut.

dengan g'(z2) dikalkulasi sesuai dengan perhitungan berikut.

setelah subtitusi persamaan g'(z) ke dalam persamaan zs(1) dan menyederhanakannya, diperoleh persamaan sebagai berikut.

Jadi, dari penjelasan di atas, ketidak – ikutsertaan kalkulasi derivasi dari fungsi persamaan yang ingin dicari solusinya, menyebabkan metode secan mempunyai waktu iterasi yang relatif lebih cepat dibandingkan metode Newton – Raphson. Namun, sama halnya juga dengan metode Newton – Raphson, metode secant tidak menjamin suatu konvergensitas iterasi di semua nilai estimasi awal solusi.
5. Metode Aproksimasi “Successive”
Metode aproksimasi suksesive adalah metode iterasi yang sangat mudah untuk diprogram di komputer. Jadi, inti dari algoritma metode iterasi ini adalah merubah bentuk dari suatu fungsi f(x) = 0 menjadi x = g(x). Dengan membayangkan bahwa terdapat garis y = x dan y = g(x), maka solusi akar persamaan untuk f(x) terletak pada perpotongan garis y = x dan kurva y = g(x). Berikut ilustrasinya,

Dimana yang dimaksud dengan phi(x) pada gambar di atas adalah g(x). Jadi, secara umum,
x1 = g(x0), x2 = g(x1), …, x( i+1) = g(xi), …, xn = g(x(n-1))
Jadi solusi akan diperoleh pada saat interval relative xi dan x(i+1) atau g(i) dan g(i+1) berada pada toleransi keakuratan yang sudah ditetapkan sebelumnya.

Metoda Iterative Bisection dalam kalkulasi solusi persamaan polynomial orde tiga

Pada posting kali ini, saya ingin menyampaikan algoritma kalkulasi solusi persamaan polynomial orde tiga dengan metode iterative bisection pada microsoft Visual Basic.
Dapat diperhatikan pada gambar – gambar dibawah ini, program yang sudah saya buat beserta algoritmanya.

Jadi, pertama – tama, untuk mencari akar persamaan yang koefisiennya sudah diinput,perlu untuk dilihat terlebih dahulu plot dari nilai x terhadap nilai y pada listbox “nilai x” dan “nilai y”. Setelah memasukkan rentang nilai x dan inklinasinya (“Interval”), maka dengan menekan tombol “hitung fungsi” maka plot nilai y pada rentang nilai x yang sudah ditentukan dapat diperhatikan. Seandainya terdapat dua nilai y yang memotong sumbu x, jika y pertama kurang dari nol, maka y kedua lebih dari nol, begitu pula sebaliknya, maka solusi persamaan polinomial terdapat di antara nilai x pertama dan kedua. Jika tidak terdapat kondisi seperti yang telah disebutkan di atas, maka tekan tombol “reset” dan definisikan rentang nilai x yang baru.
Setelah ditemukan rentang nilai x, x pertama dan x kedua, yang di dalamnya terdapat solusi persamaan, maka nilai x pertama tersebut akan diinput ke “textbox” “x1” dan x kedua ke “textbox” “x2”. Setelah diinput nilai keakuratan relatif, dengan menekan tombol “Hitung akar” maka nilai akar akar tercantum di “Listbox” “Akar” dengan jumlah iterasi yang dapat diperhatikan pada “Textbox” “Jumlah Iterasi”. Setelah itu, untuk mencari akar yang kedua dan ketiga, ulangi langkah pencarian rentang nilai x –> Reset x1 dan x2 –> input nilai x1 dan x2 yang baru, dan –> Hitung akar”, Begitu seterusnya sampai semua solusi akar persamaan polinomial ditemukan.
Berikut algoritma yang sudah disusun pada Microsoft Visual Basic.


Yang ditampilkan pada gambat di atas adalah, secara berurutan, algoritma untuk plot nilai x dan y (langkah pertama dalam mencari rentang nilai x yang di dalamnya terdapat solusi persamaan) dan algoritma untuk menghitung akar dengan metode bisection.
Dapat diperhatikan pada gambar pertama, algortitma untuk menghitung nilai x dan y dengan h sebagai nilai inklinasi. Dalam algoritma kali ini, fungsi loop digunakan untuk memplot nilai y selama nilai x masih di bawah batas atas rentang yang telah ditentukan.
Pada gambar kedua, ditampilkan algoritma untuk kalkulasi nilai solusi persamaan dengan metode iterasi bisection, dengan e adalah nilai keakuratan relative. Jadi setelah nilai x1 dan x2 (masing – masing merupakan nilai untuk x pertama dan kedua yang merupakan rentang nilai dimana di dalamnya terdapat solusi persamaan) dimasukkan, akan dikalkulasi nilai x3 yang merupakan nilai tengah x1 dan x2. Kemudian nilai persamaan berdasarkan x1 dan x3 dihitung. Kemudian digunakan fungsi “If” untuk mengkondisikan peran nilai x3 pada “loop” selanjutnya, akan menjadi nilai x1 atau x2. Jadi, jika tanda (+ atau -) nilai persamaan berdasarkan nilai x1 sama dengan tanda nilai persamaan berdasarkan x3, maka pada “loop” selanjutnya, x3 akan berperan sebagai x1. Namun, jika tidak, x3 akan berperan sebagai x2. Begitu seterusnya, “loop” berjalan, hingga keakuratan relatif (Abs((x2-x1)/x2)) kurang atau sama dengan nilai keakuratan relatif yang sudah ditetapkan.
Berikut contoh kalkulasi pada program yang sudah dijalankan untuk mencari solusi persamaan,
f(x) = (x^3) – 4x + 1



Pada ketiga gambar di atas, secara berurutan, adalah langkah – langkah dalam kalkulasi solusi akar persamaan pertama, kedua, dan ketiga. Dengan nilai – nilai akar dapat diperhatikan pada “Listbox” “Akar”.


Catatan: untuk identifikasi tanda pada suatu besaran numerik, pada microsoft Visual Basic, digunakan fungsi sgn (), jadi jika terdapat code sgn (-3), maka visual basic akan membacanya sebagai -1, dan jika terdapat code sgn (3), maka visual basic akan membacanya sebagai 1.

Sumber : https://muhammadagungsantoso.wordpress.com/tag/metode-iterasi/