1
BAB XI METODA COBA-SALAH (TRIAL-ERROR)
Metoda coba-salah atau trial-error merupakan salah satu metoda yang penting dan berdaya guna dalam perhitungan-perhitungan yang sangat sulit jika diselesaikan dengan cara-cara perhitungan matematis biasa. Kerap kali dalam matematika ekonomi, matematika teknik, dan lainnya dijumpai bentuk-bentuk persamaan yang tidak dapat diselesaikan secara langsung secara matematis. Dalam kasus seperti ini, maka kita hanya dapat menyelesaikannya dengan cara mencoba-coba menerka harga himpunan penyelesaiannya. Dengan demikian hampir dapat dipastikan bahwa harga pendekatan awal yang kita berikan tersebut akan terjadi kesalahan. Namun demikian, berdasarkan harga pendekatan awal tersebut, kita akan dapat menentukan pendekatan baru untuk memperkecil kesalahan sehingga semakin mendekati harga penyelesaian yang sebenarnya. Selanjutnya harga pendekatan yang baru akan selalu dicari berdasarkan pendekatan sebelumnya. Proses seperti ini akan terus diulang hingga mencapai harga yang dapat dianggap sesuai dengan penyelesaian sebenarnya. Dengan kalimat lain, kesalahan pada harga pendekatan dengan penyelesaian yang sebenarnya sangat kecil.
Dalam kondisi demikian, maka kita perlu menetapkan batas ketelitian yang kita kehendaki sebagai kriteria untuk menentukan bahwa harga pendekatan yang diperoleh telah dapat digunakan sebagai penyelesaiannya. Harga pendekatan dianggap telah memenuhi kriteria sebagai penyelesaian jika kesalahan pada harga pendekatan lebih kecil dari batas ketelitian yang digunakan.
Secara lebih konkrit, prosedur penyelesaian menggunakan metoda coba-salah dapat dijelaskan sebagai berikut ini. Pada awalnya, kita menentukan sembarang harga X sebagai penyelesaian awal. Harga X tersebut kemudian kita substitusikan ke dalam fungsi yang akan diselesaikan. Jika substitusi tersebut mengakibatkan fungsi menjadi “benar”, maka harga X itulah penyelesaian yang dicari. Dalam kondisi
2
sebaliknya, maka kita perlu mengubah harga X dengan harga baru yang semakin baik. Biasanya, cara yang dilakukan adalah menaikkan sedikit demi sedikit harga X tersebut, dan secara berulang setiap perubahan akan disubstitusikan ke dalam fungsi hingga pada akhirnya akan ditemukan harga X yang memenuhi fungsi persamaan atau memenuhi kriteria batas ketelitian yang diterapkan.
Batas ketelitian yang digunakan adalah suatu harga yang sangat kecil hampir mendekati 0 (nol) dan sering disebut sebagai EPSILON. Jika kesalahan fungsi lebih kecil dari EPSILON berarti kita telah menemukan harga penyelesaiannya. Tentu saja, semakin kecil harga EPSILON yang ditetapkan akan memberikan penyelesaian yang semakin baik. Namun permasalahannya, jika kita menetapkan harga EPSILON yang terlalu kecil, maka untuk menemukan harga penyelesaiannya akan diperlukan banyak sekali iterasi perulangan atau bahkan sama sekali tidak akan mendapatkan penyelesaian. Cara seperti ini akhirnya akan menjadi tidak efisien untuk dilakukan. Sebaliknya jika EPSILON ditetapkan terlalu besar, maka hasil penyelesaiannya menjadi tidak akurat.
Permasalahan seperti ini dapat diselesaikan dengan cara melaksanakan metoda coba-salah dalam dua tahap. Pada tahap pertama, kita menyelesaikan fungsi dengan menggunakan harga EPSILON yang tidak terlalu kecil. Begitu juga harga untuk penambahan pada X. setelah kita peroleh harga X yang merupakan harga penyelesaian fungsi, maka proses kita lanjutkan pada tahap kedua. Pada tahap kedua ini kita ulangi kembali proses pencarian harga penyelesaian fungsi dengan menggunakan harga EPSILON dan harga penambahan pada X yang relatif lebih kecil. Dalam tahap kedua ini harga awal yang digunakan adalah X yang merupakan hasil perhitungan pada tahap pertama. Penggunaan cara ini akan mempercepat proses penyelesaian dan memberikan hasil yang lebih akurat dan proses yang dilaksanakan akan menjadi lebih efisien.
Permasalahan lain yang mungkin timbul dalam penggunaan metoda coba-salah adalah adanya kemungkinan bahwa penambahan pada harga X untuk pendekatan
3
baru justru membuat harga tersebut semakin jauh dari harga yang dicari. Jika terjadi demikian, maka kita bisa mengatasi masalah ini dengan cara membalik prosedurnya, yaitu dari penambahan dibalik menjadi pengurangan pada X. Cara ini dapat dilakukan dengan memberi tanda negatif pada harga penambahan untuk X. Tentu saja akan lebih efektif, jika prosedur yang dikembangkan mempunyai kemampuan untuk mendeteksi permasalahan seperti ini sejak awal. Sehingga proses pada perhitungan berikutnya dapat ditentukan dengan pasti apakah harga X perlu ditambah atau dikurangi. Pembaca dapat mengamati perilaku fungsi, dan kemudian menetapkan kriteria untuk mendeteksi perilaku tersebut.
Pada kasus yang berbeda, ada kemungkinan bahwa harga penyelesaian fungsi lebih dari satu macam harga. Hal seperti inipun akan dapat kita atasi. Caranya adalah dengan melaksanakan metoda trial-error secara ganda. Maksudnya, dalam sebuah program yang sama dilakukan 2 prosedur trial-error sekaligus, dan masingmasing harus dimulai dengan harga awal X yang berbeda.
Pada kenyataannya, pelaksanaan metoda coba-salah banyak menemui kesulitan jika hanya diselesaikan secara manual atau bahkan dengan bantuan kalkulator sekalipun. Selain waktu penyelesaian yang sangat lama, kesalahan-kesalahan perhitungan sangat mungkin terjadi, perlu banyak kertas kerja, juga sangat melelahkan dan membosankan. Di sinilah terasa sekali keuntungan penggunaan komputer sebagai alat bantu dalam menyelesaikannya. Namun perlu diingat, bahwa komputer hanyalah alat bantu saja. Komputer hanya mengerti jika diberi instruksiinstruksi
khusus
yang
dipahami.
Oleh
karena
itu
kita
dituntut
mampu
mengembangkan suatu prosedur yang efisien dan optimal.
Selanjutnya untuk memperjelas tentang penggunaan metoda coba-salah, berikut akan diberikan dua contoh penerapannya. Contoh pertama adalah menyelesaikan suatu fungsi persamanaan, sedangkan contoh kedua mencari akar kuadrat suatu bilangan yang dilakukan secara iteratif. Proses penyelesaian dan hasilnya dapat diamati pada uraian berikut ini.
4
11.1. Mencari Penyelesaian Fungsi Persamaan
Contoh persamaan yang diberikan berikut ini merupakan contoh kasus dimana kita hanya akan dapat menyelesaikannya jika memanfaatkan metoda coba-salah. Bentuk fungsi persamaannya yang diberikan adalah sebagai berikut :
A3 + 2 3
log( A 2 + 7) + 10
4
A 2 + log( A 5 + 8)
( A + 1) A+ 2
Untuk menyelesaikan persamaan di atas, maka akan digunakan beberapa variabel. Variabel KIRI adalah menyatakan ungkapan pada ruas sebelah kiri tanda “=”, sedangkan KANAN digunakan untuk menyatakan ungkapan pada ruas sebelah kanan tanda “=”. EPSILON menyatakan batas ketelitian yang ditetapkan, yaitu sebesar 0.001. Harga penambahannya dinyatakan dengan variabel TAMBAH. Dalam contoh di sini harga pada variabel TAMBAH ditentukan sebesar 0.01. Selisih harga ruas kiri dan ruas kanan akan disimpan dalam variabel SELISIH. Variabel AWAL merupakan variabel untuk menyimpan harga pendekatan pada penyelesaian fungsi persamaan dengan harga awal 0 (nol). Sedangkan I merupakan variabel pencacah pada proses perulangan. ABS merupakan fungsi standar yang berarti harga mutlak.
Selanjutnya, dengan asumsi bahwa fungsi persamaannya telah diketahui dalam algoritma, maka prosedur penyelesaiannya adalah mengikuti langkah-langkah sebagaimana algoritma prosedur di bawah ini.
Masukan fungsi persamaan KIRI=KANAN. EPSILON menyatakan batas ketelitian yang ditetapkan. A adalah harga penyelesaian fungsi yang dicari.
5
1. Mulai 2. Inisialisasi AWAL = 0.0 EPSILON = 0.00 TAMBAH = 0.01 3. Proses berulang langkah-4 s/d langkah-7 WHILE SELISIH > TAMBAH 4. Tentukan harga penyelesaiannya AWAL = AWAL + TAMBAH 5. Hitung fungsi persamaan KIRI
= SQRT(A^3 + 2.0) / (A^ (3/2.0) + A Log 10 (A^ 4/5.0 + 8.0))
KANAN = (A Log 10 (A^2 + 7.0) + 10.0) /((A + 1.0) ^ SQRT (A + 2.0)) 6. Hitung selisih ruas KIRI dan ruas KANAN SELISIH = ABS (KIRI – KANAN) 7. Cetak hasil 8. Selesai
Dengan asumsi yang sama seperti di atas, maka flowchat prosedur metoda cobasalah untuk menyelesaikan fungsi dalam contoh di atas adalah ditunjukkan pada Gambar 11.1.
Dengan menggunakan prosedur di atas, maka hasil akhir perhitungan terhadap penyelesaian persamaan di atas adalah 2.4500 pada harga AWAL (sebagai penyelesaian) dengan penyimpangan sebesar 0.000632. Penyelesaian tersebut akan ditemukan setelah perhitungan diulang sebanyak 245 iterasi perulangan. Tentu saja Anda dapat mencobanya dengan menggunakan harga-harga awal yang lebih kecil pada variabel TAMBAH dan SALAH.
Untuk menyelesaikan fungsi-fungsi persamaan yang lain, algoritma di atas dapat dimodifikasi sesuai dengan fungsi persamaan yang akan diselesaikan. Pada
6
prinsipnya, modifikasi tersebut hanya terletak pada fungsi persamaannya saja. Sedangkan langkah-langkahnya tetap sama sebagaimana di atas.
Mulai
Baca fungsi persamaan
AWAL = 0.0 EPSILON = 0.001 TAMBAH = 0.01
YA
TIDAK WHILE SELISIH<EPSILON
AWAL = AWAL+TAMBAH
KIRI=SQRT(A^3 + 2.0)/(A^(3/2.0) + A Log 10 (A^4/5.0 + 8.0) KANAN=(A Log 10 (A^2 + 7.0) + 10.0) / ((A + 1.0) ^ SQRT (A + 2.0)) Cetak Hasil
SELISIH = ABS (KIRI – KANAN)
Selesai
Gambar 11.1: Flowchart prosedur metoda coba-salah untuk menyelesaikan fungsi persamaan
7
11.2. Menghitung Akar Kuadrat Bilangan Integer
Contoh penerapan metoda coba-salah yang lain adalah untuk menghitung akar kuadrat suatu bilangan integer yang dilakukan secara iterasi tanpa menggunakan fungsi standard yang telah disediakan dalam bahasa-bahasa pemrograman (biasanya menggunakan fungsi SQRT). Jika bilangan yang akan dicari akarnya adalah dinyatakan dengan A, maka perhitungan akar kuadrat bilangan A dapat dicari secara iteratif dengan formula sebagai berikut :
AKAR = (AWAL + A/ AWAL) / 2 Keterangan: A
: bilangan yang akan dicari akarnya
AKAR : akar bilangan yang dicari AWAL : harga awal pendekatan pada akar bilangan A
Pada langkah pertama kita perlu menentukan sembarang harga awal pendekatan pada akar suatu bilangan. Selanjutnya, harga awal tersebut disubstitusikan dalam formula di atas. Untuk mengetes apakah akar kuadrat bilangan telah ditemukan atau belum, maka perlu suatu kriteria untuk mengeceknya, yaitu suatu bilangan real sangat kecil yang mendekati 0 (nol) sebagai batas ketelitian yang kita tetapkan. Di sini, batas ketelitian tersebut dinyatakan dengan EPSILON. Dengan menggunakan kriteria batas ketelitian tersebut, maka akar kuadrat bilangan telah ditemukan jika memenuhi pertidaksamaan berikut :
ABS((AKAR – AWAL) / AWAL) < EPSILON
Keterangan: ABS
: merupakan fungsi standar yang menyatakan harga mutlak
AKAR : akar bilangan yang dicari AWAL : harga awal pendekatan pada akar bilangan A EPSILON : batas ketelitian yang ditetapkan
8
Jika akar kuadrat bilangan A belum ditemukan, maka perhitungan selanjutnya dilakukan dengan mengulang kembali perhitungan pada formula di atas dengan merubah harga pada variabel AWAL. Dalam hal ini harga variabel AWAL akan diganti dengan harga AKAR yang diperoleh pada perhitungan sebelumnya. Selanjutnya dilakukan pengetesan kembali pada hasil yang baru. Proses seperti ini akan diulang kembali hingga terpenuhi kriteria pada batas ketelitian yang ditetapkan.
Jika HASIL adalah menyatakan variabel untuk menampung harga mutlak pada hasil perhitungan berikut :
ABS((AKAR – AWAL) / AWAL) = HASIL
Algoritma prosedur untuk menghitung akar kuadrat suatu bilangan integer sebagaimana telah dijelaskan di atas dapat dituliskan seperti di bawah ini.
A adalah bilangan yang akan dihitung akar kuadratnya. AKAR adalah akar kuadrat dari bilangan A 1. Mulai 2. Tentukan harga awal pendekatan pada akar bilangan AWAL = A / 2 3. Proses berulang langkah-4 s/d langkah-5 WHILE SELISIH > EPSILON 4. Hitung akar kuadrat AKAR = ( AWAL + A / AWAL ) / 2 5. Hitung ketelitian hasil perhitungan SELISIH = ABS ((AKAR – AWAL) / AWAL) 6. Cetak hasil 7. Selesai
9
Perlu diperhatikan, bahwa dalam algoritma di atas harga pendekatan akar kuadrat pada bilangan A adalah ditetapkan sebesar A/2. Tentu saja, Anda dapat mengubahnya dengan harga yang lain, misal A/5, A/4, A/3, atau yang lainnya. Selanjutnya flowchart prosedur untuk algoritma di atas adalah ditunjukkan pada Gambar 11.2.
Sampai pada bagian ini prosedur penyelesaian masalah dengan metoda coba-salah telah ditinjau dengan dua contoh penerapannya. Pembaca dapat mencoba menerapkannya dalam permasalahan serupa yang dapat diselesaikan dengan metoda ini.
Mulai
Baca A
AWAL = A/2
YA WHILE SELISIH<EPSILON
TIDAK
AKAR = (AWAL+A / AWAL) /2
SELISIH = ABS ((AKAR-AWAL) / AWAL)
Cetak hasil
Selesai
Gambar 11.2 : Contoh flowchart prosedur metoda coba-salah untuk menghitung akar kuadrat suatu bilangan integer