Laporan Praktikum Fisika Komputasi 1 (Solusi Penyelesaian Akar Persamaan Menggunakan Program C++) Diajukan untuk memenuhi tugas mata kuliah Praktikum Fisika Komputasi 1
Disusun Oleh : Lida Maulida (1211703021)
Jurusan Fisika Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung 2014
Daftar Isi 1
2
PENDAHULUAN
1
1.1
Latar Belakang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Rumusan Masalah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Tinjauan Pustaka
3
2.1
Metode Numerik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Metode Bisection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3
Metode Newton-Rhapson . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.4
Program C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.5
Metode Eksperimen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5.1
Prosedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5.2
Diagram Alir . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Hasil dan Pembahasan . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.6.1
Solusi untuk menentukan akar persamaan dengan Metode Bisection
9
2.6.2
Solusi untuk menentukan akar persamaan dengan Metode Newton
2.6
- Rhapson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.6.3
Kesimpulan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6.4
Lampiran Program modifikasi . . . . . . . . . . . . . . . . . . . .
13
DAFTAR PUSTAKA
14
ii
Bab 1
PENDAHULUAN 1.1
Latar Belakang
Secara garis besar, ilmu fisika dapat dipelajari lewat 3 jalan, yaitu pertama, dengan menggunakan konsep atau teori fisika yang akhirnya melahirkan fisika teori. Kedua, dengan cara eksperimen yang menghasilkan aliran fisika eksperimental, dan ketiga, fisika bisa dipelajari lewat simulasi fenomena alam yang sangat mengandalkan komputer serta algoritma numerik[1] . Dalam bidang rekayasa, kebutuhan untuk menemukan solusi persoalan secara praktis adalah jelas. Dari kacamata rekayasawan, masih tampak banyak cara penyelesaian persoalan matematik yang dirasa terlalu sulit atau dalam bentuk yang kurang kongkrit. Penyelesaian analitik yang sering diberikan oleh kaum matematika kurang berguna bagi rekayasawan, karena ia harus dapat mentransformasikan solusi matematika yang sejati ke dalam bentuk berwudud yang biasanya meninggalkan kaidah kesejatiannya [BES97]. Solusi hampiran biasanya sudah memenuhi persyaratan rekayasa dan dapat diterima sebagai solusi. Lagipula, banyak persoalan matematika dalam bidang rekayasa yang hanya dapat dipecahkan secara hampiran. Kadang-kadang dapat pula terjadi bahwa metode analitik hanya menjamin keberadaan (atau hanya mengkarakteristikkan beberapa properti umum) solusi, tetapi tidak memberikan cara menemukan solusi tersebut[KRE88]. Metode numeric digunakan untuk menyelesaikan persoalan dimana perhitungan secara analitik tidak dapat digunakan. Metode numeric ini berangkat dari pemikiran bahwa permasalahan dapat diselesaikan dengan menggunakan pendekatan-pendekatan yang dapat
1
1.2. Tujuan
2
dipertanggung-jawabkan secara analitik. Metode numerik ini disajikan dalam bentuk algoritmaalgoritma yang dapat dihitung secara cepat dan mudah.Pendekatan yang digunakan dalam metode numerik merupakan pendekatan analisis matematis. Sehingga dasar pemikirannya tidak keluar jauh dari dasar pemikiran analitis, hanya saja pemakaian grafis dan teknik perhitungan yang mudah merupakan pertimbangan dalam pemakaian metode numerik. Mengingat bahwa algoritma yangdikembangkan dalam metode numerik adalah algoritma pendekatan maka dalam algoritma tersebut akan muncul istilah iterasi yaitu pengulangan proses perhitungan.Dengan kata lain perhitungan dalam metode numerik adalah perhitungan yang dilakukan secara berulang-ulang untuk terus-menerus diperoleh hasil yang main mendekati nilai penyelesaian exact.
1.2
Tujuan
Tujuan dari praktikum fisika komputasi I ini adalah memahami algoritma metode bisection dan Newton-Rhapson dalam mencari akar sebuah persamaan.
1.3
Rumusan Masalah
1 . Bagaimana mencari solusi akar persamaan untuk Metode Bisection dengan menggunakan program C++.
2 . Bagaimana mencari solusi akar persamaan untuk Metode Newton-Rhapson dengan menggunakan program C++
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
Bab 2
Tinjauan Pustaka 2.1
Metode Numerik
Fisika komputasi adalah studi implementasi numerik algoritma untuk memecahkan masalah di bidang fisika di mana teori kuantitatif sudah ada [2] .Dalam sejarah, fisika komputasi adalah aplikasi ilmu komputer modern pertama di bidang sains, dan sekarang menjadi subbagian dari sains komputasi.Dalam fisika, berbagai teori yang berdasarkan permodelan matematika menyediakan prediksi yang akurat mengenai bagaimana sebuah sistem bergerak. Namun seringkali penggunaan permodelam matematika untuk sebuah sistem khusus yang bertujuan untuk menghasilkan prediksi yang bermanfaat tidak bisa dilakukan ketika itu. Hal ini terjadi karena solusi permasalahan tidak memiliki ekspresi bentuk tertutup (closed-form expression) atau terlalu rumit. Dalam banyak kasus, perkiraan numerik dibutuhkan. Fisika komputasi adalah subjek yang berhubungan dengan berbagai perkiraan numerik; perkiraan solusi yang ditulis sebagai sejumlah besar bilangan terbatas (finite) dari operasi matematika sederhana (algoritma), dan komputer digunakan untuk melakukan operasi tersebut dan menghitung solusi dan errornya.[2] . Seperti telah dibahas di atas, metode numeric digunakan untuk menyelesaikan persoalan dimana perhitungan secara analitik tidak dapat digunakan. Metode numeric ini berangkat dari pemikiran bahwa permasalahan dapat diselesaikan dengan menggunakan pendekatanpendekatan yang dapat dipertanggung-jawabkan secara analitik. Metodenumerik ini disajikan dalam bentuk algoritma-algoritma yang dapat dihitung secara cepat dan mudah. Pendekatan yang digunakan dalam metode numerik merupakan pendekatan analisis mate-
3
2.1. Metode Numerik
4
matis. Sehingga dasar pemikirannya tidak keluar jauh dari dasar pemikiran analitis, hanya saja pemakaian grafis dan teknik perhitungan yang mudah merupakan pertimbangan dalam pemakaian metode numerik. Mengingat bahwa algoritma yangdikembangkan dalam metode numerik adalah algoritma pendekatan maka dalamalgoritma tersebut akan muncul istilah iterasi yaitu pengulangan proses perhitungan. Dengan kata lain perhitungan dalam metode numerik adalah perhitungan yang dilakukansecara berulang-ulang untuk terus-menerus diperoleh hasil yang main mendekati nilai penyelesaian exact[3] .
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.2. Metode Bisection
5
Gambar 2.1: Kurva fungsi untuk Metode Bisection
2.2
Metode Bisection
Metode bagi dua atau bisection adalah algoritma pencarian akar pada sebuah interval. interval tersebut membagi dua bagian, lalu memilih dari dua bagian ini dipilih mana yang mengandung akar dan bagian yang tidak mengandung akar dibuang. hal ini dilakukan berulang-ulang hingga diperoleh akar persamaan yang mendekati akar persamaan. Metode ini akan berlaku ketika ingin memecahkan persamaan f(x) = 0 dengan f merupakan fungsi kontinue[7] . Metode Bisection merupakan salah satu metode tertutup untuk menentukan solusi akar dari persamaan non linier dengan prinsip utama sebagai berikut:
1. Menggunakan dua buah nilai awal untuk mengurung salah satu atau lebih akar persamaan non linear. 2. Nilai akarnya diduga melalui nilai tengah antara dua nilai awal yang ada.
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.3. Metode Newton-Rhapson
6
Gambar 2.2: Kurva fungsi untuk Newton-Rhapson
2.3
Metode Newton-Rhapson
Metode Newton-Rhapson adalah metode pencarian akar suatu fungsi f(x) dengan pendekatak satu titik, dimana fungsi f (x) mempunyai turunan. metode ini dianggap lebih mudah dari metode bisection karena metode ini menggunakan pendekatan satu titik sebagai titik awal. semakin dekat titik awal yang kita pilih dengan akar sebenarnya, maka semakin cepat konvergen ke nilai akarnya[8] . Metode Newton-Rhapson merupakan salah satu metode terbuka untuk menentukan soluai akar dari persamaan non linear, dengan prinsip utama sebagai berikut:
1. Metode ini melakukan pendekatan terhadap kurva f(x) dengan garis singgung (gradien) pada suatu titik niali awal. 2. Nilai taksiran selanjutnya adalah titik potong antara garis singgung (gradien) kurva dengan sumbu x.
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.4. Program C++
2.4
7
Program C++
C++ adalah bahasa pemrograman komputer yang di buat oleh (Bjarne Stroustrup) merupakan perkembangan dari bahasa C dikembangkan di Bell Labs (Dennis Ritchie) pada awal tahun 1970-an, Bahasa itu diturunkan dari bahasa sebelumnya, yaitu B, Pada awalnya, bahasa tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem Unix, Pada perkembangannya, versi ANSI (American National Standart Institute) Bahasa pemrograman C menjadi versi dominan, Meskipun versi tersebut sekarang jarang dipakai dalam pengembangan sistem dan jaringan maupun untuk sistem embedded, Bjarne Stroustrup pada Bel labs pertama kali mengembangkan C++ pada awal 1980-an. Untuk mendukung fitur-fitur pada C++, dibangun efisiensi dan sistem support untuk pemrograman tingkat rendah (low level coding).[4] Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.[butuh rujukan] Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming).[5] Perbedaan Antara Bahasa pemrograman C dan C++ meskipun bahasa-bahasa tersebut menggunakan sintaks yang sama tetapi mereka memiliki perbedaan, C merupakan bahasa pemrograman prosedural, dimana penyelesaian suatu masalah dilakukan dengan membagibagi masalah tersebut kedalam su-submasalah yang lebih kecil, Selain itu, C++ merupakan bahasa pemrograman yang memiliki sifat Pemrograman berorientasi objek, Untuk menyelesaikan masalah, C++ melakukan langkah pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat sebelumnya sebagai abstraksi dari object-object fisik, Class tersebut berisi keadaan object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa Class dibuat kemudian masalah dipecahkan dengan Class.[6]
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.5. Metode Eksperimen
2.5 2.5.1
8
Metode Eksperimen Prosedur
Pada praktikum fisika komputasi I , akan mencari solusi penyelesaianakar persamaan dengan menggunakan Metode Bisection dan metode Newton-rhapson dengen mengunakan program C++:
1. Membuat Fungsi pada keadaan awal dengan menggunakan program C++. 2. Membuat Program utama untuk pengeksekusian fungsi yang telah di buat dengan memvariasikan nilai iterasi dengan menggunakan program C++. 3. Mencari solusi persamaan akar dengan menggunakan program C++.
2.5.2
Diagram Alir Mulai
solusi numerik fungsi dengan c++
solusi numerik akar persamaan dengan C++
Pengolahan Data
Selesai
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.6. Hasil dan Pembahasan
9
Gambar 2.3: Program C++ untuk Metode Bisection
2.6 2.6.1
Hasil dan Pembahasan Solusi untuk menentukan akar persamaan dengan Metode Bisection
Ada beberapa langkah yang harus kita perhatikan dalam pencarian solusi akar persamaan dengan menggunakan metode Bisection yaitu: Menentukan nilai awal keadaan xa dan xb. Lalu memeriksa konvergensi dari fungsi f(a) dan f(b), jika tanda f(a) tidak sama dengan f(b) nilai awal dapat digunakan untuk iterasi selanjutnya tapi jika tanda f(a) sama dengan tanda f(b), pilihlah nilai awal yang baru. jika sudah mendapatkan nilai tebakan yang pas lakukan proses iterasi. Lakukan perhitungan terhadap nilai xc dengan menggunakan persamaan:
xc =
(xa + xb) 2
(2.1)
Periksa kembali konvergensi dari niali xc. Dengan menggunakan program C++ maka kita dapat membuat program seperti ini:
Dengan mendefinisikan fungsi keadaan awal dan turunan pertamanya sebagai permulaan, kemudian kita masuk untuk program utamanya yaitu mendefinisikan nilai tebakan awal untuk nilai xa dan xb (a dan b) sebagai acuan yang akan terus digunakan utuk mencari akar persamaan di iterasi selanjutnya, jika nilai xa dan xb sudah memenuhi syarat bahwa f(a) tidak sama dengan f(b). Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.6. Hasil dan Pembahasan
10
Gambar 2.4: Hasil untuk Metode Bisection
f (a) 6= f (b)
(2.2)
Pada program yang di buat banyak iterasi yaitu 25, maka program akan terus bekerja melakukan perulangan sampai 25 kali. Pada saat di compile hasil yang di dapatkan untuk nilai xc adalah:
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.6. Hasil dan Pembahasan
11
Gambar 2.5: Program untuk Metode Newton-Rhapson
2.6.2
Solusi untuk menentukan akar persamaan dengan Metode Newton Rhapson
Dalam pencarian akar persamaan menggunakan Metode Newton-Rhapson kita perlu mendefinisikan nilai awal dati x = x0 berapa, kemudian mensubsitusikannya kesalam persamaan fungsi yang sudah dibuat sebelumnya dan periksa kesesuaian dengan konvigurasi dari f(x0) itu sendiri. kemudian lakukan penurunan terhadap fungsi awal f(x0) agar mendapatkan f0 (x) lalu hitung nilai dari f0 (x) dengan memasukkan nilai x0. lakukan beberapa proses iterasi sampai mendapatkan taksiran nilai akar yang selanjutnya dengan menggunakan persamaan:
Xk+1 = Xk −
f (Xk ) f 0 (Xk )
(2.3)
Berikut merupakan program C++ untuk menemukan solusi akar persamaan dengan menggunakan Metode Newton-Rhapson: Dalam program ini banyaknya iterasi adalah 25, dimana kita akan mengulang trus proses perhitungan sampai dengan 25 kali, dengan menentukan keadaan awal untuk x0 nantinya kita akan mendapatkan akar pesamaan dari funfsi tersebut. setelah di compaile program tersebut menunjukan hasil seperti berikut:
Iterasi dapat di hentikan pada iterasi ke-20
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.6. Hasil dan Pembahasan
12
Gambar 2.6: Hasil untuk metode newton-rhapson
2.6.3
Kesimpulan
Untuk mencari akar persamaan suatu fungsi kita dapat menggunakan Metode Bisection dan Metode Newton-Rhapson. Kedua metode tersebut memiliki kelebihan dan kekurangan masing-masing, untuk itu perlu mengkaji ulang persoalan agar dapat denga tepat menggunakan ke dua metode tersebut.
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
2.6. Hasil dan Pembahasan
2.6.4
13
Lampiran Program modifikasi
Methode Bisection
#include #include using namespace std; //fungsi float fungsi (float x) { float fx; fx=x*(x*x)+3*(x*x)+8*(x)+10; return fx; } float fd (float x) { float fdx;
fdx=3*(x*x)+6*x+8; return fdx; } //program utama double x,fx,dx,xa,xb,xc,n, fxa, fxb; int main() {
cout << "Masukkan Nilai xa = ";cin >> xa;
cout << "Masukkan Nilai xb = ";cin >> xb;
for (n=1; n<=25; n++) { Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++
Pustaka
14
xc=(xa+xb)/2; if((xb)*(xc)<0){xa=xc; } else((xb)*(xc)>0); {xb=xc ;} cout <
}
Pustaka [1] Suparno, Supriyanto. 2007. Komputasi Untuk Sains dan Teknik. FMIPA. Universitas Indonesia. [2] Thijssen, Joseph. 2007. Computational Physics; Cambridge University Press. [3] https://www.academia.edu/4532357/Metode Numerik Sebagai Algoritma Komputasi. (Diakses pada 30September 2014). [4] Hanif al fatta .2006. Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek. ISBN 979-763-582-1. [5] Bruce Eckel (2000). Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel. ISBN 0139798099, 9780139798092. [6] Bjarne Stroustrup .2000. The C++ programming language, Prentice Hall, 2000. ISBN 0201889544, 9780201889543. [7] http:
//aimprof08.wordpress.com/2012/08/31/metode-newton-raphson-newton-
raphson-method/ [8] http: //aimprof08.wordpress.com/2012/08/31/metode-bagi-dua-bisection-method/
Lida Maulida (1211703021)
Solusi Akar Persamaan Menggunakan Program C++