Bahan Kuliah Ke 3 Metoda Numerik
Bahan Kuliah Ke 3 Metoda Numerik
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 100C. Bola ini
kemudian disimpan di dalam ruang pendingin dengan temperatur 0C. 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)
x
Gambar 2.1
Tinjauan interval [a,b] dalam
penentuan akar fungsi f(x).
Bab II hal. 1
[f(a) x f(m)<0]
(b=m)
a
(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
f(b) f(a)
f(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
a
f(b)
f(b)
Bab II hal. 3
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.
Bab II hal. 4
Fa * Fb > 0
ya
tidak
Tulis
Fa * Fb > 0
iter = iter +1
m = (a + b)/2
Fm = F(m)
Ya
Tidak
Fa * Fm < 0
ya
tidak
b=m
Fb = Fm
a=m
Fa = Fm
Tulis hasil
m, F(m)
1
SELESAI
Bab II hal. 5
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)
|m-a|<tol
iter>iter_max
ya
tidak
ya
Fa*Fm<0
tidak
b=m
Fb = Fm
a=m
Fa = Fm
Tulis hasil
m, F(m)
1
SELESAI
Bab II hal. 6
y=x
y = g(x)
Gambar 2.6
Geometri fungsi f(x) = x - g(x)
Bab II hal. 7
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
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
g(x)=20/(x -3)
1
0
0
-1
Gambar 2.7
Sajian fungsi y = g(x) cara (iii) dan (iv)
-2
Bab II hal. 8
y=x
y=g(x)
Bab II hal. 9
iter = iter +1
xb = G(xo)
|xb-xo|<tol
iter>iter_max
ya
Tidak
xo = xb
Tulis hasil
xb, F(xb)
Stop
Bab II hal. 10
garis singgung
xk+1
xk
f(x)
(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 - ( xk - 3xk - 20) / (3xk - 3).
Perkiraan awal x0 = 5
x3 = 3.0859
x0 = 5
x1 = 3.75
x4 = 3.0809
x2 = 3.2018
x5 = 3.0809
Bab II hal. 11
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)
Bab II hal. 13
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|<tol
iter>iter_max
ya
Tidak
xo = xb
Tulis hasil
xb, F(xb)
SELESAI
Bab II hal. 14
iter = iter +1
xb =x1- f(x1)*(x1-xo)
[f(x1)-f(xo)]
|xb-xo|<tol
iter>iter_max
ya
Tidak
xo = xb
Tulis hasil
xb, F(xb)
SELESAI
Bab II hal. 15
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).
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
*/
float a,m,b,F_a,F_m,F_b,tol;
int max_iter;
Bab II hal. 16
=
=
=
=
");
");
");
");
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");
}
}
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;
Bab II hal. 17
=
=
=
=
');
');
');
');
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.
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
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
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;
Bab II hal. 19
=
=
=
=
");
");
");
");
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");
}
}
Bab II hal. 20
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.
Bab II hal. 21
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");
}
Bab II hal. 22
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;
= 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
*/
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");
}
Bab II hal. 24
: real;
: integer;
: real;
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
Bab II hal. 25
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
*/
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);
Bab II hal. 26
: real;
: integer;
: real;
=
=
=
=
');
');
');
');
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.
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
Bab II hal. 27
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.
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
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
Balok
(b)
Bab II hal. 28
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 *
=
= 28.6 sec-1
Bab II hal. 29
R=
(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.
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
Bab II hal. 30
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
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
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 +
Bab II hal. 31
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
0.0015
9.35
f = 1.14 - 2.0 * log10
+
6
5 *10 * f
0.1
0.00000187
f = 1.14 - 2.0 * log10 0.015 +
f
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
Bab II hal. 32
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.
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
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
Bab II hal. 33
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
Bab II hal. 34