Solusi Penyelesaian Akar Persamaan Menggunakan Program C++

17
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

Transcript of Solusi Penyelesaian Akar Persamaan Menggunakan Program C++

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 PENDAHULUAN 1

1.1 Latar Belakang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Rumusan Masalah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

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

2.6 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

- 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 meng-

gunakan konsep atau teori fisika yang akhirnya melahirkan fisika teori. Kedua, dengan cara

eksperimen yang menghasilkan aliran fisika eksperimental, dan ketiga, fisika bisa dipela-

jari lewat simulasi fenomena alam yang sangat mengandalkan komputer serta algoritma

numerik[1].

Dalam bidang rekayasa, kebutuhan untuk menemukan solusi persoalan secara praktis ada-

lah 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 bi-

asanya 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 ke-

beradaan (atau hanya mengkarakteristikkan beberapa properti umum) solusi, tetapi tidak

memberikan cara menemukan solusi tersebut[KRE88].

Metode numeric digunakan untuk menyelesaikan persoalan dimana perhitungan secara ana-

litik tidak dapat digunakan. Metode numeric ini berangkat dari pemikiran bahwa per-

masalahan dapat diselesaikan dengan menggunakan pendekatan-pendekatan yang dapat

1

1.2. Tujuan 2

dipertanggung-jawabkan secara analitik. Metode numerik ini disajikan dalam bentuk algoritma-

algoritma 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 per-

hitungan yang mudah merupakan pertimbangan dalam pemakaian metode numerik. Meng-

ingat bahwa algoritma yangdikembangkan dalam metode numerik adalah algoritma pende-

katan 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 meng-

gunakan 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 masa-

lah 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 su-

bbagian dari sains komputasi.Dalam fisika, berbagai teori yang berdasarkan permodelan

matematika menyediakan prediksi yang akurat mengenai bagaimana sebuah sistem berge-

rak. Namun seringkali penggunaan permodelam matematika untuk sebuah sistem khusus

yang bertujuan untuk menghasilkan prediksi yang bermanfaat tidak bisa dilakukan keti-

ka itu. Hal ini terjadi karena solusi permasalahan tidak memiliki ekspresi bentuk tertutup

(closed-form expression) atau terlalu rumit. Dalam banyak kasus, perkiraan numerik di-

butuhkan. 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 ope-

rasi 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 pendekatan-

pendekatan yang dapat dipertanggung-jawabkan secara analitik. Metodenumerik ini disa-

jikan 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 meto-

de numerik adalah algoritma pendekatan maka dalamalgoritma tersebut akan muncul istilah

iterasi yaitu pengulangan proses perhitungan. Dengan kata lain perhitungan dalam meto-

de 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. in-

terval 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 persa-

maan 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 pendeka-

tak 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 ce-

pat konvergen ke nilai akarnya[8]. Metode Newton-Rhapson merupakan salah satu metode

terbuka untuk menentukan soluai akar dari persamaan non linear, dengan prinsip utama se-

bagai berikut:

1. Metode ini melakukan pendekatan terhadap kurva f(x) dengan garis singgung (gradi-

en) 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++ 7

2.4 Program C++

C++ adalah bahasa pemrograman komputer yang di buat oleh (Bjarne Stroustrup) meru-

pakan 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, ba-

hasa tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem Unix,

Pada perkembangannya, versi ANSI (American National Standart Institute) Bahasa pemro-

graman C menjadi versi dominan, Meskipun versi tersebut sekarang jarang dipakai dalam

pengembangan sistem dan jaringan maupun untuk sistem embedded, Bjarne Stroustrup pa-

da Bel labs pertama kali mengembangkan C++ pada awal 1980-an. Untuk mendukung

fitur-fitur pada C++, dibangun efisiensi dan sistem support untuk pemrograman tingkat ren-

dah (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 berori-

entasi 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 membagi-

bagi masalah tersebut kedalam su-submasalah yang lebih kecil, Selain itu, C++ merupakan

bahasa pemrograman yang memiliki sifat Pemrograman berorientasi objek, Untuk menye-

lesaikan 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 8

2.5 Metode Eksperimen

2.5.1 Prosedur

Pada praktikum fisika komputasi I , akan mencari solusi penyelesaianakar persamaan de-

ngan 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 Hasil dan Pembahasan

2.6.1 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 selan-

jutnya 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 permula-

an, 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 mela-

kukan 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 men-

definisikan 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 f′(x)

lalu hitung nilai dari f′(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 ′(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 menggu-

nakan ke dua metode tersebut.

Lida Maulida (1211703021) Solusi Akar Persamaan Menggunakan Program C++

2.6. Hasil dan Pembahasan 13

2.6.4 Lampiran Program modifikasi

Methode Bisection

#include<iostream>

#include<math.h>

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 <<xc<< endl;

}

}

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 Pemro-

graman 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++