Penyelesaian Numerik Persamaan Non-Linear
2.1 PENDAHULUAN Untuk mendapatkan penyelesaian matematika yang menjabarkan model suatu persoalan nyata bidang rekayasa, sering solusi yang dicari berupa suatu nilai variabel x sedemikian rupa sehingga terpenuhi persamaan f(x) = 0 yang digunakan dalam model. Dalam beberapa kasus, melalui faktorisasi f(x) = 0 dapat diperoleh penyelesaian seperti yang diinginkan; akan tetapi, lebih banyak jabaran persamaan dalam model mempunyai bentuk yang rumit, sehingga teknik analisis matematika murni tidak dapat memberikan solusi. Contoh Sebuah bola baja berjari-jari 1cm dibakar merata sampai mencapai temperatur 100°C. Bola ini kemudian disimpan di dalam ruang pendingin dengan temperatur 0°C. Dengan anggapan ada perambatan panas, maka konduksi panas dapat dinyatakan dalam persamaan fungsi untuk ∞ temperatur T di pusat bola setelah t detik sebagai : T(t) = 100 ∑ sinλ n τ(n ) exp⎛⎜ − λ 2n t ⎞⎟ 8 ⎠ ⎝ n =1 (2.1) 1 λi adalah akar positif persamaan : cos λ = 2λ (2.2) Untuk mencari T(t) pada t tertentu di tengah bola perlu dicari harga λ dari persamaan (2.2); dan penyelesaian dengan cara analitik tidak berguna.
(
)
Tanya: Apakah yang dimaksud dengan ‘menentukan x sedemikian rupa sehingga terpenuhi persamaan f(x) = 0 ?’ Jawab: Secara geometri ini berarti mencari suatu titik dengan f(x) tepat memotong absis x, sehingga f(x) = 0. Jika dianggap f(x) sesungguhnya memotong absis x, maka dapat dicari suatu interval [a,b], sedemikian rupa sehingga f(a) dan f(b) mempunyai tanda berbeda (Gambar 2.1). y f(a)
y = f(x) b
a f(b)
Metode Numerik Dalam Ilmu Rekayasa Sipil
x Gambar 2.1 Tinjauan interval [a,b] dalam penentuan akar fungsi f(x).
Bab II hal. 1
Penyelesaian Numerik Persamaan Non-Linear Dengan pembatasan interval ini, secara cermat dapat dicari nilai x = λ yang memberikan nilai f(λ) = 0, sebagai berikut : 1. Bagi dua interval [a,b] dan evaluasi nilai f(x) pada titik tengah interval. 2. Apabila f(m) = 0 berarti x = m; bila tidak, dicari posisi nilai m apakah berada pada interval [a,m] atau interval [m,b]; yaitu dengan memeriksa perbedaan tanda : • jika f(a) dan f(m) berbeda tanda, berarti λ di [a,m] • jika f(a) dan f(m) mempunyai tanda sama, berarti λ di [m,b]. Proses pembagian sub-interval dapat diulangi sampai ditemukan nilai λ yang memberikan f(λ) = 0. Gambar 2.2 menjelaskan proses pembagian sub-interval.
2.2 METODE BISECTION dan REGULA FALSI Metode numerik untuk mendapatkan harga x untuk f(x) = 0 seperti uraian di pasal 2.1 disebut METODE BISECTION. Tahap pertama proses adalah menetapkan nilai sembarang a dan b sebagai batas segmen nilai fungsi yang dicari. Batasan a dan b memberikan harga bagi fungsi f(x) untuk x = a dan x = b. Langkah selanjutnya adalah memeriksa apakah f(a) × f(b) < 0. Apabila terpenuhi syarat tersebut, berarti terdapat akar fungsi dalam segmen tinjauan. Jika tidak demikian, kembali harus ditetapkan nilai a dan b sedemikian rupa sehingga terpenuhi ketentuan perkalian f(a) × f(b) < 0. Dengan rumusan m = (a+b)/2, diperiksa apakah nilai mutlak f(m) < 10-6 (batas simpangan kesalahan). Jika benar, nilai x = m adalah solusi yang dicari. Jika tidak terpenuhi, ditetapkan batasan baru dengan mengganti nilai b = m apabila f(a)*f(m) < 0, dan mengganti a = m bila f(a) × f(m) > 0; proses menemukan m baru dilakukan seperti prosedur yang telah dijelaskan. y f(a)
[f(a) x f(m)<0] (b=m) a
b
(a=m) [f(a) x f(m)>0] f(b
x Gambar 2.2 Penentuan nilai tengah m interval metode Bisection
Metode Bisection adalah salah satu kelas metode Pengelompokan, karena prosedur untuk mendapatkan nilai x untuk f(x) = 0 dilakukan melalui pendekatan kelompok akar. Metode ini tidak sepenuhnya memanfaatkan data f(x) bagi penentuan nilai x. Misalnya, tidak digunakannya ukuran relatif f(a) dan f(b), karena umumnya jika f(a) < f(b) dalam nilai mutlaknya, maka akar persamaan akan terletak lebih dekat ke f(a), seperti dijelaskan di Gambar 2.2. Salah satu cara efektif mendapatkan nilai m ini adalah menghubungkan f(a) dan f(b) dengan garis lurus dan perpotongan garis ini dengan absis x merupakan nilai m, seperti dijelaskan pada Gambar 2.3. Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 2
Penyelesaian Numerik Persamaan Non-Linear Penetapan m ini dikenal dengan cara REGULA FALSI dan algoritmanya sama seperti metode Bisection, kecuali mengganti penentuan m dengan rumusan : ⎡ (b − a) × f(b) ⎤ m=a−⎢ ⎥ ⎣ f(b) − f(a) ⎦
f(a)
λ
b
m
a
Gambar 2.3 Penentuan nilai m dari perpotongan garis lurus melalui dua titik.
f(b
Proses dengan cara ini memberikan perhitungan yang lebih cepat dibandingkan dengan metode Bisection, walaupun pada kasus yang khusus dapat juga terjadi proses ‘cantelan’, baik pada a ataupun b, yang memperlambat perhitungan. Pada algoritma, proses memang dihentikan jika dicapai nilai mutlak f(m) < 10-6, tetapi untuk kecermatan hasil, kriteria ini belum cukup. Dengan memperhatikan dua sifat kurva seperti pada Gambar 2.4, maka syarat kecermatan yang tepat adalah (a) y f(a) y f(a) b
x
a
b
x
a f(b) f(b)
(a). harga mutlak [abaru - bbaru ] < 10-6
(b). harga mutlak f (m) < 10-6
Gambar 2.4 Syarat lengkap kecermatan.
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 3
Penyelesaian Numerik Persamaan Non-Linear Untuk menghindari masalah yang mungkin terjadi bagi perilaku persamaan yang tidak dapat dilacak, perlu pembatasan tinjauan interval sesuai dengan sifat fungsi. Hal ini penting dalam teknik numerik untuk memperoleh solusi nyata. Sebagai penjelasan, jika cot x = 1/(2x). yang bila akan dicari besaran x persamaan ini, bentuk persamaan diubah menjadi f(x) = tan x - 2x = 0, (2.3) maka dengan mengabaikan akar x = 0 yang bukan solusi persamaan dasar, terlihat bahwa metode Bisection atau Regula Falsi tidak akan memberikan solusi. Hal ini perlu disadari bahwa fungsi f(x) bukan fungsi kontinu untuk nilai kelipatan ganjil dari π/2, seperti dijelaskan di Gambar 2.5. y y=tanx y=2x
x π/2
π
3π/2
Gambar 2.5 Fungsi periodik y = tan x diskontinu pada kelipatan ganjil π/2. 2.2.1 Algoritma Program Algoritma program untuk metode Bisection a). Tentukan a, b, toleransi, dan jumlah iterasi maksimum. b). Periksa apakah f(a) x f(b) > 0; jika ya, keluar dari progam karena pada selang yang diberikan tidak terdapat akar persamaan. c). Hitung nilai m = (a + b)/2 d). Jika nilai mutlak (b-a) < toleransi, tuliskan m sebagai hasil perhitungan, dan akhiri program; jika tidak, lanjutkan ke langkah berikutnya. e). Jika jumlah iterasi > iterasi maksimum, akhiri program. f). Jika f(a) x f(m) < 0, maka b = m; jika tidak, a = m. g). Kembali ke langkah (c). Algoritma program untuk metode Regula Falsi a). Tentukan a, b, toleransi, dan jumlah iterasi maksimum. b). Periksa apakah f(a) x f(b) > 0; jika ya, keluar dari progam karena pada selang yang diberikan tidak terdapat akar persamaan. c). Hitung nilai m = a - f(b) x (b - a) / [f(b) - f(a)]. d). Jika nilai mutlak (m-a) < toleransi, tuliskan m sebagai hasil perhitungan, dan akhiri program; jika tidak, lanjutkan ke langkah berikutnya.
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 4
Penyelesaian Numerik Persamaan Non-Linear e). Jika jumlah iterasi > iterasi maksimum, akhiri program. f). Jika f(a) x f(m) < 0, maka b = m; jika tidak, a = m g). Kembali ke langkah (c). 2.2.2 Bagan Alir Program Dalam mempersiapkan program sumber, algoritma dijabarkan dalam bentuk bagan alir yang dapat dilihat pada dua bagan berikut ini. 2.2.2.1 Bagan Alir Metode Bisection MULAI DEFINISIKAN FUNGSI Baca a, b, tol, iter_max Iter = 0 Fa = F(a) Fb = F(b)
Fa * Fb > 0
ya
tidak
Tulis Fa * Fb > 0
iter = iter +1 m = (a + b)/2 Fm = F(m)
1
|m-a| < tol iter > iter_max
Ya
Tidak Fa * Fm < 0 ya
tidak
b=m Fb = Fm
a=m Fa = Fm
Tulis hasil m, F(m)
1 SELESAI
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 5
Penyelesaian Numerik Persamaan Non-Linear 2.2.2.2 Bagan Alir Metode Regula Falsi MULAI
DEFINISIKAN FUNGSI Baca a, b, tol, iter_max Iter = 0 Fa = F(a) Fb = F(b)
Fa * Fb > 0
ya
tidak Tulis Fa*Fb > 0 iter = iter +1 m = a - Fb*(b-a) (Fb - Fa) Fm = F(m)
1
|m-a|
iter_max
ya
tidak ya
Fa*Fm<0
tidak
b=m Fb = Fm
a=m Fa = Fm
Tulis hasil m, F(m) 1 SELESAI
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 6
Penyelesaian Numerik Persamaan Non-Linear
2.3 METODE ITERASI Bentuk lain metode penentuan akar persamaan adalah dengan memulai suatu perkiraan harga akar persamaan, yang kemudian dengan serangkaian nilai perkiraan ini, mulai x0 (perkiraan awal), x1, x2 ,..., xk , akhirnya konvergen pada λ, yaitu xk cukup dekat pada λ menurut tingkat kecermatan yang diinginkan. Metode perkiraan awal untuk satu variabel disebut METODE ITERASI TUNGGAL. Dalam hal ini fungsi f(x) ditulis sebagai : f(x) = x - g(x) = 0, sehingga λ = g(λ), (2.4) k = 0,1,2,... (2.5) kemudian xk+1 = g(xk ), Persamaan (2.4) dan (2.5) merupakan rumusan iterasi. Contoh Untuk mendapatkan akar persamaan x3 - 3x - 20 = 0, langkah pertama yang dilakukan adalah mengubah persamaan dalam bentuk f(x) = x - g(x). Perubahan ini dapat dilakukan melalui empat cara : (i). x - (3x + 20)1/3 = 0 (ii). x - (x3 - 20)/3 = 0 (iii). x - 20/(x2 - 3) = 0 (iv).x - (3 + 20/x)1/2 = 0 Dengan menggunakan bentuk pertama dapat dinyatakan rumusan : k = 0,1,2,.... x k+1 = (3xk + 20)1/3 , dan dengan perkiraan awal x0 = 5, diperoleh x0 = 5 x1 = (3 * 5 + 20)1/3 = 3.2771 x2 = (3 * 3.2771 + 20)1/3 = 3.1008 x3 = 3.0830 x4 = 3.0811 ; x5 = 3.0809 x6 = 3.0809 ; x7 = 3.0809 Karena nilai x sudah konstan pada harga 3.0809, dilakukan pemeriksaan harga f(x). Diperoleh f(3.0809) = 0.0010. Jika simpangan kesalahan ini dapat diabaikan, maka harga x = 3.0809 merupakan solusi. Metode iterasi yang diuraikan ini disebut CARA PENDEKATAN BERURUT. Secara geometri yang dilakukan adalah menemukan perpotongan dua kurva y = x dan y = g(x), seperti pada Gambar 2.6. Terlihat mudah mendapatkan akar persamaan dengan proses tersebut, bila dipahami benar y
y=x y = g(x)
x
Metode Numerik Dalam Ilmu Rekayasa Sipil
Gambar 2.6 Geometri fungsi f(x) = x - g(x) Bab II hal. 7
Penyelesaian Numerik Persamaan Non-Linear perilaku fungsi. Jika diamati tiga cara penulisan f(x) sebagai x - g(x) : (ii). x - (x³ - 20) / 3 = 0 (iii). x - 20/ (x² - 3) = 0 (iv).x - (3 + 20/x)1/2 = 0, dan menggunakan perkiraan awal x0 = 5, maka seri besaran xk , k = 0,1, 2, …, memberikan hasil seperti tercantum dalam Tabel 2.1. Tabel 2.1 Hasil perhitungan metode Iterasi.
k 0 1 2 3 4 5 6 7 8 9
Cara ii
Cara iii 5 35 14285
Cara iv
5 0.9091 -9.2015
(tidak banyak manfaatnya untuk dilanjutkan)
5 2.6458 3.2495 3.0257 3.1 3.0743 3.0831 3.0801 3.0811 3.0808
Dari contoh hitungan dapat dilihat bahwa cara iterasi tidak selalu dapat digunakan. Guna mengetahui pada awal proses bahwa metode ini dapat dipakai, perlu diperiksa bentuk fungsi. Sajian grafik bentuk fungsi cara ii - iv adalah seperti pada Gambar 2.7. 8 3
g(x)=(x -20)/3 7 y=x 6 0.5
g(x)=(3+20/x)
5 4 3 2
2
g(x)=20/(x -3)
1 0 0
1
2
3
4
5
6
-1
7
8
Gambar 2.7 Sajian fungsi y = g(x) cara (iii) dan (iv)
-2
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 8
Penyelesaian Numerik Persamaan Non-Linear Dengan meneliti grafik tampak bahwa bagi cara ii dan iii, garis singgung y = g(x) lebih tajam daripada garis singgung y = x dekat nilai akar; sedangkan pada cara i dan cara iv, garis singgung y = g(x) tidaklah setajam garis singgung y = x dekat nilai x = 3. Secara matematika, ini berarti nilai absolut g’ (x) < 1 di dekat nilai akar. Dengan demikian, konvergensi dari solusi metode iterasi dapat dilacak dari perilaku turunan pertama fungsi. Perhatikan gambar 2.8. Turunan fungsi g’(x) berada pada nilai 0 < g’(x) < 1 untuk jaminan hasil iterasi konvergen.
y
y=x y=g(x)
x
Gambar 2.8 Turunan fungsi g’(x) < 1 = y’ = 1.
2.3.1 Algoritma Program Algoritma program dengan metode Iterasi a). Tentukan xo, toleransi, dan jumlah iterasi maksimum. b). Hitung xbaru = g(xo). c). Jika nilai mutlak (xbaru - xo) < toleransi, diperoleh tulisan xbaru sebagai hasil perhitungan; jika tidak, lanjutkan ke langkah berikutnya. d). Jika jumlah iterasi > iterasi maksimum, akhiri program. e). xo = xbaru , dan kembali ke langkah (b).
2.3.2 Bagan Alir Program Dalam mempersiapkan program sumber, algoritma dijabarkan dalam bentuk bagan alir berikut, dan bagan alir metode ini dapat dilihat pada Bagan 2.3.2.1.
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 9
Penyelesaian Numerik Persamaan Non-Linear 2.3.2.1 Bagan Alir Metode Iterasi MULAI DEFINISIKAN FUNGSI Baca xo, tol, iter_max Iter = 0
iter = iter +1
xb = G(xo)
|xb-xo|iter_max
ya
Tidak xo = xb
Tulis hasil xb, F(xb) Stop
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 10
Penyelesaian Numerik Persamaan Non-Linear 2.4 METODE NEWTON-RAPHSON Metode yang lebih baik dalam memilih g’(x) adalah dengan membuat garis singgung dari f(x) untuk nilai x yang dipilih, dan dengan menggunakan besaran x dari perpotongan garis singgung terhadap absis sehingga diperoleh nilai x baru. Metode ini diperlihatkan pada Gambar 2.9.
y
garis singgung
xk+1
x
xk f(x)
Gambar 2.9 Garis singgung f(xk) memotong di xk+1. Dari diagram ini terlihat tagensial (garis singgung) f(x) adalah : f(x k ) − f(x k + 1 ) f' (x ) = (x k − x k + 1 ) f(x k ) f' (x ) = (x k − x k + 1 ) sehingga x k+1 = x k - f( x k ) / f’(x k), k = 0,1,2,....
(2.6) (2.7) (2.8)
Metode ini dikenal dengan METODE NEWTON-RAPHSON dan merupakan salah satu cara yang paling dikenal dalam metode penyelesaian fungsi f(x) = 0. Keuntungan cara ini adalah sifat konvergensi kuadratik dalam proses iterasi, karena terjadinya koreksi digit ganda di setiap proses. Contoh f(x) = x³ - 3x - 3x - 20 , maka f’(x) = 3x² - 3 Dengan demikian x k+1 = x k - ( x³k - 3xk - 20) / (3x²k - 3). Perkiraan awal x0 = 5 x3 = 3.0859 x0 = 5 x1 = 3.75 x4 = 3.0809 x2 = 3.2018 x5 = 3.0809
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 11
Penyelesaian Numerik Persamaan Non-Linear
Kekurangan metode ini adalah : a). Harus mencari f’(x), dan nilainya mungkin 0. b). Tidaklah sederhana melacak proses untuk konvergen. c). Dalam perhitungan ada kemungkinan besar proses memberikan hasil divergen, kecuali nilai perkiraan awal x cukup tepat.
2.4.1 Konvergensi Metode Newton-Raphson
Dengan memperhatikan rumusan xk=1 = xk - f (xk )/f’ (xk ), k = 0, 1, 2, … dan syarat konvergensi | g’ (x) | < 1, berarti d ⎡ f (x ) ⎤ f (x ) f" (x ) g' (x ) = x− = <1 ⎢ ⎥ dx ⎣ f' (x ) ⎦ x = x [f' (x )]2
(2.9)
Apabila nilai turunan fungsi susah didapat, nilai ini dapat didekati dengan harga fungsi dari hasil dua tahapan proses sebelumnya.
xk
xk+1
xk+2
Gambar 2.10 Penentuan nilai turunan fungsi dengan menggunakan metode Secant.
Pada Gambar 2.10, jika nilai xk dan xk+1 telah didapat, maka : x k +2 − x k +1 x k +1 − x k = atau f (x k +1 ) ff (x k ) − f (x k +1 )
x k +1 − x k f (x k +1 ) − f (x k ) Penentuan nilai turunan fungsi dengan cara ini disebut metode SECANT. x k +2 = x k +1 − f (x k +1 )
(2.10)
2.4.2 Algoritma Program Algoritma program untuk metode Newton-Raphson a). Tentukan xo, toleransi, dan jumlah iterasi maksimum. b). Hitung xbaru = x - f(xo)/f’(xo). c). Jika nilai mutlak (xbaru - xo) < toleransi, diperoleh tulisan xbaru sebagai hasil perhitungan; jika tidak, lanjutkan ke langkah berikutnya. d). Jika jumlah iterasi > iterasi maksimum, akhiri program. e). x = xbaru , dan kembali ke langkah (b).
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 13
Penyelesaian Numerik Persamaan Non-Linear 2.4.3 Bagan Alir Program
Dalam mempersiapkan program sumber, algoritma dijabarkan dalam bentuk bagan alir berikut. 2.4.3.1 Bagan Alir Metode Newton-Raphson MULAI DEFINISIKAN FUNGSI Baca xo, tol, iter_max Iter = 0
iter = iter +1 Fx=F(xo) F1x=F'(xo)
xb =xo-Fx/F1x
|xb-xo|iter_max
ya
Tidak xo = xb
Tulis hasil xb, F(xb) SELESAI
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 14
Penyelesaian Numerik Persamaan Non-Linear 2.4.3.2 Bagan Alir Metode Secant MULAI DEFINISIKAN FUNGSI Baca xo, x1, tol, iter_max Iter = 0
iter = iter +1 xb =x1- f(x1)*(x1-xo) [f(x1)-f(xo)]
|xb-xo|iter_max
ya
Tidak xo = xb
Tulis hasil xb, F(xb) SELESAI
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 15
Penyelesaian Numerik Persamaan Non-Linear 2.5 NILAI AWAL PERKIRAAN
Dalam hal tidak adanya petunjuk dalam penetapan nilai awal, maka usaha berikut ini dapat dilakukan : • Membuat grafik fungsi, lalu diidentifikasikan segmen fungsi yang memotong absis. • Membuat tabel harga x and f(x), lalu diidentifikasi nilai x pada perubahan tanda f(x).
2.6 PROGRAM SUMBER
Dari rancangan algoritma atau bagan alir, program komputer dapat dikembangkan melalui pembuatan program sumber di dalam bahasa tingkat tinggi PASCAL dan C++. Secara umum terdapat enam kategori utama dari pernyataan dalam program sumber, yaitu : 1. Pernyataan bagi arsip atau file dan record yang akan diproses oleh komputer. 2. Pernyataan untuk data di luar arsip, seperti untuk membuat judul yang perlu bagi dokumentasi. 3. Pernyataan memindahkan data pada satu lokasi memori ke lokasi memori lainnya dalam memori utama komputer. 4. Pernyataan untuk melakukan operasi aritmatik yang disimpan dalam memori utama. 5. Pernyataan logika : proses urut, perbandingan, dan iterasi. 6. Pernyataan membaca data dari memori dampingan ke memori utama atau menuliskan data dari memori utama ke memori dampingan. Pemahaman lebih jauh dalam pemrogramana dapat dibaca pada buku-buku komputer. Lampiran A buku ini mengulas secara umum prosedur pemrograman dalam bahasa TURBO PASCAL dan C++. 2.6.1 Program Sumber untuk Metode Bisection
Program berikut menggunakan algoritma metode Bisection untuk menyelesaikan persamaan non-linear. Program akan dicoba untuk menyelesaikan persamaan : tan (x) - x - 0,5 = 0 2.6.1.1 DEKLARASI SUMBER PROGRAM dalam BAHASA C++ // Program 1.1a // Metode Bisection #include <stdio.h> #include <math.h> /* Daftar Variable a = batas bawah b = batas atas tol = toleransi max_iter = jumlah iterasi maksimum
*/
float a,m,b,F_a,F_m,F_b,tol; int max_iter;
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 16
Penyelesaian Numerik Persamaan Non-Linear float f(float x) { return tan(x) - x - 0.5; } void main() { int it; float epsilon; printf("Batas bawah printf("Batas atas printf("Toleransi printf("Jumlah iterasi maksimum
= = = =
"); "); "); ");
scanf("%f",&a); scanf("%f",&b); scanf("%f",&tol); scanf("%d",&max_iter);
it = 0; F_a = f(a); F_b = f(b); if(F_a * F_b > 0) printf(" Nilai F(a) x F(b) > 0\n"); else { printf("It. a m b f(a) f(b)"); printf(" abs[f(b)-f(a)]/2\n"); do { it = it + 1; m = (a + b) / 2; F_m = f(b); printf("%3d %8.5f %8.5f %8.5f %8.5f %8.5f %8.2e\n", it,a,m,b,F_a,F_b,fabs(F_b-F_a)/2); epsilon = fabs(m-a); if(F_a * F_m <= 0) { b = m; F_b = F_m; } else { a = m; F_a = F_m; } } while(it <= max_iter && epsilon > tol); if(it<=max_iter) { printf("Toleransi terpenuhi\n"); printf("Hasil akhir = %g\n",m); } else printf("Toleransi tidak terpenuhi\n"); } }
2.6.1.2 DEKLARASI SUMBER PROGRAM dalam BAHASA TURBO PASCAL { Program 1.1b Metode Bisection Daftar Variable a = batas bawah b = batas atas tol = toleransi max_iter = jumlah iterasi maksimum
}
Var a,m,b,F_a,F_m,F_b,tol : real; max_iter,it : integer; epsilon : real; function f(x : real) : real; Begin f := sin(x)/cos(x) - x - 0.5; End;
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 17
Penyelesaian Numerik Persamaan Non-Linear Begin write('Batas bawah write('Batas atas write('Toleransi write('Jumlah iterasi maksimum
= = = =
'); '); '); ');
read(a); read(b); read(tol); read(max_iter);
it := 0; F_a := f(a); F_b := f(b); if (F_a * F_b > 0) then writeln(' Nilai F(a) x F(b) > 0') else Begin write('It. a m b f(a) f(b)'); writeln(' abs[f(b)-f(a)]/2'); epsilon := tol+1; while((it <= max_iter) and (epsilon > tol)) do Begin it := it + 1; m := (a + b) / 2; F_m := f(m); write(it:3,' ',a:8:5,' ',m:8:5,' ',b:8:5,' '); writeln(F_a:8:5,' ',F_m:8:5,' ',abs(F_b-F_a)/2:4); epsilon := abs(m-a); if(F_a * F_m <= 0) Then Begin b := m; F_b := F_m End else Begin a := m; F_a := F_m End; End; if(it<=max_iter) Then Begin writeln('Toleransi terpenuhi'); writeln('Hasil akhir = ',m:9:7); End else writeln('Toleransi tidak terpenuhi'); End; End.
2.6.1.3 Contoh eksekusi program Eksekusi program dilakukan dalam selang interval [0,1], toleransi 10-7 dan jumlah iterasi maksimum sebanyak 30. Hasil eksekusi program adalah sebagai berikut : Batas bawah Batas atas Toleransi Jumlah iterasi maksimum It. 1 2 3 4 5
a 0.00000 0.50000 0.75000 0.87500 0.93750
m 0.50000 0.75000 0.87500 0.93750 0.96875
= = = =
0 1 0.0000001 30 b 1.00000 1.00000 1.00000 1.00000 1.00000
f(a) -0.50000 -0.45370 -0.31840 -0.17758 -0.07543
Metode Numerik Dalam Ilmu Rekayasa Sipil
f(b) abs[f(b)-f(a)]/2 -0.45370 2.79e-01 -0.31840 2.56e-01 -0.17758 1.88e-01 -0.07543 1.17e-01 -0.01345 6.64e-02
Bab II hal. 18
Penyelesaian Numerik Persamaan Non-Linear 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
0.96875 0.96875 0.96875 0.97266 0.97461 0.97461 0.97461 0.97485 0.97498 0.97498 0.97501 0.97501 0.97501 0.97501 0.97502 0.97502 0.97502 0.97502 0.97502
0.98438 0.97656 0.97266 0.97461 0.97559 0.97510 0.97485 0.97498 0.97504 0.97501 0.97502 0.97501 0.97502 0.97502 0.97502 0.97502 0.97502 0.97502 0.97502
1.00000 0.98438 0.97656 0.97656 0.97656 0.97559 0.97510 0.97510 0.97510 0.97504 0.97504 0.97502 0.97502 0.97502 0.97502 0.97502 0.97502 0.97502 0.97502
-0.01345 -0.01345 -0.01345 -0.00511 -0.00089 -0.00089 -0.00089 -0.00036 -0.00009 -0.00009 -0.00002 -0.00002 -0.00001 -0.00001 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000
0.02078 0.00337 -0.00511 -0.00089 0.00124 0.00018 -0.00036 -0.00009 0.00004 -0.00002 0.00001 -0.00001 0.00000 -0.00000 -0.00000 -0.00000 0.00000 -0.00000 0.00000
3.54e-02 1.71e-02 8.41e-03 4.24e-03 2.13e-03 1.06e-03 5.31e-04 2.66e-04 1.33e-04 6.64e-05 3.32e-05 1.66e-05 8.30e-06 4.15e-06 2.07e-06 1.04e-06 5.19e-07 2.59e-07 1.30e-07
Toleransi terpenuhi Hasil akhir = 0.975017
Dari hasil eksekusi ini didapat hasil x = 0.975017. Hasil ini tercapai setelah iterasi ke-24. 2.6.2 Program Sumber untuk Metode Regula Falsi
Program 2.6.2.1 dan 2.6.2.2 menggunakan algoritma metode Regula Falsi untuk menyelesaikan persamaan non-linear. Secara umum program memiliki bentuk yang sama dengan metode Bisection kecuali pada perhitungan nilai m. Program kembali akan dicoba untuk menyelesaikan persamaan : tan(x) - x - 0.5 = 0 2.6.2.1 DEKLARASI SUMBER PROGRAM dalam BAHASA C++ // Program 1.2a // Metode Regula Falsi #include <stdio.h> #include <math.h> /* Daftar Variable a = batas bawah b = batas atas tol = toleransi max_iter = jumlah iterasi maksimum
*/
float a,m,b,F_a,F_m,F_b,tol; int max_iter; float f(float x) { return tan(x) - x - 0.5; } void main() { int it; float epsilon;
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 19
Penyelesaian Numerik Persamaan Non-Linear printf("Batas bawah printf("Batas atas printf("Toleransi printf("Jumlah iterasi maksimum
= = = =
"); "); "); ");
scanf("%f",&a); scanf("%f",&b); scanf("%f",&tol); scanf("%d",&max_iter);
it = 0; F_a = f(a); F_b = f(b); if(F_a * F_b > 0) printf(" Nilai F(a) x F(b) > 0\n"); else { printf("It. a m b f(a) f(b)"); printf(" abs[f(b)-f(a)]/2\n"); do { it = it + 1; m = a - F_a * (b - a) / (F_b - F_a); F_m = f(m); printf("%3d %8.5f %8.5f %8.5f %8.5f %8.5f %8.2e\n", it,a,m,b,F_a,F_m,fabs(F_b-F_a)/2); epsilon = fabs(m-a); if(F_a * F_m <= 0) { b = m; F_b = F_m; } else { a = m; F_a = F_m; } } while(it <= max_iter && epsilon > tol); if(it<=max_iter) { printf("Toleransi terpenuhi\n"); printf("Hasil akhir = %g\n",b); } else printf("Toleransi tidak terpenuhi\n"); } }
2.6.2.2 DEKLARASI SUMBER PROGRAM dalam TURBO PASCAL { Program 1.2b Metode Regula Falsi Daftar Variable a = batas bawah b = batas atas tol = toleransi max_iter = jumlah iterasi maksimum Var a,m,b,F_a,F_m,F_b,tol : real; max_iter,it : integer; epsilon : real;
}
function f(x : real) : real; Begin f := sin(x)/cos(x) - x - 0.5; End; Begin write('Batas bawah = '); read(a); write('Batas atas = '); read(b); write('Toleransi = '); read(tol); write('Jumlah iterasi maksimum = '); read(max_iter); it := 0; F_a := f(a); F_b := f(b); if (F_a * F_b > 0) then writeln(' Nilai F(a) x F(b) > 0') else
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 20
Penyelesaian Numerik Persamaan Non-Linear Begin write('It. a m b f(a) f(b)'); writeln(' abs[f(b)-f(a)]/2'); epsilon := tol+1; while((it <= max_iter) and (epsilon > tol)) do Begin it := it + 1; m := a - F_a * (b - a)/(F_b - F_a); F_m := f(m); write(it:3,' ',a:8:5,' ',m:8:5,' ',b:8:5,' '); writeln(F_a:8:5,' ',F_m:8:5,' ',abs(F_b-F_a)/2:4); epsilon := abs(m-a); if(F_a * F_m <= 0) Then Begin c := m; F_b := F_m End else Begin a := m; F_a := F_m End; End; if(it<=max_iter) Then Begin writeln('Toleransi terpenuhi'); writeln('Hasil akhir = ',m:9:7); End else writeln('Toleransi tidak terpenuhi'); End; End.
2.6.2.3 Contoh eksekusi program
Eksekusi program dilakukan dengan menggunakan data yang sama dengan metode Bisection. Hasil eksekusi program adalah sebagai berikut : Batas bawah Batas atas Toleransi Jumlah iterasi maksimum It. 1 2 3 4 5 6 7
a 0.00000 0.89701 0.97073 0.97479 0.97501 0.97502 0.97502
m 0.89701 0.97073 0.97479 0.97501 0.97502 0.97502 0.97502
= = = =
0 1 0.0000001 30
b 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000
f(a) -0.50000 -0.14456 -0.00925 -0.00050 -0.00003 -0.00000 -0.00000
f(b) -0.14456 -0.00925 -0.00050 -0.00003 -0.00000 -0.00000 -0.00000
abs[f(b)-f(a)]/2 2.79e-01 1.01e-01 3.33e-02 2.90e-02 2.87e-02 2.87e-02 2.87e-02
Toleransi terpenuhi Hasil akhir = 0.975017
Dari hasil eksekusi ini didapat hasil x = 0.975017 yang tercapai setelah iterasi ke-7. Dari hasil ini terlihat bahwa dengan menggunakan data yang sama sebagaimana yang digunakan pada metode Bisection, konvergensi hasil perhitungan akan lebih cepat dicapai.
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 21
Penyelesaian Numerik Persamaan Non-Linear 2.6.3 Program Sumber untuk Metode Iterasi
Program berikut menggunakan algoritma metode Iterasi untuk menyelesaikan persamaan nonlinear. Program akan dicoba untuk menyelesaikan persamaan : ex + x2 - 3x - 2 =0 atau dalam bentuk lain x - (ex + x2 - 2)/3 = 0 Dari bentuk ini diambil fungsi g(x) = (ex + x2 -2)/3 2.6.3.1 DEKLARASI SUMBER PROGRAM dalam BAHASA C++ // Program 1.3a // Metode Iterasi #include <stdio.h> #include <math.h> /* Daftar Variable x0 = harga awal tol = toleransi max_iter = jumlah iterasi maksimum
*/
float x0,tol; int max_iter; float g(float x) { return (x*x + exp(x) - 2)/3; } void main() { int it; float epsilon,xb; printf("Harga awal = "); scanf("%f",&x0); printf("Toleransi = "); scanf("%f",&tol); printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter); it = 0; printf("It. x g(x) f(x)\n"); do { it = it + 1; xb = g(x0); epsilon = fabs(xb-x0); printf("%3d %8.5f %8.5f %8.2e\n",it,x0,xb,epsilon); x0 = xb; } while(it <= max_iter && epsilon > tol); if(it<=max_iter) { printf("Toleransi terpenuhi\n"); printf("Hasil akhir = %g\n",xb); } else printf("Toleransi tidak terpenuhi\n"); }
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 22
Penyelesaian Numerik Persamaan Non-Linear 2.6.3.2 DEKLARASI SUMBER PROGRAM dalam BAHASA PASCAL {
Program 1.3b Metode Iterasi Daftar Variable x0 = harga awal tol = toleransi max_iter = jumlah iterasi maksimum }
Var x0,xb,tol max_iter,it epsilon
: real; : integer; : real;
function g(x : real) : real; Begin g := (x*x + exp(x) - 2)/3; End; Begin write('Harga awal = '); read(x0); write('Toleransi = '); read(tol); write('Jumlah iterasi maksimum = '); read(max_iter); it := 0; writeln('It. x g(x) f(x)'); epsilon := tol+1; while((it <= max_iter) and (epsilon > tol)) do Begin it := it + 1; xb := g(x0); epsilon := abs(xb-x0); writeln(it:3,' ',x0:8:5,' ',xb:8:5,' ',epsilon:4); x0 := xb; End; if(it<=max_iter) Then Begin writeln('Toleransi terpenuhi'); writeln('Hasil akhir = ',xb:9:7); End else writeln('Toleransi tidak terpenuhi'); End.
2.6.3.3 CONTOH EKSEKUSI PROGRAM Harga awal Toleransi Jumlah iterasi It. x 1 1.00000 2 0.57276 3 0.03374 4 -0.32152 5 -0.39053 6 -0.39026 7 -0.39027 8 -0.39027
= 1 = 0.0000001 maksimum = 20 g(x) f(x) 0.57276 4.27e-01 0.03374 5.39e-01 -0.32152 3.55e-01 -0.39053 6.90e-02 -0.39026 2.63e-04 -0.39027 9.12e-06 -0.39027 3.28e-07 -0.39027 2.98e-08
Toleransi terpenuhi Hasil akhir = -0.390272
Dari hasil eksekusi ini didapat hasil x = -0.390272 yang tercapai setelah iterasi ke-8. Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 23
Penyelesaian Numerik Persamaan Non-Linear
2.6.4 Program Sumber untuk Metode Newton-Raphson
Program berikut menggunakan algoritma metode Newton-Raphson untuk menyelesaikan persamaan non-linear. Program akan dicoba untuk menyelesaikan persamaan : f(x) = ex + x2 - 3x - 2 = 0 Turunan pertama fungsi ini adalah : f’(x) = ex + 2x - 3 2.6.4.1 DEKLARASI SUMBER PROGRAM dalam BAHASA C++ // Program 1.4a // Metode Newton-Raphson #include <stdio.h> #include <math.h> /* Daftar Variable x0 = harga awal tol = toleransi max_iter = jumlah iterasi maksimum
*/
float x0,tol; int max_iter; float f(float x) { return x*x - 3*x + exp(x) - 2; } float f1(float x) { return 2*x - 3 + exp(x); } void main() { int it; float epsilon,xb; printf("Harga awal = "); scanf("%f",&x0); printf("Toleransi = "); scanf("%f",&tol); printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter); it = 0; printf("It. x f(x) epsilon\n"); do { it = it + 1; xb = x0 - f(x0)/f1(x0); epsilon = fabs(xb-x0); printf("%3d %8.5f %8.5f %8.2e\n",it,xb,f(xb),epsilon); x0 = xb; } while(it <= max_iter && epsilon > tol); if(it<=max_iter) { printf("Toleransi terpenuhi\n"); printf("Hasil akhir = %g\n",xb); } else printf("Toleransi tidak terpenuhi\n"); }
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 24
Penyelesaian Numerik Persamaan Non-Linear
2.6.4.2 DEKLARASI SUMBER PROGRAM dalam BAHASA PASCAL { Program 1.4b Metode Newton-Raphson Daftar Variable x0 = harga awal tol = toleransi max_iter = jumlah iterasi maksimum } Var x0,xb,tol max_iter,it epsilon
: real; : integer; : real;
function f(x : real) : real; Begin f := x*x - 3*x + exp(x) - 2; End; function f1(x : real) : real; Begin f1 := 2*x - 3 + exp(x); End; Begin write('Harga awal = '); read(x0); write('Toleransi = '); read(tol); write('Jumlah iterasi maksimum = '); read(max_iter); it := 0; writeln('It. x f(x) epsilon'); epsilon := tol+1; while((it <= max_iter) and (epsilon > tol)) do Begin it := it + 1; xb := x0 - f(x0)/f1(x0); epsilon := abs(xb-x0); writeln(it:3,' ',xb:8:5,' ',f(xb):8:5,' ',epsilon:4); x0 := xb; End; if(it<=max_iter) Then Begin writeln('Toleransi terpenuhi'); writeln('Hasil akhir = ',xb:9:7); End else writeln('Toleransi tidak terpenuhi'); End.
2.6.4.3 CONTOH EKSEKUSI PROGRAM
Eksekusi program dilakukan dengan menggunakan harga awal 0, toleransi 10-5, dan jumlah iterasi maksimum sebesar 20. Hasil eksekusi program adalah sebagai berikut : Harga awal = 0 Toleransi = 0.00001 Jumlah iterasi maksimum = 20
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 25
Penyelesaian Numerik Persamaan Non-Linear
It. 1 2 3 4
x -0.50000 -0.39494 -0.39028 -0.39027
f(x) 0.35653 0.01451 0.00003 0.00000
epsilon 5.00e-01 1.05e-01 4.66e-03 9.33e-06
Toleransi terpenuhi Hasil akhir = -0.390272
Dari hasil eksekusi ini didapat hasil x = -0.390272 yang tercapai setelah iterasi ke-4. Dapat dilihat bahwa untuk kasus ini penggunaan metode Newton-Rapson memberikan hasil yang lebih cepat daripada metode Iterasi. 2.6.5 Program Sumber untuk Metode Secant
Program berikut menggunakan algoritma metode Secant untuk menyelesaikan persamaan nonlinear. Program kembali akan dicoba untuk menyelesaikan persamaan : F(x) = ex + x2 - 3x - 2 = 0
2.6.5.1 DEKLARASI SUMBER PROGRAM dalam BAHASA C++ // Program 1.5a // Metode Secant #include <stdio.h> #include <math.h> /* Daftar Variable x0 = harga awal x1 = harga kedua tol = toleransi max_iter = jumlah iterasi maksimum
*/
float x0,x1,tol; int max_iter; float f(float x) { return x*x - 3*x + exp(x) - 2; } void main() { int it; float epsilon,xb; printf("Harga awal printf("Harga kedua printf("Toleransi printf("Jumlah iterasi maksimum
= = = =
"); "); "); ");
scanf("%f",&x0); scanf("%f",&x1); scanf("%f",&tol); scanf("%d",&max_iter);
it = 0; printf("It. x f(x) epsilon\n"); do { it = it + 1; xb = x1 - f(x1)*(x1 - x0)/(f(x1) - f(x0)); epsilon = fabs(xb-x0); printf("%3d %8.5f %8.5f %8.2e\n",it,xb,f(xb),epsilon);
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 26
Penyelesaian Numerik Persamaan Non-Linear x0 = x1; x1 = xb; } while(it <= max_iter && epsilon > tol); if(it<=max_iter) { printf("Toleransi terpenuhi\n"); printf("Hasil akhir = %g\n",xb); } else printf("Toleransi tidak terpenuhi\n"); }
2.6.5.2 DEKLARASI SUMBER PROGRAM dalam BAHASA TURBO PASCAL { Program 1.5b Metode Secant Daftar Variable x0 = harga awal x1 = harga kedua tol = toleransi max_iter = jumlah iterasi maksimum } Var x0,x1,xb,tol max_iter,it epsilon
: real; : integer; : real;
function f(x : real) : real; Begin f := x*x - 3*x + exp(x) - 2; End; Begin write('Harga awal write('Harga kedua write('Toleransi write('Jumlah iterasi maksimum
= = = =
'); '); '); ');
read(x0); read(x1); read(tol); read(max_iter);
it := 0; writeln('It. x f(x) epsilon'); epsilon := tol+1; while((it <= max_iter) and (epsilon > tol)) do Begin it := it + 1; xb := x1 - f(x1)*(x1-x0)/(f(x1) - f(x0)); epsilon := abs(xb-x1); writeln(it:3,' ',xb:8:5,' ',f(xb):8:5,' ',epsilon:4); x0 := x1; x1 := xb; End; if(it<=max_iter) Then Begin writeln('Toleransi terpenuhi'); writeln('Hasil akhir = ',xb:9:7); End else writeln('Toleransi tidak terpenuhi'); End.
2.6.5.3 CONTOH EKSEKUSI PROGRAM
Eksekusi program dilakukan dengan menggunakan harga awal dan -0.1, toleransi 10-5, dan jumlah iterasi maksimum sebesar 20. Hasil eksekusi program adalah sebagai berikut : Harga awal
= 0
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 27
Penyelesaian Numerik Persamaan Non-Linear Harga kedua = -0.1 Toleransi = 0.00001 Jumlah iterasi maksimum = 20 It. 1 2 3 4 5 6
x -0.46547 -0.37966 -0.38994 -0.39027 -0.39027 -0.39027
f(x) 0.24091 -0.03278 -0.00103 0.00000 0.00000 0.00000
epsilon 4.65e-01 2.80e-01 7.55e-02 1.06e-02 3.33e-04 1.52e-06
Toleransi terpenuhi Hasil akhir = -0.390272
Dari hasil eksekusi ini didapat hasil x = -0.390272, sama dengan hasil yang didapat dengan menggunakan metode iterasi dan metode Newton-Raphson. Hasil ini tercapai setelah iterasi ke6. Walaupun konvergensi hasil perhitungan lebih lambat dibandinggkan dengan penggunaan metode Newton-Raphson, namun metode ini memiliki kelebihan karena tidak memerlukan penentuan turunan fungsi.
2.7 TERAPAN METODE NUMERIK dalam REKAYASA SIPIL Persamaan non-linear sebagai model matematika bagi solusi masalah rekayasa sipil dengan menggunakan metode numerik merupakan salah satu alternatif prosedur pemecahan yang digunakan apabila tidak dimungkin perolehan bentuk closed form dari pemodelan. Lima contoh bentuk penyelesaian numerik persamaan non-linear di dalam bidang truktur, geoteknik, sumber tenaga air, transportasi atau jalan raya, dan manajemen konstruksi berikut ini bertujuan untuk memberi pemahaman mengenai penggunaan terapan metode numerik untuk mencari solusi nyata bagi suatu permasalahan. 2.7.1 Bidang Teknik Struktur
Frekuensi alami dari getaran balok uniform yang terjepit pada salah satu ujungnya dan bebas pada ujungnya yang lain dapat dicari dari persamaan berikut : cos (βl) cosh(βl) + 1 = 0 (a)
Perletakan jepit
dengan β l ρ ω EI
= ρω2/EI = panjang elemen balok = 1 meter = berat jenis elemen balok = 2.4 x 104 = frekuensi pribadi balok (sec-1) = kekakuan lentur balok = 2.5 x 106
Metode Numerik Dalam Ilmu Rekayasa Sipil
Balok
(b)
Bab II hal. 28
Penyelesaian Numerik Persamaan Non-Linear
Tetapkan nilai β dari persamaan (a), kemudian gunakan nilai β untuk menentukan frekuensi alami balok. Gunakan metode Bisection untuk mencari akar persamaan (a). Penyelesaian Dengan memasukkan nilai l = 1 ke dalam persamaan (a) : cos (β) cosh(β) + 1 = 0 Tulis kembali persamaan dengan variabel bebas x : cos (x) cosh(x) + 1 = 0 Selanjutnya digunakan program 2.6.1 dengan memodifikasi bagian definisi fungsi menjadi : return cos(x) * cosh(x) + 1; (C++) atau f := cos(x) * (exp(x) + exp(-x)) / 2 + 1; (Pascal) Maka, eksekusi program dengan batasan interval [7,8] memberikan hasil eksekusi program sebagai berikut : Batas bawah Batas atas Toleransi Jumlah iterasi maksimum It. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
a 7.00000 7.50000 7.75000 7.75000 7.81250 7.84375 7.84375 7.85156 7.85156 7.85352 7.85449 7.85449 7.85474 7.85474 7.85474 7.85474 7.85475 7.85475 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476
b 7.50000 7.75000 7.87500 7.81250 7.84375 7.85938 7.85156 7.85547 7.85352 7.85449 7.85498 7.85474 7.85486 7.85480 7.85477 7.85475 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476
= = = =
7 8 0.0000001 30
c 8.00000 8.00000 8.00000 7.87500 7.87500 7.87500 7.85938 7.85938 7.85547 7.85547 7.85547 7.85498 7.85498 7.85486 7.85480 7.85477 7.85477 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476 7.85476
f(a) f(c) abs[f(c)-f(a)]/2 414.37745 314.36577 3.2E+02 314.36577 121.48308 2.7E+02 121.48308 -26.64433 1.7E+02 121.48308 52.24211 7.4E+01 52.24211 14.04382 3.9E+01 14.04382 -5.98411 2.0E+01 14.04382 4.10828 1.0E+01 4.10828 -0.91823 5.0E+00 4.10828 1.59993 2.5E+00 1.59993 0.34208 1.3E+00 0.34208 -0.28777 6.3E-01 0.34208 0.02723 3.1E-01 0.02723 -0.13025 1.6E-01 0.02723 -0.05150 7.9E-02 0.02723 -0.01214 3.9E-02 0.02723 0.00755 2.0E-02 0.00755 -0.00229 9.8E-03 0.00755 0.00263 4.9E-03 0.00263 0.00017 2.5E-03 0.00017 -0.00106 1.2E-03 0.00017 -0.00045 6.2E-04 0.00017 -0.00014 3.1E-04 0.00017 0.00001 1.5E-04 0.00001 -0.00006 7.7E-05
Toleransi terpenuhi Hasil akhir = 7.8547575
Harga yang didapat dimasukkan ke dalam persamaan (b) untuk mendapatkan nilai frekuensi alami balok : β = ρω2/EI ω=
EI * β = ρ
2.5 *10 6 * 7.8547575 2.4 *10 4
ω = 28.6 sec-1
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 29
Penyelesaian Numerik Persamaan Non-Linear 2.7.2 BidangTeknik Transportasi Dalam desain tikungan jalan lingkar, terdapat rumusan berikut :
R=
T
(R
R2 2
+ T2
)
1/2
+M
(a)
dengan R = jari-jari kurva jalan T = jarak tangensial = 273.935 m M = ordinat tengah = 73.773 m Hitunglah berapa nilai R dengan menggunakan metode iterasi.
M
R
Penyelesaian Dengan memasukkan nilai-nilai yang diketahui ke persamaan (a) didapat : R2 R= + 73.773.773 1/2 R 2 + 273.935 2 Tulis kembali persamaan dalam variabel bebas x sebagai berikut: x2 x= 2 + 73.773 (x + 75040.38)1/2 Selanjutnya digunakan program 2.6.3 dengan memodifikasi bagian definisi fungsi sebagai berikut: return x*x / sqrt(x*x + 75040.38) + 73.773 (C++) g := x*x / sqrt(x*x + 75040.38) + 73.773 (Pascal) Program dieksekusi dengan memberikan harga awal xo =125. Hasil eksekusi program adalah :
(
)
Harga awal = 125 Toleransi = 0.001 Jumlah iterasi maksimum = 30 It. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
x 125.00000 125.66487 126.17022 126.55552 126.84999 127.07544 127.24828 127.38093 127.48282 127.56112 127.62132 127.66763 127.70326 127.73068 127.75178
g(x) 125.66487 126.17022 126.55552 126.84999 127.07544 127.24828 127.38093 127.48282 127.56112 127.62132 127.66763 127.70326 127.73068 127.75178 127.76803
f(x) 6.6E-01 5.1E-01 3.9E-01 2.9E-01 2.3E-01 1.7E-01 1.3E-01 1.0E-01 7.8E-02 6.0E-02 4.6E-02 3.6E-02 2.7E-02 2.1E-02 1.6E-02
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 30
Penyelesaian Numerik Persamaan Non-Linear 16 17 18 19 20 21 22 23 24 25 26
127.76803 127.78053 127.79016 127.79757 127.80328 127.80767 127.81106 127.81366 127.81567 127.81722 127.81841
127.78053 127.79016 127.79757 127.80328 127.80767 127.81106 127.81366 127.81567 127.81722 127.81841 127.81932
1.3E-02 9.6E-03 7.4E-03 5.7E-03 4.4E-03 3.4E-03 2.6E-03 2.0E-03 1.5E-03 1.2E-03 9.2E-04
Toleransi terpenuhi Hasil akhir = 127.8193231
Panjang jari-jari kurva jalan adalah : R = 127.819 m
2.7.3 Bidang Teknik Sumber Daya Air
Koefisien gesek untuk aliran turbulen dalam sebuah pipa diberikan dalam persamaan berikut : ⎛e 1 9.35 ⎞⎟ = 1.14 − 2.0 * log10 ⎜ + (a) ⎜D R f ⎟ f e ⎝ ⎠ dengan f = koefisien gesek aliran Re = bilangan Reynolds e = kekasaran pipa D = diameter pipa Hitunglah nilai koefisien gesek untuk dua kasus berikut ini : D = 0.1 m e = 0.0025 Re = 3 x 104 D = 0.1 m e = 0.0015 Re = 5 x 106 Penyelesaian Tulis kembali persamaan dalam bentuk : −2
⎛ ⎡e 9.35 ⎤ ⎞⎟ f = ⎜1.14 - 2.0 * log10 ⎢ + ⎥ ⎟ , maka ⎜ D R f ⎢ e ⎣ ⎦⎥ ⎠ ⎝ metode yang paling cocok digunakan adalah metode iterasi. Kasus (i) Dengan memasukkan nilai-nilai yang diketahui ke dalam persamaan akan didapat : ⎛ ⎡ 0.0025 ⎤⎞ 9.35 f = ⎜⎜1.14 - 2.0 * log10 ⎢ + ⎥⎟ 4 3 *10 * f ⎦ ⎟⎠ ⎣ 0.1 ⎝ ⎛ ⎡ 0.0003117 ⎤ f = ⎜⎜1.14 - 2.0 * log10 ⎢0.025 + ⎥ f ⎣ ⎦ ⎝
Metode Numerik Dalam Ilmu Rekayasa Sipil
⎞ ⎟ ⎟ ⎠
−2
−2
Bab II hal. 31
Penyelesaian Numerik Persamaan Non-Linear
Tuliskan dalam variabel bebas x, maka akan diperoleh persamaan berikut : −2
⎛ ⎡ 0.0003117 ⎤ ⎞ x = ⎜⎜1.14 - 2.0 * log10 ⎢0.025 + ⎥ ⎟⎟ x ⎣ ⎦⎠ ⎝ Dengan program 2.6.3, setelah memodifikasi definisi fungsi, hasil eksekusi program adalah: Harga awal = 1 Toleransi = 0.0000001 Jumlah iterasi maksimum = 20 It. 1 2 3 4
x 1.00000 0.05325 0.05412 0.05411
g(x) 0.05325 0.05412 0.05411 0.05411
f(x) 9.5E-01 8.7E-04 9.0E-06 9.3E-08
Toleransi terpenuhi Hasil akhir = 0.0541142
Maka nilai koefisien gesek untuk kasus (i) adalah : f = 0.0541142 Kasus (ii) Dengan memasukkan nilai-nilai yang diketahui ke dalam persamaan akan didapat : ⎛ ⎡ 0.0015 ⎤⎞ 9.35 f = ⎜⎜1.14 - 2.0 * log10 ⎢ + ⎥⎟ 6 5 *10 * f ⎦ ⎟⎠ ⎣ 0.1 ⎝
−2
−2
⎛ ⎡ 0.00000187 ⎤ ⎞ f = ⎜⎜1.14 - 2.0 * log10 ⎢0.015 + ⎥ ⎟⎟ f ⎣ ⎦⎠ ⎝ Tulis fungsi dalam variabel bebas x akan diperoleh persamaan berikut: −2
⎛ ⎡ 0.00000187 ⎤ ⎞ x = ⎜⎜1.14 - 2.0 * log10 ⎢0.015 + ⎥ ⎟⎟ x ⎣ ⎦⎠ ⎝ Dengan program 2.6.3, dengan memodifikasi bagian definisi fungsi, diperoleh hasil eksekusi program berikut : Harga awal = 1 Toleransi = 0.0000001 Jumlah iterasi maksimum = 20 It. 1 2 3
x 1.00000 0.04363 0.04363
g(x) 0.04363 0.04363 0.04363
f(x) 9.6E-01 7.5E-06 8.1E-10
Toleransi terpenuhi Hasil akhir = 0.0436334
Nilai koefisien gesek untuk kasus (ii) adalah : f = 0.0436334
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 32
Penyelesaian Numerik Persamaan Non-Linear 2.7.4 Bidang Geoteknik
Untuk menghitung kedalaman pemancangan dinding turap baja dapat digunakan rumusan berikut: KP D3 - KA (H + D)3 = 0 (a) dengan KA = koefisien tegangan aktif tanah = tan2(450 - ϕ/2) KP = koefisien tegangan pasif tanah = tan2(450 + ϕ/2 ) Ka H = tinggi dinding turap D = kedalaman pemancangan ϕ = sudut geser dalam tanah D Kp Dengan menggunakan metode Newton-Raphson, hitunglah kedalaman pemancangan dinding turap bila diketahui H = 15 m dan ϕ = 280.
H
Penyelesaian Hitung KA dan KP : KA = tan2(45 - ϕ/2) = tan2(45 - 28/2); KP = tan2(45 + ϕ/2) = tan2(45 + 28/2) = 0.361 = 2.770
Kedua parameter ini dimasukkan ke persamaan (a) : KP D3 - KA (H + D)3 = 0 2.770 D3 - 0.361 (15 + D)3 = 0 Tulis kembali persamaan dalam variabel bebas x sebagai : 2.770 x3 - 0.361 (15 + x)3 = 0 maka turunan fungsi adalah : f’ (x) := 8.310 x2 - 1.083 (15 + x)2 = 0 Selanjutnya gunakan program 2.6.4 dengan modifikasi pada definisi fungsi : Fungsi f(x) : return 2.770 * x * x * x - 0.361 * (15 + x) * (15 + x) * (15 + x); (C++) f : = 2.770 * x * x * x - 0.361 * (15 + x) * (15 + x) * (15 + x); (Pascal) Fungsi f ’(x) : return 8.310 * x * x - 1.083 * (15 + x) * (15 + x); (C++) f1 : = 8.310 * x * x - 1.083 * (15 + x) * (15 + x); (Pascal) Hasil eksekusi program adalah: Harga awal = 10 Toleransi = 0.001 Jumlah iterasi maksimum = 20 It. 1 2 3 4 5 6 7
x 28.62530 21.25399 17.22334 15.67640 15.43196 15.42605 15.42605
f(x) 35000.10294 9393.24741 2073.78951 250.07278 5.76369 0.00332 0.00000
epsilon 1.9E+01 7.4E+00 4.0E+00 1.5E+00 2.4E-01 5.9E-03 3.4E-06
Toleransi terpenuhi Hasil akhir = 15.4260489
Kedalaman pemancangan yang diperlukan adalah : D = 15.426 m Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 33
Penyelesaian Numerik Persamaan Non-Linear
2.7.5 Manajemen Konstruksi Dari suatu perhitungan tentang kebutuhan akan produksi optimal suatu komponen struktur didapat persamaan biaya yang dibutuhkan untuk pengadaan produksi dalam satu hari sebagai berikut : C = 13000 N-1 + 158.11 N-0.5 + N + 0.0025 N2 dengan C = biaya per hari N = jumlah komponen yang diproduksi Hitunglah jumlah optimal komponen yang diproduksi sehingga biaya produksi menjadi minimum. Penyelesaian Biaya minimum turunan pertama dari persamaan biaya harus nol.. Ini berarti : C ‘ (N) = - 13000 N-2 - 79.055 N-1.5 + 1 + 0.005 N = 0 Nyatakan kembali persamaan dalam varibel bebas x : - 13000 x -2 - 79.055 x -1.5 + 1 + 0.005 x = 0 Maka, menghitung akar persamaan dengan program 1.5 setelah modifikasi pada definisi fungsi adalah: return -13000 /(x * x) - 79.055 / (x * sqrt(x)) + 1 + 0.005 * x; (C++) f : = -13000 /(x * x) - 79.055 / (x * sqrt(x)) + 1 + 0.005 * x; (Pascal)
yang memberikan hasil eksekusi program : Harga awal Harga kedua Toleransi Jumlah iterasi maksimum It. 1 2 3 4
x 96.71768 96.43829 96.41215 96.41226
f(x) 0.01074 0.00092 -0.00000 0.00000
= = = =
100 90 0.001 10 epsilon 6.7E+00 2.8E-01 2.6E-02 1.1E-04
Toleransi terpenuhi Hasil akhir = 96.4122577
Jumlah produksi optimal dalam satu hari adalah : N = 94 buah
Metode Numerik Dalam Ilmu Rekayasa Sipil
Bab II hal. 34