Fisika Komputasi merupakan bidang yang mengkaji masalah fisika berdasarkan
hasil tinjauan komputasi numerik. Sebagai perbandingan, fisika teori
melandaskan bidang kajian fisika berdasarkan analisis matematis analitik
sedangkan fisika eksperimen melandaskannya pada interpretasi hasil-hasil
pengukuran beberapa besaran fisis yang terkait. Dengan perkembangan teknologi (khususnya komputer)
batas antara fisika komputasi dan fisika teori menjadi semakin tidak nampak seiring dengan
semakin tidak nampaknya perbedaan hasil yang diperoleh secara komputasi dan
analitik. Ini merupakan salah satu alasan yang menyebabkan mengapa fisikawan
teori dapat berperan sebagai fisikawan komputasi dan sebaliknya (contoh
Feynman, Kenneth G Wilson, Steven Koonin dan sebagainya). Ramalan yang secara
akurat dapat diperoleh dari hasil komputasi terhadap beberapa masalah fisika
menunjukkan bahwa fisika komputasi tidak lagi hanya sekedar alat visualisasi
atau simulasi proses fisis agar nampak sederhana. Penghargaan Nobel Fisika
untuk K.G. Wilson dalam teori fenomena kritis (critical phenomena) dan Nobel
Kimia untuk Pope dalam pengembangan teori fungsional kerapatan untuk molekul
menunjukkan peranan fisika komputasi yang semakin mantap sebagai bentuk
pendekatan ketiga (selain fisika teori dan fisika eksperimen) dalam mempelajari
fisika. Fisikawan eksperimen perlu memiliki ketrampilan penanganan peralatan
agar pengukuran besaran fisis yang dilakukannya dapat memberikan hasil.
Pemahaman mengenai karakteristik alat yang dihadapi sangat membantu dalam
melacak sumber-sumber kesalahan yang mungkin timbul atau bahkan dapat membantu
melokalisir permasalahan. Fisikiwan teori perlu memiliki ketrampilan matematis
agar dapat memperoleh penyelesaian terhadap persamaan matematis yang dihadapi.
Disinipun diperlukan pemahaman yang mendalam tentang watak-watak fungsi dan
operasi matematis agar mampu melalukan trik atau teknik tertentu untuk
meyederhanakan persoalan matematis yang rumit. Hal yang semacam juga diperlukan
dalam fisika komputasi. Fisikawan komputasi perlu memiliki ketrampilan untuk
mengubah persamaan matematis atau hukum fisika ke dalam bentuk diskrit yang
sesuai. Dalam hal ini diperlukan bentuk diskrit karena segala informasi fisis
mengenai sistem nantinya akan tersaji dalam bentuk angka-angka atau nilai-nilai
numerik. Metode pengubahan persamaan matematis ke bentuk diskrit beserta
berbagai metode penyelesaiannya ini biasa disebut metode numerik. Pemahaman
mengenai metode numerik itu saja belum mencukupi karena hasil nilai-nilai
numerik yang diharapkan baru akan muncul setelah diproses oleh komputer. Dalam
hal ini diperlukan bahasa komputer atau piranti tertentu (biasanya perangkat
lunak berbentuk paket siap pakai) sehingga pemakai dapat berkomunikasi dengan
komputer dan memerintahkannya untuk melakukan proses komputasi seperti yang
diharapkan. Pemahaman tentang watak-watak alur langkah komputasi (algoritma)
serta watak komputer itu sendiri tentunya sangat membantu dalam melakukan trik
dan manipulasi untuk optimasi proses komputasi. Bidang fisika komputasi yang
memerlukan tidak hanya pemahaman fisika tetapi juga metode numerik dan bahasa
pemrograman menimbulkan kesan seolah-olah sebagai pengetahuan yang memerlukan
multi disiplin ilmu. Untuk masa sekarang (paling tidak di Indonesia) kesan ini
memang tidak salah. Seseorang yang belajar fisika di perguruan tinggi tidak
otomatis mendapatkan kuliah metode atau analisis numerik dan bahasa pemograman.
Keduanya biasanya diberikan di program studi lain seperti matematika atau ilmu
komputer. Hal ini lain jika dibandingkan dengan kuliah fisika matematika
(diperlukan dalam bidang fisika teori) dan praktikum/eksperimen fisika
(diperlukan dalam bidang fisika eksperimen) yang tersedia dalam program studi
fisika. Di masa depan keadaan ini mungkin akan berubah oleh beberapa sebab.
Pertama karena komputer sudah memasyarakat dan user friendly sehingga interaksi
dengan komputer baik melalui bahasa pemrograman atau piranti lain sudah
dikuasai oleh setiap pengguna sejak dini. Kedua, metode numerik sendiri tidak
terpisah lagi dengan fisika karena begitu intensif digunakan dalam banyak
masalah fisika atau juga karena metode numerik itu sendiri dikembangkan melalui
analogi proses fisika.
2. Beberapa aspek dasar telah
disinggung bahwa inti dari proses komputasi adalah mengubah persamaan
matematika ke dalam bentuk diskritnya sedemikian hingga perilaku sistem dan
penyelesaiannya dapat diwakili oleh nilai-nilai numerik yang terlibat. *)
Pemahaman persamaan dan arti fisisnya. Bagi pemula prinsip ini kadang digunakan
secara tidak hati-hati : asalkan persamaan matematika yang menggambarkan sisten
fisika sudah diubah ke bentuk diskrit maka nilai hasil keluaran yang diperoleh
akan diterima apa adanya sebagai penyelesaian sistem tersebut. Perlu ditekankan
bahwa meskipun fisika komputasi terlibat dengan angka-angka numerik, tapi bukan
nilai angka-angka itu sendiri yang penting. Yang lebih penting adalah apakah
nilai-nilai tersebut secara benar dapat menggambarkan sistem fisika yang
ditinjau. Dengan kata lain fisika komputasi adalah bidang yang berhadapan
dengan masalah fisika (seperti halnya fisika teori dan fisika eksperimen) dan
bukan sekedar masalah angka/matematika. Pemahaman ini memberikan konsekuensi
pada beberapa aspek dasar yang perlu diperhatikan, yang pada akhirnya akan
berguna untuk mendapatkan informasi yang benar terhadap sistem yang ditinjau dan
bahkan berguna dari sisi efisiensi dan ketelitian proses komputasi. Aspek yang
perlu diperhatikan antara lain seperti yang diuraikan sebagai berikut. *)
Satuan universal Berbagai besaran fisis di dalam fisika dapat dikaitkan dengan
satuannya masing-masing. Mengetahui satuan yang digunakan untuk besaran fisis
tertentu akan dapat diketahui keadaan sistem bagi besaran tersebut. Ketika
besaran panjang dinyatakan dalam satuan angstrom dan besaran tenaga dalam
satuan eV maka kira-kira sistem yang ditinjau adalah sistem mikroskopis
non-relativistik. Sebaliknya ketika satuan panjang dinyatakan dalam meter dan
tenaga dalam Joule maka yang terlintas adalah sistem makroskopis. Untuk
penyelesaian analitis, pengambilan satuan sesuai dengan sistem fisisnya
tersebut tidak begitu berarti pada perolehan hasil akhir karena selalu dapat
dilakukan penyederhanaan pada langkah perhitungannya. Namun dalam komputasi
pengambilan satuan yang sesuai tersebut sangat mempengaruhi hasil mengingat
yang terlibat dalam komputasi hanyalah nilai-nilai numerik dan bukan simbol
besaran fisis. Karena keterbatasan presisi komputer, suatu nilai yang
sebenarnya tidak nol seperti nilai massa elektron m = 9.1 x 10-31 kg dapat
diperlakukan sebagai nilai nol. Hal ini sangat berbahaya apabila muncul sebagai
nilai pembagi pada pertengahan proses komputasi yang berakibat pada gagalnya
proses komputasi. Cara lain untuk menjamin agar nilai yang terlibat dalam
komputasi tidak terlalu besar atau terlalu kecil sesuai sistem fisisnya adalah
dengan menormalisir persamaan matematik yang terlibat dengan cara
mendefinisikan satuan universal bagi sistem sedemikian hingga semua besaran
fisis yang terlibat menjadi tidak bersatuan. Keuntungan cara ini adalah selain
persamaan yang terlibat menjadi berbentuk sederhana juga dimunkinkannya
diperoleh ketelitian proses komputasi yang tinggi mengingat angka numerik yang
terlibat berorde besar sesuai batas ketelitian komputer. Sumber diambil dari :
Dr. Pekik Nurwantoro 21 Agustus 2000
GALAT (KESALAHAN ) DALAM KOMPUTASI Perlu disadari bahwa komputasi numerik adalah komputasi yang mengikuti suatu algoritma pendekatan (aproksimasi) untuk menyelesaikan suatu persoalan. Dengan demikian bidang komputasi numerik memiliki kemungkinan kesalahan/galat sebagaimana terdapat di dunia eksperimen fisika. Beberapa sumber galat pada komputasi numerik adalah:
GALAT (KESALAHAN ) DALAM KOMPUTASI Perlu disadari bahwa komputasi numerik adalah komputasi yang mengikuti suatu algoritma pendekatan (aproksimasi) untuk menyelesaikan suatu persoalan. Dengan demikian bidang komputasi numerik memiliki kemungkinan kesalahan/galat sebagaimana terdapat di dunia eksperimen fisika. Beberapa sumber galat pada komputasi numerik adalah:
1. Round-off error : kesalahan akibat pembuatan angka
2. Truncation error : kesalahan akibat pemotongan suku pada deret aproksimasi,
misalnya suatu rumus rumit diganti dengan rumus yang lebih sederhana.
3. Range
error : kesalahan yang terjadi karena nilai hasil komputasi melampaui batas
angka yang diperbolehkan oleh komputer, misalnya sangat kecil atau sangat
besar.
1) Galat Pembulatan Pembulatan bilangan sering dilakukan dalam bidang komputasi
numerik, misalnya mengurangi cacah digit pada suatu nilai hampiran dengan
membuang/mengabaikan beberapa digit terakhir. Aturan pembulatan yang sering
diterapkan adalah sebagai berikut: *) Bila digit yang dibulatkan kurang dari 5,
digit depannya tidak berubah. *) Bila digit yang dibulatkan lebih dari atau
sama dengan 5, digit depannya ditambah 1 nilainya. Contoh : dibulatkan menjadi
3.35 3.344 dibulatkan menjadi 3.34 Pengulangan pembulatan tidak disarankan
dalam komputasi numerik karena akan memperbesar galat. Sebagai contoh, 3.3446
jika dibulatkan tiga angka dibelakang koma menjadi 3.345 dan jika dibulatkan
lagi dua angka dibelakang koma menjadi 3.35. Galat pembulatan pertama sebesar
0.0004, galat pembulatan kedua sebesar 0.0054. Terlihat galat semakin besar
sehingga pembulatan hanya boleh dilakkukan sekali. Kesalahan yang timbul akibat
pembulatan pada digit ke-N di belakang koma, nilainya selalu £ 10-N / 2. Kesalahan pembulatan bisa terjadi karena
komputasi terkait dengan angka-angka yang nilainya berbeda jauh, misalnya :
hasil seharusnya 1, tetapi oleh komputer bisa jadi hasilnya ® ¥ karena pembilang ataupun penyebut
nilainya kecil sekali sehingga dianggap nol.
2) Galat Pemotongan Galat
pemotongan terjadi ketika suatu rumus komputasi disederhanakan. Biasanya suatu
rumus rumit diganti dengan deret Taylor, lalu deret dipotong hanya sampai pada
suku tertentu, suku selanjutnya diabaikan. Contoh : Misal x=1.5, nilai eksak
cos (1.5) = 0.070737 sedangkan jika dihitung sampai suku ke-4 saja dihasilkan
nilai komputasi cos(1.5) = 1 - (1.5)2/2! + (1.5)4/4! - (1.5)6/6! = 0.070187.
Dengan demikian terdapat galat pemotongan sebesar 0.000550.
3) Galat batasan
angka Setiap komputer memiliki keterbatasan dalam jangkauan representasi angka,
misalnya angka presisi-tunggal (single precision) sekitar 10+37 dan presisi
ganda (double precision) sekitar 10+308 . Melampaui batas jangkauan presisi
tunggal dalam komputasi fisis dapat terjadi dengan mudah, misalnya dalam
komputasi jari-jari atom Bohr, sebagai berikut: Walaupun hasil akhir tidak
melampui batas single precision, tetapi pembilang dan penyebut sudah jelas
melampaui sehingga komputasi bisa mengalami round-off dan hasil akhirnya tidak
tepat. Masalah serupa juga dijumpai ketika dilakukan komputasi pada nilai yang
sangat besar, misalnya komputasi faktorial : n! = n(n-1)(n-2)(n-3)…1 ketika n
besar, misalnya n=200, aka nilai 200! Dapat melampaui besaran presisi ganda
(double precision) . Jalan keluar untuk mengatasi masalah ini adalah dengan
mencari rumus pendekatan. Sebagai contoh, faktorial dengan n besar dapat
diganti dengan komputasi logaritmik, di mana : log(n!) = log (n) + log (n-1) +
log (n-2) + log (n-3) + … Referensi : Suarga, 2007, Fisika Komputasi solusi
problema fisika dengan MATLAB, Andi Yogyakarta Sahid, 2005, Pengantar Komputasi
numerik, Andi Yogyakarta. BAB III. TURUNAN NUMERIK Pada bab ini akan dijelaskan
metode numerik untuk menaksir nilai turunan suatu fungsi. Suatu fungsi f, baik
diketahui rumusnya secara eksplisit maupun dalam bentuk data titik-titik yang dilalui
kurvanya, dapat dihampiri dengan sebuah fungsi lain yang lebih sederhana. Suatu
polinomial p merupakan pilihan yang paling mudah sebagai hampiran suatu fungsi
f karena setiap polinomial dapat dengan mudah diturunkan. Turunan polinomial p,
yakni p’(x) digunakan sebagai hampiran untuk f’(x) untuk sembarang nilai x.
Secara geometris hal ini ekivalen dengan menghampiri gradien garis singgung
pada kurva f di x dengan gradien garis singgung pada kurva p di x. Rumus-rumus
(metode-metode) turunan numerik bermanfaat di dalam pengembanagn algoritma
untuk menyelesaikan masalah nilai awal pada persamaan diferensial biasa dan
parsial. 1. Turunan tingkat satu *) Rumus selisih maju dua titik (beda maju)
Misalkan f(x) adalah sebuah fungsi riil satu variabel, deret Taylor untuk f(x)
disekitar x = x0 adalah: (1) dengan c adalah sebuah bilangan antara x dan x0.
Misalkan x = x0+h, dengan h>0, maka persamaan (1) dapat diltulis ulang
sebagai: untuk suatu c Î [x0, x0+h] (2) Atau (3) Jika h
mengecil, akan memberi taksiran untuk nilai f’(x0). Ini berarti : (4) disebut
dengan rumus selisih maju dua titik (beda maju ) dengan galat sebesar O(h).
Gambar 1 Perhatikan ruas kanan persamaan (4) adalah gradien tali busur yang
melalui titik-titik (x0, f(x0)) dan (x0+h, f(x0+h)) sedangkan f’(x0) merupakan
gradien garis singgung di titik (x0, f(x0)). Dengan simulasi dapat ditunjukkan bahwa gradien
garis-garis bususr akan semakin menyamai gradien garis singgung jika h semakin
kecil dan akhirnya gradien kedua garis sama apabila h ®0. Agar lebih jelas lagi, perhatikan contoh berikut.
Carilah turunan fungsi f(x)=ln x di x =1. Penyelesaian : Tabel berikut memberikan
nilai-nilai turuan untuk beberapa nilai pilihan h. H ln(1+h) f’(1) 0.1 0.01
0.001 0.0001 0.00001 0.000001 0.0953101798043 0.00995033085317
0.000999500333083 0.0000999950000333 0.0000099999500004 0.0000009999994999
0.9531017980432 0.995033085317 0. 999500333083 0. 999950000333 0. 99999500004
0. 9999994999 Dari tabel terlihat bahwa semakin kecil nilai h yang digunakan (h
mendekati nol), hampiran semakin mendekati nilai turunan yang sesungguhnya,
yaitu = 1. 2. Rumus Selisih mundur dua titik (beda mundur) Rumus selisih maju
menggunakan nilai fungsi di x0 dan x0 +h. Rumus serupa untuk mencari f’(x0)
juga dapat diperoleh dengan menggunakan nilai-nilai fungsi di x0 dan x0-h,
yakni : (5) disebut rumus selisih mundur dua titik dengan galat sebesar O(h).
Visualisi selisih mundur dua titik untuk mendapatkan hampiran turunan fungsi di
suatu titik diilustrasikan pada Gambar 2. Gambar2 3. Rumus Selisish pusat dua
titik (beda pusat) Dari rumus selisih maju dua titik, diketahui : dan dari
rumus selisih mundur dua titik, diketahui : Jika keduanya dijumlahkan diperoleh
: Jadi, (6) disebut rumus selisih pusat dua titik dengan galat (O) h2 . Gambar3
Rumus selisih pusat dua titik menggunakan fakta bahwa gradien garis busur yang
melalui titik-titik (x0-h, f(x0-h)) dan (x0+h, f(x0+h)) merupakan hampiran
gradien garis singgung di x0 sebagaimana ditunjukkan pada Gambar 3. Dengan
simulasi dapat ditunjukkan bahwa gradien garis busur semakin mendekati gradien
garis singgung jika nilai h semakin kecil menuju nol. Rumus beda pusat memiliki
galat yang lebih kecil dibandingkan rumus beda maju dan beda mundur. Ini dapat
dibuktikan dengan contoh berikut : Contoh : Misalkan . Hitunglah hampiran f’(1)
dengan menggunakan rumus beda pusat dan beda maju untuk nilai-nilai h =0.2 ,
0.02 , 0.002, 0.0002. Penyelesaian : Untuk h=0.2 dengan menggunakan rumus beda
maju diperoleh: dengan menggunakan rumus beda pusat diperoleh: Diketahui secara
analitik , 2.71828182845905. Tabel berikut memuat hasil simulasi pencarian
turunan dengan beda maju dan beda pusat untuk berbagai nilai h. h Beda maju
Galat beda maju Beda pusat Galat beda pusat 0.2 0.02 0.002 0.0002
3.009175471388 2.745646775263 2.721001923382 2.718553674765 0.290893642928
0.027364946803 0.002720094922 0.000271846306 2.73643998561 2.71846305087 2.71828364064
2.71828184658 0.018158157151 0.000181222412 0.000001812188 0.000000018121 Dari
tabel di atas tampak jelas bahwa galat metode beda pusat memberikan hasil yang
lebih baik.
PENCARIAN AKAR-AKAR FUNGSI NON LINIER, f(x) = 0 Banyak masalah-masalah fisika yang melibatkan fungsi/persamaan kontinu yang tidak linier. Persamaan non linier adalah persamaan di mana variabel di dalamnya pada umumnya tidak linier, misalnya dalam bentuk polinomial atau dalam bentuk perkalian atau pembagian beberapa variabel. Pada persamaan non linier dengan satu variabel, tujuan analisis pencarian akar –akar adalah mencari nilai variabel, mencari nilai x agar f(x)=0. Pada sistem persamaan non linier akan dijumpai lebih dari satu variabel yang terkait secara non linier dalam beberapa persamaan, kemudian akan dicari nilai dari masing-masing variabel yang membuat semua persamaan non linier bernilai nol. Terdapat banyak cara untuk menyelesaikan persamaan non linier seperti metode bagi dua (bisection), pisisi palsu (regula false) dan Newton Raphson. Pada bab ini akan dibahas metode Bagi dua dan metode Newton Raphson, karena dua metode ini merupakan metode fundamenal pada kasus pencarian akar-akar fungsi. non linier. *) Metode Bagi dua (bisection) Suatu fungsi kontinu pada interval tertutup [a b] sedemikian hingga f(a) dan f(b) berlawanan tanda, maka terdapat suatu akar persamaan f(x) = 0 pada interval [a b]. Akan dicari akar r Î (a,b) yang memenuhi f(r) = 0. Dari fakta ini muncullah metode pengapitan akar, berusaha mendapatkan interval kecil yang memuat suatu akar. Salah satu metode pengapitan akar adalah metode bagi dua. Metode bagi dua menggunakan konsep : Interval yang memuat akar dibagi menjadi dua subinterval sama panjang, kemudian dipilih subinterval mana yang memuat akar, dan selanjutnya sub interval ini dibagi dua lagi. Demikian seterusnya sampai diperoleh sebuah subinterval yang memuat akar yang dicari dan interval ini memiliki lebar tidak lebih dari nilai tertentu (sangat kecil mendekati nol). ALGORITMA BAGI DUA 1. Pilih dua titik a dan b sehingga f(a)*f(b)<0 2. Tetapkan toleransi error TOL dan maximum langkah iterasi N. 3. for i =1 sampaidengan N d = a+ (b-a)/2 cetak hasil (‘akar = “, d) if (f(p)=0) or ((b-a)/2 TOL then a = d else b=d 4. selesai *) Metode Newton Raphson Metode diperoleh dari ekspansi deret Taylor di sekitar x. Andaikan pada awalnya diberikan nilai x1 sehingga terjadi simpangan h = (x1 - x) dari akar yang dicari, nilai x dapat ditulis sebagai : x =x1-h. Ekspansi deret Taylor di sekitar x memberikan : karena nilai fungsi di titik akar x adalah f(x)=0, maka: atau dengan O(h2) adalah galat komputasi. Karena h = x1-x maka jadi . Jika ditulis dalam bentuk iteratifnya : Disebut dengan metode newton rapson untuk mencari akar-akar persamaan non-linier. Jika dipenuhi (telah konvergen, ) maka jelaslah bahwa akar x telah diperoleh sebesar xi+1. ALGORITMA NEWTON RAPHSON 1. Tetapkan nilai awal x0 2. Tetapkan besar toleransi error TOL dan maximum langkah iterasi N. 3. for i =1: N a. hitung f(x0) dan f’(x0) b. hitung delta = f(x0) / f’(x0) c. hitung x = x0 - delta d. if ( delta < TOL) tulis (‘akar yang di cari =’, x) break end if else x0=x e. if (i >= maximum langkah) tulis (‘gagal mencari akar’) end if Keunggulan metode Newton Raphson dibandingkan metode lain : Hanya dibutuhkan satu nilai coba awal, sedangkan metode bagi dua membutuhkan dua nilai coba yang harus mengapit akar yang dicari. Kelemahan : metode Newton Raphson membutuhkan informasi turunan pertama fungsi f’(x). Hal ini akan menjadi masalah jika fungsi terlalu kompleks sehingga turunan pertama fungsi tersebut sulit dicari. Contoh kasus: Sebuah bola pejal homogen terbuat dari suatu bahan dengan kerapatan r seragam. Bola tersebut terbenam sebagian dalam air setinggi d. Berdasarkan hukum Archimedes : berat bola sebanding dengan gaya angkat Fa : Massa bola : Hukum Archimedes : Volume bola yang terbenam di air setinggi d = Va, dapat dicari dengan kaedah volume benda putar (ingat kalkulus integral), sedemikian sehingga : dimana ρ = ρb ; Nilai d dapat dicari secara analitik dengan konsep pencarian akar-akar fungsi f(d) =0 ; Masalah ini dapat juga diselesaikan secara komputasi . Nilai d dapat dicari dengan konsep pencarian akar-akar fungsi f(d) =0 dengan berbagai metode, diantaranya adalah metode bagi dua. Jika diandaikan ρa = 1; ρb = ρ = 0.638; r =10 cm, d = …? Untuk mendapatkan nilai coba yang tepat, perlu dilihat bentuk fungsi nonlinier dari masalah ini. Hal ini dapat dibantu dengan melukis fungsi nonliniernya yakni : dengan memasukkan ρa = 1; ρb = ρ = 0.638; r =10 cm, diketahui bentuk fungsi matematisnya seperti tampak pada gambar (tampak bahwa nilai d terletak di sekitar 10 < d < 20). *) Berikut ini adalah metode bagi dua untuk menyelesaikan masalah ini ( mendapatkan nilai d) dengan bahasa MATLAB. Nilai coba pengapit akar adalah [a b] = [10 15]. clc;clear; r=10; rho=0.638; % nilai coba [a b] a=10; b=15; % batas toleransi tol=0.00001; % banyaknya langkah N=50; hasil=[]; % kontrol loop for i=1:N d=a+(b-a)/2; % metode bagi dua fd=pi*(d^3-3*d^2*r+4*r^3*rho)/3; % substitusi nilai d ke persamaan nonlinier fa=pi*(a^3-3*a^2*r+4*r^3*rho)/3; % substitusi nilai a(batas kiri) ke persamaan nonlinier hasil=[hasil;i a b d fd]; if (fd==0)||((b-a)
PENCARIAN AKAR-AKAR FUNGSI NON LINIER, f(x) = 0 Banyak masalah-masalah fisika yang melibatkan fungsi/persamaan kontinu yang tidak linier. Persamaan non linier adalah persamaan di mana variabel di dalamnya pada umumnya tidak linier, misalnya dalam bentuk polinomial atau dalam bentuk perkalian atau pembagian beberapa variabel. Pada persamaan non linier dengan satu variabel, tujuan analisis pencarian akar –akar adalah mencari nilai variabel, mencari nilai x agar f(x)=0. Pada sistem persamaan non linier akan dijumpai lebih dari satu variabel yang terkait secara non linier dalam beberapa persamaan, kemudian akan dicari nilai dari masing-masing variabel yang membuat semua persamaan non linier bernilai nol. Terdapat banyak cara untuk menyelesaikan persamaan non linier seperti metode bagi dua (bisection), pisisi palsu (regula false) dan Newton Raphson. Pada bab ini akan dibahas metode Bagi dua dan metode Newton Raphson, karena dua metode ini merupakan metode fundamenal pada kasus pencarian akar-akar fungsi. non linier. *) Metode Bagi dua (bisection) Suatu fungsi kontinu pada interval tertutup [a b] sedemikian hingga f(a) dan f(b) berlawanan tanda, maka terdapat suatu akar persamaan f(x) = 0 pada interval [a b]. Akan dicari akar r Î (a,b) yang memenuhi f(r) = 0. Dari fakta ini muncullah metode pengapitan akar, berusaha mendapatkan interval kecil yang memuat suatu akar. Salah satu metode pengapitan akar adalah metode bagi dua. Metode bagi dua menggunakan konsep : Interval yang memuat akar dibagi menjadi dua subinterval sama panjang, kemudian dipilih subinterval mana yang memuat akar, dan selanjutnya sub interval ini dibagi dua lagi. Demikian seterusnya sampai diperoleh sebuah subinterval yang memuat akar yang dicari dan interval ini memiliki lebar tidak lebih dari nilai tertentu (sangat kecil mendekati nol). ALGORITMA BAGI DUA 1. Pilih dua titik a dan b sehingga f(a)*f(b)<0 2. Tetapkan toleransi error TOL dan maximum langkah iterasi N. 3. for i =1 sampaidengan N d = a+ (b-a)/2 cetak hasil (‘akar = “, d) if (f(p)=0) or ((b-a)/2 TOL then a = d else b=d 4. selesai *) Metode Newton Raphson Metode diperoleh dari ekspansi deret Taylor di sekitar x. Andaikan pada awalnya diberikan nilai x1 sehingga terjadi simpangan h = (x1 - x) dari akar yang dicari, nilai x dapat ditulis sebagai : x =x1-h. Ekspansi deret Taylor di sekitar x memberikan : karena nilai fungsi di titik akar x adalah f(x)=0, maka: atau dengan O(h2) adalah galat komputasi. Karena h = x1-x maka jadi . Jika ditulis dalam bentuk iteratifnya : Disebut dengan metode newton rapson untuk mencari akar-akar persamaan non-linier. Jika dipenuhi (telah konvergen, ) maka jelaslah bahwa akar x telah diperoleh sebesar xi+1. ALGORITMA NEWTON RAPHSON 1. Tetapkan nilai awal x0 2. Tetapkan besar toleransi error TOL dan maximum langkah iterasi N. 3. for i =1: N a. hitung f(x0) dan f’(x0) b. hitung delta = f(x0) / f’(x0) c. hitung x = x0 - delta d. if ( delta < TOL) tulis (‘akar yang di cari =’, x) break end if else x0=x e. if (i >= maximum langkah) tulis (‘gagal mencari akar’) end if Keunggulan metode Newton Raphson dibandingkan metode lain : Hanya dibutuhkan satu nilai coba awal, sedangkan metode bagi dua membutuhkan dua nilai coba yang harus mengapit akar yang dicari. Kelemahan : metode Newton Raphson membutuhkan informasi turunan pertama fungsi f’(x). Hal ini akan menjadi masalah jika fungsi terlalu kompleks sehingga turunan pertama fungsi tersebut sulit dicari. Contoh kasus: Sebuah bola pejal homogen terbuat dari suatu bahan dengan kerapatan r seragam. Bola tersebut terbenam sebagian dalam air setinggi d. Berdasarkan hukum Archimedes : berat bola sebanding dengan gaya angkat Fa : Massa bola : Hukum Archimedes : Volume bola yang terbenam di air setinggi d = Va, dapat dicari dengan kaedah volume benda putar (ingat kalkulus integral), sedemikian sehingga : dimana ρ = ρb ; Nilai d dapat dicari secara analitik dengan konsep pencarian akar-akar fungsi f(d) =0 ; Masalah ini dapat juga diselesaikan secara komputasi . Nilai d dapat dicari dengan konsep pencarian akar-akar fungsi f(d) =0 dengan berbagai metode, diantaranya adalah metode bagi dua. Jika diandaikan ρa = 1; ρb = ρ = 0.638; r =10 cm, d = …? Untuk mendapatkan nilai coba yang tepat, perlu dilihat bentuk fungsi nonlinier dari masalah ini. Hal ini dapat dibantu dengan melukis fungsi nonliniernya yakni : dengan memasukkan ρa = 1; ρb = ρ = 0.638; r =10 cm, diketahui bentuk fungsi matematisnya seperti tampak pada gambar (tampak bahwa nilai d terletak di sekitar 10 < d < 20). *) Berikut ini adalah metode bagi dua untuk menyelesaikan masalah ini ( mendapatkan nilai d) dengan bahasa MATLAB. Nilai coba pengapit akar adalah [a b] = [10 15]. clc;clear; r=10; rho=0.638; % nilai coba [a b] a=10; b=15; % batas toleransi tol=0.00001; % banyaknya langkah N=50; hasil=[]; % kontrol loop for i=1:N d=a+(b-a)/2; % metode bagi dua fd=pi*(d^3-3*d^2*r+4*r^3*rho)/3; % substitusi nilai d ke persamaan nonlinier fa=pi*(a^3-3*a^2*r+4*r^3*rho)/3; % substitusi nilai a(batas kiri) ke persamaan nonlinier hasil=[hasil;i a b d fd]; if (fd==0)||((b-a)