PENYELESAIAN PERSAMAAN NON-LINEAR
METODE BISEKSI DAN METODE REGULA FALSI
MENGGUNAKAN CARA KOMPUTASI
ABSTRAK
Penelitian ini bertujuan menyusun program
komputer untuk mengetahui perbedaan kecepatan antara metode Biseksi dan metode
Regula Falsi dalam menyelesaikan persamaan non-linear ditinjau dari banyaknya
iterasi dengan menggunakan bahasa pemrograman Turbo Pascal. Penelitian ini menggunakan metode studi literatur, kemudian
diimplementasikan ke dalam program komputer. Adapun langkah-langkah yang
dilakukan adalah : 1) mengidentifikasi masalah, 2) menentukan solusi, 3)
membuat diagram alir, 4) menulis program, 5) menguji program dan 6) menulis
dokumentasi. Hasil dari penelitian ini adalah program komputer dengan bahasa
Turbo Pascal yang digunakan untuk menyelesaikan persamaan non-linear
menggunakan metode Biseksi dan metode Regula Falsi serta mengetahui perbedaan
kecepatan antara metode Biseksi dan metode Regula Falsi dalam menyelesaikan
persamaan non-linear ditinjau dari banyaknya iterasi.
Pembimbing I Pembimbing
II
Hindayati Mustafidah, S.Si., M.Kom Nila Kurniasih, S.Si., M.Si
NIK. 2160332 NIK.
2160228
Mengetahui,
Dekan FKIP
Drs. H.
Sutomo, M. Si
NIP. 131602699
BAB I
PENDAHULUAN
A.
Latar Belakang
Persoalan yang melibatkan model matematika banyak muncul dalam
berbagai disiplin ilmu pengetahuan, seperti dalam bidang fisika, kimia,
ekonomi, atau pada persoalan rekayasa (engineering), seperti Teknik
Sipil, Teknik Mesin, Elektro dan sebagainya. Seringkali model matematika tersebut muncul dalam
bentuk yang tidak ideal atau sulit untuk dikerjakan secara analitik untuk mendapatkan solusi sejatinya (exact solution). Yang
dimaksud dengan metode analitik adalah metode penyelesaian model matematika
dengan rumus-rumus aljabar yang sudah baku atau lazim digunakan.
Sebagai ilustrasi, diberikan beberapa
contoh berikut ini :
1. Penyelesaian akar-akar persamaan polinom :
23,4x7 – 1,25x6 + 120x4 + 15x3
- 120x2 - x + 100 = 0
2. Pencarian harga x yang memenuhi
persamaan:
3. Penyelesaian sistem persamaaan linear :
1,2a
- 3b - 12c + 12d + 4,8e – 5,5f + 100g = 18
0,9a
+ 3b - c + 16d + 8e - 5f - 10g = 17
4,6a
+ 3b - 6c - 2d + 4e + 6,5f - 13g = 19
|
2,2a
+ 3b + 17c + 6d + 12e – 7,5f + 18g = 9
5,9a
+ 3b + 11c + 9d - 5e - 25f - 10g = 0
1,6a
+ 3b + 1,8c + 12d -7e +2,5f + g =-5
(Susy, 2006 : 1-2)
Setelah melihat beberapa contoh ilustrasi di atas, kemungkinan besar
cara analitik tidak dapat digunakan. Untuk polinom berderajat 2, masih bisa
dicari akarnya menggunakan rumus abc yang sudah terkenal, yaitu :
Namun,
untuk polinom yang berderajat lebih besar dari 2, tidak ada rumus aljabar untuk
menghitung akar polinom tersebut. Alternatifnya adalah dengan memanipulasi
polinom, misalnya dengan pemfaktoran atau menguraikan polinom tersebut menjadi
perkalian beberapa suku. Semakin tinggi derajat polinom, jelas semakin sukar
memfaktorkannya. Begitu juga
untuk menyelesaian sistem persamaan linear. Apabila sistem persamaannya hanya
berupa dua atau tiga garis lurus dengan dua atau tiga peubah, masih dapat
ditemukan solusinya (dalam hal ini titik potong kedua garis) dengan menggunakan
rumus titik potong dua buah garis. Titik potong tersebut juga dapat ditemukan dengan
menggambar kedua garis pada kertas grafik. Tetapi untuk sistem dengan jumlah
persamaan dan jumlah peubah lebih besar dari tiga, tidak ada rumus yang dapat
dipakai untuk memecahkannya.
Contoh-contoh ilustrasi di atas
memperlihatkan bahwa ada beberapa persoalan matematika yang tidak dapat
diselesaikan dengan metode analitik. Akan tetapi metode analitik unggul untuk
sejumlah persoalan yang memiliki tafsiran geometri sederhana. Misalnya
menentukan akar penyelesaian dari menggunakan rumus
abc. Padahal persoalan yang muncul dalam kehidupan sehari-hari tidak selalu
dalam bentuk sederhana tetapi sangat kompleks serta melibatkan bentuk dan
proses yang rumit. Akibatnya nilai praktis penyelesaian metode analitik menjadi
terbatas. Bila metode analitik tidak dapat lagi digunakan, maka salah satu
solusi yang dapat digunakan adalah dengan metode Numerik. Metode Numerik
adalah teknik yang digunakan untuk memformulasikan persoalan matematika
sehingga dapat dipecahkan dengan operasi perhitungan atau aritmatika biasa
(tambah, kurang, kali, dan bagi) (Susy, 2006 : 3-5).
Penyelesaian secara numerik umumnya melibatkan proses iterasi,
perhitungan berulang dari data numerik yang ada. Jika proses iterasi tersebut
dilakukan secara manual, akan membutuhkan waktu yang relatif lama dan
kemungkinan timbulnya nilai kesalahan (error) akibat manusia itu sendiri
juga relatif besar. Misalnya untuk menyelesaikan persoalan persamaan non-linear
, jika diselesaikan menggunakan cara manual menggunakan
Metode Biseksi diperlukan beberapa iterasi. Untuk penyelesaian sampai tujuh
angka di belakang koma dapat terjadi iterasi sampai puluhan kali. Ini tentu
membutuhkan waktu yang relatif lama. Pada kenyataannya sering terjadi proses
iterasi sampai ratusan kali, pada keadaan demikian ini komputer sangat
dibutuhkan untuk mengurangi waktu penyelesaian (Munif, 1995 : 3). Selain mempercepat perhitungan numerik,
dengan komputer dapat dicoba berbagai kemungkinan solusi yang terjadi akibat
perubahan beberapa parameter tanpa menyita waktu dan pikiran. Solusi yang
diperoleh juga dapat ditingkatkan ketelitiannya dengan mengubah-ubah nilai
parameter (Susy, 2006 : 9).
Persamaan linear jika digambarkan pada
sumbu kartesius berupa garis lurus. Sedangkan untuk persamaan non-linear jika
digambarkan pada sumbu kartesius berupa kurva (garis lengkung). Persamaan yang termasuk persamaan non-linear
adalah persamaan polinomial, persamaan eksponensial, persamaan logaritmik,
persamaan sinusoida, dan sebagainya (Munif, 1995 : 7). Sebagai contoh misalnya
terdapat persamaan : dengan daerah
asal {x | -2 £ x £ 6, x Î R}. Persamaan tersebut jika digambarkan
pada sumbu kartesius :
Dari gambar di atas terlihat jelas bahwa
persamaan jika
digambarkan pada sumbu kartesius berupa kurva. Jika dicari nilai x yang
memenuhi persamaan biasanya digunakan rumus abc, maka diperoleh x1 =
0 dan x2 = 4. Nilai-nilai x yang memenuhi persamaan ini pada gambar
terlihat jelas yaitu titik potong garis dengan sumbu x.
Akan tetapi jika diilustrasikan untuk persamaan non-linear :
23,4x7 – 1,25x6 + 120x4 + 15x3
- 120x2 - x + 100 = 0 maka rumus abc sudah tidak berlaku lagi, karena
persamaan tersebut mempunyai pangkat yang lebih besar dari 2. Metode analitik tidak berlaku lagi karena
terlalu memakan banyak waktu, tenaga dan pikiran. Jalan yang paling efektif dan
efisien adalah dengan mengggunakan metode Numerik, karena hanya dengan beberapa
langkah saja sudah bisa didapatkan apa yang diinginkan.
Penyelesaian yang digunakan dalam metode
Numerik adalah penyelesaian pendekatan, oleh karena itu biasanya timbul
kesalahan (error). Pada penyelesaiannya diusahakan untuk mendapatkan error
yang sekecil mungkin. Langkah pertama yang dilakukan dalam penyelesaian
persamaan non-linear dengan menggunakan metode Biseksi dan metode Regula Falsi
adalah menetapkan nilai sebarang a sebagai batas atas dan nilai sebarang b
sebagai batas bawah kemudian ditentukan nilai fungsi f(x) untuk x = a dan x = b. Selanjutnya adalah memeriksa
apakah f(a).f(b) < 0, apabila terpenuhi syarat tersebut berarti akar fungsi
terdapat di antara a dan b. Jika tidak terpenuhi maka kembali harus menetapkan
nilai sebarang a dan b sedemikian rupa sehingga ketentuan perkalian terpenuhi
(Wibowo, 2007 : 1). Jika ketentuan perkalian terpenuhi maka selanjutnya adalah
menentukan titik c (titik di antara a dan b). Untuk metode Biseksi menggunakan
rumus sedangkan untuk
metode Regula Falsi menggunakan rumus . Langkah selanjutnya adalah mencari nilai c yang lain
sehingga didapat error yang kecil atau sama dengan nol.
Selain sederhana, metode Biseksi dan
metode Regula Falsi mempunyai beberapa kelebihan yaitu proses iterasi lebih
cepat, mudah untuk dibuat program dan tingkat kesalahan kecil. Untuk metode
yang menghasilkan error kecil maka metode tersebut lebih teliti dibanding
dengan metode lain. Dalam metode Numerik ada beberapa metode yang dapat
digunakan untuk menyelesaikan persamaan non-linear, diantaranya metode
Tabulasi, metode Biseksi, metode Regula Falsi, metode Iterasi bentuk x = g(x),
metode Newton Rapson, metode Faktorisasi (P3, P4, P5),
metode Bairstow dan metode Quotient-Difference
(Q-D) (Munif, 1995 : 8).
Berdasarkan uraian di atas, tujuan utama penelitian
ini adalah mempelajari penyelesaian persamaan non-linear menggunakan metode
Biseksi dan metode Regula Falsi Menggunakan Cara Komputasi serta mengetahui perbedaan
kecepatannya dalam menyelesaikan persamaan non-linear ditinjau dari banyaknya
iterasi.
B.
Perumusan Masalah
Berdasarkan latar belakang tersebut di atas, maka permasalahan dalam
penelitian ini adalah :
1.
Bagaimana
penyelesaian persamaan non-linear menggunakan metode Biseksi dengan program
komputer.
2.
Bagaimana
penyelesaian persamaan non-linear menggunakan metode Regula Falsi dengan
program komputer
3.
Bagaimana
perbedaan kecepatan antara metode Biseksi dan metode Regula Falsi dalam
menyelesaikan persamaan non-linear ditinjau dari banyaknya iterasi.
C.
Pembatasan Masalah
Batasan masalah dalam penelitian ini adalah persamaan non-linear
dalam bentuk polinomial satu variabel.
D.
Tujuan Penelitian
Dengan adanya permasalahan yang muncul, maka tujuan dari penelitian
ini adalah :
1.
Membuat
program komputer untuk menyelesaikan persamaan non-linear menggunakan metode
Biseksi.
2.
Membuat
program komputer untuk menyelesaikan persamaan non-linear menggunakan metode
Regula Falsi.
3.
Mengetahui
perbedaan kecepatan antara metode Biseksi dan metode Regula Falsi dalam
menyelesaikan persamaan non-linear ditinjau dari banyaknya iterasi.
E.
Manfaat Penelitian
Ada beberapa manfaat yang diharapkan dari penelitian ini,
diantaranya adalah :
1.
Mengetahui
perbedaan kecepatan antara metode Biseksi dan metode Regula Falsi dalam
menyelesaikan persamaan non-linear ditinjau dari banyaknya iterasi.
2.
Memberi
masukkan bagi peneliti yang ingin mempelajari lebih jauh tentang metode
Numerik.
BAB II
LANDASAN TEORI
A.
Persamaan Non-Linear
Persamaan merupakan kalimat terbuka yang
menyatakan hubungan “sama dengan” (ditulis “=”) (Alamsyah, 1994 : 61). Persamaan
Non-Linear adalah persamaan yang jika digambarkan dalam bidang kartesius
berbentuk garis tidak lurus (berbentuk kurva).
Persamaan yang termasuk persamaan non-linear adalah persamaan
polinomial, persamaan eksponensial, persamaan logaritmik, persamaan sinusoida,
dan sebagainya (Munif, 1995 : 7).
B.
Metode Numerik
Tidak semua permasalahan matematis atau
perhitungan dapat diselesaikan dengan mudah. Bahkan dalam prinsip matematik,
dalam memandang permasalahan yang terlebih dahulu diperhatikan apakah
permasalahan tersebut mempunyai penyelesaian atau tidak. Hal ini menjelaskan
bahwa tidak semua permasalahan dapat
diselesaikan dengan menggunakan perhitungan biasa.
|
Penyelesaian persamaan non-linear adalah
penentuan akar-akar persamaan non-linear. Dimana akar sebuah persamaan f(x) = 0
adalah nilai-nilai x yang menyebabkan nilai f(x) sama dengan nol. Dengan kata
lain akar persamaan f(x) adalah titik potong antara kurva f(x) dengan garis y =
0.
Gambar 2. Penyelesaian Persamaan Non-Linear
(Amang, 2006 : 10)
C. Penyelesaian Persamaan Non-Linear
Menurut
Munif, A (1995 : 7) Persamaan y=f(x) dikatakan linear jika hubungan antara
variabel x dan nilai fungsi y jika digambarkan pada sumbu kartesian menunjukkan
garis lurus. Sedangkan yang tidak berbentuk garis lurus disebut persamaan
non-linear. Misalnya persamaan polinomial, persamaan sinusoida, persamaan
eksponensial, persamaan logaritmik dan sebagainya.
Gambar 3. Bentuk-bentuk Grafik Persamaan
Linear
Gambar 4. Bentuk-bentuk
Grafik Persamaan Non-Linear
1.
Metode Biseksi
Metode ini mempunyai ciri dimana area dibagi menjadi 2 bagian, dari
dua bagian ini dipilih bagian mana yang mengandung akar dan bagian yang tidak
mengandung akar dibuang. Hal ini dilakukan berulang-ulang hingga diperoleh akar
persamaan.
Gambar 5.
Metode Biseksi
Cara
Penyelesaian dari Metode Biseksi
Langkah Pertama menyelesaikan persamaan
non-linear f(x) dengan metode Biseksi adalah menentukan dua titik f(x) awal
yaitu f(x1) dan f(x2) dan harus memenuhi hubungan f(x1).f(x2)
< 0.
Langkah Kedua adalah mencari nilai x3
dengan persamaan : kemudian
mencari nilai f(x3) nya.
Langkah Ketiga, melakukan iterasi untuk
mendapatkan akar persamaan. Jika
f(x1).f(x3) < 0 maka x2 diganti x3 dan akar terletak diantara x1
dan x3, tetapi jika f(x1).f(x3) > 0 maka x1
diganti x3 dan akar terletak diantara x2 dan x3.
2.
Metode Regula Falsi
Metode Regula Falsi adalah metode pencarian akar persamaan dengan
memanfaatkan kemiringan dan selisih tinggi dari dua titik batas range.
Gambar 6. Metode Regula Falsi
(Amang, 2006 : 16)
Cara Penyelesaian
Metode Regula Falsi :
Langkah Pertama, menentukan dua titik
f(x) awal, yaitu x1 dan x2 yang memenuhi persamaan f(x1).f(x2)
< 0.
Langkah Kedua, mencari nilai x3 dengan persamaan : kemudian dicari nilai f(x3)
nya.
Langkah Ketiga, melakukan iterasi untuk
mendapatkan akar persamaan. Jika
f(x1).f(x3) < 0 maka x2 diganti x3 dan akar terletak diantara x1
dan x3, tetapi jika f(x1).f(x3) > 0 maka x1
diganti x3 dan akar terletak diantara x2 dan x3.
(Munif, 1995 : 12)
D.
Bahasa Pemrograman Pascal
1.
Sejarah Pascal
Pascal adalah
bahasa tingkat tinggi (high level language) yang bersifat umum dan
dirancang oleh Profesor Niklaus Wirth dari Technical University di Zurich,
Switzerland. Nama Pascal diambil sebagai penghargaan terhadap Blaise Pascal,
ahli matematik dan philosphi terkenal abad ke-17, dari Perancis. Profesor
Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer
CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan untuk membantu mengajar program komputer
secara sistematis, khususnya untuk memperkenalkan pemrograman yang terstruktur
(structured programming) (Jogianto, 1988a : 1).
2.
Langkah-langkah dalam Pemrograman Komputer
Menurut
Pranata (2000 : 4-7) Langkah-langkah yang harus dilakukan dalam pemrograman
komputer adalah sebagai berikut :
a). Mendefinisikan Masalah
Sebelum
menginjak ke langkah yang kedua, mendefinisikan masalah merupakan langkah yang
sangat penting yang berisi menentukan masalahnya seperti apa, apa saja yang
harus dipecahkan dengan komputer, yang terakhir adalah apa masukkannya dan
bagaimana keluarannya.
b). Menentukan Solusi
Setelah
masalah didefinisikan dengan jelas, masukkan apa yang diberikan sudah jelas,
keluaran apa yang diinginkan sudah jelas langkah selanjutnya adalah menentukan
bagaimana masalah tersebut diselesaikan. Apabila masalah yang dihadapi terlalu
kompleks, kita bisa membaginya ke dalam beberapa bagian kecil agar lebih mudah
dalam penyelasaiannya.
c). Memilih Algoritma
Dalam
memilih algoritma untuk sebuah program kita harus menentukannya dengan tepat.
Karena pemilihan program yang salah akan menyebabkan program memiliki unjuk
kerja yang kurang baik.
d). Menulis Program
Dalam
langkah ini kita sudah mulai menuliskan program komputer untuk memecahkan
masalah yang ada. Dalam menulis program kita juga akan melakukan pemilihan
terhadap bahasa pemrograman yang akan digunakan. Ada beberapa hal yang harus
dipertimbangkan saat memilih bahasa pemrograman, antara lain masalah yang
dihadapi, bahasa pemrograman yang dikuasai, dan sebagainya.
e). Menguji Program
Setelah
program selesai ditulis, langkah selanjutnya adalah mengujinya. Pengujian
pertama adalah apakah program berhasil dikompilasi dengan baik, Pengujian
berikutnya apakah program dapat menampilkan keluaran yang diinginkan.
Program
juga harus diuji untuk kasus yang berbeda, sering terjadi suatu program
berjalan baik untuk kasus A, B, C tetapi menghasilkan sesuatu yang tidak diinginkan
untuk kasus X, Y, dan Z.
f). Menulis Dokumentasi
Langkah
ini biasanya dilakukan bersamaan dengan langkah menulis program tetapi tidak
menutup kemungkinan ditulis pada setelah langkah terakhir. Menulis dokumentasi
artinya pada setiap beberapa baris program ditambahkan komentar yang
menjelaskan kegunaan dari suatu pernyataan.
g). Merawat Program
Langkah
ini dilakukan setelah program selesai dibuat dan sudah digunakan oleh pengguna.
Hal yang sering terjadi adalah munculnya bug yang sebelumnya tidak
terdeteksi. Atau mungkin juga pengguna menginginkan tambahan suatu fasilitas
baru. Apabila hal-hal ini terjadi, maka harus dilakukan revisi terhadap
program.
3.
Struktur Program Pascal
Struktur dari suatu program Pascal terdiri dari
sebuah judul program (program heading) dan suatu blok program (program
block). Blok program di bagi lagi manjadi dua bagian, yaitu bagian
deklarasi (declaration part) dan bagian badan program yang berisi
pernyataan-pernyataan (statements). Bagian deklarasi dapat tersusun atas
deklarasi label (labels), konstanta (constants), tipe (type),
variabel (variables), prosedur (procedures) dan fungsi (functions)
(Jogianto, 1988a : 2).
Untuk mempermudah pembuatan program pascal, format
program pascal disajikan sebagai berikut :
program <nama program>
label
<deklarasi>
const
<deklarasi>
type
<deklarasi>
var
<deklarasi>
procedure
dan function <deklarasi>
begin
<pernyataan
>;
<pernyataan
>;
<pernyataan
>;
.
.
.
<pernyataan
>;
end.
(Zaks, 1988 : 17)
4.
Pengambilan Keputusan
Sering kali pemakai dihadapkan pada permasalahan untuk pengambilan
keputusan terhadap dua alternatif atau bahkan lebih. Pemakai dapat mengambil
keputusan didasarkan oleh suatu kondisi yang telah dievaluasi terlebih dahulu.
Hal serupa juga dilakukan oleh komputer. Untuk keperluan inilah Turbo Pascal
menyediakan dua macam pernyataan:
a).
IF
Pernyataan IF ada beberapa bentuk, yaitu :
(1).
Pernyataan IF Sederhana
|
Pada bentuk ini pernyataan hanya akan dijalankan kalau
kondisi bernilai True.
(2).
Pernyataan IF – ELSE
|
Pada bentuk ini pernyataan_1 hanya akan dijalankan
kalau kondisi bernilai True (benar), pernyataan_2 hanya
akan dijalankan kalau kondisi bernilai False (salah).
(3).
|
Suatu pernyataan IF dapat mengandung pernyataan IF yang lain. Bentuk
seperti ini disebut IF Bersarang (nested IF).
(Kadir , 2001 : 86-92)
b).
CASE
Pernyataan CASE biasanya dipakai pada pilihan berganda. Bentuk
pernyataan ini :
|
(Kadir, 2001 : 96)
5.
Pengulangan (loop)
Pengulangan digunakan untuk menjalankan satu atau beberapa
pernyataan sebanyak beberapa kali. Pengulangan memungkinkan menjalankan
beberapa pernyataan hanya dengan menuliskan pernyataan tersebut satu kali saja.
a).
Pernyataan FOR
Pernyataan FOR biasanya digunakan untuk melakukan pengulangan yang
jumlahnya diketahui sebelumnya. Bentuk umum pernyataan FOR adalah sebagai
berikut :
|
Pernyataan FOR bisa juga digunakan untuk melakukan pengulangan dari bilangan
yang lebih besar ke bilangan yang lebih kecil. Caranya adalah dengan mengganti
kata kunci TO dengan DOWNTO.
|
b).
Pernyataan FOR Bersarang
Pernyataan FOR yang berada di dalam FOR disebut FOR Bersarang (nested
FOR).
c).
WHILE
Pernyataan WHILE biasa digunakan untuk pengulangan yang belum
diketahui secara pasti berapa banyak akan mengulang pernyataan-pernyataan.
|
d).
Pernyataan REPEAT - UNTIL
Pernyataan REPEAT –UNTIL digunakan bila jumlah pengulangan belum
dapat ditentukan pada saat program ditulis. Kondisi REPEAT – UNTIL dicek pada
akhir kalang. Bentuk pernyataaan REPEAT :
|
(Pranata, 2002 : 85-87)
6. Keunggulan Bahasa Pascal
Menurut Zaks, R (1998 : 2-3) Bahasa Pascal telah dirancang untuk
mempermudah pengubahan algoritma menjadi program, demikian pula halnya dengan
susunan dan penyajian struktur datanya. Pascal berkembang dari pencarian suatu
bahasa pemrograman bersifat lengkap, namun sederhana untuk dipelajari dan mudah
diimplementasikan ke program komputer dengan memori yang cukup kecil dan dapat
dijalankan lewat mode DOS.
|
METODOLOGI PENELITIAN
A.
Tempat Penelitian
Penelitian ini dilakukan di
Laboratorium Pengembangan Pendidikan Matematika Fakultas Keguruan dan Ilmu
Pendidikan Universitas Muhammadiyah Purwokerto.
B.
Alat Penelitian
Alat yang digunakan dalam penelitian
ini adalah satu unit komputer dengan spesifikasi :
Processor : Intel(R)
Pentium(R) 4 CPU 1.80GHz
RAM : 256 MB RAM
Hardisk : 40 GB Maxtor
C.
Langkah-langkah
Penelitian
Penelitian ini menggunakan metode
studi literatur yang kemudian diimplementasikan ke dalam program komputer
menggunakan bahasa pemrograman Turbo Pascal 7.1. Langkah-langkah yang dilakukan
dalam pembuatan program pada penelitian ini adalah sebagai berikut :
1.
Mengidentifikasikan Masalah
Masalah pada penelitian ini adalah
mengetahui perbedaan kecepatan antara metode Biseksi dan metode Regula Falsi
dalam menyelesaikan persamaan non-linear ditinjau dari banyaknya iterasi dengan
cara membandingkan selisih rata-rata akar pendekatan dengan rata-rata akar pada
iterasi ke n pada ke dua metode.
2.
Menentukan Solusi
Untuk mengetahui perbedaan kecepatan
antara metode Biseksi dan metode Regula Falsi dalam menyelesaikan persamaan
non-linear yaitu dengan membandingkan selisih rata-rata akar pendekatan dengan
rata-rata akar pada iterasi ke n pada ke dua metode.
3.
Membuat Diagram Alir
Sebelum peneliti membuat program
maka terlebih dahulu dibuat diagram alir. Diagram alir dibuat untuk mempermudah
urutan langkah-langkah pembuatan program.
4.
Menulis Program
Berdasarkan diagram alir yang telah
dibuat sebelumnya, maka permasalahan yang ada diimplementasikan ke dalam
program komputer dengan menggunakan bahasa pemrograman Turbo Pascal 7.1.
5.
Menguji Program
Setelah program ditulis, program
diuji dengan cara menjalankan (running) program untuk mengetahui
kesalahan yang ada.
6.
Menulis Dokumentasi
Menambahkan dokumentasi berupa
komentar-komentar pada program. Manfaatnya adalah agar pembaca program (user)
dapat mengetahui lebih jelas kegunaan dari setiap pernyataan yang ditulis dalam
program.
D.
Membandingkan Metode
Biseksi dan Metode Regula Falsi
Pada tahap ini dilakukan pembandingan
selisih rata-rata akar pendekatan dengan rata-rata akar pada iterasi ke n untuk
metode Biseksi dengan metode Regula Falsi dalam menyelesaikan persamaan
non-linear khususnya persamaan polinomial satu variabel.
Jika selisih rata-rata akar
pendekatan dengan rata-rata akar pada iterasi ke n untuk metode Biseksi lebih
KECIL dari selisih metode Regula Falsi maka disimpulkan metode Biseksi lebih
cepat dalam menyelesaikan persamaan non-linear ditinjau dari banyaknya iterasi.
Sebaliknya, jika selisih rata-rata akar pendekatan dengan rata-rata akar pada
iterasi ke n untuk metode Biseksi lebih BESAR dari selisih metode Regula Falsi
maka disimpulkan metode Regula Falsi lebih cepat dalam menyelesaikan persamaan
non-linear ditinjau dari banyaknya iterasi.
BAB IV
|
Penelitian ini
menghasilkan diagram alir, kode program serta keluaran berupa tingkat
ketelitian metode Biseksi dan metode Regula Falsi dalam menyelesaikan persamaan
non-linear satu variabel.
A.
Diagram Alir
Diagram alir dibuat untuk
mempermudah urutan langkah-langkah penyelesaian masalah. Adapun diagram alir
yang dihasilkan secara garis besar terdiri dari :
- Program Utama
Dalam diagram alir untuk program
utama berisi perintah untuk menentukan pilihan pada menu utama (masuk, bantuan
dan keluar) serta pilihan untuk
memanggil prosedur penyelesaian metode biseksi, penyelesaian metode regula falsi,
memasukan jumlah persamaan dan derajat tertinggi serta pernyataan untuk
memanggil prosedur perbandingan utama.
- Prosedur Penyelesaian Metode Biseksi
Dalam
diagram alir ini berisi perhitungan penyelesaian persamaan non-linear dengan
menggunakan metode Biseksi.
- Prosedur Penyelesaian Metode Regula Falsi
Dalam
diagram alir ini berisi perhitungan penyelesaian persamaan non-linear dengan
menggunakan metode Regula Falsi.
- Prosedur Perbandingan Utama
Dalam diagram alir untuk prosedur
perbandingan utama berisi perhitungan untuk metode Biseksi dan metode Regula
Falsi serta perhitungan untuk mengetahui perbedaan kecepatan antara metode
Biseksi dan metode Regula Falsi dalam menyelesaikan persamaan non-linear
ditinjau dari banyaknya iterasi.
Diagram alir secara
keseluruhan dapat dilihat pada lampiran 1.
B.
Kode Program
Kode program yang dihasilkan diberi
nama “NUMERIK” yaitu program yang digunakan untuk mengetahui perbedaan
kecepatan antara metode Biseksi dan metode Regula Falsi dalam menentukan akar
penyelesaian persamaan non-linear ditinjau dari banyaknya iterasi. Secara garis
besar kode program ini terdiri dari :
1.
Program Utama
Dalam kode program untuk program
utama berisi pernyataan untuk menampilkan menu utama, pernyataan untuk
memanggil prosedur penyelesaian metode biseksi, penyelesaian metode regula falsi,
memasukan jumlah persamaan dan derajat tertinggi serta pernyataan untuk
memanggil prosedur perbandingan utama.
2.
Prosedur-prosedur
a).
Prosedur Tunggu
Prosedur tunggu menampilkan kondisi
pada saat program Numerik sedang menyimpan file hasil perhitungan.
b).
Prosedur Judul
Prosedur judul menampilkan judul
program pada setiap langkah-langkah program Numerik.
c).
Prosedur Bantuan
Prosedur bantuan menampilkan bantuan
dari program.
d). Prosedur Bye_bye
Prosedur bye_bye menampilkan kondisi
pada saat keluar program.
e).
Prosedur Penyelesaian Metode Biseksi
Prosedur ini berisi perhitungan
untuk menghitung persamaan non-linear menggunakan metode Biseksi.
f).
Prosedur Penyelesaian Metode
Regula Falsi
Prosedur ini berisi perhitungan
untuk menghitung persamaan non-linear menggunakan metode Regula Falsi.
g).
Prosedur Memasukkan Jumlah
Persamaan dan Derajat Tertinggi
Prosedur ini berisi perintah untuk
memasukkan jumlah persamaan dan derajat tertinggi dari persamaan non-linear.
h).
Prosedur Tampil Derajat
Prosedur tampil derajat menampilkan
jumlah persamaan dan derajat tertinggi pada setiap langkah-langkah program
Numerik.
i).
Prosedur Pilihan Input
Prosedur ini berisi pilihan cara
memasukkan data.
j).
Prosedur Perbandingan Utama
Dalam prosedur perhitungan utama
berisi perhitungan untuk metode Biseksi dan metode Regula Falsi serta
perhitungan untuk mengetahui perbedaan kecepatan antara metode Biseksi dan
metode Regula Falsi dalam menyelesaikan persamaan non-linear ditinjau dari
banyaknya iterasi.
Kode program secara
keseluruhan dapat dilihat pada lampiran 2.
C.
Hasil Keluaran
Pada saat pemanggilan pertama
program, tampak MENU UTAMA :
Gambar 7. Tampilan Menu
Utama
Jika pilihannya adalah 1 maka
selanjutnya akan muncul pilihan untuk jenis penyelesaian persamaan non-linear.
Gambar 8. Tampilan Pilihan Jenis Penyelesaian
Setelah dipilih penyelesaian yang
pertama yaitu penyelesaian persamaan non-linear menggunakan metode Biseksi,
selanjutnya muncul perintah untuk memasukan derajat tertinggi persamaan
non-linear, koefisien dari x serta nilai awal x1 dan nilai awal x2.
Gambar 9. Tampilan Memasukkan Koefisien x dan Nilai Awal x1, x2
Apabila derajat tertinggi, koefisien
dari x serta nilai awal x1 dan nilai awal x2 telah ditentukan, sebagai
ilustrasi untuk derajat tertingginya adalah 3 nilai a = 1 (koefisien x3),
b = 0 (koefisien x2), c = -7 (koefisien x1), d = 1
(koefisien x0) dengan nilai x1 awal = 2,5 dan nilai x2 awal = 2,6.
Selanjutnya akan ditampilkan hasil perhitungan menggunakan metode Biseksi.
Gambar 10. Tampilan Hasil Perhitungan Menggunakan Metode Biseksi
Untuk pilihan penyelesaian yang
kedua yaitu penyelesaian persamaan non-linear menggunakan metode Regula Falsi,
tampilannya hampir sama dengan pilihan penyelesaian yang pertama, perbedaannya
hanya pada nilai hasil perhitungan karena menggunakan rumus iterasi yang
berbeda.
Gambar 11. Tampilan Hasil Perhitungan Menggunakan Metode Regula Falsi
Jika yang dipilih adalah
penyelesaian yang ke tiga yaitu penyelesaian metode Biseksi dan metode Regula
Falsi untuk mengetahui perbedaan kecepatan dalam menyelesaikan persamaan
non-linear ditinjau dari banyaknya iterasi, maka akan muncul perintah untuk
memasukkan jumlah persamaan non-linear, pangkat tertinggi dan batas jumlah
iterasi.
Gambar 12. Tampilan Perintah Memasukkan Jumlah Persamaan
dan Derajat
Tertinggi serta Batas Jumlah Iterasi
Setelah
jumlah dan pangkat tertinggi ditentukan sebagai ilustrasi jumlah persamaannya
adalah 10 dengan derajat tertinggi 2, selanjutnya muncul pilihan cara
memasukkan data yaitu data dimasukkan satu persatu dari keyboard atau
data didapat dari angka random untuk menentukan koefisien dari x2 (Nilai a), x1 (Nilai b) dan x0 (Nilai c) serta dua nilai awal x1 dan x2.
Gambar 13. Tampilan Pilihan Memasukkan
Data
Jika yang
dipilih memasukkan data satu persatu, maka muncul perintah untuk memasukkan
nilai koefisien dari x serta dua nilai awal x1 dan x2 sejumlah persamaan yang
ditentukan sebelumnya. Tetapi jika yang dipilih adalah cara memasukkan berupa
angka random maka program secara otomatis menentukan nilai koefisien dari x
serta dua nilai awal x1 dan x2 sejumlah persamaan yang ditentukan sebelumnya.
Gambar 14. Tampilan Program Menentukan Koefisien
serta Nilai x1 dan x2
Awal dengan Angka
Random
Pada saat program menentukan nilai
x1 awal dan x2 awal, syarat yang harus dipenuhi adalah f(x1).f(x2)<0, jika
tidak ditemukan nilai yang memenuhi persyaratan maka program akan menentukan
nilai a, b, c, …, n yang baru.
Setelah
semua persamaan non-linear mempunyai nilai koefisien dan nilai awal x1 dan x2
maka selanjutnya program melakukan perhitungan menggunakan rumus iterasi pada
masing-masing metode. Pada metode Biseksi,
langkah-langkahnya adalah :
1. Menentukan nilai x3 dengan rumus dan nilai f(x3)
2. Jika f(x1).f(x3) < 0, maka akar berada
pada selang x1 dan x3. Ulangi
langkah ke 1 dengan x2 = x3.
3. Jika f(x1).f(x3) > 0, maka akar berada
pada selang x1 dan x2. Ulangi
langkah ke 1 dengan x1 = x3.
4. Jika f(x1).f(x3) = 0, maka akar persamaan
non-linearnya adalah x3 dan perhitungan selesai.
Sedangkan pada metode Regula
Falsi, langkah-langkahnya adalah :
1.
Menentukan nilai x3 dengan
rumus dan nilai f(x3)
2. Jika f(x1).f(x3) < 0, maka akar berada
pada selang x1 dan x3. Ulangi
langkah ke 1 dengan x2 = x3.
3. Jika f(x1).f(x3) > 0, maka akar berada
pada selang x1 dan x2. Ulangi
langkah ke 1 dengan x1 = x3.
4. Jika f(x1).f(x3) = 0, maka akar persamaan
non-linearnya adalah x3 dan perhitungan selesai.
Proses
perhitungan pada kedua metode berjalan ketika pada layar monitor tampak :
Gambar 15. Tampilan Proses
Iterasi Metode Biseksi dan Metode Regula Falsi
Jika proses iterasi untuk metode
Biseksi dan metode Regula Falsi sudah selesai, maka selanjutnya muncul
pertanyaan apakah hasil perhitungan akan ditampilkan langsung pada layar
monitor. Jika menginginkan langsung ditampilkan maka ketikkan ‘y’ atau ‘Y’ dan
jika tidak ingin menampilkan hasilnya maka ketikkan ‘t’ atau ‘T’.
Gambar 16. Tampilan
Pertanyaan Tampilkan Hasil Perhitungan
Setelah dipilih untuk menampilkan
hasil perhitungan oleh metode Biseksi dan metode Regula Falsi dengan
mengetikkan ‘y’ atau ‘Y’ maka selanjutnya akan ditampilkan nilai a, b, c, …, n
serta nilai x1 awal dan nilai x2 awal untuk setiap persamaan. Selanjutnya akan ditampilkan pula salah
satu akar pendekatan dan akar pada saat iterasi ke 10 serta kesimpulan yang
didapat.
Gambar 17.
Tampilan Koefisien serta Nilai x1 Awal dan x2 Awal Persamaan
ke 10
Gambar 18. Hasil Perhitungan berupa Salah-satu akar Penyelesaian
Gambar 19. Hasil Perhitungan berupa Salah-satu akar pada Iterasi ke 10
Gambar 20. Tampilan Kesimpulan
Setelah
ditampilkan hasil perhitungan metode Biseksi dan metode Regula Falsi serta
kesimpulannya, selanjutnya muncul pertanyaan apakah hasil perhitungan akan
disimpan di file. Jika menginginkan hasil perhitungan
disimpan maka ketikkan ‘y’ atau ‘Y’ selanjutnya ketikkan nama file untuk
menyimpannya (misal nama filenya hasil).
Gambar 21. Tampilan
Pertanyaan Simpan Hasil Perhitungan
Gambar 22. Tampilan Perintah Ketikkan Nama File
Gambar 23. Tampilan Keterangan Hasil Perhitungan Telah Disimpan
Gambar 24. Hasil
Perhitungan Program NUMERIK pada File Hasil.txt
Pertanyaan
terakhir yang muncul adalah apakah akan mengulang menjalankan program. Jika
menginginkan mengulangi dan melakukan perhitungan lagi maka ketikkan ‘y’ atau
‘Y’ dan program akan kembali ke MENU UTAMA.
Gambar 25. Tampilan Pertanyaan Apakah Akan Mengulang
Selanjutnya
jika yang dipilih nomor 2 pada MENU UTAMA, maka akan muncul penjelasan tentang
program NUMERIK. Tekan ENTER untuk kembali ke MENU UTAMA.
Gambar 26. Tampilan Penjelasan Program Numerik
Jika pada
MENU UTAMA dipilih 3 maka program akan berhenti.
Gambar 27. Tampilan
Terakhir Program Numerik
D. Perbandingan Metode Biseksi dan Metode
Regula Falsi
Setelah
dilakukan perbandingan selisih rata-rata akar pendekatan dengan rata-rata akar
pada iterasi ke n untuk metode Biseksi dengan metode Regula Falsi dalam
menyelesaikan persamaan non-linear khususnya persamaan polinomial satu variabel
maka didapat data seperti pada tabel berikut (e = 1 x 10-7 dan n = 10).
Tabel Hasil Perhitungan Selisih untuk Berbagai
Jumlah Persamaan dan Derajat Tertinggi
Jumlah Persamaan
|
Derajat Tertinggi
|
Selisih rata-rata metode
Biseksi
|
Selisih rata-rata metode
Biseksi
|
100
|
2
|
0.0001115879
|
0.2696024492
|
75
|
2
|
0.0001893593
|
0.0229433158
|
50
|
4
|
0.0000367736
|
0.0148569387
|
50
|
2
|
0.0002691039
|
0.0081416507
|
25
|
4
|
0.0005576837
|
0.0917223574
|
25
|
2
|
0.0007035599
|
0.0277696914
|
10
|
4
|
0.0003280580
|
0.2511075020
|
10
|
2
|
0.0000933324
|
0.1053634945
|
Dari
contoh-contoh keluaran di atas dengan jumlah persamaan dan derajat tertinggi
yang berbeda-beda diperoleh selisih rata-rata akar pendekatan dengan rata-rata
akar pada iterasi ke n (iterasi ke 10) untuk metode Biseksi yang selalu
lebih kecil dari selisih metode Regula Falsi. Karena selisih metode Biseksi
selalu lebih kecil dari selisih metode Regula falsi maka dapat disimpulkan
bahwa metode Biseksi lebih dari metode Regula Falsi karena hanya dengan 10
iterasi, akar metode Biseksi sudah mendekati akar pendekatannya.
|
KESIMPULAN DAN SARAN
A.
Kesimpulan
Dari penelitian yang telah dilakukan
diperoleh kesimpulan :
1.
Telah
dibuat program komputer yang digunakan untuk menyelesaikan persamaan non-linear
khususnya persamaan polinomial satu variabel dengan metode Biseksi. Hasil keluaran dari program yang telah dibuat berupa :
a.
Nilai salah satu akar
pendekatan melalui beberapa iterasi sampai lebih kecil dari nilai error
yang ditentukan
b.
Nilai error yang didapat
c. Nilai fungsi dari salah satu akar
pendekatan yang diperoleh.
2. Telah dibuat program komputer yang
digunakan untuk menyelesaikan persamaan non-linear khususnya persamaan
polinomial satu variabel dengan metode Regula Falsi. Hasil keluaran dari
program yang telah dibuat berupa :
a.
Nilai salah satu akar
pendekatan melalui beberapa iterasi sampai lebih kecil dari nilai error
yang ditentukan
b.
Nilai error yang didapat
c. Nilai fungsi dari salah satu akar
pendekatan yang diperoleh.
3. Dalam menyelesaikan persamaan non-linear
ditinjau dari banyaknya iterasi, metode Biseksi lebih cepat dari metode Regula
Falsi. Ini ditunjukan dengan melihat selisih rata-rata akar pendekatan dengan
rata-rata akar pada iterasi ke n metode Biseksi yang selalu lebih kecil dari
selisih rata-rata akar pendekatan dengan rata-rata akar pada iterasi ke n
metode regula Falsi.
B.
Saran
Setelah
dilakukan penelitian ini, disarankan :
- Program
yang telah dibuat dapat dimodifikasi supaya dapat menyelesaikan persamaan
non-linear yang berupa persamaan eksponensial, persamaan logaritmik,
persamaan sinusoida atau persamaan non-linear yang lain.
- Penulisan
kode program bisa dilakukan dalam bahasa pemrograman komputer yang lain
yang lebih bagus dalam hal grafik dan tingkat kemampuan pengoperasian
digit angka.
|
Puji syukur penulis panjatkan kehadirat Allah SWT atas
rahmat dan nikmat-Nya, sehingga penulis dapat menyelesaikan penyusunan skripsi
ini yang berjudul “Penyelesaian Persamaan Non-Linear metode Biseksi dan metode Regula Falsi Menggunakan Cara Komputasi”.
Dalam penyusunan skripsi ini, penulis banyak mendapatkan
bimbingan dan bantuan dari berbagai pihak. Oleh karena itu, pada kesempatan ini
tidak lupa peneliti menyampaikan terimakasih yang sebesar-besarnya kepada :
1.
Dr. H. Djoko Wahyono, S.U. Apt,
Rektor Universitas Muhammadiyah Purwokerto.
2.
Drs. H. Sutomo, M.Si, Dekan
Fakultas Keguruan dan Ilmu Pendidikan Universitas Muhammadiyah Purwokerto
3.
Drs. Ahmad, M.Pd, Kaprodi
Pendidikan Matematika.
4.
Hindayati Mustafidah, S.Si.,
M.Kom, Dosen Pembimbing I yang telah memberikan motivasi, pengarahan, saran dan
koreksi dalam penyusunan skripsi ini.
5.
Nila Kurniasih, S.Si, M.Si,
Dosen Pembimbing II yang telah memberikan motivasi, pengarahan, saran dan
koreksi dalam penyusunan skripsi ini.
6.
Semua pihak yang tidak dapat
penulis sebutkan satu persatu di sini, yang telah membantu dalam penyelesaian
skripsi ini.
Semoga semua bantuan yang telah diberikan menjadi amal
di sisi Allah SWT. Akhirnya penulis berharap semoga skripsi ini bermanfaat
dalam menunjang perkembangan ilmu pengetahuan dan bermanfaat bagi yang
membacanya.
Purwokerto, Maret 2007
Penulis
DAFTAR ISI
|
HALAMAN JUDUL ………………………………………………………… i
HALAMAN PENGESAHAN ………….……………………………………. ii
HALAMAN PERSETUJUAN ………………………………………………. iii
SURAT PERNYATAAN …………………………………………………… iv
MOTTO ……………………………………………………………………… v
PERSEMBAHAN …………………….….………………………………….. vi
KATA PENGANTAR ……………………..………………………………… vii
ABSTRAK ………………………………..………………………………….. ix
DAFTAR ISI ………………………………..………………………………... x
DAFTAR GAMBAR ……………………….………………………………... xiii
BAB
I PENDAHULUAN
A.
Latar Belakang ………..…………………………………… 1
B.
Perumusan Masalah …..…………………………………… 7
C.
Pembatasan Masalah ……………………………………….. 7
D.
Tujuan Penelitian ………..………………………………… 7
E.
Manfaat Penelitian …………………………………………. 8
BAB
II LANDASAN TEORI
E.
Persamaan Non-Linear …………….……………………….. 9
F.
Metode Numerik ………………………….………………... 9
G.
Penyelesaian Persamaan
Non-Linear ..................................... 11
1.
Metode Biseksi ..………………………………………. 11
2.
Metode Regula Falsi …………………………………… 12
H.
Bahasa Pemrograman Pascal ………………………………. 14
1.
Sejarah Pascal ….…………………………………….. 14
2.
Langkah-langkah
dalam Pemrograman Komputer …..... 14
3.
Struktur Program Pascal ….............................................. 16
4.
Pengambilan Keputusan ….………………………….. 17
5.
Pengulangan (loop) …………………………………….. 19
6.
Keunggulan Bahasa Pascal ….......................................... 20
BAB
III METODOLOGI PENELITIAN
A.
Tempat Penelitian …..……………………………………… 21
B.
Alat Penelitian ….………………………………………….. 21
C.
Langkah-langkah Penelitian ….……………………………. 21
D.
Membandingkan Metode Biseksi
dan Metode Regula Falsi …..……………………………………………………. 23
BAB
IV HASIL PENELITIAN DAN PEMBAHASAN
A.
Diagram Alir ………………………………………………. 24
B.
Kode Program ..….………………………………………... 25
C.
Hasil Keluaran …………………………………………….. 27
D.
|
BAB V KESIMPULAN DAN
SARAN
A.
Kesimpulan ………………………………………………… 41
B.
Saran ……………………………………………………….. 42
DAFTAR PUSTAKA ……………………………………………………….. 43
LAMPIRAN
A.
Diagram Alir ………………..……………………………………………. 44
B.
Kode Program …………………………………………………..………... 50
|
DAFTAR GAMBAR
|
Gambar 1. Gambar grafik …………………………………….. 4
Gambar 2. Penyelesaian
Persamaan Non-Linear ……………………………. 10
Gambar 3. Bentuk-bentuk
Grafik Persamaan Linear ………………………… 11
Gambar 4. Bentuk-bentuk
Grafik Persamaan Non-Linear ………………….. 11
Gambar 5. Metode Biseksi …………………………………………………. 12
Gambar 6. Metode Regula Falsi …………………………………………… 13
Gambar 7. Tampilan Menu Utama
…………………………………………. 27
Gambar 8. Tampilan
Pilihan Jenis Penyelesaian ............................................. 28
Gambar 9. Tampilan Memasukkan Koefisien x
dan Nilai Awal x1, x2 ......... 28
Gambar 10. Tampilan Hasil Perhitungan
Menggunakan Metode Biseksi ...... 29
Gambar 11. Tampilan Hasil Perhitungan
Menggunakan
Metode
Regula Falsi .................................................................... 29
Gambar 12. Tampilan Perintah Memasukkan
Jumlah Persamaan dan
Derajat
Tertinggi serta Batas Jumlah Iterasi ................................ 30
Gambar 13. Tampilan Pilihan Memasukkan
Data ........................................... 30
Gambar 14.
Tampilan Program Menentukan Koefisien serta
Nilai x1 dan x2 Awal dengan
Angka Random …………………. 31
Gambar 15. Tampilan Proses Iterasi Metode Biseksi dan
Metode Regula Falsi ……………………………………………. 33
Gambar 16. Tampilan Pertanyaan Tampilkan Hasil Perhitungan ……………. 33
Gambar 17. Tampilan Koefisien serta
Nilai x1 Awal dan
x2 Awal Persamaan ke 10 ............................................................ 34
Gambar 18. Hasil Perhitungan berupa Salah-satu akar Penyelesaian ............ 34
Gambar 19. Hasil Perhitungan berupa Salah-satu akar pada Iterasi ke 10 ..... 35
Gambar 20. Tampilan Kesimpulan .................................................................
35
Gambar 21. Tampilan Pertanyaan Simpan Hasil Perhitungan ………………. 36
Gambar 22. Tampilan Perintah Ketikkan Nama File ………………………… 36
Gambar 23. Tampilan Keterangan Hasil Perhitungan Telah Disimpan …….. 36
Gambar 24. Hasil Perhitungan Program NUMERIK pada File Hasil.txt ……. 37
Gambar 25. Tampilan Pertanyaan Apakah Akan Mengulang ......................... 38
Gambar 26. Tampilan Penjelasan Program Numerik ……………………….. 38
Gambar 27. Tampilan Terakhir Program Numerik ………………………….. 39
PENYELESAIAN PERSAMAAN
NON-LINEAR
METODE BISEKSI DAN METODE REGULA FALSI
MENGGUNAKAN CARA KOMPUTASI
SKRIPSI
Diajukan untuk memenuhi syarat mencapai derajat Sarjana S1
Program Studi Pendidikan Matematika
Disusun Oleh :
MULYONO
0301060025
PROGRAM STUDI PENDIDIKAN MATEMATIKA
FAKULTAS KEGURUAN DAN ILMU PENDIDIKAN
UNIVERSITAS MUHAMMADIYAH PURWOKERTO
2007
DAFTAR PUSTAKA
Alamsyah,
MK. 1994. Pelajaran Matematika 1 SMK. Bandung : Armico
Amang.
2006. BAB III. PENYELESAIAN PERSAMAAN NON LINIER.
http://lecturer.eepis-its.edu/~amang/pdf/.
Diakses tanggal 15 November
2006.
Chapra, S. 1996. METODE NUMERIK Jilid 1 Edisi
Kedua. Jakarta : Erlangga.
Jogiyanto,
HM. 1988a. TURBO PASCAL Versi 5.0 Jilid 1. Yogyakarta : ANDI
Yogyakarta
Jogiyanto,
HM. 1988b. TURBO PASCAL Versi 5.0 Jilid 2. Yogyakarta : ANDI
Yogyakarta
Kadir,
Abdul. 1997. PEMROGRAMAN PASCAL (Buku 1). Yogyakarta : ANDI
Yogyakarta
Munif,
Abd. 1995. Cara Praktis Penguasaan dan Penggunaan Metode Numerik.
Jakarta : PT. Guna Widya.
Pranata,
Antony. 2002. Algoritma dan Pemrograman. Yogyakarta : J& J Learning
Ruseffendi.
1998. Statistika Dasar untuk Penelitian Pendidikan. Bandung : CV
Andira.
Susy. 2006. BAB 1. Metode Numerik Secara Umum. http://www.malang.ac.id/
e%2Dlearning/FMIPA/Susy%20KA/.
Diakses tanggal 15 November 2006.
Wibowo, dkk. 2007. AKAR PERSAMAAN
(ROOT FINDING). http://ft.uns.ac.id/ts/kul_ol/numerik/numerik02_akar.htm
Diakses tanggal 02 Januari 2007.
Wirodikromo, Sartono. 2004. MATEMATIKA
Untuk SMA Kelas X. Jakarta :
Erlangga.
Zaks, Rodnay. 1988. Pengantar
PASCAL Termasuk Torbo Pascal. Jakarta :
|
Lampiran 1.
Diagram Alir
Prosedur perhitungan_utama
Lampiran 2. Kode Program NUMERIK
Program
metode_biseksi_dan_metode_regula_falsi;
uses crt;
procedure tunggu;
var i:byte;
begin
for i:=1 to 80 do
begin
delay(3000);gotoxy(30,17);textcolor(white+blink);
write('Silahkan tunggu ... !!!');
gotoxy(38,20);textcolor(yellow);
write('[ ',(i/80)*100:0:0,' % ]');
textcolor(lightblue);
gotoxy(i,22);write('Û');sound(i*2);
end;
nosound;
end;
procedure judul;
begin
clrscr;textcolor(yellow);
writeln;writeln;
writeln('
*********************************************
******');
writeln('
**** Program penyelesaian Persamaan Non-Linier
****');
writeln('
*** Menggunakan Metode Biseksi dan Regula Falsi
***');
writeln('
*********************************************
******');
writeln;
end;
procedure bantuan;
var a,b:byte;
label terakhir;
begin
clrscr;textcolor(10);
writeln; writeln;
writeln(' < < B A N T U A N
> > ');
writeln;
writeln('
Program ini berfungsi untuk menentukan salah
satu akar penyelesaian ');
writeln('
persamaan Non-Linier dengan menggunakan
metode Numerik yaitu ');
writeln(' metode Biseksi dan metode Regula Falsi
serta
mengetahui ketelitian ');
writeln('
ke dua metode dengan membandingkan selisih
antara rata-rata akar ');
writeln('
pendekatan dengan rata-rata akar pada saat
iterasi ke 10');
writeln;
writeln('
Untuk dapat mengoperasikannya silahkan pada
MENU UTAMA ');
writeln(' - ketik 1 untuk Masuk Program ');
writeln(' - ketik 2 untuk Bantuan Program ');
writeln(' - ketik 3 untuk Keluar Program ');
writeln;
writeln('
Jika menginginkan hasil perhitungan disimpan
di file maka ');
writeln('
pilih "Y" pada pertanyaan Simpan hasil
perhitungan (Y/T) ? ');
writeln('
dan ketikan NAMA FILE nya.
');
writeln;
writeln('
Jika ingin melakukan perhitungan lagi
ketikkan "Y" pada pernyataan ');
writeln('
Apakah akan mengulang (Y/T) ?
');
repeat
for a:=9 to 15 do
begin
textcolor(a);delay(5000);gotoxy(65,25);
write('<< E N T E R >>');
end;
until keypressed;
readln;
end;
procedure bye_bye;
var a,b,c,x,y:byte;
begin
clrscr;
gotoxy(28,12);writeln(' T E R I
M A K A S I H ');
gotoxy(28,14);writeln('
Bye ... !!! ');
for a:=28 to 56 do
begin
delay(5000);
gotoxy(a,10);textcolor(9+random(6));
delay(500);writeln('#');
gotoxy(56+(28-a),16);textcolor(9+random(6));write('#');
gotoxy(56+(28-a),10);
textcolor(9+random(6));delay(500);writeln('#');
gotoxy(a,16);textcolor(9+random(6));write('#');
end;
repeat
clrscr;
x:=random(55);
y:=random(25);
sound(1000);
delay(5000);
nosound;
textcolor(9+random(6));
gotoxy(x,y);write('Tekan sebarang tombol ... !!!');
gotoxy(1,25);
write(' B y
: M U L Y O N O ');
delay(50000);
gotoxy(x,y);write(' ');
until keypressed;
end;
procedure penyelesaian_metode_biseksi;
var a, b, c, n, derajat_tertinggi,
tertinggi_bis, huruf, iterasi_bis : byte;
x1, nilai_awal_x1, fx1, x2,
nilai_awal_x2, fx2, x3, nilai_awal_x3, fx3 : real;
koef,xpangkat,koef_x_xpangkat: array
[1..100] of real;
label mengulang_bis;
begin
mengulang_bis:
judul;
writeln(' Penyelesaian Persamaan Non-Linear
Menggunakan Metode Biseksi');writeln;
write(' Masukkan pangkat
tertinggi = '); readln(tertinggi_bis);
derajat_tertinggi:=tertinggi_bis;
writeln;
huruf := 97;
writeln(' Menentukan Koefisien x^1, x^2, x^3, ...,
x^n');
{menentukan nilai a, b, c, ..., n}
for a:=1 to tertinggi_bis+1 do
begin
write(' Nilai ',chr(huruf),'
==>> ');
readln(koef[a]);
huruf := huruf + 1;
if koef[1]=0 then
begin
sound(1000);delay(10000);nosound;
gotoxy(25,25);
textcolor(lightred);
write(' a tidak boleh sama dengan
nol');
textcolor(yellow);
readln;
goto mengulang_bis;
end;
end;
{menentukan nilai awal x1}
writeln;
writeln(' Menentukan 2 Nilai Awal x1 dan x2');
write(' Masukkan nilai x1 awal
==>> ');readln(x1);
nilai_awal_x1 := x1;
{nilai fungsi untuk x1 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x1;
for b:=2 to tertinggi_bis do
begin
xpangkat[b]:=xpangkat[b-1]*x1;
end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_bis do
begin
koef_x_xpangkat[b]:=koef[b]*xpangkat[c];
c:=c-1;
end;
{NILAI FX}
fx1:=koef[tertinggi_bis+1];
for b:=tertinggi_bis downto 1 do
begin
fx1:=fx1+koef_x_xpangkat[b];
end;
{menentukan nilai awal x2}
n:=0;
repeat
begin
n:=n+1;
if n=5 then
begin
gotoxy(25,25);sound(1000);delay(10000);nosound;
textcolor(lightred);
write('Syarat ==>>
f(x1).f(x2) < 0');
textcolor(yellow);
readln;
goto mengulang_bis;
end
else begin
write(' Masukkan nilai x2 awal
==>> '); readln(x2);
end; nilai_awal_x2:=x2;
{nilai fungsi untuk x2 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x2;
for b:=2 to tertinggi_bis do
begin xpangkat[b]:=xpangkat[b-1]*x2; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_bis do
begin
koef_x_xpangkat[b]:=koef[b]*xpangkat[c]; c:=c-1;
end;
{NILAI FX}
fx2:=koef[tertinggi_bis+1];
for b:=tertinggi_bis downto 1 do
begin fx2:=fx2+koef_x_xpangkat[b]; end;
end;
until (fx1*fx2)<0;
readln;
judul;
{METODE BISEKSI}
iterasi_bis:=0; fx3:=0;
repeat
begin
x3:=(x1+x2)/2;
{nilai fungsi untuk x3}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x3;
for b:=2 to tertinggi_bis do
begin xpangkat[b]:=xpangkat[b-1]*x3; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_bis do
begin koef_x_xpangkat[b]:=koef[b]*xpangkat[c];
c:=c-1; end;
{NILAI FX}
fx3:=koef[tertinggi_bis+1];
for b:=tertinggi_bis downto 1 do
begin fx3:=fx3+koef_x_xpangkat[b]; end;
end;
if (fx3*fx1)<0 then
begin x2:=x3; end
else
begin x1:=x3; end;
iterasi_bis:=iterasi_bis+1;
gotoxy(1,8);write(' Hasil Perhitungan Menggunakan Metode
Biseksi');
gotoxy(1,10);write(' Salah satu akar pendekatannya adalah
',x3:1:15);
gotoxy(1,12);write(' diperoleh pada iterasi ke ',iterasi_bis);
gotoxy(1,14);write(' dengan error = ',abs(fx3):25:15,' (î = 1E-7)');
gotoxy(1,16);write(' nilai fungsinya = ',fx3:25:15);
until abs(fx3)<1e-7;
readln;
end;
procedure
penyelesaian_metode_regula_falsi;
var a, b, c, n, derajat_tertinggi,
tertinggi_reg, huruf, iterasi_reg : byte;
x1, nilai_awal_x1, fx1, x2,
nilai_awal_x2, fx2, x3, nilai_awal_x3, fx3 : real;
koef,xpangkat,koef_x_xpangkat: array
[1..100] of real;
label mengulang_reg;
begin mengulang_reg:
judul;
writeln(' Penyelesaian Persamaan Non-Linear
Menggunakan Metode Regula Falsi');writeln;
write(' Masukkan pangkat
tertinggi = '); readln(tertinggi_reg);
derajat_tertinggi:=tertinggi_reg;
writeln; huruf := 97;
writeln(' Menentukan Koefisien x^1, x^2, x^3, ...,
x^n');
{menentukan nilai a, b, c, ..., n}
for a:=1 to tertinggi_reg+1 do
begin
write(' Nilai ',chr(huruf),'
==>> '); eadln(koef[a]);
huruf := huruf + 1;
if koef[1]=0 then
begin sound(1000); delay(10000); nosound; gotoxy(25,25);
textcolor(lightred);
write(' a tidak boleh sama dengan
nol');
textcolor(yellow); readln;
goto mengulang_reg;end;
end;
{menentukan nilai awal x1}
writeln;
writeln(' Menentukan 2 Nilai Awal x1 dan x2');
write(' Masukkan nilai x1 awal
==>> ');readln(x1);
nilai_awal_x1 := x1;
{nilai fungsi untuk x1 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x1;
for b:=2 to tertinggi_reg do
begin xpangkat[b]:=xpangkat[b-1]*x1; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_reg do
begin koef_x_xpangkat[b]:=koef[b]*xpangkat[c];
c:=c-1; end;
{NILAI FX}
fx1:=koef[tertinggi_reg+1];
for b:=tertinggi_reg downto 1 do
begin fx1:=fx1+koef_x_xpangkat[b]; end;
{menentukan nilai awal x2}
n:=0;
repeat
begin n:=n+1;
if n=5 then
begin gotoxy(25,25);sound(1000);delay(10000);nosound;
textcolor(lightred);
write('Syarat ==>>
f(x1).f(x2) < 0');
textcolor(yellow); readln; goto mengulang_reg; end
else
begin
write(' Masukkan nilai x2 awal
==>> '); readln(x2);
end;
nilai_awal_x2:=x2;
{nilai fungsi untuk x2 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x2;
for b:=2 to tertinggi_reg do
begin xpangkat[b]:=xpangkat[b-1]*x2; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_reg do
begin koef_x_xpangkat[b]:=koef[b]*xpangkat[c];
c:=c-1; end;
{NILAI FX}
fx2:=koef[tertinggi_reg+1];
for b:=tertinggi_reg downto 1 do
begin fx2:=fx2+koef_x_xpangkat[b]; end;
end;
until (fx1*fx2)<0;
readln;
judul;
{METODE REGULA FALSI}
iterasi_reg:=0; fx3:=0;
repeat
begin x3:=(x2-(fx2/(fx2-fx1))*(x2-x1));
{nilai fungsi untuk x3}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[1] := x3;
for b:=2 to tertinggi_reg do
begin xpangkat[b]:=xpangkat[b-1]*x3; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan
KOEFISIENNYA}
c:=derajat_tertinggi;
for b:=1 to tertinggi_reg do
begin koef_x_xpangkat[b]:=koef[b]*xpangkat[c];
c:=c-1; end;
{NILAI FX}
fx3:=koef[tertinggi_reg+1];
for b:=tertinggi_reg downto 1 do
begin fx3:=fx3+koef_x_xpangkat[b]; end;
end;
if (fx3*fx1)<0 then
begin x2:=x3; end
else
begin x1:=x3; end;
iterasi_reg:=iterasi_reg+1;
gotoxy(1,8);write(' Hasil Perhitungan Menggunakan Metode Regula
Falsi');
gotoxy(1,10);write(' Salah satu akar pendekatannya adalah
',x3:1:15);
gotoxy(1,12);write(' diperoleh pada iterasi ke ',iterasi_reg);
gotoxy(1,14);write(' dengan error = ',abs(fx3):25:15,' (î = 1E-7)');
gotoxy(1,16);write(' nilai fungsinya = ',fx3:25:15);
until abs(fx3)<1e-7;
readln; end;
procedure
memasukan_jumlah_persamaan_dan_derajat_tertinggi (var jum,pangkat,batas :
longint);
begin
clrscr; judul;
write(' Masukkan jumlah
persamaan ==>> ');
readln(jum);
write(' Masukkan derajat
tertinggi ==>> ');
readln(pangkat);
write(' Masukkan batas jumlah
Iterasi ==>> ');
readln(batas);
end;
procedure tampil_derajat (var
jum,pangkat:longint);
begin
gotoxy(1,7);
writeln(' ',jum,' Persamaan || Derajat
',
pangkat); gotoxy(1,7); writeln;
end;
procedure pilihan_input(var
pil_input:char);
begin
repeat
judul; writeln;
writeln('
P i l i h a n M a s u k k a
n ');
writeln;
writeln('
1. Masukkan dari Keyboard');
writeln('
2. Masukkan berupa angka Random'); writeln;
write(' Pilihan ==>> ');
readln(pil_input);
if (pil_input='1') or (pil_input='2') then
begin end
else
begin gotoxy(18,24);
write(' Pilihan hanya 1 dan 2, Silahkan ulangi !!! ');
delay(20000);
end;
until (pil_input='1') or
(pil_input='2')end;
procedure perbandingan_utama (var
jum,pangkat,batas : longint);
var a, b, c {Variabel untuk mengulang},
n {Stop jika tidak menemukan nilai awal x2 },
derajat {Derajat dari persamaan Non-Linier},
huruf {Menampilkan nilai a, b, c, ... } : integer;
fx1 {Nilai fungsi untuk awal x1},
fx2 {Nilai fungsi untuk awal x2},
x1, x2 { Nilai awal x1 dan x2},
nilai_awal_x1, nilai_awal_x2 {Nilai awal x1 dan x2 untuk
ke 2 metode }, errorbis {Error dari metode Biseksi},
iterasibis {Jumlah iterasi metode Biseksi},
x1bis, x2bis, x3bis {Nilai x1, x2, x3 metode Biseksi},
fx1bis, fx2bis, fx3bis {Nilai fungsi x1, x2, x3 metode
Biseksi}, errorreg {Error dari metode Regula Falsi},
iterasireg {Jumlah iterasi metode Regula Falsi},
x1reg, x2reg, x3reg {Nilai x1, x2, x3 metode Regula
Falsi}, fx1reg, fx2reg, fx3reg {Nilai fungsi x1, x2, x3
metode Regula Falsi},
akar_iterasi_ke10_yg_dibandingkan_bis,
akar_iterasi_ke10_yg_dibandingkan_reg {akar untuk
perbandingan}, fx3bissebelum, fx3bisterakhir,
fx3regsebelum, fx3regterakhir: array [1..100] of double;
koef {Nilai a, b, c, ..., n},
xpangkat {Nilai x^n untuk x1, x2, x3},
koef_x_xpangkat {Nilai x^n dikalikan dengan
koefisiennya} : array [1..100, 1..10] of double;
fileku {Variabel file text} : text;
nama_file {Nama file penyimpanan hasil perhitungan},
besar_kecil{kondisi rata2 error iterasi ke 10} : string;
drive {Drive letak file text} :
integer;
directory {Direktori letak file text}
: string[20];
jum_akar_ke10_bis,jum_akar_ke10_reg,
jum_akar_bis,jum_akar_reg,
rata2_akar_bis_iterasi_ke10,rata2_akar_reg_iterasi_ke10,
rata2_akar_bis,rata2_akar_reg,
selisih_rata2_bis,selisih_rata2_reg
: double;
random1,random2,random3 {angka random dari 0 sampai
dengan 100} : integer;
angka_random_real : real;
pil_tampil {pilihan untuk menampilan hasil perhitungan},
pil_simpan {pilihan untuk menyimpan hasil perhitungan},
pil_input {pilihan untuk input data}
: char;
label 1,2,mengulang;
begin
derajat := pangkat;
pilihan_input(pil_input);
for a:=1 to jum do
begin
mengulang:
clrscr;judul;tampil_derajat(jum,pangkat);writeln;
writeln(' Persamaan
ke ',a,' dari ',jum,'
persamaan'); writeln; huruf :=
97;
writeln(' Menentukan
Koefisien x^1, x^2,
x^3, ..., x^n');
{menentukan nilai a, b, c, ..., n}
for b:=1 to derajat+1 do
begin
random1:=random(100); random2:=random(100);
random3:=random(100);
angka_random_real:=(random1-random2)/(random3+1);
if pil_input = '2' then
begin
koef[a,b]:=angka_random_real;
gotoxy(10,13); writeln('
Nilai ',
chr(huruf),' ==>> ');
gotoxy(10,13); writeln('
Nilai ',
chr(huruf),' ==>> ',koef[a,b]:6:2);
end
else
begin gotoxy(10,13);
write(' Nilai
',chr(huruf),' ==>> ');
gotoxy(10,13); write(' Nilai
',chr(huruf),' ==>> ');
readln(koef[a,b]);
end;
huruf := huruf + 1;
if koef[a,1]=0 then
begin
if pil_input = '2' then
begin goto mengulang; end
else
begin
sound(1000);delay(10000);nosound;
gotoxy(25,25);
textcolor(lightred);
write(' a tidak boleh sama dengan
nol');
textcolor(yellow); readln; goto mengulang; end;
end;
end;
{menentukan nilai awal x1 dan x2}
begin writeln;
writeln(' Menentukan 2
Nilai Awal x1 dan x2');
random1:=random(100); random2:=random(100);
random3:=random(100); angka_random_real:=(random1-
random2)/(random3+1);
if pil_input = '2' then
begin
x1[a]:=angka_random_real; gotoxy(10,17);
writeln(' Menentukan nilai x1
awal ==>> ');
gotoxy(10,17);
writeln(' Menentukan nilai x1
awal ==>> ',x1[a]:6:2);
end
else
begin
gotoxy(10,17);
write(' Menentukan nilai x1
awal ==>> ');
gotoxy(10,17);
write(' Menentukan nilai x1 awal ==>> ');
readln(x1[a]);
end;
nilai_awal_x1[a] := x1[a];
{nilai fungsi untuk x1 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[a,1] := x1[a];
for c:=2 to derajat do
begin xpangkat[a,c]:=xpangkat[a,c-1]*x1[a]; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan KOEFISIENNYA}
c:=pangkat;
for b:=1 to derajat do
begin koef_x_xpangkat[a,b]:=koef[a,b]*xpangkat[a,c];
c:=c-1; end;
{NILAI FX}
fx1[a]:=koef[a,derajat+1];
for b:=derajat downto 1 do
begin
fx1[a]:=fx1[a]+koef_x_xpangkat[a,b]; end;
end;
n:=0;
repeat
begin
n:=n+1;
if n=5 then
begin
if pil_input='2' then begin end
else
begin
gotoxy(25,25);sound(1000);delay(10000);nosound;
textcolor(lightred);
write('Syarat ==>>
f(x1).f(x2) < 0');
textcolor(yellow); readln;
end; goto mengulang;
end
else random1:=random(100);
random2:=random(100); random3:=random(100);
angka_random_real:=(random1-random2)/(random3+1);
if pil_input = '2' then
begin x2[a]:=angka_random_real;
gotoxy(10,19);
writeln(' Menentukan nilai
x2 awal ==>> ');
gotoxy(10,19);
writeln(' Menentukan nilai
x2 awal ==>> ',
x2[a]:6:2); end
else begin
gotoxy(10,19);
write(' Menentukan nilai
x2 awal ==>> ');
gotoxy(10,19);
write(' Menentukan nilai
x2 awal ==>> ');
readln(x2[a]);
end;
nilai_awal_x2[a]:=x2[a];
{nilai fungsi untuk x2 awal}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[a,1] := x2[a];
for c:=2 to derajat do
begin xpangkat[a,c]:=xpangkat[a,c-1]*x2[a];
end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan KOEFISIENNYA}
c:=derajat;
koef_x_xpangkat[a,1]:=1;
for b:=1 to derajat do
begin koef_x_xpangkat[a,b]:=koef[a,b]*xpangkat[a,c];
c:=c-1; end;
{NILAI FX} fx2[a]:=koef[a,derajat+1];
for b:=derajat downto 1 do
begin fx2[a]:=fx2[a]+koef_x_xpangkat[a,b];end;
end;
until (fx1[a]*fx2[a])<0;
end;
readln;
clrscr;judul;tampil_derajat(jum,pangkat);
{perhitungan metode biseksi dan metode regula falsi}
for a:=1 to jum do
begin
{METODE BISEKSI}
iterasibis[a]:=0; x1bis[a]:=x1[a]; x2bis[a]:=x2[a];
fx1bis[a]:=fx1[a]; fx2bis[a]:=fx2[a]; fx3bis[a-1]:=0;
repeat
begin x3bis[a]:=(x1bis[a]+x2bis[a])/2;
{nilai fungsi untuk x3}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[a,1] := x3bis[a];
for c:=2 to derajat do
begin
xpangkat[a,c]:=xpangkat[a,c-1]*x3bis[a]; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan KOEFISIENNYA}
c:=derajat;
for b:=1 to derajat do
begin koef_x_xpangkat[a,b]:=koef[a,b]*xpangkat[a,c];
c:=c-1; end;
{NILAI FX}
fx3bis[a]:=koef[a,derajat+1];
for b:=derajat downto 1 do
begin fx3bis[a]:=fx3bis[a]+koef_x_xpangkat[a,b]; end;
if (fx3bis[a]*fx1bis[a])<0 then
begin x2bis[a]:=x3bis[a]; end
else
begin x1bis[a]:=x3bis[a]; end;
fx3bissebelum[a]:=fx3bis[a-1];
fx3bisterakhir[a]:=fx3bis[a];
gotoxy(30,16);textcolor(5);write('
0.0000001');
gotoxy(30,17);textcolor(lightred);
write(abs(fx3bisterakhir[a]-fx3bissebelum[a]):25:22);
end;
if iterasibis[a] = batas then
begin
akar_iterasi_ke10_yg_dibandingkan_bis[a] := x3bis[a];
end;
errorbis[a]:=(fx3bisterakhir[a]-fx3bissebelum[a]);
gotoxy(30,10);textcolor(9+random(6));
write('Silahkan tunggu ... !!!');
gotoxy(30,12);textcolor(9+random(6));
write(' Persamaan Ke ',a);
gotoxy(21,14);textcolor(white);
write('Iterasi metode Biseksi ke
=',
iterasibis[a]:10:0);
iterasibis[a]:=iterasibis[a]+1;
until abs(fx3bis[a])<1e-7;
{METODE REGULA FALSI}
iterasireg[a]:=0; x1reg[a]:=x1[a]; x2reg[a]:=x2[a];
fx1reg[a]:=fx1[a]; fx2reg[a]:=fx2[a];
fx3reg[a-1]:=0;
repeat
begin
x3reg[a]:=((x1reg[a]*fx2reg[a])-
(x2reg[a]*fx1reg[a]))/(fx2reg[a]-fx1reg[a]);
{nilai fungsi untuk x3}
{X PANGKAT 1, 2, 3, 4, .... n}
xpangkat[a,1] := x3reg[a];
for c:=2 to derajat do
begin xpangkat[a,c]:=xpangkat[a,c-1]*x3reg[a]; end;
{X PANGKAT 1, 2, 3, 4, .... n dikalikan KOEFISIENNYA}
c:=derajat;
for b:=1 to derajat do
begin koef_x_xpangkat[a,b]:=koef[a,b]*xpangkat[a,c];
c:=c-1; end;
{NILAI FX}
fx3reg[a]:=koef[a,derajat+1];
for b:=derajat downto 1 do
begin fx3reg[a]:=fx3reg[a]+koef_x_xpangkat[a,b];end;
if (fx3reg[a]*fx1reg[a])<0 then
begin x2reg[a]:=x3reg[a]; end
else
begin x1reg[a]:=x3reg[a]; end;
fx3regsebelum[a]:=fx3reg[a-1];
fx3regterakhir[a]:=fx3reg[a];
gotoxy(30,21);textcolor(5);write('
0.0000001');
gotoxy(30,22);textcolor(lightred);
write(abs(fx3regterakhir[a]-fx3regsebelum[a]):25:22);
end;
{jumlah akar sampai iterasi ke 10}
if iterasireg[a] = batas then
begin
akar_iterasi_ke10_yg_dibandingkan_reg[a] := x3reg[a];
end;
gotoxy(30,10);textcolor(9+random(6));
write('Silahkan tunggu ... !!!');
gotoxy(30,12);textcolor(9+random(6));
write(' Persamaan Ke ',a);
gotoxy(21,19);textcolor(white);
write('Iterasi metode Regula Falsi ke =',
iterasireg[a]:10:0);
errorreg[a]:=(fx3regterakhir[a]-fx3regsebelum[a]);
iterasireg[a]:=iterasireg[a]+1;
until abs(fx3reg[a])<1e-7;
end;
readln;
begin clrscr; derajat:=pangkat;
repeat
judul;tampil_derajat(jum,pangkat);writeln;
write(' Tampilkan Hasil
perhitungan (Y/T) ? ');
readln(pil_tampil);
until (pil_tampil='y') or (pil_tampil='Y') or
(pil_tampil='t') or (pil_tampil='T');
if (pil_tampil='y') or (pil_tampil='Y') then
begin
writeln(' Jumlah
Persamaan = ',jum);
writeln(' Derajat Tertinggi =
',pangkat);
writeln;
{tampilkan koefisien setiap persamaan}
for a:=1 to jum do
begin
clrscr;judul;tampil_derajat(jum,pangkat);writeln;
writeln(' Persamaan Ke =
',a,' (x1 awal = ',
nilai_awal_x1[a]:0:2,' dan x2 awal = ',
nilai_awal_x2[a]:0:2,')');
huruf:=97;
for b:=1 to derajat+1 do
begin
writeln(' Nilai ',chr(huruf),' = ',
koef[a,b]:6:2); huruf:=huruf+1; end;
gotoxy(55,25);write('Tekan tombol ENTER ...!!!');
readln; end; clrscr;
{tampilkan akar persamaan dengan î = 1E-7}
judul;tampil_derajat(jum,pangkat);writeln;
writeln(' Salah satu akar
penyelesaiannya');
writeln('
======================================
=================');
writeln(' | Pers. | Metode Biseksi
| Metode Regula Falsi |');
writeln('
======================================
=================');
jum_akar_bis:=0; jum_akar_reg:=0;
for a:=1 to jum do
begin if (a mod 10)=0 then begin
writeln(' | ',a:4,' | ',x3bis[a]:19:15,
' |',x3reg[a]:20:15,' |'); readln; end
else begin
writeln(' | ',a:4,' | ',x3bis[a]:19:15,
' |',x3reg[a]:20:15,' |'); end;
jum_akar_bis:= jum_akar_bis+x3bis[a];
jum_akar_reg:= jum_akar_reg+x3reg[a];
end;
rata2_akar_bis:=jum_akar_bis/jum;
rata2_akar_reg:=jum_akar_reg/jum;
writeln('
======================================
=================');
writeln(' | Rata2 | ',
rata2_akar_bis:19:15,
' |',rata2_akar_reg:20:15,' |');
writeln('
======================================
================='); readln;
{tampilkan akar persamaan pada saat iterasi ke 10}
judul;tampil_derajat(jum,pangkat);writeln;
writeln(' Akar penyelesaian pada
saat iterasi ke ',
batas:0);
writeln('
======================================
=================');
writeln(' | Pers. | Metode
Biseksi | Metode
Regula Falsi |');
writeln('
======================================
=================');
jum_akar_ke10_bis:=0; jum_akar_ke10_reg:=0;
for a:=1 to jum do
begin if (a mod 10)=0 then begin
writeln(' | ',a:4,'
| ',
akar_iterasi_ke10_yg_dibandingkan_bis[a]:19:15,
'
|',akar_iterasi_ke10_yg_dibandingkan_reg[a]:20:15,
' |'); readln;
end
else begin
writeln(' | ',a:4,' | ',
akar_iterasi_ke10_yg_dibandingkan_bis[a]:19:15,' |',
akar_iterasi_ke10_yg_dibandingkan_reg[a]:20:15,
' |'); end;
jum_akar_ke10_bis:= jum_akar_ke10_bis+akar_iterasi_
ke10_yg_dibandingkan_bis[a];
jum_akar_ke10_reg:= jum_akar_ke10_reg+akar_iterasi_
ke10_yg_dibandingkan_reg[a]; end;
rata2_akar_bis_iterasi_ke10:=jum_akar_ke10_bis/jum;
rata2_akar_reg_iterasi_ke10:=jum_akar_ke10_reg/jum;
writeln('
=====================================
==================');
writeln(' | Rata2 | ',
rata2_akar_bis_iterasi
_ke10:19:15,'
|',rata2_akar_reg_iterasi_ke10:20:15,
' |');
writeln('
===================================
===================='); readln;
selisih_rata2_bis:=rata2_akar_bis-
rata2_akar_bis_iterasi_ke10;
selisih_rata2_reg:=rata2_akar_bis-
rata2_akar_reg_iterasi_ke10;
if abs(selisih_rata2_bis) < abs(selisih_rata2_bis) then
begin besar_kecil:='BESAR' end
else
begin besar_kecil:='KECIL' end;
{menampilkan kesimpulan}
judul;tampil_derajat(jum,pangkat);writeln;
writeln(' K E S I M P U
L A N ');writeln;
writeln(' Selisih metode
Biseksi = ',
abs(selisih_rata2_bis):15:15);
writeln(' Selisih metode Regula
Falsi = ',
abs(selisih_rata2_reg):15:15);writeln;
writeln(' Karena selisih
rata-rata akar pendekatan
dengan rata-rata');
writeln(' akar pada iterasi ke
',batas:0,' metode
Biseksi lebih ',besar_kecil);
writeln(' dari selisih rata-rata
akar pendekatan
dengan rata-rata ');
writeln(' akar pada iterasi ke
',batas:0,' metode
Regula falsi, maka dapat ');
writeln(' disimpulkan bahwa
: ');
writeln(' Metode Biseksi lebih
teliti dari metode
Regula Falsi karena');
writeln(' hanya dengan 10
iterasi, akar metode
Biseksi sudah mendekati');
writeln(' akar pendekatannya.
Ini ditunjukan dengan
selisih untuk metode');
writeln(' Biseksi yang lebih
',besar_kecil,' dari
selisih metode '); writeln('
Regula Falsi'); readln;
end
else clrscr;
repeat judul;tampil_derajat(jum,pangkat);writeln;
write(' Simpan hasil
perhitungan (Y/T) ? ');
readln(pil_simpan);
until (pil_simpan='y') or (pil_simpan='Y') or
(pil_simpan='t') or (pil_simpan='T');
if (pil_simpan='y') or (pil_simpan='Y') then
begin
{$i-}
ChDir('c:\numerik');{ Cek Keberadaan Folder c:\numerik\ }
if IOResult <> 0 then
{ Jika tidak ada }
begin mkdir('c:\numerik'); { Buat Folder c:\numerik }
end;
clrscr; judul;tampil_derajat(jum,pangkat);writeln;
writeln(' Hasil perhitungan
akan disimpan dalam file
text');
write(' Ketikan nama
filenya ===>>> ');
readln(nama_file); assign(fileku,nama_file + '.txt');
rewrite(fileku); writeln(fileku,
'*****************************************************');
writeln(fileku, '** Hasil Program Penyelesaian Persamaan
Non-Linier **');
writeln(fileku,
'*****************************************************');
writeln(fileku);
writeln(fileku, 'Jumlah Persamaan
= ', jum);
writeln(fileku, 'Pangkat Tertinggi = ', pangkat);
writeln(fileku); derajat:=pangkat;
write(fileku,
'=========================================================
==================================================');
writeln(fileku,'=========================================
==========================================================
=======');
for a:=1 to jum do
begin
huruf:=97;
write(fileku, 'Persamaan ke ',a:4,' ==>> dengan x1
awal = ',x1[a]:6:2,', x2 awal = ',x2[a]:6:2, ' dan
nilai ');
for b:=1 to derajat+1 do
begin write(fileku,chr(huruf),' = ',koef[a,b]:6:2,', ');
huruf:=huruf+1; end; writeln(fileku); end;
write(fileku,'===========================================================================================================');
writeln(fileku,'==========================================================================================================');
writeln(fileku);
writeln(fileku,' S A L A H
S A T U A K A R P E N Y E L E S A I A N');
writeln(fileku,'===================================================================================================');
writeln(fileku,'| Pers. | Metode Biseksi | Metode Regula Falsi |');
writeln(fileku,'===================================================================================================');
jum_akar_bis:=0; jum_akar_reg:=0;
for a:=1 to jum do
begin
writeln(fileku, '| ',a:4,' |
',x3bis[a]:19:15,'
(Iterasi ',iterasibis[a]:7:0,') |',x3reg[a]:25:15,'
(Iterasi ',iterasireg[a]:10:0,') |');
jum_akar_bis:= jum_akar_bis+x3bis[a];
jum_akar_reg:= jum_akar_reg+x3reg[a];
end;
rata2_akar_bis:=jum_akar_bis/jum;
rata2_akar_reg:=jum_akar_reg/jum;
writeln(fileku,'===================================================================================================');
writeln(fileku,'| Rata2 | ',
rata2_akar_bis:19:15,' | ',
rata2_akar_reg:24:15,' |');
writeln(fileku,'======================================================================================');
writeln(fileku);
writeln(fileku,' A K A R
P E N Y E L E S A I A N (Pada saat iterasi ke ',batas:0,')');
writeln(fileku,'======================================================================================');
writeln(fileku,'| Pers. | Metode Biseksi | Metode Regula Falsi |');
writeln(fileku,'======================================================================================');
jum_akar_ke10_bis:=0;
jum_akar_ke10_reg:=0;
for a:=1 to jum do
begin
writeln(fileku, '| ',a:4,' | ',
akar_iterasi_ke10_yg_dibandingkan_bis[a]:19:15,'
(Iterasi ',batas:0,') |',
akar_iterasi_ke10_yg_dibandingkan_reg[a]:25:15,'
(Iterasi ',batas:0,') |');
jum_akar_ke10_bis:= jum_akar_ke10_bis+akar_iterasi
_ke10_yg_dibandingkan_bis[a];
jum_akar_ke10_reg:= jum_akar_ke10_reg+akar_iterasi
_ke10_yg_dibandingkan_reg[a];
end;
rata2_akar_bis_iterasi_ke10:=jum_akar_ke10_bis/jum;
rata2_akar_reg_iterasi_ke10:=jum_akar_ke10_reg/jum;
writeln(fileku,'======================================================================================');
writeln(fileku,'| Rata2 | ', rata2_akar_bis_iterasi_ke10:19:15,' | ',
rata2_akar_reg_iterasi_ke10:24:15,' |');
writeln(fileku,'======================================================================================');
writeln(fileku);
selisih_rata2_bis:=rata2_akar_bis-
rata2_akar_bis_iterasi_ke10;
selisih_rata2_reg:=rata2_akar_bis-
rata2_akar_reg_iterasi_ke10;
writeln(fileku,'Selisih rata-rata akar
pendekatan dengan rata-rata akar pada iterasi ke 10 metode Biseksi = ',
abs(selisih_rata2_bis):1:10);
writeln(fileku,'Selisih rata-rata akar
pendekatan dengan rata-rata akar pada iterasi ke 10 metode Regula Falsi = ',
abs(selisih_rata2_reg):1:10);writeln(fileku);
if abs(selisih_rata2_bis) <
abs(selisih_rata2_bis) then
begin besar_kecil:='BESAR' end
else begin besar_kecil:='KECIL' end;
writeln(fileku,' Karena selisih
rata-rata akar pendekatan dengan rata-rata akar pada ');
writeln(fileku,' iterasi ke ',batas:0,'
metode Biseksi lebih ',besar_kecil,' dari selisih rata-rata');
writeln(fileku,' akar pendekatan dengan
rata-rata akar pada iterasi ke ',batas:0,' metode Regula falsi');
writeln(fileku,' maka dapat disimpulkan
bahwa : ');
writeln(fileku,' Metode Biseksi lebih
teliti dari metode Regula Falsi karena');
writeln(fileku,' hanya dengan
',batas:0,' iterasi, akar metode Biseksi sudah mendekati akar pendekatannya');
writeln(fileku,' ini ditunjukan dengan
selisih untuk metode Biseksi yang lebih ',besar_kecil,' dari ');
writeln(fileku,' selisih metode Regula
Falsi');
writeln(fileku);writeln(fileku,' Selesai
...... !!!!');
append(fileku); close(fileku);
judul; drive:=0;
getdir(drive,directory); writeln;
writeln(' Hasil perhitungan sedang disimpan pada file ');
writeln;
writeln(' ===>>>
',directory,'\',nama_file,'.txt');
tunggu; judul; textcolor(lightred);
writeln(' Hasil perhitungan sudah disimpan pada file ');
writeln;
writeln(' ===>>>
',directory,'\',nama_file,'.txt');
gotoxy(55,25);textcolor(yellow);
write('Tekan tombol ENTER ...!!!');
readln; end
else end
end;
{ P R O G R A M U T A M A }
var
n,jum, pangkat,batas :
longint;
pil,pil_ulang,pil_penyelesaian :char;
label ulang,ulangi,keluar;
begin
ulangi: n:=0;
repeat
begin
judul;
{menu utama}
writeln(' < < < M E N U
U T A M A > > >'); writeln;
writeln(' 1. Masuk ');
writeln(' 2. Bantuan ');
writeln(' 3. Keluar ');
writeln; write(' Pilihan (1/2/3)
==>> '); readln(pil);
end;
if (pil='1') or (pil='2') or (pil='3') then
begin end
else
begin
gotoxy(15,24);sound(1000);delay(10000);nosound;
textcolor(lightred);
write('Pilihan hanya 1, 2 dan 3, Silahkan ulangi !! ');
textcolor(yellow); readln; end;
until (pil='1') or (pil='2') or (pil='3');
if (pil = '2') then
begin
judul; bantuan; goto ulangi; end
else if (pil = '3') then begin goto keluar; end
else
ulang: judul;writeln(' Silahkan
pilih !!!'); writeln;
writeln(' 1. Penyelesaian
Persamaan Non-Linier
Menggunakan Metode Biseksi');writeln;
writeln(' 2. Penyelesaian
Persamaan Non-Linier
Menggunakan Metode Regula Falsi');writeln;
writeln(' 3. Penyelesaian Metode
Biseksi dan Metode
Regula Falsi ');
writeln(' untuk mengetahui
ketelitiannya');writeln;
write(' Pilihan (1/2/3)
==>> ');
readln(pil_penyelesaian);
if pil_penyelesaian = '1' then
penyelesaian_metode_biseksi
else if pil_penyelesaian = '2' then
penyelesaian_metode_regula_falsi
else
begin
memasukan_jumlah_persamaan_dan_derajat_tertinggi
(jum,pangkat,batas);
perbandingan_utama(jum,pangkat,batas);
writeln; writeln; end;
repeat
judul; write(' Apakah akan
mengulang (Y/T) ? ');
readln(pil_ulang);
until (pil_ulang='y') or (pil_ulang='Y') or
(pil_ulang='t') or (pil_ulang='T');
if (pil_ulang='y') or (pil_ulang='Y') then
begin goto ulangi; end
else
keluar: bye_bye;
end.
{akhir program utama}
|
||||
|
||||
|
||||
1 komentar:
Terima kasih postingannya Mas, sangat membantu :)
Saya mahasiswa Pendidikan Matematika yg tertarik menyusun skripsi yg sejenis dengan ini. Kalau boleh sy minta filenya sebagai bahan reverensi mas :) Beberapa equation tidak bisa termuat :)
Terima kasih ^_^
Post a Comment