PEMROGRAMAN KOMPUTER
Revisi pertama
Disusun oleh:
Emma Patricia Bangun
LABORATORIUM KOMPUTASI
DEPARTEMEN TEKNIK SIPIL
FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA
2024
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
2
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK Daftar
SIPIL isi
UNIVERSITAS SUMATERA UTARA
Table of contents 3
Daftar gambar 5
Daftar tabel 7
3 Modul II Matriks 28
3.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3
DAFTAR ISI
3.2MODUL PRAKTIKUM
Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Pendeklarasian variabel array . . . . . . . . . . . . . . . . . . 29
PEMROGRAMAN KOMPUTER
3.2.2 Operasi aritmatika pada matriks dan vektor . . . . . . . . . . 31
3.2.3 Transpose matriks . . . . . . . . . . . . . . . . . . . . . . . . 35
DEPARTEMEN TEKNIK SIPIL
3.2.4 Determinan matriks . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.5 Invers matriks . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
UNIVERSITAS SUMATERA UTARA
3.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4
MODUL PRAKTIKUM
6.2.4 Metode eksplisit untuk PDB . . . . . . . . . . . . . . . . . . . 85
6.2.5 Metode implisit untuk PDB . . . . . . . . . . . . . . . . . . . 93
PEMROGRAMAN KOMPUTER
6.3 Fungsi diferensiasi dan penyelesaian PDB pada Matlab . . . . . . . . 95
6.4 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
DEPARTEMEN TEKNIK SIPIL
6.5 Dasar teori lanjutan . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5.1 Sistem PDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
UNIVERSITAS SUMATERA UTARA
6.5.2 Metode eksplisit untuk sistem PDB . . . . . . . . . . . . . . . 102
6.5.3 Metode implisit untuk sistem PDB . . . . . . . . . . . . . . . 106
6.6 Fungsi penyelesaian sistem PDB pada Matlab . . . . . . . . . . . . . 108
6.7 Latihan lanjutan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5
DAFTAR GAMBAR
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIKDaftar
SIPIL gambar
6
7.5 MODUL PRAKTIKUM
Kurva fungsi satu dimensi dan interpolasinya. . . . . . . . . . . . . . 128
7.6 Kurva fungsi dua dimensi dan interpolasinya. . . . . . . . . . . . . . 129
PEMROGRAMAN KOMPUTER
8.1 Gaya luar yang bekerja pada node 1 dari suatu rangka batang. . . . . 135
5.1 Kedalaman air, h, dan kecepatan muka air, u, pada lokasi x dari bahu
kiri sungai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2 Arus lalu lintas, ALL, dalam satuan jumlah kendaraan/menit) pada
suatu persimpangan diukur di waktu yang berbeda. . . . . . . . . . . 76
7
DAFTAR TABEL
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
8
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 1
Standar operasional prosedur
Bab ini menjabarkan prosedur yang mengatur aktivitas pendaftaran dan pelaksanaan
praktikum Pemrograman Komputer yang bertujuan untuk menjaga mutu, ketertiban
administrasi dan pelaksanaan praktikum. Prosedur ini berlaku dan dilaksanaan di
Laboratorium Komputasi, Departemen Teknik Sipil, Universitas Sumatera Utara.
Pelaksanaan praktikum melibatkan:
(1) Praktikan,
(2) Praktikan mengetahui ruang kelas tempat pelaksanaan praktikum sesuai jadwal
dan
(3) Praktikan memiliki serta membaca materi/modul praktikum yang akan diikuti
pada pelaksanaan praktikum.
9
1.2 Pelaksanaan praktikum
PEMROGRAMAN KOMPUTER
Pelaksanaan praktikum secara garis besar dibagi menjadi dua tahap, yaitu
(a) Penjelasan modul dan materi praktikum oleh asisten laboratorium selama 40
DEPARTEMEN TEKNIK SIPIL
menit pertama dan
(2) Berpakaian rapi dan sopan dengan menggunakan kemeja, celana/rok dan sepatu,
(5) Menjaga agar peralatan yang digunakan selama pelaksanaan praktikum tetap
dalam kondisi yang layak pakai dan
(2) Mengerjakan tugas secara mandiri walaupun kerjasama antar praktikan tetap
diperbolehkan dan
(3) Menyerahkan semua laporan tugas praktikum dari setiap modul dalam kurun
waktu kurang dari delapan minggu sejak pelaksanaan praktikum pertama.
Penilaian akhir laporan tugas praktikum menjadi tanggungjawab bersama antar asis-
ten laboratorium beserta dosen pembimbing. Selain dari itu, penilaian meliputi
penilaian selama pelaksanaan praktikum termasuk unsur sikap, keaktifan dan ke-
disiplinan, dan kualitas dan ketepatan waktu penyelesaian tugas.
10
1.4 Sanksi
PEMROGRAMAN KOMPUTER
Sanksi yang berlaku bagi praktikan adalah berikut ini:
(1) Tidak diperkenankan mengikuti praktikum apabila terlambat lebih dari 10 menit,
DEPARTEMEN TEKNIK SIPIL
(2) Tidak diperkenankan mengikuti praktikum selanjutnya apabila praktikan absen
(3) Nilai akhir laporan tugas akan dikurangi apabila terlambat dalam penyerahan
tugas.
11
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 2
Modul I Pengenalan akan Fortran
dan Matlab
2.2.1 Algoritma
Algoritma merupakan penjelasan terstruktur mengenai tahapan-tahapan penyelesa-
ian suatu permasalahan. Tahapan dibuat berdasarkan urutan/prioritasnya. Prose-
dur yang memiliki urutan terutama atau yang lebih dahulu dikerjakan harus ditem-
patkan teratas. Dengan adanya algoritma ini, pembuatan program akan mengikuti
tahapan-tahapan ini.
Sebagai contoh, sebuah program bertujuan untuk menghitung luas dan keliling
12
2.2 Dasar teori
MODUL PRAKTIKUM
lingkaran. Persamaan dari luas, A, dan keliling lingkaran, p, adalah berikut:
Perlu dicatat bahwa untuk program ini, langkah (1) bisa diubah urutannya menjadi
langkah (2). Namun, baik langkah (1) dan (2) perlu dilakukan sebelum langkah (3).
Contoh kedua adalah sebuah program yang bertujuan untuk menghitung biaya
pembuatan beberapa struktur kolom berbentuk silinder atau balok. Perhitungan
biayanya, B, adalah berikut:
dimana N adalah jumlah kolom, CP V adalah cost per volume atau biaya per satu
satuan volume, H tinggi kolom, R jari-jari kolom silinder dan w lebar penampang
kolom balok.
Persamaan (2.3)-(2.4) mengindikasikan bahwa data input yang diperlukan adalah
R untuk kolom silinder, w, untuk kolom balok, N dan CP V serta H untuk semua
jenis kolom. Dengan demikian, algoritma perhitungannya adalah seperti di bawah
ini.
13
2.2 Dasar teori
MODUL PRAKTIKUM
(3) Tentukan jenis kolom,
PEMROGRAMAN KOMPUTER
(4) Hitung nilai B:
(a) Jika silinder, defenisikan nilai R dan hitung B sesuai Persamaan (2.3),
DEPARTEMEN TEKNIK SIPIL
(b) Jika balok, defenisikan nilai w dan hitung B sesuai Persamaan (2.4).
N ! = N x (N − 1) x (N − 2) x (N − 3) ...x 3x 2x 1. (2.5)
14
2.2 Dasar teori
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
Diagram alir untuk program yang menghitung biaya pembuatan beberapa struk-
tur kolom ditunjukkan pada Gambar 2.2. Pada diagram alir ini, simbol decision
digunakan untuk menentukan cara perhitungan volume dari kolom. Selain dari itu,
terdapat dua halaman yang dipakai untuk menampilkan diagram alir tersebut. Den-
gan demikian, simbol titik konektor yang berada pada halaman lain perlu digunakan.
GAMBAR 2.2: Diagram alir untuk perhitungan biaya pembuatan kolom sebanyak N .
15
2.2 Dasar teori
MODUL PRAKTIKUM
Untuk contoh soal perhitungan faktorial, N !, Gambar 2.3 menunjukkan diagram
alirnya. Perhitungan berulang ditunjukkan lewat alur proses pada diagram alir terse-
PEMROGRAMAN KOMPUTER
but. Dalam hal ini, simbol decision digunakan untuk mengindikasikan perhitungan
berulang. Selain dari itu, simbol titik konektor juga digunakan.
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
(1) nama program adalah nama program yang ditentukan sendiri oleh pembuat
program,
16
2.2 Dasar teori
MODUL PRAKTIKUM
(2) Penentuan nama program merupakan kombinasi dari huruf kecil dan besar
dari a sampai z, angka dari 0 sampai 9, dan karakter seperti , $, dan @.
PEMROGRAMAN KOMPUTER
(3) Kalimat yang diawali dengan ! dianggap sebagai baris komentar sehingga tidak
(4) Setiap program yang diawali dengan program nama program harus diakhiri
UNIVERSITAS SUMATERA UTARA
dengan end program dengan nama program yang sama.
clear all
close all
clc
%Tuliskanlah komentar yang menjelaskan tujuan dari program ini
...
(1) clear all untuk menghapus semua memori komputer dari hasil perhitungan se-
belumnya,
(2) close all untuk menutup semua file visualisasi (plot) kurva hasil perhitungan
sebelumnya dan
(3) clc untuk menghapus rekam jejak hasil perhitungan sebelumnya yang dita-
mpilkan pada Command Window.
Dengan penggunaan statement pertama dan kedua di atas, kesalahan dalam perhi-
tungan yang dilakukan oleh komputer dapat terhindar. Hal ini terutama apabila
ada perhitungan yang menggunakan nama variabel yang sama.
17
2.2 Dasar teori
MODUL PRAKTIKUM
langan integer. Tipe variabel dan parameter yang diawali dengan huruf lain akan
diasumsikan sebagai bilangan real. Walau demikian, pendeklarasian tipe data se-
PEMROGRAMAN KOMPUTER
cara implisit ini dapat ditiadakan dengan penulisan sintaks implicit none setelah
pendefenisian nama programnya.
DEPARTEMEN TEKNIK SIPIL
Apabila implicit none digunakan, tipe data dari setiap variabel dan parameter
harus dideklarasikan. Khusus parameter, pendeklarasiannya harus disertai dengan
UNIVERSITAS SUMATERA UTARA
pendefenisian nilainya. Selain tipe variabel bilangan real dan integer, terdapat pula
tipe variabel karakter dan logika serta kompleks. Pendeklarasian masing-masing tipe
variabel dan parameter dapat dilihat sebagai berikut:
18
2.2 Dasar teori
MODUL PRAKTIKUM
Dalam penentuan nama variabel dan parameter pada bahasa pemrograman Fortran,
berikut hal yang perlu diperhatikan:
PEMROGRAMAN KOMPUTER
(1) Menggunakan huruf kecil atau besar dari a, .., z, kombinasi dengan angka 0, ...,
9 serta karakter lain pada keyboard seperti @, dan $,
DEPARTEMEN TEKNIK SIPIL
(2) Tidak menggunakan spasi antar karakter dan
19
2.2 Dasar teori
MODUL PRAKTIKUM
pendefenisian nilai dari suatu variabel pada Matlab diberikan di bawah ini.
PEMROGRAMAN KOMPUTER
clear all
close all
DEPARTEMEN TEKNIK SIPIL
clc
%Tuliskanlah komentar yang menjelaskan tujuan dari program ini
UNIVERSITAS SUMATERA UTARA
...
% Variabel dengan bilangan yang memiliki titik desimal
% secara otomatis dianggap sebagai variabel real
nama variabel1=5.0;
% Variabel di bawah ini secara otomatis dianggap sebagai variabel integer
nama variabel2=5;
...
Dalam penentuan nama variabel pada Matlab, berikut hal yang perlu diper-
hatikan:
(1) Menggunakan huruf kecil atau besar dari a, .., z dan kombinasi dengan angka 0,
..., 9 serta karakter ,
(3) Memakai huruf besar atau kecil berpengaruh terhadap nama variabel dan
(4) Menggunakan tanda ; pada setiap akhir baris pendefenisian nilai suatu variabel
berarti bahwa nilai variabel tersebut tidak akan ditampilkan pada Command Window.
20
2.2 Dasar teori
MODUL PRAKTIKUM
TABEL 2.1: Operator aritmatika pada Fortran dan Matlab
Operasi Fortran Matlab Prioritas
Program lingkaran
! Program ini bertujuan untuk menghitung luas dan keliling sebuah lingkaran
implicit none
! Deklarasikan jari-jari, R, luas, A, dan keliling, p, sebagai variabel real
real::R, A, p
! Deklarasikan pi sebagai parameter real beserta nilainya
real, parameter::pi=3.14
! Defenisikan nilai R
R=2.0 ! misalnya R sebesar 2
! Hitung luas, A
A=pi*R**2 ! operator perkalian dan pangkat digunakan
! Hitung keliling, p
p=2.0*pi*R ! operator perkalian digunakan
! Tampilkan nilai A dan p dengan perintah print
print*, ”A”, A, ”p”, p
end program lingkaran
Untuk program yang bertujuan sama, penulisannya dalam Matlab adalah sebagai
21
2.2 Dasar teori
MODUL PRAKTIKUM
berikut:
PEMROGRAMAN KOMPUTER
clear all
close all
DEPARTEMEN TEKNIK SIPIL
clc
%Program ini bertujuan untuk menghitung luas dan keliling sebuah lingkaran
UNIVERSITAS SUMATERA UTARA
% Defenisikan nilai jari-jari, R
R=2.0; % misalkan R bernilai 2
% Defenisikan nilai pi
pi=3.14;
% Hitung luas, A
A=pi*Rˆ 2; ! operator perkalian dan pangkat digunakan
% Hitung keliling, p
p=2.0*pi*R; ! operator perkalian digunakan
diperhatikan bahwa nilai x pada fungsi trigonometri di atas baik pada bahasa pemro-
22
2.2 Dasar teori
MODUL PRAKTIKUM
graman Fortran maupun Matlab dianggap dalam satuan radian. Dengan demikian,
apabila x bukan dalam satuan ini, x perlu dikonversikan ke dalam satuan radian
PEMROGRAMAN KOMPUTER
sebelum memanggil fungsi trigonometri tersebut.
Fungsi-fungsi pada tabel tersebut bisa dikombinasikan dengan operator arit-
DEPARTEMEN TEKNIK SIPIL
matika. Misalnya, untuk mengekspresikan persamaan berikut:
...
y=sin (x+ 2*π)
z= log ((x+2)/y)
z=exp(sinh(x))
...
Hampir sama pada Matlab juga demikian, kecuali di tiap baris diakhiri dengan tanda
; jika nilai hasil perhitungan fungsi tersebut tidak ingin ditampilkan pada Com-
mand Window. Hal ini sejalan dengan yang ditunjukkan pada Tabel 2.2. Namun,
untuk fungsi-fungsi lain, hal tersebut belum tentu berlaku.
23
2.2 Dasar teori
MODUL PRAKTIKUM
TABEL 2.3: Operator hubungan pada Fortran dan Matlab
Hubungan Fortran Matlab
PEMROGRAMAN KOMPUTER
Lebih kecil dari
Lebih kecil dari atau sama dengan
<
<=
<
<=
rograman Fortran:
x ≥ 3, (2.9)
y = 4, (2.10)
z ̸= 7, (2.11)
...
x >= 3
y == 4
z/=7
...
...
x >= 3;
y == 4;
z∼=7;
...
24
2.2 Dasar teori
2.2.8MODUL PRAKTIKUM
Operator logika
PEMROGRAMAN KOMPUTER
Tipe logika hanya memiliki dua nilai yang berbeda yaitu: .true. dan .false. Vari-
abel logika bisa dioperasikan berdasarkan operator logika. Tabel 2.4 menunjukkan
− 5 ≤ x ≤ 10, (2.12)
y
| | ≥ 4, (2.13)
z
x2 + yz < 2 and x − y ≥ 5, (2.14)
sin x + cosh(yz) < tanh(x) or tan(x − y) ≥ e2x . (2.15)
...
x>=-5 .and. x<=10
y/z<=-4 .or. y/z>=4
(x**2 + y*z) < 2 .and. (x-y) >=5
(sin(x) + cosh(y*z)) < tanh(x) .or. tan(x-y)>=exp(2*x)
...
25
2.3 Latihan
MODUL PRAKTIKUM
Sedangkan pada Matlab, penulisannya dapat dilihat di bawah ini.
PEMROGRAMAN KOMPUTER
...
x>=-5 && x<=10
DEPARTEMEN TEKNIK SIPIL
y/z<=-4 || y/z>=4
(x**2 + y*z) < 2 && (x-y) >=5
UNIVERSITAS SUMATERA UTARA
(sin(x) + cosh(y*z)) < tanh(x) || tan(x-y)>=exp(2*x)
...
2.3 Latihan
(1) Buatlah program yang bertujuan menghitung persamaan berikut:
sin (π/2 − x)
y= , dimana x = 1.z. (2.16)
|ex sin z |
dan y adalah bilangan integer. Dalam hal ini, konversikan bilangan real menjadi
bilangan integer.
−2 ≤ xz + sinh x ≤ 8, (2.18)
| arcsin(2x − z)| ≥ x, (2.19)
zx − y z
̸= x cosh (y + z) . (2.20)
2y
(4) Tentukanlah nilai dari setiap sintaks dalam bahasa pemrograman Fortran berikut
26
2.3 Latihan
MODUL PRAKTIKUM
apakah .true. atau .false.:
PEMROGRAMAN KOMPUTER
(x>=-5 .and. x<=10).or. (y>=-5.or. y<=-10)
x/z<=-4 .or. y/z>=4
DEPARTEMEN TEKNIK SIPIL
(sin(x) + cosh(z)) < tanh(x) .or. tan(x-z)>=exp(2*x)
x-z .not.-1000
UNIVERSITAS SUMATERA UTARA
dimana x = 5.z dan y = 2.z. Tuliskanlah persamaan-persamaan tersebut ke
dalam bahasa pemrograman Matlab.
(c) Setiap soal (1)-(3) dikerjakan dengan menggunakan bahasa pemrograman For-
tran dan Matlab.
27
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 3
Modul II Matriks
(1) Memahami variabel array satu dan dua dimensi untuk mendefenisikan vektor
dan matriks,
28
3.2 Dasar teori
PEMR
3.2.1 OGRA
Pendeklarasian MAN
variabel arrayKOMPUTER
Untuk mendefenisikan sebuah matriks atau vektor, variabel array perlu dideklarasikan
DEPARTEMEN TEKNIK SIPIL
di awal sebuah program. Hal ini berlaku baik pada program dengan menggunakan
bahasa Matlab maupun Fortran. Variabel array adalah sebuah variabel yang memi-
UNIVERSITAS SUMATERA UTARA
liki jumlah data atau nilai lebih dari satu dan tipe dari setiap datanya adalah sama.
Sebuah variabel array bisa berupa satu dimensi seperti pada vektor dalam matem-
atika, ataupun dua dimensi untuk pendefenisian sebuah matriks. Pada penggunaan
Fortran, variabel array bisa didefenisikan sampai kepada tujuh dimensi. Berikut
adalah contoh pendeklarasian variabel array dengan tipe data real ataupun integer
dalam bahasa Fortran 95.
! Pendeklarasian variabel array satu dimensi (vektor) dengan tipe data real
real, dimension (jumlah elemen1) :: nama variabel1
! Pendeklarasian variabel array dua dimensi (matriks) dengan tipe data integer
integer, dimension (jumlah elemen1, jumlah elemen2) :: nama variabel2
Nilai variabel jumlah elemen1 dan jumlah elemen2 pada pendeklarasian vari-
abel nama variabel2 tidak harus sama. Namun, untuk mendeklarasikan sebuah
matriks bujur sangkar, nilai kedua variabel ini tentulah harus sama. Dalam hal ini,
jumlah elemen pada vektor ataupun matriks berhubungan dengan jumlah data dari
variabel arraynya. Lebih lanjut lagi, tipe data integer ataupun real bisa digunakan
untuk dimensi variabel array yang manapun.
Tahap selanjutnya adalah pemberitahuan nilai dari tiap-tiap elemen pada vektor
dan matriks tersebut. Dalam bahasa Fortran, nilai ini dapat ditulis langsung pada
script programnya. Sebagai contoh, sebuah vektor A1x2 dan matriks B2x2 memiliki
elemen sebagai berikut:
h i 1 2.0
A = 1 −1.0 , B = . (3.1)
−1.5 1.0
Pemberitahuan nilai vektor dan matriks ini dilakukan setelah pendeklarasian variabel
29
3.2 Dasar teori
MODUL PRAKTIKUM
array, seperti yang dapat dilihat pada script di bawah ini.
PEMROGRAMAN KOMPUTER
Program latihan
! Program ini bertujuan untuk menginput nilai elemen dari
DEPARTEMEN TEKNIK SIPIL
! sebuah vektor dan matriks
implicit none
UNIVERSITAS SUMATERA UTARA
! Pendeklarasian tipe data untuk vektor A
real, dimension (2) :: A
! Pendeklarasian tipe data untuk matriks B
real, dimension (2,2) :: B
! Pemberian nilai-nilai elemen dari vektor A
A(1,1)=1.0
A(1,2)=-1.0
! Pemberian nilai-nilai elemen dari matriks B
B(1,1)=1.0
B(1,2)=2.0
B(2,1)=-1.5
B(2,2)=1.0
end program latihan
Pendeklarasian variabel array satu dimensi (vektor) dan dua dimensi (matriks)
dalam Matlab berbeda dengan cara di atas. Variabel array pada Fortran dideklarasikan
tanpa memberitahu nilai dari variabelnya, sedangkan nilai dari variabel array pada
Matlab didefenisikan bersamaan dengan pendeklarasiannya. Dari pendefenisian ini
dapat diketahui dimensi variabel array dan jumlah datanya. Berikut adalah contoh
pendeklarasian dan pemberian nilai dari sebuah vektor 1x2 dan matriks 2x2.
30
3.2 Dasar teori
MODUL PRAKTIKUM
Dalam hal ini, nama variabel1 merupakan sebuah nama vektor dan nama variabel2
adalah sebuah nama matriks. Penting untuk dicatat bahwa penggunaan tanda baca ;
PEMROGRAMAN KOMPUTER
pada pendeklarasian matriks menyatakan baris yang baru pada elemen matriks terse-
but. Nilai-nilai elemen dari vektor maupun matriks ditentukan dari nilai dari variabel
DEPARTEMEN TEKNIK SIPIL
elemen1, elemen2, elemen3 dan elemen4. Nilai variabel ini didefenisikan se-
belum pendeklarasian vektor dan matriks tersebut. Selain dari itu, nilai-nilai elemen
UNIVERSITAS SUMATERA UTARA
dari vektor atau matriks bisa juga didefenisikan bersamaan dengan pendeklarasian-
nya. Berikut adalah contoh pendeklarasian bersamaan dengan pendefenisian nilai
elemen dari vektor A1x2 dan matriks B2x2 dari Persamaan (3.1) dalam Matlab.
Adapun penggunaan tipe data real dapat dinyatakan dengan penggunaan titik des-
imal pada nilai-nilai ini.
(i) Deklarasikan tipe data variabel untuk vektor A1x4 , B1x4 dan E1x4 .
(ii) Deklarasikan tipe data variabel untuk matriks C4x4 , D4x4 dan F4x4 .
31
3.2 Dasar teori
MODUL PRAKTIKUM
(v) Lakukan perhitungan penjumlahan tiap elemen dari vektor A dan B pada
kolom ke-j, dimana Ej = Aj + Bj . Gunakan loop untuk langkah ini mulai dari
PEMROGRAMAN KOMPUTER
j = 1 sampai j = 4.
(vii) Hitung penjumlahan tiap elemen matriks C4x4 dan D4x4 , yaitu Fi,j , pada baris
UNIVERSITAS SUMATERA UTARA
pertama (i = 1) untuk semua kolom mulai dari j = 1 sampai j = 4:
(a) Gunakan persamaan berikut untuk indeks kolom j = 1: Fi,j = Ci,j + Di,j .
(b) Ulangi langkah (a) tersebut namun untuk j berikut sampai j terakhir, yaitu
j = 4. Gunakan do loop untuk melakukan pengulangan.
(viii) Ulangi langkah (vii) untuk indeks baris berikutnya sampai kepada indeks baris
terakhir, yaitu i = 4. Gunakanlah do loop untuk mengulangi langkah (vii).
...
! Pendeklarasian vektor A, B dan E
real, dimension (2) :: A, B, E
! Pendeklarasian matriks C, D dan F
real, dimension (2,2) :: C, D, F
! Pendeklarasian variabel indeks loop i dan j
integer :: i, j ! Ingat bahwa indeks loop haruslah bilangan integer
! Pemberian nilai-nilai elemen dari vektor A dan B
...
! Penjumlahan vektor A dan B menghasilkan vektor E
do i = 1, 2 ! loop diberi nama i
E(i) = A(i) + B(i) ! perhatikan indeks i sama dengan nama loop
end do
32
3.2 Dasar teori
MODUL PRAKTIKUM
! Pemberian nilai-nilai elemen dari matriks C dan D
...
PEMROGRAMAN KOMPUTER
! Penjumlahan matriks C dan D menghasilkan matriks F
Untuk pengurangan vektor atau matriks, prinsip di atas dapat digunakan. Namun,
perkalian matriks dengan menggunakan bahasa Fortran memerlukan pertimbangan
tambahan. Sebagai contoh, perkalian matriks, sebut saja matriks A3x4 dengan B4x3
yang menghasilkan matriks C3x3 , dapat dilakukan secara matematik seperti berikut:.
Persamaan (3.2) untuk menghitung elemen matriks pada baris ke-i dan kolom ke-j,
Ci,j , secara umum dapat diekspresikan sebagai berikut:
k=4
Ci,j = (3.3)
X
Ai,k Bk,j .
k=1
Dalam pembuatan script, perlu dipikirkan berapa jumlah loop yang dibutuhkan
33
3.2 Dasar teori
MODUL PRAKTIKUM
beserta indeks awal dan akhir loop tersebut. Selain itu, inisialisasi nilai-nilai elemen
dari matriks hasil perkalian, C3x3 , perlu dilakukan. Sebagai bagian dari latihan bagi
PEMROGRAMAN KOMPUTER
praktikan, script program perkalian matriks tidak dituliskan di sini. Namun, langkah
atau algoritmanya dapat dilihat di bawah ini.
DEPARTEMEN TEKNIK SIPIL
(i) Deklarasikan tipe data untuk matriks A3x4 , B4x3 dan C3x3 serta variabel relevan
(iii) Lakukan perhitungan elemen matriks Ci,j , pada baris pertama (i = 1) untuk
semua kolom mulai dari j = 1 sampai j = 3:
(b) Ulangi langkah (a) tetapi untuk indeks kolom berikutnya sampai kolom
terakhir, yaitu j = 3. Gunakanlah do loop untuk mengulangi langkah (a)
tersebut.
(iv) Ulangi langkah (iii) tetapi untuk indeks baris berikutnya sampai kepada indeks
baris terakhir, yaitu i = 3. Gunakanlah do loop untuk pengulangan.
34
3.2 Dasar teori
MODUL PRAKTIKUM
Apabila ukuran vektor atau matriks yang dijumlahkan tidak sama atau jumlah el-
emennya tidak sama, pesan error akan muncul pada CommandWindow. Dengan
PEMROGRAMAN KOMPUTER
prinsip yang sama ini, script untuk operasi pengurangan dan perkalian matriks da-
pat dibuat. Operator pengurangan pada Matlab adalah - dan operator perkalian
DEPARTEMEN TEKNIK SIPIL
adalah *.
UNIVE RSITA
3.2.3 Transpose S SUMATERA UTARA
matriks
Transpose dari sebuah matriks diperoleh dengan menukar posisi dari elemen dari
baris ke-i dan kolom ke-j dari suatu matriks menjadi elemen dari baris ke-j dan
kolom ke-i pada matriks transposenya. Sebagai contoh, sebuah matriks B2x2 dan
matriks transposenya, B2x2
T
, memiliki elemen-elemen berikut:
1.0 2.0 −3.2 5.0 1 2.0 −0.5 1.5
2.0 1.0 1.5 7.0 2.0 1.0 2.0 4.0
B= , BT = . (3.4)
−0.5 2.0 2.0 1.0 −3.2 1.5 2.0 −0.5
1.5 4.0 −0.5 1.5 5.0 7.0 1.0 1.5
T
Bi,j = Bj,i . (3.5)
Untuk pembuatan script pada Fortran, penggunaan do loop diperlukan agar elemen-
elemen dari matriks transpose dapat dihitung. Yang menjadi catatan adalah per-
timbangan jumlah loop yang diperlukan untuk operasi transpose ini. Berikut adalah
algoritma yang dapat digunakan:
(b) Gunakan do loop untuk mengulangi langkah (a) tetapi untuk indeks kolom
berikutnya sampai kolom terakhir, yaitu j = 4.
35
3.2 Dasar teori
MODUL PRAKTIKUM
(iii) Ulangi langkah (ii) tetapi untuk indeks baris berikutnya sampai kepada indeks
baris terakhir, yaitu i = 4. Gunakanlah do loop untuk pengulangan.
PEMROGRAMAN KOMPUTER
Operasi transpose sebuah matriks pada Matlab dapat dilakukan sekaligus tanpa
Pada script di atas, B trans adalah nama variabel dari hasil transpose matriks
dengan nama variabel B .
memiliki determinan, |A|. Dengan menggunakan aturan Sarrus, |A| dapat diten-
tukan dari selisih dan penjumlahan antara perkalian elemen-elemen pada diagonal
utama dengan perkalian elemen-elemen pada diagonal sekunder. Cara perhitungan-
nya adalah pertama-tama dengan meletakkan elemen-elemen matriks dari semua
kolom kecuali kolom terakhir di samping elemen-elemen matriks itu sendiri (lihat
Gambar 3.1). Kemudian selisih dan penjumlahan dari perkalian elemen-elemen di-
agonalnya dilakukan dengan memperhatikan tanda (+) dan (−) yang tertera pada
Gambar 3.1. Secara matematik, perhitungan determinan ini dapat ditulis sebagai
36
3.2 Dasar teori
|A| =A1,1 A2,2 A3,3 + A1,2 A2,3 A3,1 + A1,3 A2,1 A2,3
(3.7)
− A3,1 A2,2 A1,3 − A3,2 A2,3 A1,1 − A3,3 A2,1 A1,2 .
(i) Deklarasikan tipe data untuk matriks A3x3 , dan sebuah matriks baru dengan
ukuran 3x5, sebut saja B3x5 , serta variabel relevan lainnya.
(ii) Defenisikan elemen matriks A3x3 dan B3x5 . Dengan mengikuti Gambar 3.1,
matriks B ini dengan elemen-elemennya dapat dilihat pada persaman berikut.
B1,1 B1,2 B1,3 B1,4 B1,5 A1,1 A1,2 A1,3 A1,1 A1,2
= A2,1 A2,2 A2,3 A2,1 A2,2 .
B3x5 = B2,1 B2,2 B2,3 B2,4 B2,5
B3,1 B3,2 B3,3 B3,4 B3,5 A3,1 A3,2 A3,3 A3,1 A3,2
(3.8)
Untuk membuat matriks B3x5 ini, gunakan do loop dan pertimbangkan jumlah
loop yang diperlukan beserta indeks awal dan akhir dari loopnya.
(iv) Lakukan perhitungan pertama dari perkalian elemen matriks dengan tanda (+)
(lihat Gambar 3.1) dengan menggunakan persamaan berikut:
Gunakan do loop dan strategi inisialisasi untuk melakukan perkalian ini. Ten-
tukan jumlah loop, indeks awal dan indeks akhir dari loop yang digunakan.
37
3.2 Dasar teori
MODUL PRAKTIKUM
(v) Lakukan perhitungan perkalian elemen matriks dengan tanda (−). Tahap ini
dapat dimulai dari perkalian berikut:
PEMROGRAMAN KOMPUTER
f act2 = −B1,5 B2,4 B3,3 . (3.10)
DEPARTEMEN TEKNIK SIPIL
Gunakan juga do loop dan strategi inisialisasi untuk melakukan perkalian ini.
(vii) Ulangi perhitungan langkah (iv), (v) dan (vi) sampai semua perkalian dengan
tanda (+) dan (−) selesai (lihat Persamaan (3.7)). Gunakan do loop untuk
melakukan perhitungan berulang ini.
(viii) Tampilkan hasil terakhir variabel det sebagai nilai determinan dari matriks,
|A|.
38
3.2 Dasar teori
MODUL PRAKTIKUM
baris ke-i dan indeks kolom ke-j sebagai berikut:
PEMROGRAMAN KOMPUTER
A1,1 A1,2 ... A1,j ... A1,N −1 A1,N
A A2,2 ... A1,j ... A2,N −1 A2,N
2,1
(1) Penempatan sebuah matriks identitas dengan ukuran yang sama, yaitu IN xN ,
di samping matriks AN xN tersebut sehingga menghasilkan matriks A dengan
ukuran baru yaitu, AN x2N , dimana:
AN x2N =
A1,1 A1,2 ... A1,j ... A1,N −1 A1,N I1,1 I1,2 ... I1,j ... I1,N −1 I1,N
A A2,2 ... A1,j ... A2,N −1 A2,N I2,1 I2,2 ... I2,j ... I2,N −1 I2,N
2,1
... ... ... ... ... ... ... ... ... ... ... ... ... ...
Ai,1 Ai,2 ... Ai,j ... Ai,N −1 Ai,N Ii,1 Ii,2 ... Ii,j ... Ii,N −1 Ii,N
... ... ... ... ... ... ... ... ... ... ... ... ... ...
A AN −1,2 ... AN −1,j ... AN −1,N −1 AN −1,N IN −1,1 IN −1,2 ... IN −1,j ... IN −1,N −1 IN −1,N
N −1,1
AN,1 AN,2 ... AN,j ... AN,N −1 AN,N IN,1 IN,2 ... IN,j ... IN,N −1 IN,N
A1,1 A1,2 ... A1,j ... A1,N −1 A1,N 1 0 ... 0 ... 0 0
0 1 ... 0 ... 0 0
A A2,2 ... A1,j ... A2,N −1 A2,N
2,1
... ... ... ... ... ... ... ... ... ... ... ... ... ...
=
Ai,1 Ai,2 ... Ai,j ... Ai,N −1 Ai,N 0 ... 0 1
0 ... 0
.
... ... ... ... ... ... ... ... ... ... ... ... ... ...
0 0 ... 0 ... 1 0
A AN −1,2 ... AN −1,j ... AN −1,N −1 AN −1,N
N −1,1
AN,1 AN,2 ... AN,j ... AN,N −1 AN,N 0 0 ... 0 ... 0 1
(2) Pengubahan/pengkonversian elemen di bawah elemen diagonal A1,1 , A2,2 , ..., AN −1,N −1
menjadi nol. Dalam pengerjaan tahap ini, elemen yang berasal dari matriks iden-
titas yang lama, IN xN , juga mengalami konversi.
Tahapan konversi ini dimulai dari baris kedua, i = 2, dan kolom kesatu, j = 1.
39
3.2 Dasar teori
MODUL PRAKTIKUM
A2,1 diubah nilainya menjadi nol dengan menggunakan persamaan berikut:
A3,1
A3,1 = A3,1 − A1,1 . (3.15)
A1,1
Agar berlaku untuk setiap kolom (j = 1, 2, ..., 2N ), pada baris ketiga (i = 3),
persamaan di atas dituliskan menjadi:
Persamaan di atas digunakan untuk semua kolom j pada suatu baris, i. Setelah
ini selesai, persamaan yang sama digunakan untuk baris i yang berikutnya.
Langkah berikutnya adalah menolkan setiap elemen yang berada pada baris i
40
3.2 Dasar teori
MODUL PRAKTIKUM
di bawah elemen pivot kedua, yaitu A2,2 . Sama seperti sebelumnya, persamaan
yang berlaku untuk tiap baris ke-i dari i = 3, 4, ..., N dan tiap kolom ke-j dari
PEMROGRAMAN KOMPUTER
j = 2, 3, ..., 2N diekspresikan sebagai berikut:
Berdasarkan Persamaan (3.18) dan (3.19), untuk setiap tahap pengenolan elemen
pada baris ke-i di bawah suatu elemen pivot, Bk,k , persamaan yang berlaku pada
semua kolom j pada baris tersebut adalah berikut ini.
Dalam hal ini indeks elemen pivot, k, berlaku mulai dari 1, 2, ..., N − 1, dimana
untuk tiap k, indeks baris, i, berlaku mulai i = k + 1, k + 2, ..., N , dan untuk
tiap i, indeks kolom, j, berlaku mulai dari j = k, k + 1, ..., 2N . Tahapan di atas
akan menghasilan matriks AN,2N sebagai berikut:
AN x2N =
A1,1 A1,2 ... A1,j ... A1,N −1 A1,N I1,1 I1,2 ... I1,j ... I1,N −1 I1,N
0 A∗2,2 ... A∗1,j ... A∗2,N −1 A∗2,N ∗ ∗ ∗ ∗ ∗
I2,1 I2,2 ... I2,j ... I2,N −1 I2,N
0 0 ... ... ... ... ... ... ... ... ... ... ... ...
= 0 0 0 A∗i,j ... A∗i,N −1 A∗i,N ∗
Ii,1 ∗
Ii,2 ... ∗
Ii,j ... ∗
Ii,N ∗
Ii,N .
−1
0 0 0 0
... ... ... ... ... ... ... ... ... ...
0 0 0 0 0
A∗N −1,N −1 A∗N −1,N IN∗ −1,1 IN∗ −1,2 ... IN∗ −1,j ... IN∗ −1,N −1 ∗
IN −1,N
0 0 0 0 0 0 A∗N,N ∗
IN,1 ∗
IN,2 ... ∗
IN,j ... ∗
IN,N −1
∗
IN,N
Perhatikan bahwa elemen di bawah elemen diagonal telah bernilai nol dan tanda
* mengindikasikan elemen hasil konversi dan bukan lagi elemen aslinya.
(3) Pengubahan/pengkonversian elemen di atas elemen diagonal A∗2,2 , A∗3,3 , ..., A∗N,N
menjadi nol. Sama seperti tahap sebelumnya, bagian dari matriks identitas juga
dikonversi. Tahap ini dimulai dari indeks elemen pivot terbawah, k = N sampai
dengan teratas, k = 2. Pertama adalah pengenolan elemen A∗N −1,N dimana
41
3.2 Dasar teori
MODUL PRAKTIKUM
elemen pivotnya adalah, A∗N,N , dengan menggunakan persamaan berikut ini.
Untuk tiap elemen pada baris i = N − 1 dan tiap kolom mulai dari j = 1 sampai
UNIVERSITAS SUMATERA UTARA
j = 2N , Persamaan (3.22) diekspresikan menjadi:
42
3.2 Dasar teori
MODUL PRAKTIKUM
Tahapan di atas akan menghasilan matriks AN,2N sebagai berikut:
PEMROGRAMAN KOMPUTER
AN x2N =
A1,1 0 ... 0 ... 0 0 ∗∗
I1,1 ∗∗
I1,2 ... ∗∗
I1,j ... ∗∗
I1,N −1
∗∗
I1,N
Perhatikan bahwa elemen di atas elemen diagonal telah bernilai nol dan tanda
** mengindikasikan elemen hasil konversi kedua setelah konversi pertama se-
belumnya.
43
3.3 Latihan
MODUL PRAKTIKUM
Langkah yang sama dapat diterapkan pada Matlab untuk menghitung inverse
dari suatu matriks. Selain dari cara ini, terdapat pula fungsi khusus untuk menghi-
PEMROGRAMAN KOMPUTER
tung inverse matriks pada Matlab, inv, yang ditulis seperti di bawah ini:
3.3 Latihan
Untuk soal (1)-(4), buatlah satu program yang tujuannya melakukan
(3) Pendefenisian nilai elemen dari sebuah matriks baru E, dimana elemennya iden-
tik dengan elemen matriks C, kecuali elemen diagonal matriks E bernilai 1.z
dan
h i
(4) Operasi aritmatika matriks dari CT x E − A.
(5) Suatu sistem terdiri dari lima pegas dengan masing-masing kekakuan sebesar,
k1 = k2 = k3 = k4 = k5 = k6 = k7 = k8 = k9 = k10 = 1.zN/m, dan massa masing
sebesar m1 = m2 = m3 = m4 = m5 = m6 = m7 = m8 = m9 = m10 = 2.zkg
seperti terlihat pada Gambar 3.2. Dengan mempertimbangkan kesetimbangan
44
3.3 Latihan
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
GAMBAR 3.2: Sebuah sistem dengan sepuluh pegas dan sepuluh massa.
K − ω2M = 0 (3.28)
45
3.3 Latihan
MODUL PRAKTIKUM
Buatlah program yang menghitung matriks kekakuan, K, dan matriks massa, M,
serta mengevaluasi apakah frekuensi alamiah sistem bernilai ω = 0.z. Petunjuk:
PEMROGRAMAN KOMPUTER
Evaluasi nilai determinan dari K − ω 2 M.
(a) Wajib implementasikan DO LOOP structure dan variabel array untuk setiap
UNIVERSITAS SUMATERA UTARA
operasi aritmatika matriks pada bahasa pemrograman Fortran,
(c) Gunakan fungsi-fungsi intrinsik dan sintaks operasi aritmatika matriks pada
Matlab,
(d) Untuk soal (5), manfaatkan pola berulang pada elemen matriks kekakuan dan
massa untuk mendefenisikan kedua matriks tersebut dengan efektif.
46
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 4
Modul III Akar persamaan
(2) Menerapkan kombinasi antara operasi hubungan, operasi logika serta operasi
artimatika pada struktur IF ELSE dan
47
4.2 Dasar teori
PEMR
4.2.1 StrukturOGRA
IF ELSE MAN KOMPUTER
Struktur IF ELSE digunakan untuk mengatur alur pemrograman berdasarkan kon-
DEPARTEMEN TEKNIK SIPIL
disi yang telah ditetapkan terlebih dahulu. Sintaks dari struktur IF ELSE ditun-
jukkan di bawah ini.
UNIVERSITAS SUMATERA UTARA
IF (kondisi1) THEN
! Program akan melakukan setiap perintah di sini jika kondisi1 terpenuhi
...
ELSE IF (kondisi2) THEN
! Program akan melakukan setiap perintah di sini jika kondisi2 terpenuhi
...
ELSE IF (kondisi3) THEN
! Program akan melakukan setiap perintah di sini jika kondisi3 terpenuhi
...
ELSE
! Program akan melakukan setiap perintah di sini jika baik kondisi1,
! kondisi2, kondisi3 tidak ada yang terpenuhi
...
END IF
Beberapa hal yang perlu dicatat dalam penerapan sintaks struktur IF ELSE adalah:
(1) Setiap IF harus diikuti dengan THEN dan diakhiri dengan END IF,
(2) Jumlah ELSE IF tidak terbatas sebanyak dua tetapi bisa lebih dan
(3) Penetapan kondisi bisa menggunakan operator aritmatika, operator logika, op-
erator hubungan, fungsi intrinsik serta kombinasi antar operator dan fungsi in-
trinsik.
48
4.2 Dasar teori
MODUL PRAKTIKUM
Contoh kondisi yang menggunakan Persamaan (2.12)-(2.14) dan diterapkan pada
struktur IF ELSE, diberikan di bawah ini:
PEMROGRAMAN KOMPUTER
IF ( x>=-5 .and. x<=10 ) THEN
DEPARTEMEN TEKNIK SIPIL
...
ELSE IF ( y/z<=-4 .or. y/z>=4 ) THEN
UNIVERSITAS SUMATERA UTARA
...
ELSE IF ( (x**2+y*z)<2 .and. (x-y)>=5 ) THEN
...
ELSE IF ( (sin(x) + cosh(y*z)) < tanh(x) .or. tan(x-y)>=exp(2*x) ) THEN
...
ELSE
...
END IF
DO WHILE (kondisi)
! Program akan melakukan setiap perintah di sini jika kondisi terpenuhi
...
END DO
Beberapa hal yang perlu dicatat dalam penerapan sintaks struktur DO WHILE
adalah:
(2) Penetapan kondisi bisa menggunakan operator aritmatika, operator logika, op-
erator hubungan, fungsi intrinsik dan kombinasi antar operator serta fungsi in-
trinsik.
49
4.2 Dasar teori
MODUL PRAKTIKUM
Berikut beberapa contoh kondisi yang menunjukkan kombinasi antar operator dan
fungsi intrinsik pada struktur DO WHILE:
PEMROGRAMAN KOMPUTER
DO WHILE ( x>=-5 .and. x<=10 )
DEPARTEMEN TEKNIK SIPIL
...
END DO
UNIVERSITAS SUMATERA UTARA
...
DO WHILE ( (sin(x) + cosh(y*z)) < tanh(x) .or. tan(x-y)>=exp(2*x) )
...
END DO
...
1
xr = (xa + xb ) . (4.1)
2
Nilai xr yang baru perlu dicari dengan dasar logis bahwa suatu akar persamaan
berada di antara suatu selang baru di antara batas bawah, xb , dan batas atas, xa ,
dimana hasil perkalian f (xb ) f (xa ) ≤ 0. Gambar 4.1(b) menunjukkan bahwa hasil
perkalian negatif ini dipenuhi pada interval xb ≤ x ≤ x(1)
r karena f (xb ) f xr
(1)
≤ 0.
50
4.2 Dasar teori
MODUL PRAKTIKUM
f(x) f(x)
PEMROGRAMAN KOMPUTER
xb xr xb xr
DEPARTEMEN TEKNIK SIPIL xa x xa x
x(1)
r =1/2 ( xb+xa)
xb xr xb xr
xa x xa x
x(2) x(3)
r =1/2 ( xb+xa)
r =1/2 ( xb+xa)
(c) (d)
GAMBAR 4.1: Tahapan dalam pencarian akar persamaan dengan menggunakan metode Bisec-
(1)
tion: (A) Perkiraan awal batas bawah, xb , dan batas atas, xa , (B) Estimasi pertama, xr , (C)
(2) (3)
Estimasi kedua, xr , dan (C) Estimasi ketiga akar persamaan, xr .
r . Estimasi kedua
Dengan demikian, batas atas perlu diperbaharui menjadi xa = x(1)
dari akar persamaan, x(2)
r , kembali dihitung sebagai titik tengah dari batas atas dan
batas bawah yang baru (lihat Persamaan (4.1)). Kemudian, pengecekan terhadap
kebenaran estimasi ini dilakukan dengan mengikuti prosedur sebelumnya. Gambar
4.1(c) mengilustrasikan bahwa persyaratan f x(2)
r ≈ 0 belum terpenuhi. Gambar
ini juga menunjukkan bahwa estimasi ketiga berada di antara x(2)
r dan xa karena
f x(2)
r f (xa ) ≤ 0. Dengan demikian, estimasi akar ketiga, x(3)
r , perlu dihitung
seperti sebelumnya. Gambar 4.1(d) menunjukkan bahwa nilai fungsi dari estimasi
akar semakin mencapai kondisi yang diinginkan, yaitu f x(3)
r ≈ 0. Langkah ini
terus diulang sampai salah satu dari kriteria berikut tercapai.
|f x(i)
r | ≤ tol, (4.2)
|x(i) (i−1)
r − xr | ≤ tol, (4.3)
dimana i adalah indeks iterasi estimasi yang terbaru dan tol adalah suatu nilai
51
4.2 Dasar teori
MODUL PRAKTIKUM
toleransi yang ditetapkan dan yang nilainya dianggap cukup kecil, misalnya 10−5 .
Terkadang pemilihan xa dan xb di awal perhitungan tidak tepat sehingga tidak
PEMROGRAMAN KOMPUTER
ada akar persamaan pada selang tersebut. Jika demikian, perlu pendefenisian ulang
nilai xa dan xb . Hal lain yang perlu dipertimbangkan adalah konvergensi yang lam-
DEPARTEMEN TEKNIK SIPIL
bat, yaitu suatu kondisi dimana jumlah iterasi yang telah dilakukan sangat banyak
padahal kriteria pada Persamaan (4.2) atau (4.3) tetap belum terpenuhi. Dalam
UNIVERSITAS SUMATERA UTARA
kondisi demikian, jumlah iterasi untuk mengestimasi akar persamaan perlu dibatasi.
Berdasarkan konsep yang telah dijabarkan di atas, program yang mengimplemen-
tasikan metode Bisection dapat dibuat ke dalam bahasa Fortran. Algoritma yang
dipakai sebelum membuat scriptnya adalah sebagai berikut:
(i) Deklarasikan tipe data variabel batas bawah, xb , batas atas, xa , kriteria tol-
eransi, tol, dan jumlah maksimum iterasi, N , serta variabel-variabel relevan
lainnya.
(iv) Lakukan pengecekan apakah kondisi f (xa ) f (xb ) ≤ 0 terpenuhi. Dua kondisi
yang memungkinkan adalah:
(a) Jika kondisi f (xa ) f (xb ) ≤ 0 tidak terpenuhi, berikan pesan di layar bahwa
pemilihan xa dan xb masih salah atau tidak ada akar pada selang xb ≤ x ≤
xa ini. Akhiri program pencarian akar persamaan ini.
samaan (4.1).
(vi) Cek kebenaran estimasi ini dengan mengevaluasi apakah kondisi dari Per-
samaan (4.2) dan (4.3) sudah terpenuhi serta jumlah maksimum iterasi, N ,
belum terlewati.
(vii) Jika belum terpenuhi, lakukan estimasi kedua akar persamaan, x(2)
r , dengan
menentukan terlebih dahulu interval yang baru yang memenuhi salah satu kon-
disi berikut:
52
4.2 Dasar teori
MODUL PRAKTIKUM
(a) Apabila kondisi f (xb ) f x(1)
r
≤ 0 terpenuhi, batas atas baru adalah xa =
r .
x(1)
PEMROGRAMAN KOMPUTER
(b) Apabila kondisi f x(1)
r
f (xa ) ≤ 0 terpenuhi, batas bawah baru adalah
r .
xb = x(1)
DEPARTEMEN TEKNIK SIPIL
Hitunglah estimasi kedua akar persamaan, x(2)
r , dengan batas atas/bawah yang
(viii) Perbaharui nilai indeks iterasi dengan menambah satu nilai terakhirnya.
(ix) Ulangi langkah (vi) sampai seterusnya. Gunakan do while untuk melakukan
iterasi ini.
(x) Tampilkan jumlah iterasi dan akar persamaan sebagai langkah akhir.
Langkah di atas juga dapat diterapkan pada Matlab. Yang perlu dicatat adalah
bahwa langkah (i) tidak perlu dilakukan pada bahasa pemrograman ini.
′
f x(1)
r −0
f x(1)
r = (1) (2)
. (4.4)
xr − xr
53
4.2 Dasar teori
MODUL PRAKTIKUM
f(x) gradien= f '(x(1)
r )
f(x)
gradien= f '(x(2)
r )
PEMROGRAMAN KOMPUTER
f(x(1)
r )
f(x(2)
DEPARTEMEN TEKNIK SIPIL
f(x(2)
r )
xr
x
r )
f(x(3)
r )
xr
x
x(2)
r x(1) x(3)
r xr
(2)
(a) (b)
GAMBAR 4.2: Tahapan dalam pencarian akar persamaan dengan menggunakan metode Newton-
(1) (2)
Raphson: (A) Estimasi pertama, xr , dan (B) Estimasi kedua akar persamaan, xr .
tungan estimasi ketiga akar persamaan harus dilakukan. Gambar 4.2(a) menun-
jukkan secara kualitatif bahwa persyaratan tersebut belum dipenuhi. Fungsi dari
estimasi kedua, f x(2)
r , masih belum mendekati nilai nol. Sebaliknya, Gambar
4.2(b) mengilustrasikan bahwa estimasi ketiga akar persamaan, x(3)
r , memiliki nilai
fungsi yang semakin mendekati nol, f x(3)
r ≈ 0. Selain itu, estimasi ketiga ini
semakin mendekati akar persamaan yang sebenarnya, xr .
Sama seperti pada metode Bisection, kondisi konvergensi yang lambat juga mungkin
terjadi karena ketidaktepatan pemilihan estimasi pertama atau tidak adanya akar
persamaan dari fungsi tersebut. Untuk mengantisipasi hal ini, jumlah maksimum it-
erasi juga perlu didefenisikan. Catatan tambahan mengenai metode Newton-Raphson
adalah berkenaan dengan pembagian pada Persamaan (4.5). Apabila estimasi per-
tama, x(1)
r , merupakan nilai maksimum atau minimum dari suatu fungsi f (x), tu-
′
runan fungsinya, f x(1)
r , bernilai nol. Hal ini akan menyebabkan estimasi kedua
akar persamaan, x(2)
r , bernilai tak terhingga. Tentunya hal ini perlu dihindari den-
gan melakukan pengecekan nilai turunan fungsinya sebelum melakukan setiap per-
hitungan estimasi baru. Apabila nilai turunan fungsinya bernilai nol, pendefenisian
estimasi pertama akar persamaan perlu diulang atau program dihentikan segera.
Berdasarkan konsep di atas, algoritma untuk membuat program yang menges-
timasi akar dari suatu persamaan dengan menggunakan metode Newton-Raphson
dapat ditulis berurut seperti berikut:
(i) Deklarasikan tipe data variabel estimasi pertama akar persamaan, x(1)
r , kriteria
54
4.2 Dasar teori
PEMROGRAMAN KOMPUTER
(iii) Inisialisasi nilai indeks iterasi pertama.
(iv) Cek apakah kondisi dari Persamaan (4.2) sudah terpenuhi. Jika sudah ter-
DEPARTEMEN TEKNIK SIPIL
penuhi, akhiri program tersebut.
(a) Nilai turunan lebih kecil dari nilai toleransi tersebut. Jika demikian, beri
pesan di layar bahwa terjadi pembagian dengan bilangan yang mendekati
nol, akhiri program atau defenisikan ulang estimasi pertama akar per-
samaan.
(b) Nilai turunan lebih besar dari nilai nol atau nilai toleransi yang telah dite-
tapkan. Jika demikian, lakukanlah langkah berikut:
Algoritma di atas dapat diterapkan baik pada Fortran maupun Matlab. Khusus
untuk Matlab, pendeklarasian variabel pada langkah (i) diabaikan.
(i) fzero berfungsi mencari akar persamaan dari suatu fungsi f (x) pada satu
lokasi. Fungsi ini bisa berupa fungsi polinomial, fungsi trigonometri atau yang
55
4.2 Dasar teori
MODUL PRAKTIKUM
lainnya. Script yang dapat dipakai untuk tujuan ini adalah seperti tertulis di
bawah:
PEMROGRAMAN KOMPUTER
% Perhitungan akar persamaan dari suatu fungsi f(x)
DEPARTEMEN TEKNIK SIPIL
x=fzero(fun, x0)
(ii) roots mengestimasi akar-akar persamaan dari suatu fungsi polinomial. Sebagai
contoh, sebuah fungsi polinomial orde 2 dengan persamaan f (x) = ax2 +
bx + c, dimana a, b dan c adalah koefisien-koefisien polinomialnya. Akar-akar
persamaannya dapat dicari dengan menggunakan script pada Matlab sebagai
berikut:
56
4.3 Latihan
MODUL PRAKTIKUM
harus berurut dan dimulai dari koefisien pangkat polinomial terbesar sampai
terkecil.
PEMROGRAMAN KOMPUTER
4.3 Latihan
DEPARTEMEN TEKNIK SIPIL
Dengan menerapkan algoritma yang telah dijabarkan sebelumnya, buatlah
UNIVERSITAS SUMATERA UTARA
empat program yang masing-masing bertujuan untuk menghitung:
(1) Akar dari persamaan f (x) = 2x2 − z dalam selang xb = 0 dan xa = z, dengan
kriteria toleransi, tol, adalah 10−z dan jumlah maksimum iterasi, N , sebesar 100.
Gunakan metode Bisection dan metode Newton-Raphson dalam bahasa
pemrograman Fortran untuk menghitung sebuah akar persamaan fungsi f (x).
(2) Akar-akar dari persamaan f (x) = 2.z cos x − 1 dalam selang xb dan xa , dengan
kriteria toleransi, tol, adalah 10−z dan jumlah maksimum iterasi, N , sebesar 100.
Gunakan metode Newton-Raphson dalam bahasa pemrograman Fortran un-
tuk mengetahui dan menampilkan dua buah akar dalam satuan radian pada
selang tersebut serta jumlah iterasi yang telah digunakan.
(3) Akar-akar dari persamaan f (x) = x5 + 2x2 − z dengan toleransi galat re-
latif, tol, adalah 10−z dan jumlah maksimum iterasi, N , sebesar 100. Gunakan
metode Bisection dalam bahasa pemrograman Fortran untuk mengetahui dan
menampilkan minimal nilai dua buah akar dan jumlah iterasi yang telah di-
pakai.
(4) Tinggi muka air, d, yang ditahan oleh sebuah beban dengan berat, w, dan se-
buah pintu air dengan sistem sendi (hinge), di mana ketinggian pintu, H dan
lebarnya, b. Gambar 4.3 menunjukkan bahwa beban w ini dipasang sejauh jarak
L dari sendi. Pada awalnya pintu air tidak terbuka karena kesetimbangan mo-
men akibat gaya hidrostatis, FHS , yang bekerja pada pintu air dan gaya berat
dari beban, Fg . Namun, seiring dengan pertambahan tinggi muka air, pintu da-
pat terbuka. Dengan menggunakan prinsip kesetimbangan momen, persamaan
tinggi muka air, d, ketika pintu air mulai terbuka dapat dinyatakan sebagai
berikut:
2 WL
d2 = (4.6)
ρgb H − d/3
57
4.3 Latihan
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
GAMBAR 4.3: Sebuah sistem pintu air dengan pemberat.
(b) Pada soal (1), jika z = 0 maka diganti menjadi 5 (untuk fungsi f (x)),
(d) Pada soal (3), jika z = 0; 1 maka diganti menjadi 8; 9 (untuk fungsi f (x)),
(e) Pada soal (1)-(4), penetapan nilai z pada tol adalah sesuai NIM, kecuali jika
z = 0; 1; 2 maka diganti menjadi 11; 12; 13.
(f) Pada soal (1)-(4), gunakan pula fungsi fzero pada Matlab untuk menghitung
semua akar persamaan fungsi f (x),
(g) Wajib menerapkan IF ELSE dan DO WHILE structure untuk semua soal.
58
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 5
Modul IV Integrasi numerik
59
5.2 Dasar teori
MODUL PRAKTIKUM
Suatu IF ELSE dikatakan bersarang apabila berada di dalam suatu struktur IF
ELSE yang lain. IF ELSE bersarang tersebut bisa berada di dalam IF, ELSE IF,
PEMROGRAMAN KOMPUTER
ataupun ELSE seperti contoh di bawah ini.
60
5.2 Dasar teori
5.2.2MODUL PRAKTIKUM
Kombinasi IF ELSE dan DO LOOP
PEMROGRAMAN KOMPUTER
Struktur IF ELSE bisa dikombinasikan dengan struktur DO LOOP. Kombinasi bisa
dilakukan lewat penempatan DO LOOP di dalam struktur IF ELSE ataupun seba-
IF (kondisi1) THEN
UNIVERSITAS SUMATERA UTARA
...
DO namaloop1=indeksawal,indeksakhir
...
END DO
ELSE IF (kondisi2) THEN
...
DO namaloop2=indeksawal,indeksakhir
...
IF (kondisi21) THEN
...
ELSE
...
END IF
...
END DO
ELSE
...
END IF
61
5.2 Dasar teori
MODUL PRAKTIKUM
dimana xb dan xa adalah batas bawah dan batas atas yang menyatakan interval
x tersebut, sedangkan I adalah hasil integrasinya. Integrasi ini merupakan satu
PEMROGRAMAN KOMPUTER
dimensi karena variabel integrasinya hanya satu, yaitu x.
Untuk persoalan dua dimensi, dimana variabel integrasinya lebih dari satu, misal-
DEPARTEMEN TEKNIK SIPIL
nya x dan y, integrasi dari suatu fungsi f (x, y) dapat dinyatakan ke dalam persamaan
di bawah ini.
UNIVERSITAS SUMATERA UTARA Z ya Z xa
I= f (x, y) dxdy, (5.2)
yb xb
dimana variabel integran kedua, y, memiliki batas bawah dan atas, yb dan ya .
Dalam banyak kasus, fungsi-fungsi integran, f (x) maupun f (x, y), merupakan
fungsi yang sangat kompleks. Oleh karenanya, integrasi yang melibatkan fungsi-
fungsi tersebut tidak dapat diselesaikan secara analitik. Jika demikian, pendekatan
secara numerik perlu dilakukan.
Penyelesaian integrasi satu dimensi dari Persamaan (5.1) secara numerik dengan
menggunakan metode Trapesium dan Persegi Panjang dilakukan dengan membagi
daerah di bawah kurva f (x) menjadi sejumlah trapesium dan persegi panjang (lihat
Gambar 5.1). Dalam proses ini, interval xb ≤ x ≤ xa dibagi menjadi beberapa
subinterval yang identik dengan jumlahnya sebanyak N . Dengan demikian, besar
subinterval, ∆x, dapat dihitung sebagai berikut:
x a − xb
∆x = . (5.3)
N
Gambar 5.1 menunjukkan bahwa pada axis x terdapat lokasi-lokasi x sebagai hasil
pembagian interval xb ≤ x ≤ xa , dimulai dari x1 , x2 , x3 , ..., xN dan xN +1 . Perhatikan
bahwa x dengan indeks 1 adalah batas bawah, xb , sedangkan yang berindeks N + 1
adalah batas atas, xa .
Metode Trapesium mengaproksimasi hasil integrasi dari f (x) pada sebuah in-
terval xb ≤ x ≤ xa melalui penjumlahan dari semua luas trapesium yang ada di
bawah kurva sepanjang interval tersebut (lihat Gambar 5.1(a)). Approksimasi hasil
62
5.2 Dasar teori
f(x)MODUL PRAKTIKUM
f(xi) Luas satu trapesium
f(x)
Luas satu persegi
f ( xi )
panjang
PEMROGRAMAN KOMPUTER
f(xi+1)
f ( xi )
DEPARTEMEN TEKNIK SIPIL
x x
xN-1 xN xN+1
UNIVERSITAS SUMATERA UTARA
x1 x2 x3 xi-1 xi xi+1
xb x
xN-1 xN xN+1
xa
x1 x2 x3 xi-1 xi xi+1
xb x xi =1/2 (xi+xi+1 ) xa
(a) (b)
GAMBAR 5.1: (A) Integrasi fungsi f (x) dengan menggunakan metode Trapesium dan (B) dan
metode Persegi Panjang
1
*
I ≈ ∆x [f (x1 ) + f (x2 )] + [f (x2 ) + f (x3 )] + ... + [f (xi−1 ) + f (xi )]
2
+ (5.4)
+ [f (xi ) + f (xi+1 )] + ... + [f (xN −1 ) + f (xN )] + [f (xN ) + f (xN +1 )] ,
1 i=N
* +
I ≈ ∆x f (xi ) + f (xi+1 ) . (5.5)
X
2 i=1
1
xi = (xi + xi+1 ) . (5.6)
2
Dengan demikian, aproksimasi hasil integrasi dengan menggunakan metode ini men-
jadi:
i=N
I ≈ ∆x f (xi ) . (5.7)
X
i=1
63
5.2 Dasar teori
MODUL PRAKTIKUM
Berdasarkan konsep yang telah dijabarkan di atas, program yang mengimple-
mentasikan metode Trapesium dan Persegi Panjang dapat dibuat ke dalam bahasa
PEMROGRAMAN KOMPUTER
Fortran. Algoritma yang dipakai sebelum membuat scriptnya adalah sebagai berikut:
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
(d) Perbaharui nilai hasil integrasi, hi, dengan nilai terbaru sebesar hi =
hi + ∆A. Langkah ini mengikuti Persamaan (5.5) dan (5.7) untuk kedua
metode.
(e) Ulangi langkah (a) dan seterusnya hingga loop mencapai indeks iterasi yang
terakhir, yaitu i = N .
Penyelesaian integrasi dua dimensi dari Persamaan (5.2) secara numerik dapat meng-
gunakan metode Persegi Panjang. Gambar 5.2(a) menunjukkan kurva f (x, y) di
atas area persegi panjang pada bidang x − y, dengan batasnya xb ≤ x ≤ xa dan
64
5.2 Dasar teori
MODUL PRAKTIKUM
yb ≤ y ≤ ya . Untuk melakukan integrasi numerik dua dimensi, volume di bawah
kurva f (x, y) dan di atas area persegi panjang tersebut dibagi menjadi sejumlah
PEMROGRAMAN KOMPUTER
balok. Gambar 5.2(a) menunjukkan satu balok di bawah kurva f (x, y), dengan luas
alasnya sebesar ∆x∆y. Dalam hal ini, interval xb ≤ x ≤ xa dibagi menjadi beberapa
DEPARTEMEN TEKNIK SIPIL
subinterval ∆x sebanyak N , sehingga diperoleh xi = x1 , x2 , ..., xN , xN +1 . Sementara
itu, interval yb ≤ y ≤ ya dibagi menjadi beberapa subinterval ∆y sebanyak M , se-
UNIVERSITAS SUMATERA UTARA
hingga diperoleh yj = y1 , y1 , ..., yM , yM +1 . Gambar 5.2(b) menunjukkan area persegi
panjangnya yang telah dibagi-bagi menjadi beberapa persegi (panjang) kecil atau
grid dengan axis xi dan ordinat yj .
(a)
y
yM+1
yM
yj+1
yj
yj-1
y2
y1
GAMBAR 5.2: (A) Volume di bawah kurva f (x, y) didefenisikan berdasarkan koordinat (x, y, z),
(B) Persegi (panjang) kecil atau grid dari suatu area persegi panjang yang terletak pada bidang
x − y di bawah kurva f (x, y) dan (C) Pandangan dekat dari volume satu ruang yang diasumsikan
berbentuk balok di bawah kurva f (x, y).
Gambar 5.2(c) menunjukkan bahwa suatu volume balok di bawah kurva f (x, y)
memiliki koordinat titik tengah dari alasnya, yaitu (xi , yj ). Alas persegi kecil dari
65
5.2 Dasar teori
MODUL PRAKTIKUM
balok adalah ∆x∆y, dan tinggi balok adalah nilai fungsi pada titik tengah dari alas
perseginya, f (xi , yj ). Volume satu balok ini, ∆vi,j , dapat ditentukan dari persamaan
PEMROGRAMAN KOMPUTER
berikut:
j=M
X i=N
∆vi,j . (5.9)
X
I≈
j=1 i=1
(i) Deklarasikan tipe data variabel jumlah subinterval, N dan M , beserta nilai-
nilainya.
(vi) Buat sebuah do loop terluar yang memiliki indeks iterasi mulai dari j = 1
sampai dengan j = M .
(b) Buat do loop terdalam yang memiliki indeks iterasi mulai dari i = 1 sampai
dengan i = N .
66
5.2 Dasar teori
MODUL PRAKTIKUM
(6) Ulangi langkah (1) dan seterusnya hingga loop mencapai indeks iterasi
i = N yang terakhir, yaitu i = N .
PEMROGRAMAN KOMPUTER
(c) Ulangi langkah (a) dan seterusnya hingga loop mencapai indeks iterasi
j = M dan i = N .
DEPARTEMEN TEKNIK SIPIL
5.2.5 Metode aturan Simpson 1/3
UNIVE RSITAS SUMATERA UTARA
Integrasi satu dimensi
Metode Trapesium mengasumsikan bahwa fungsi f (x) merupakan fungsi linear. Es-
timasi nilai fungsi f (xi ) merupakan hasil linear interpolasi dari nilai-nilai fungsi
f (xi−1 ) dan f (xi+1 ). Jika fungsi f (x) yang sebenarnya merupakan fungsi kuadratik,
asumsi ini tentunya akan menimbulkan error pada nilai hasil integrasi. Error ini di-
ilustrasikan pada Gambar 5.1(a) melalui perbedaan luas di bawah kurva f (x) dan
luas satu trapesium pada satu subinterval, xi ≤ x ≤ xi+1 .
Sebaliknya, metode aturan Simpson 1/3 mengasumsikan bahwa fungsi f (x) adalah
fungsi polinomial kuadratik. Nilai fungsi f (xi ) diestimasi dengan menggunakan in-
terpolasi polinomial Lagrange dan nilai-nilai fungsi pada lokasi sebelum dan sesu-
dahnya, yaitu f (xi−1 ) dan f (xi+1 ). Dengan demikian, hasil integrasi fungsi f (x)
pada suatu interval xb ≤ x ≤ xa yang telah dibagi menjadi beberapa subinterval
sebanyak N , dengan panjang masing-masing subinterval, ∆x, dapat dinyatakan se-
bagai berikut:
∆x
* +
I≈ f (x1 ) + 4f (x2 ) + 2f (x3 ) + 4f (x4 ) + 2f (x5 ) + ... + 4f (xN ) + f (xN +1 ) ,
3
(5.10)
dimana x1 = xb dan xN +1 = xa . Pada metode ini, perlu dicatat bahwa jumlah subin-
terval, N , harus merupakan bilangan genap. Persamaan (5.10) dapat diekspresikan
kembali seperti di bawah ini.
∆x i=N/2
* +
f (x2i−1 ) + 4f (x2i ) + f (x2i+1 ) . (5.11)
X
I≈
3 i=1
67
5.2 Dasar teori
MODUL PRAKTIKUM
(i) Deklarasikan tipe data jumlah subinterval, N , beserta nilainya.
PEMROGRAMAN KOMPUTER
(ii) Deklarasikan tipe data variabel xb , xa dan xi beserta variabel-variabel relevan
lainnya.
(vii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N dan
hitung xi+1 = xi + ∆x.
(viii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N/2.
(b) Hitunglah penambahan nilai hasil integrasi, sebut saja misal ∆A, dimana
∆A = ∆x
3
[f (x2i−1 ) + 4f (x2i ) + f (x2i+1 )].
(c) Perbaharui nilai hasil integrasi, hi, dengan nilai terbaru sebesar hi = hi +
∆A. Langkah ini mengikuti Persamaan (5.11).
(d) Ulangi langkah (a) dan seterusnya hingga loop mencapai indeks iterasi yang
terakhir, yaitu i = N/2.
∆x
I≈ w · f, (5.12)
3
68
5.2 Dasar teori
MODUL PRAKTIKUM
masing vektor w1x(N +1) dan f(N +1)x1 diekspresikan di bawah ini.
PEMROGRAMAN KOMPUTER
f (x1 )
f (x )
Hal ini berdasarkan Persamaan (5.10) yang menunjukkan bahwa koefisien fungsi
adalah 4 untuk fungsi f (x) pada xi yang memiliki indeks i genap (mis. i =
2, 4, ..., N ). Sebaliknya, koefisien fungsi adalah 2 untuk xi yang memiliki indeks i
ganjil kecuali pada i = 1 dan N + 1 (mis. i = 3, 5, .., N − 2). Dengan menggu-
nakan Persamaan (5.12) dan (5.13), langkah (viii) pada algoritma sebelumnya dapat
digantikan menjadi:
(viii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan
i = N + 1.
(d) Perbaharui nilai hasil integrasi, hi, dengan nilai terbarunya sebesar
hi = hi + ∆A.
(e) Ulangi langkah (a) dan seterusnya hingga loop mencapai indeks it-
erasi yang terakhir, yaitu i = N + 1.
69
5.2 Dasar teori
MODUL PRAKTIKUM
Integrasi dua dimensi
PEMROGRAMAN KOMPUTER
Metode Simpson juga dapat digunakan untuk menghitung integrasi dua dimensi
dari kurva f (x, y) pada area berbentuk persegi panjang dengan batas yb ≤ y ≤ ya
sedangkan vektor f(N +1)x1 pada Persamaan (5.13) diganti menjadi matriks f(N +1)x(M +1)
70
5.2 Dasar teori
MODUL PRAKTIKUM
dengan elemennya sebagai berikut:
PEMROGRAMAN KOMPUTER
f (x1 , y1 ) f (x2 , y1 ) f (x3 , y1 ) ... f (xN , y1 ) f (xN +1 , y1 )
f (x1 , y2 ) f (x2 , y2 ) f (x3 , y2 ) f (xN , y2 ) f (xN +1 , y2 )
...
DEPARTEMEN TEKNIK SIPIL
f (x1 , y3 ) f (x2 , y3 ) f (x3 , y3 ) ... f (xN , y3 ) f (xN +1 , y3 )
f= f (x1 , y4 ) f (x2 , y4 ) f (x3 , y4 ) ... f (xN , y4 ) f (xN +1 , y4 ) .
Hasil integrasi dari suatu fungsi f (x, y) di atas area persegi panjang tersebut dapat
diekspresikan ke dalam perkalian matriks w(M +1)x(N +1) dan matriks f(N +1)x(M +1)
sebagai berikut:
1
I ≈ ∆x∆y w · f, (5.16)
9
1 M +1 N +1
I ≈ ∆x∆y wj,i f (xi , yj ) . (5.17)
X X
9 j=1 i=1
(iv) Cek apakah N dan M adalah bilangan genap. Jika tidak, beritahu bahwa
pemilihan N dan M masih salah dan hentikan program. Jika tidak lanjutkan
program.
71
5.2 Dasar teori
MODUL PRAKTIKUM
(vii) Buat sebuah do loop terluar yang memiliki indeks iterasi mulai dari j = 1
sampai dengan j = M .
PEMROGRAMAN KOMPUTER
(a) Untuk setiap j, hitung nilai yj+1 = yj + ∆y.
(viii) Buat sebuah do loop terluar yang memiliki indeks iterasi mulai dari j = 1
sampai dengan j = M + 1.
(a) Buat do loop terdalam memiliki indeks iterasi mulai dari i = 1 sampai
dengan i = N + 1.
(1) Defenisikan sebuah variabel array w dengan elemennya untuk setiap j
dan i, wj,i .
• Jika j = 1 dan i = 1 atau i = N + 1, wj,i = 1.
• Jika j = M + 1 dan i = 1 atau i = N + 1, wj,i = 1.
• Jika j = 1 atau j = M + 1 dan 2 ≤ i ≤ N , diambil:
– wj,i = 4 apabila i adalah bilangan genap.
– wj,i = 2 apabila i adalah bilangan ganjil.
• Jika j adalah bilangan genap dan 1 ≤ i ≤ N + 1, diambil:
– wj,i = 4 apabila i = 1 atau i = N + 1.
– wj,i = 16 apabila i adalah bilangan genap.
– wj,i = 8 selain dari dua kondisi di atas.
• Jika j adalah bilang ganjil tetapi bukan bernilai j = 1 dan M + 1.
– wj,i = 2 apabila i = 1 atau i = N + 1.
– wj,i = 8 apabila i adalah bilangan genap.
– wj,i = 4 selain dari dua kondisi di atas.
(2) Untuk setiap j dan i, hitung f (xi , yj ).
(3) Lakukan perkalian antara elemen matriks berikut:
∆v = 19 ∆x∆y wj,i f (xi , yj ).
(4) Perbaharui nilai hasil integrasi, hi, dengan nilai terbaru sebesar hi =
hi + ∆v.
72
5.2 Dasar teori
MODUL PRAKTIKUM
(5) Ulangi langkah (1) dan seterusnya hingga loop mencapai indeks iterasi
i = N + 1.
PEMROGRAMAN KOMPUTER
(b) Ulangi langkah (a) dan seterusnya hingga loop mencapai indeks iterasi
j = M + 1 dan i = N + 1.
DEPARTEMEN TEKNIK SIPIL
5.2.6 Fungsi-fungsi pada Matlab
UNIVE RSITAS SUMATERA UTARA
Beberapa fungsi yang tersedia pada Matlab untuk menghitung integrasi dari suatu
fungsi f (x, y) dijabarkan berikut:
(i) trapz berfungsi menghitung integral satu dimensi dari suatu fungsi f (x) pada
suatu daerah dengan batas xb ≤ x ≤ xa dengan panjang subinterval ∆x. Fungsi
ini menggunakan metode Trapesium. Script yang dapat dipakai adalah seperti
tertulis berikut:
Pada script di atas, Itrap adalah hasil integrasi dari fungsi f (x).
(ii) integral berfungsi menghitung integral satu dimensi dari suatu fungsi f (x)
pada suatu batas xb ≤ x ≤ xa . Fungsi ini menggunakan global adaptive
73
5.3 Latihan
MODUL PRAKTIKUM
quadrature. Script yang dapat dipakai adalah seperti tertulis berikut:
PEMROGRAMAN KOMPUTER
% Defenisikan batas bawah xb, batas atas xa
...
DEPARTEMEN TEKNIK SIPIL
% Defenisikan nilai dari fungsi f(x) yang akan diintegrasi
% misalnya f(x)= xˆ 2 + 5
UNIVERSITAS SUMATERA UTARA
fun = @ (x) x.ˆ 2 + 5; !Perhatikan tanda titik
% Hitung integrasinya
Iint=integral(fun,xb,xa);
(iii) integral2 berfungsi menghitung integral dua dimensi dari suatu fungsi f (x, y)
pada suatu area persegi panjang dengan batas xb ≤ x ≤ xa dan yb ≤ y ≤ ya .
Fungsi ini menggunakan global adaptive quadrature. Script yang dapat dipakai
adalah seperti tertulis berikut:
5.3 Latihan
Dengan menerapkan dan memodifikasi algoritma yang telah dijabarkan se-
belumnya, buatlah empat program yang masing-masing bertujuan untuk menghi-
74
5.3 Latihan
tung:MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
(1) Persamaan integrasi berikut dengan menggunakan metode Trapesium:
Z 4+z
4 cosh x
I= dx. (5.18)
DEPARTEMEN TEKNIK SIPIL 2+z (3.z)2x−1
(2) Hasil integrasi dari fungsi dua dimensi, yaitu: f (x, y) = x2 + y 2 pada suatu area
UNIVERSITAS SUMATERA UTARA
yang dibatasi oleh xb ≤ x ≤ xa dan yb ≤ y ≤ ya , dimana xb = 1.z, xa = 5.z,
yb = 1.z dan ya = 5.z. Gunakan metode Simpson.
(3) Kedalaman rata-rata, h, dan kecepatan rata-rata, u, dari suatu penampang sun-
gai berbentuk tak beraturan dengan lebar permukaan air, w, sebesar 16 m (lihat
Gambar 5.3). Hasil pengukuran data di lapangan menunjukkan kedalaman air
GAMBAR 5.3: (a) Sebuah penampang melintang dari sungai dan (b) potongan satu segmen dari
penampang.
pada beberapa lokasi dengan jaraknya terhadap bahu kiri sungai (x = 0). Jum-
lah lokasi pengukuran adalah sebanyak 17 titik dengan jarak antar dua lokasi
pengukuran, ∆x, adalah sama dan kedalaman, h, kecepatan muka air, u, pada
tiap lokasi x ditampilkan pada Tabel 5.1.
TABEL 5.1: Kedalaman air, h, dan kecepatan muka air, u, pada lokasi x dari bahu kiri sungai.
x [m] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
h [m] 0 0.8 1.3 1.3 1.5z 1.7z 1.8z 2.1z 2.3 1.8 1.7 1.5 1.4 1.1 1.0 0.7 0.0
u [m/s] 0 0.1 0.2 0.3 0.5z 0.7z 0.8z 1.0z 1.1 0.9 0.9 0.7 0.6 0.5 0.4 0.2 0
75
5.3 Latihan
MODUL PRAKTIKUM
di mana A adalah luas penampang basah dan Q adalah debit aliran yang dapat
dievaluasi melalui:
PEMROGRAMAN KOMPUTER Z w Z w
A= h (x) dx, Q = h (x) u (x) dx. (5.20)
DEPARTEMEN TEKNIK SIPIL 0 0
(4) Jumlah total kendaraan yang melewati sebuah persimpangan jalan selama 24
jam. Data arus lalu lintas yang masuk pada persimpangan tersebut selama 24
jam diperoleh seperti berikut:
TABEL 5.2: Arus lalu lintas, ALL, dalam satuan jumlah kendaraan/menit) pada suatu persim-
pangan diukur di waktu yang berbeda.
Jam ALL[j.k/menit] Jam ALL[j.k/menit] Jam ALL[j.k/menit]
00:00 2 10:00 4 20:00 7
02:00 2 12:00 10+z 22:00 3
04:00 0 14:00 12+z 24:00 2
06:00 6+z 16:00 8
08:00 23 + z 18:00 26+z
dimana t adalah waktu dalam satuan jam. Konversikan ALL pada Tabel 5.2
ke dalam satuan jumlah kendaraan/jam dan gunakan metode Simpson dan
metode Trapesium untuk menyelesaikan integrasi secara numerik sebagai berikut:
X−1
i=N
I= ALLi ∆ti , (5.22)
i=1
dimana N adalah jumlah data pada Tabel 5.2, yaitu sebanyak 13, i adalah indeks
urutan data dan ∆ti adalah selang waktu dihitung dari dua data berturut.
(5) Titik pusat massa (PM) terhadap sumbu y, X, pada suatu penampang melintang
dari composite column yang terbuat dari material baja dan beton (lihat Gam-
bar 5.4). Penampang persegi memiliki panjang penampang, b, lebar, a, serta
76
5.3 Latihan
MODUL PRAKTIKUM
ketebalan baja, tw, yang masing-masing bernilai 0.7z m, 0.5z m, dan 0.1z m.
Massa jenis baja, ρbaja , adalah 8050kg/m3 dan massa jenis beton, ρbeton , adalah
PEMROGRAMAN KOMPUTER
2400kg/m3 .
Iy
X= , (5.23)
M
Z bZ a
Iy = xρ (x, y) dxdy, (5.24)
0 0
Z bZ a
M= ρ (x, y) dxdy. (5.25)
0 0
Iy adalah momen inertia massa terhadap sumbu y dan M adalah total massa
penampang per satuan panjang kolom. Karena penampang terdiri dari com-
posite material, evaluasi Iy dilakukan dengan penggabungan dan pengurangan
beberapa penampang seperti yang diilustrasikan pada Gambar 5.5.
77
5.3 Latihan
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
GAMBAR 5.5: Sebuah penampang melintang dari composite column.
Iy = I1 − I2 + I3 , (5.26)
Z bZ a
I1 = xρbaja dxdy, (5.27)
0 0
Z b−tw Z a
I2 = xρbaja dxdy, (5.28)
tw tw
Z b−tw Z a
I3 = xρbeton dxdy. (5.29)
tw tw
(5.30)
Dengan cara yang sama, variabel M pada persamaan 5.23 direpresentasikan oleh:
M = M1 − M2 + M3 , (5.31)
Z bZ a
M1 = ρbaja dxdy, (5.32)
0 0
Z b−tw Z a
M2 = ρbaja dxdy, (5.33)
tw tw
Z b−tw Z a
M3 = ρbeton dxdy. (5.34)
tw tw
(5.35)
(a) Untuk soal (1), (2) dan (5), tetapkan bahwa jumlah subinterval, N , adalah 10z,
78
5.3 Latihan
MODUL PRAKTIKUM
(d) Jika z adalah ganjil atau nol, kerjakan soal (3). Sebaliknya, kerjakan soal (4),
PEMROGRAMAN KOMPUTER
(e) Untuk soal (2), terapkan kombinasi nested IF ELSE dan nested DO
LOOP structure seperti pada algoritma hal. 72 saat menerapkan
(f) Untuk soal (3) dan (4), terapkan kombinasi IF ELSE dan DO LOOP struc-
UNIVERSITAS SUMATERA UTARA
ture seperti pada algoritma hal. 69 saat menerapkan metode Simpson
serta
(g) Untuk soal (5), lakukan perhitungan I1 dan M1 dalam satu nested DO LOOP
structure. Begitu juga, perhitungan I2 dan I3 serta M2 dan M3 dalam satu
nested DO LOOP structure. Kombinasikan pula dengan IF ELSE struc-
ture.
(h) Gunakan juga fungsi intrinsik pada Matlab di mana yang memungkinkan untuk
menghitung hasil integrasi.
79
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 6
Modul V Diferensiasi numerik dan
persamaan diferensial biasa
(2) Menggunakan struktur SUBROUTINE yang dipanggil dari main program dan
80
6.2 Dasar teori
PEMR
6.2.1 OGRA
CALL dan MAN KOMPUTER
SUBROUTINE
Suatu subprogram atau SUBROUTINE dapat dipanggil dari sebuah program utama.
DEPARTEMEN TEKNIK SIPIL
Subprogram ini berfungsi untuk melakukan suatu prosedur yang berulang. Untuk
melakukan sebuah prosedur perhitungan dalam sebuah SUBROUTINE, data input
UNIVERSITAS SUMATERA UTARA
atau argumen yang berasal dari program utama perlu ditransfer ke dalam SUBROU-
TINE tersebut. Sintaks yang dipakai untuk mendeklarasikan sebuah SUBROUTINE
serta mentransfer argumennya adalah berikut ini:
Beberapa hal yang perlu diingat sehubungan dengan penggunaan CALL dan SUB-
ROUTINE:
(2) Urutan daftar argumen pada SUBROUTINE harus sama dengan urutan daf-
tarnya pada CALL,
81
6.2 Dasar teori
MODUL PRAKTIKUM
(3) Tipe data argumen yang ditransfer harus sama baik pada SUBROUTINE dan
pada program utama dan
PEMROGRAMAN KOMPUTER
(4) Sintaks CALL bisa juga digunakan di dalam subprogram. Dengan kata lain,
dimana f ′ (xi ) adalah turunan pertama, f ′′ (xi ) turunan kedua dan f ′′′ (xi ) adalah
turunan ketiga dari fungsi f (x) pada x = xi . Deret ini dapat dilanjutkan hingga
turunan dengan tingkat yang lebih tinggi.
Terdapat tiga pendekatan terhadap turunan-turunan tersebut, yaitu forward fi-
nite difference, backward finite difference dan central finite difference. Pendekatan
yang pertama yaitu forward finite difference (FFD) mengaproksimasi kedua turunan
fungsi dari f ′ (xi ) dan f ′′ (xi ) sebagai berikut:
f (xi+1 ) − f (xi )
f ′ (xi ) = , (6.2)
h
f (xi+2 ) − 2f (xi+1 ) + f (xi )
f ′′ (xi ) = . (6.3)
h2
Persamaan di atas menyatakan bahwa untuk mengetahui nilai turunan pertama dan
kedua fungsi pada xi , f ′ (xi ) dan f ′′ (xi ), diperlukan data berupa nilai fungsi pada
xi dan lokasi-lokasi setelahnya, yaitu xi+1 dan xi+2 . Gambar 6.1(a) menunjukkan
nilai turunan f ′ (xi ) adalah rasio dari perbedaan nilai f (xi+1 ) dan f (xi ) dengan h.
Dalam hal ini, h diasumsikan seragam.
Sebaliknya, backward finite difference (BFD) mengaproksimasi kedua turunan
fungsi tersebut dengan menggunakan nilai fungsi pada xi dan lokasi-lokasi sebelum-
nya, yaitu xi−1 dan xi−2 (lihat Gambar 6.1(b)). Secara matematik, aproksimasi ini
82
6.2 Dasar teori
MODUL PRAKTIKUM
f(x)
f '(xi)
f(x) f '(xi) f(x)
f '(xi)
f (xi) f(xi+1) f (xi) f (xi) f(xi+1)
GAMBAR 6.1: (A) forward finite difference (FFD), (B) backward finite difference (BFD) dan (C)
central finite difference (CFD)
f (xi ) − f (xi−1 )
f ′ (xi ) = , (6.4)
h
f (xi ) − 2f (xi−1 ) + f (xi−2 )
f ′′ (xi ) = . (6.5)
h2
Berbeda dengan kedua pendekatan di atas, central finite difference (CFD) men-
gaproksimasi turunan fungsi tersebut dengan menggunakan data pada xi dan data
pada lokasi sebelum dan sesudahnya (lihat Gambar 6.1(c)). Berikut adalah per-
samaan matematiknya:
f (xi+1 ) − f (xi−1 )
f ′ (xi ) = , (6.6)
2h
f (xi+1 ) − 2f (xi ) + f (xi−1 )
f ′′ (xi ) = . (6.7)
h2
Algoritma yang dipakai untuk menghitung turunan fungsi f (x) pada suatu selang
xb ≤ x ≤ xa adalah berikut ini.
(v) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
83
6.2 Dasar teori
MODUL PRAKTIKUM
(a) Untuk setiap i, hitung xi+1 = xi + h.
Perlu dicatat bahwa turunan pada lokasi batas, misalnya pada xb dan xa , mungkin
tidak bisa dihitung menggunakan persamaan-persamaan sebelumnya. Hal ini dise-
babkan karena ketiadaan data di luar interval yang mungkin diperlukan pada saat
perhitungan turunan pada lokasi batas tersebut.
d2 y dy
m + c + k x = F (x) ,
dx 2 dx (6.8)
atau my (x) + cy (x) + ky (x) = F (x) ,
′′ ′
dimana y adalah perpindahan objek tersebut dan x adalah waktu. Dalam hal ini, y
adalah variabel terikat sedangkan x variabel bebasnya.
Setiap penyelesaian PDB memerlukan kondisi awal (initial condition) atau kon-
disi batas (boundary condition). PDB dengan order 1 yang berarti hanya melibatkan
turunan pertama memerlukan satu kondisi awal/batas. Persamaan (6.8) merupakan
84
6.2 Dasar teori
MODUL PRAKTIKUM
PDB orde 2 yang memerlukan dua kondisi awal, yaitu perpindahan awal, yo , dan
kecepatan awal objek, vo , pada saat waktu awal, x = xo .
PEMROGRAMAN KOMPUTER
6.2.4 Metode eksplisit untuk PDB
DEPARTEMEN TEKNIK SIPIL
Secara garis besar, terdapat dua pendekatan yaitu eksplisit dan implisit dalam
dy
= f (x, y) , (6.9)
dx
dimana x adalah variabel bebas dan y variabel terikatnya, prediksi yi+1 pada
xi+1 menggunakan data sebelumnya, yaitu yi pada xi , beserta kemiringan kurva
y (x) pada xi . Persamaan (6.9) menyatakan bahwa kemiringan ini adalah fungsi
f (x, y) pada xi dan yi . Secara matematik, metode Euler mengestimasi yi+1
sebagai berikut:
dimana h adalah jarak antara xi+1 dan xi . Dengan cara yang sama, yi+2 dapat
diprediksi dengan
85
6.2 Dasar teori
MODUL PRAKTIKUM
f (x, y), yang diilustrasikan pada Gambar 6.2(a). Namun, metode dengan dera-
jat keakuratan satu ini memiliki kelemahan dalam memprediksi. Nilai prediksi
PEMROGRAMAN KOMPUTER
yi+1 dan yi+2 mungkin menyimpang dari nilai aktualnya. Gambar 6.2(a) me-
nunjukkan yi+1 dan yi+2 , yang ditandai dengan bulat biru, menyimpang dari
DEPARTEMEN TEKNIK SIPIL
nilai aktualnya (bulat hitam). Gambar 6.2(b) mengilustrasikan secara kualitatif
besar error/penyimpangannya.
UNIVERSITAS SUMATERA UTARA
Berdasarkan penjabaran di atas, algoritma sesuai metode Euler untuk menye-
lesaian PDB dari Persamaan (6.9) dan menghitung y pada suatu interval xb ≤
x ≤ xa dengan kondisi awal, yaitu y (xb ) = yb , adalah berikut ini:
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
0
yi+1 = yi + f (xi , yi ) h, (6.12)
86
6.2 Dasar teori
y MODUL PRAKTIKUM
f(xi+1,yi+1)
y i+2
y
PEMROGRAMAN
i+1
y KOMPUTER
y prediksi
DEPAR
i
f(x ,y ) i
y
TEMEyN TEKNI
i
errorK SIPIL
aktual
i+2
i+2
y
UNIVERSITAS SUMA y TERAaktual
error UTARA i+1
i+1
x yi
prediksi
xi xi+1 xi+2
x
h h
(a) (b)
GAMBAR 6.2: (A) Prediksi yi+1 dan yi+2 dengan metode Euler dan (B) Tampak dekat yang
menunjukkan penyimpangannya.
dimana yi+1 adalah hasil koreksinya. Penting untuk diperhatikan bahwa variabel
yi+1 muncul baik pada ruas kiri dan ruas kanan dari persamaan tersebut. Hal
ini berarti bahwa nilai baru dari yi+1 dapat diperbaharui dengan menjadikan
nilai terakhir dari yi+1 sebagai nilai lama. Nilai ini disubstitusikan ke dalam
ruas kanan dari Persamaan (6.13) untuk menggantikan yi+1
0
. Langkah pemba-
haruan nilai yi+1 dapat dilakukan berulang (iterasi) sampai nilai yi+1 konvergen.
Konvergensinya dapat diketahui ketika kriteria toleransi berikut terpenuhi:
j j−1
yi+1 − yi+1
j 100% ≤ tol, (6.14)
yi+1
dimana tol adalah suatu nilai persentase yang ditetapkan di awal perhitungan.
Indeks j menyatakan indeks iterasi terbaru dan j − 1 adalah indeks iterasi se-
belumnya. Langkah iterasi ini dilakukan untuk setiap perhitungan y (x) pada
x = xi+1 , xi+2 , ....
87
6.2 Dasar teori
MODUL PRAKTIKUM
variabel relevan lainnya.
(iii) Defenisikan nilai xb , xa , yb dan tol.
PEMROGRAMAN KOMPUTER
(iv) Nyatakan bahwa x1 = xb dan y1 = yb .
h
yi+1/2 = yi + f (xi , yi ) . (6.15)
2
Koreksi terhadap nilai pada titik tengah, yi+1/2 , memberikan nilai yi+1 seperti
di bawah ini.
yi+1 = yi + f xi+1/2 , yi+1/2 h. (6.16)
88
6.2 Dasar teori
MODUL PRAKTIKUM
Berbeda dengan metode Heun, metode ini tidak bersifat iteratif karena variabel
yi+1 tidak ditemukan pada ruas kanan dari Persamaan (6.16). Dengan demikian,
PEMROGRAMAN KOMPUTER
algoritmanya mirip dengan algoritma pada metode Euler sebagaimana yang di-
tulis di bawah ini.
DEPARTEMEN TEKNIK SIPIL
(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
89
6.2 Dasar teori
MODUL PRAKTIKUM
pada xi , xi+1/2 dan xi+1 untuk menghitung nilai yi+1 sebagai berikut:
Sama seperti variasi orde keduanya, tidak ada iterasi untuk memastikan konver-
gensi nilai yi+1 .
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
90
6.2 Dasar teori
MODUL PRAKTIKUM
(6) Metode Runge-Kutta Orde Keempat
Metode Runge-Kutta Orde Keempat juga memerlukan data berupa nilai
PEMROGRAMAN KOMPUTER
f (x, y) pada xi , xi+1/2 dan xi+1 untuk menghitung nilai yi+1 tanpa ada iterasi
untuk memastikan konvergensi nilai yi+1 . Algoritmanya adalah sebagai berikut:
DEPARTEMEN TEKNIK SIPIL 1
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 ) h, (6.21)
6
UNIVERSITAS SUMATERA UTARA
dimana, k1 = f (xi , yi ) , (6.22)
1 1
k2 = f xi + h, yi + k1 h , (6.23)
2 2
1 1
k3 = f xi + h, yi + k2 h , (6.24)
2 2
k4 = f (xi + h, yi + k3 h) . (6.25)
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
91
6.2 Dasar teori
MODUL PRAKTIKUM
(h) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xf , yf ) dan nyatakan bahwa k4 = f (xf , yf ).
PEMROGRAMAN KOMPUTER
(i) Hitung yi+1 = yi + 16 (k1 + 2k2 + 2k3 + k4 ) h sesuai dengan Persamaan
(6.21).
DEPARTEMEN TEKNIK SIPIL
(j) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .
1
yi+1 = yi + (7k1 + 32k3 + 12k4 + 32k5 + 7k6 ) h, (6.26)
90
dimana, k1 = f (xi , yi ) , (6.27)
1 1
k2 = f xi + h, yi + k1 h , (6.28)
4 4
1 1 1
k3 = f xi + h, yi + k1 h + k2 h , (6.29)
4 8 8
1 1
k4 = f xi + h, yi − k2 h + k3 h , (6.30)
2 2
3 3 9
k5 = f xi + h, yi + k1 h + k4 h , (6.31)
4 16 16
3 2 12 12 8
k6 = f xi + h, yi − k1 h + k2 h + k3 h − k4 h + k5 h .
7 7 7 7 7
(6.32)
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
92
6.2 Dasar teori
MODUL PRAKTIKUM
(a) Untuk setiap i, hitung xi+1 = xi + h.
(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi )
PEMROGRAMAN KOMPUTER
dan nyatakan bahwa k1 = f (xi , yi ).
(c) Hitung xt = xi + h/4 dan yt = yi + 14 k1 h.
DEPARTEMEN TEKNIK SIPIL
(d) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k2 = f (xt , yt ).
UNIVERSITAS SUMATERA UTARA
(e) Hitung kembali yt , kali ini yt = yi + 18 k1 h + 18 k2 h.
(f) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k3 = f (xt , yt ).
(g) Hitung kembali xt dan yt , kali ini xt = xi +h/2 dan yt = yi − 21 k2 h+k3 h.
(h) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k4 = f (xt , yt ).
(i) Hitung kembali xt dan yt , kali ini xt = xi + 3h/4 dan yt = yi + 16
3
k1 h +
9
k h.
16 4
(j) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k5 = f (xt , yt ).
(k) Hitung xf = xi+1 dan yf = yi − 37 k1 h + 27 k2 h + 12
kh
7 3
− 12
7 4
kh + 87 k5 h.
(l) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xf , yf ) dan nyatakan bahwa k6 = f (xf , yf ).
(m) Hitung yi+1 = yi + 90
1
(7k1 + 32k3 + 12k4 + 32k5 + 7k6 ) h sesuai dengan
Persamaan (6.26).
(n) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .
93
6.2 Dasar teori
MODUL PRAKTIKUM
Dalam penyelesaian PDB ini, suku-suku pada ruas kanan persamaan yang meli-
batkan yi+1 diletakkan ke dalam ruas kiri persamaan. Sebagai contoh, sebuah PDB
PEMROGRAMAN KOMPUTER
orde 1 diberikan berikut ini:
yi+1 = yi − 1000yi+1 + 3000 − 2000e−xi+1 h, (6.35)
yi + 3000h − 2000he−xi+1
yi+1 = (6.36)
1 + 1000h
= g (xi+1 , yi ) . (6.37)
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
94
6.3 Fungsi diferensiasi dan penyelesaian PDB pada Matlab
PEMR
MatlabOGRAMAN KOMPUTER
Fungsi yang tersedia pada Matlab untuk menghitung turunan dari suatu fungsi,
DEPARTEMEN TEKNIK SIPIL
f ′ (x), secara numerik adalah gradient. Script yang diperlukan untuk menerapkan
gradient pada lokasi x sebanyak N + 1 di dalam selang xb ≤ x ≤ xa ditunjukkan
UNIVERSITAS SUMATERA UTARA
di bawah ini.
Langkah lain dalam menghitung turunan dari f (x) bisa menggunakan diff pada
Matlab. Fungsi ini menghitung perbedaan nilai-nilai fungsi pada xi+1 dan xi . Dengan
mengetahui nilai perbedaannya, turunan fungsi dapat dihitung dari perbandingan
(rasio) nilai perbedaan dengan nilai interval, h, yaitu jarak antara xi+1 dengan xi .
Berikut adalah scriptnya:
95
6.3 Fungsi diferensiasi dan penyelesaian PDB pada Matlab
MODUL PRAKTIKUM
Sebagai contoh penyelesaian suatu PDB orde 1 pada Matlab, lihat kembali Per-
samaan (6.34):
PEMROGRAMAN KOMPUTER dy
= −1000y + 3000 − 2000e−x . (6.38)
DEPARTEMEN TEKNIK SIPIL dx
yb = 0. (6.39)
(i) ode23 adalah metode penyelesaian bersifat eksplisit dan merupakan penerapan
metode Runge-Kutta orde kedua dengan nilai interval, h, yang bervariasi (tidak
konstan). Script yang dapat dipakai adalah seperti berikut:
(ii) ode45 adalah metode penyelesaian lain yang juga bersifat eksplisit tetapi men-
erapkan metode Runge-Kutta orde kelima. Sama seperti ode23, nilai interval,
96
6.3 Fungsi diferensiasi dan penyelesaian PDB pada Matlab
MODUL PRAKTIKUM
h, bervariasi (tidak konstan). Perbedaanya hanya terletak pada baris berikut:
PEMROGRAMAN KOMPUTER
...
% Selesaikan sistem PDB tersebut dengan memanggil ode45
DEPARTEMEN TEKNIK SIPIL
[x,y]=ode45(@ (x, y) -1000*y+3000-2000*exp(-x), tspan, yb);
...
UNIVERSITAS SUMATERA UTARA
(iii) ode15s adalah metode penyelesaian yang bersifat implisit berdasarkan formula
penurunan numerik pada orde 1 sampai 5. ode15s dapat digunakan untuk
PDB yang bersifat kaku (stiff ), yang artinya adalah perubahan nilai variabel
terikat, y, besar meskipun perubahan variabel bebasnya, x, kecil. ode23 dan
ode45 juga dapat diterapkan pada PDB yang bersifat kaku, tetapi membu-
tuhkan interval h yang lebih kecil agar hasil yang diperoleh stabil. Sama seperti
solver-solver sebelumnya, nilai h bervariasi. Perbedaan scriptnya hanya terletak
pada baris berikut:
...
% Selesaikan sistem PDB tersebut dengan memanggil ode15s
[x,y]=ode15s(@ (x, y) -1000*y+3000-2000*exp(-x), tspan, yb);
...
(iv) ode23s
Perbedaan script untuk penerapan ode23s terletak pada baris berikut:
...
% Selesaikan sistem PDB tersebut dengan memanggil ode23s
[x,y]=ode23s(@ (x, y) -1000*y+3000-2000*exp(-x), tspan, yb);
...
97
6.4 Latihan
PEMROGRAMAN KOMPUTER
Dengan menerapkan dan memodifikasi algoritma yang telah dijabarkan se-
belumnya, buatlah empat program yang masing-masing bertujuan untuk menye-
(1) dy
= −2x3 +12x2 −20x+z1 .z2 , dari xb = 0 sampai dengan xa = 2, dimana y (0) =
UNIVERSITAS SUMATERA UTARA
dx
1. Gunakan CALL dan SUBROUTINE untuk menerapkan metode Euler dan
metode Heun secara eksplisit dengan kriteria toleransi adalah 1.z1 z2 % dan plot
hasilnya.
(2) dy
dx
= 4e0.8x − 0.5y, dari xb = 0 sampai dengan xa = 4.z2 , dimana y (0) = 2.
Gunakan CALL dan SUBROUTINE untuk menerapkan metode Titik Tengah
(semua NIM), metode Runge-Kutta orde 4 (NIM ganjil) dan orde lebih
tinggi (NIM genap) secara eksplisit dan plot hasilnya. Catatan: indeks tidak
boleh bernilai negatif, nol ataupun pecahan!
Diketahui bahwa diameter tangki sebesar 2.0 m, tinggi tangki sebesar 2.25 m
dan diameter lubang sebesar 1 cm. Hitunglah waktu, t, yang dibutuhkan hingga
tangki menjadi kosong (h (t) = 0), jika tinggi muka air awal adalah 2.2z2 , 2.0z2 ,
1.8z2 , 1.6z2 , 1.4z2 , 1.2z2 dan 1.0z2 m. Gunakan CALL dan SUBROUTINE un-
tuk menerapkan metode Runge-Kutta orde 4 (NIM ganjil) dan orde lebih
tinggi (NIM genap) secara eksplisit serta DO LOOP atau DO WHILE
structure untuk melakukan perhitungan yang berulang.
98
6.4 Latihan
MODUL PRAKTIKUM
luas penampang
PEMROGRAMAN KOMPUTER tangki, At
99
6.5 Dasar teori lanjutan
PEMR
6.5.1 OGRAMAN KOMPUTER
Sistem PDB
Banyak masalah praktis dalam ketekniksipilan yang membutuhkan solusi dari suatu
DEPARTEMEN TEKNIK SIPIL
sistem PDB. Secara umum, suatu sistem PDB direpresentasi sebagai sekumpulan
beberapa PDB orde 1 sebanyak M :
UNIVERSITAS SUMATERA UTARA dy1
= f1 (x1 , y1 , y2 , ..., yj , ..., yM ) ,
dx
dy2
= f2 (x1 , y1 , y2 , ..., yj , ..., yM ) ,
dx
.
.
(6.40)
dyj
= fj (x1 , y1 , y2 , ..., yj , ..., yM ) ,
dx
.
.
dyM
= fn (x1 , y1 , y2 , ..., yj , ..., yM ) ,
dx
Solusi dari sistem persamaan PDB di atas membutuhkan kondisi awal sebanyak M .
Persamaan gerak objek yang dikombinasikan dengan pegas dan redaman (lihat
kembali Persamaan (6.8)) bisa diekspresikan sebagai suatu sistem PDB. Jika variabel
terikatnya, y, disubstitusi menjadi y1 , persamaan ini dapat dituliskan kembali seperti
di bawah ini:
d2 y1 dy1
m 2
+c + k x = F (x) ,
dx dx (6.41)
d2 y 1 1 c dy1 k
atau = F (x) − − x.
dx2 m m dx m
Oleh karena persamaan ini adalah PDB orde 2, sistem PDB yang diturunkan terdiri
100
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
dari dua PDB orde 1 seperti berikut:
Dengan cara yang sama, sebuah PDB orde yang lebih tinggi, misalnya orde 4, dapat
diekspresikan menjadi sebuah sistem yang terdiri dari empat PDB orde 1. Berikut
adalah contoh sebuah PDB orde 4:
dimana a, b dan c adalah koefisien dari masing-masing turunan ketiga, kedua, kesatu
dari variabel terikat, y1 , terhadap variabel bebasnya, x, sedangkan d dan e masing-
masing adalah koefisien dari y1 dan x. Sistem PDB yang dihasilkan dari PDB orde
4 ini adalah berikut:
dy1
= y2 ,
dx (6.45)
= f1 (x, y1 , y2 , y3 , y4 ) ,
dy2
= y3 ,
dx (6.46)
= f2 (x, y1 , y2 , y3 , y4 ) ,
dy3
= y4 ,
dx (6.47)
= f3 (x, y1 , y2 , y3 , y4 ) ,
dy4
= ay4 + by3 + cy2 + dy1 + ex,
dx (6.48)
= f4 (x, y1 , y2 , y3 , y4 ) .
101
6.5 Dasar teori lanjutan
6.5.2MODUL PRAKTIKUM
Metode eksplisit untuk sistem PDB
PEMROGRAMAN KOMPUTER
Metode eksplisit yang telah dijabarkan sebelumnya di Bagian 6.2.4 dapat pula dit-
erapkan untuk menyelesaikan permasalahan yang melibatkan sebuah sistem PDB.
dy1
= −0.5y1 ,
UNIVERSITAS SUMATERA UTARA dx
= f1 (x, y1 , y2 ) ,
(6.49)
dy2
= 4 − 0.3y2 − 0.1y1
dx (6.50)
= f2 (x, y1 , y2 ) .
Asumsikan kondisi awal adalah y1,b = 4 dan y2,b = 6 pada xb = 0. Dengan interval
x sebesar h = 0.5, tentukanlah nilai y1 dan y2 pada suatu interval xb = 0.0 ≤ x ≤
2.0 = xa .
Pertama, metode Euler secara eksplisit diterapkan untuk menyelesaikan sistem
PDB di atas. Dengan menggunakan kembali Persamaan (6.10), prediksi nilai y1 dan
y2 pada x = 0.5 dapat ditulis seperti di bawah ini.
dimana y1 (0) = y1,b = 4 dan y2 (0) = y2,b = 6. Persamaan yang berlaku untuk setiap
perhitungan y1 dan y2 pada x baru dapat ditulis secara umum seperti berikut:
102
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
PDB orde 1 sebanyak dua buah. Untuk penyelesaian suatu sistem PDB yang terdiri
dari beberapa PDB orde 1 sebanyak M , algoritma metode Euler secara eksplisit
PEMROGRAMAN KOMPUTER
adalah berikut ini:
(i) Deklarasikan tipe data variabel jumlah PDB orde 1, M , dan jumlah subinterval,
DEPARTEMEN TEKNIK SIPIL
N , beserta nilai-nilainya.
(iii) Defenisikan nilai xb , xa dan y1,b , y2,b , ..., yj,b , ..., yM,b .
(v) Buat do loop dengan indeks iterasi mulai dari j = 1 sampai dengan j = M
untuk menyatakan bahwa yj,1 = yj,b .
(vii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
103
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
(i) Deklarasikan tipe data variabel jumlah PDB orde 1, M , dan jumlah subinterval,
N , beserta nilai-nilainya.
PEMROGRAMAN KOMPUTER
(ii) Deklarasikan tipe data variabel, xb , xa , xi , kondisi awal variabel terikat, yj,b ,
(iii) Defenisikan nilai xb , xa dan y1,b , y2,b , ..., yj,b , ..., yM,b .
UNIVERSITAS SUMATERA UTARA
(iv) Nyatakan bahwa x1 = xb .
(v) Buat do loop dengan indeks iterasi mulai dari j = 1 sampai dengan j = M
untuk menyatakan bahwa yj,1 = yj,b .
(vii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .
(d) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M .
(1) Nyatakan bahwa untuk setiap indeks j, kj,1 = fj (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ).
(2) Hitung yj,t = yj,i + 12 kj,1 h.
(e) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini untuk
menghitung
f1 (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ),
f2 (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ),
...
fj (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ),
104
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
...
fM (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ).
PEMROGRAMAN KOMPUTER
(f) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M .
DEPARTEMEN TEKNIK SIPIL
(1) Nyatakan bahwa untuk setiap indeks j, kj,2 = fj (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ).
105
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
(k) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .
PEMR
6.5.3 MetodeOGRA MAN
implisit untuk sistem KOMP
PDB UTER
DEPARTEMEN TEKNIK SIPIL
Metode Euler juga dapat diterapkan secara implisit untuk menyelesaikan suatu
sistem PDB. Sama seperti penyelesaian secara implisit untuk suatu PDB (lihat Per-
dy1
= y2 , (6.57)
dx
= f1 (x, y1 , y2 ) , (6.58)
dy2
= −16.1y1 , (6.59)
dx
= f2 (x, y1 , y2 ) . (6.60)
Ruas kanan dari Persamaan (6.57)-(6.60) menggunakan data dari indeks i + 1 meng-
hasilkan
dy1,i+1
= y2,i+1 , (6.61)
dx
= f1 (xi+1 , y1,i+1 , y2,i+1 ) , (6.62)
dy2,i+1
= −16.1y1,i+1 , (6.63)
dx
= f2 (xi+1 , y1,i+1 , y2,i+1 ) . (6.64)
106
6.5 Dasar teori lanjutan
MODUL PRAKTIKUM
Setiap suku y1,i+1 dan y2,i+1 pada ruas kanan digabung ke ruas kiri Persamaan (6.65)
dan (6.67) menghasilkan
PEMROGRAMAN KOMPUTER
y1,i+1 − hy2,i+1 = y1,i , (6.69)
DEPARTEMEN TEKNIK SIPIL 16.1hy1,i+1 + y2,i+1 = y2,i . (6.70)
Penyelesaian vektor B2x1 dapat diperoleh dengan mencari matriks inverse dari A−1
2x2
Untuk sebuah sistem PDB yang terdiri dari beberapa PDB orde 1 sejumlah M
seperti pada Persamaan (6.40), matriks dan vektor yang dihasilkan adalah AM xM ,
BM x1 dan CM x1 . Turunkanlah elemen matriks AM xM , BM x1 dan vektor CM x1 seperti
yang sudah ditunjukkan di atas. Algoritma yang diterapkan berdasarkan metode
Euler secara implisit untuk menyelesaian PDB tersebut pada interval xb ≤ x ≤ xa
adalah berikut ini:
(i) Deklarasikan tipe data variabel jumlah PDB orde 1, M , dan jumlah subinterval,
N , beserta nilai-nilainya.
(ii) Deklarasikan tipe data variabel, xb , xa , xi , kondisi awal variabel terikat, yj,b ,
dan variabel terikat, yj,i , beserta variabel-variabel relevan lainnya.
(iii) Defenisikan nilai xb , xa dan y1,b , y2,b , ..., yj,b , ..., yM,b .
(vi) Buat do loop dengan indeks iterasi mulai dari j = 1 sampai dengan j = M .
107
6.6 Fungsi penyelesaian sistem PDB pada Matlab
MODUL PRAKTIKUM
(b) Buat do loop terdalam dengan indeks iterasi mulai dari k = 1 sampai
dengan k = M .
PEMROGRAMAN KOMPUTER
(1) Defenisikan elemen matriks A (j, k).
(b) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M
d2 y dy
2
+ (5y) + (y + 7) sin x = 0, (6.72)
dx dx
dy1
= y2 , (6.73)
dx
= f1 (x, y1 , y2 ) , (6.74)
dy2
= − (5y1 ) y2 − (y1 + 7) sin x, (6.75)
dx
= f2 (x, y1 , y2 ) . (6.76)
108
6.6 Fungsi penyelesaian sistem PDB pada Matlab
MODUL PRAKTIKUM
Estimasilah nilai y1 (atau y) pada suatu selang xb = 0 ≤ x ≤ 15 = xa . Mengikuti
kondisi awal yang sudah diekspresikan sebelumnya, persamaan berikut berlaku:
PEMROGRAMAN KOMPUTER
y1,b = 6, (6.77)
DEPARTEMEN TEKNIK SIPIL y2,b = 1.5. (6.78)
(i) ode23
Diperlukan dua file matlab untuk menyelesaikan sistem PDB ini. File yang per-
tama menunjukkan program utamanya, sedangkan yang kedua menunjukkan
fungsi yang berkenaan dengan PDB tersebut. Berikut adalah script yang di-
pakai untuk mendefenisikan program utamanya pada file pertama:
109
6.6 Fungsi penyelesaian sistem PDB pada Matlab
MODUL PRAKTIKUM
f2 (x, y1 , y2 ) pada file kedua yang bernama ’pers’ adalah:
PEMROGRAMAN KOMPUTER
% Beri judul fungsi dan defenisikan argumen input dan output
function dydx=pers(x,y)
DEPARTEMEN TEKNIK SIPIL
% Terdapat dua fungsi, yaitu f1 dan f2, yang harus didefenisikan
% karena sistem PDB terdiri dari dua PDB orde 1
UNIVERSITAS SUMATERA UTARA
% Defenisikan terlebih dahulu fungsi f1 menurut Persamaan (6.73)
dydx(1,1)=y(2);
% Defenisikan terlebih dahulu fungsi f2 menurut Persamaan (6.75)
dydx(2,1)=-5*y(1)*y(2)-(y(1)+7.0)*sin(x);
(ii) ode45
Sama seperti ode23, penerapan ode45 juga memerlukan dua file seperti contoh
di atas. Perbedaanya hanya terletak pada baris berikut:
...
% Selesaikan sistem PDB tersebut dengan memanggil ode45
[x,y]=ode45(@pers, tspan, yb); ! ’pers’ adalah nama file kedua
...
(iii) ode15s
Mengikuti contoh di atas, script untuk penerapan ode15s hanya berbeda pada
baris berikut:
...
% Selesaikan sistem PDB tersebut dengan memanggil ode15s
[x,y]=ode15s(@pers, tspan, yb); ! ’pers’ adalah nama file kedua
...
(iv) ode23s
110
6.7 Latihan lanjutan
MODUL PRAKTIKUM
Perbedaan script untuk penerapan ode23s terletak pada baris berikut:
PEMROGRAMAN KOMPUTER
...
% Selesaikan sistem PDB tersebut dengan memanggil ode23s
DEPARTEMEN TEKNIK SIPIL
[x,y]=ode23s(@pers, tspan, yb); ! ’pers’ adalah nama file kedua
...
UNIVERSITAS SUMATERA UTARA
6.7 Latihan lanjutan
Dengan menerapkan dan memodifikasi algoritma yang telah dijabarkan
sebelumnya, buatlah tiga program yang masing-masing bertujuan untuk menyele-
saikan PDB berikut:
d2 y
(1) dx2
− x + y = 0, dari xb = 0 sampai dengan xa = 4.z2 , dimana y (0) = 2 dan
dy
dx
(0) = y ′ (0) = 0. Gunakan CALL dan SUBROUTINE untuk menerapkan
metode Euler secara eksplisit. Lihat kembali algoritma pada hal. 103.
d2 y
(2) dx2
+ 0.5 dx
dy
+ 7y = 0, dari xb = 0 sampai dengan xa = 5.z2 , dimana y (0) = 4
dan dy
dx
(0) = y ′ (0) = 0. Gunakan CALL dan SUBROUTINE untuk menerapkan
metode Runge-Kutta orde 3 secara eksplisit dan tuliskan algoritmanya.
d2 y
(3) dx2
+1001 dx
dy
+1000y = 0, dari xb = 0 sampai dengan xa = 5.z2 , dimana y (0) = 1
dan dy
dx
(0) = y ′ (0) = 0. Gunakan CALL dan SUBROUTINE untuk menerapkan
metode Runge-Kutta orde 4 secara eksplisit (terapkan algoritma dari hal.
104-106). Gunakan juga metode Euler secara implisit dan modifikasi algo-
ritma pada hal. 107-108. Gunakan pula SUBROUTINE untuk mencari invers
dari matriks yang diperlukan.
(c) Tunjukkan penurunan sistem PDB dari persamaan PDB orde 2 di atas,
111
6.7 Latihan lanjutan
MODUL PRAKTIKUM
(e) Plot hasil fungsinya yang diperoleh dari bahasa pemrograman Fortran dan Mat-
lab serta bandingkan hasilnya untuk setiap soal.
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
112
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 7
Modul VI Interpolasi dan visualisasi
(2) Menyimpan data output berupa hasil interpolasi ke file eksternal dan
7.2.1 Input dan output data dari file eksternal pada Fortran
Pada sebuah program, pendefenisian nilai nilai dari data input dapat dilakukan
langsung pada script program tersebut. Namun, untuk data yang melibatkan angka
113
7.2 Dasar teori
MODUL PRAKTIKUM
dengan jumlah yang banyak, misalnya matriks berukuran 100x100, bukanlah hal
yang efisien apabila pendefenisian nilai-nilainya dilakukan secara manual. Alter-
PEMROGRAMAN KOMPUTER
natif lain adalah dengan membaca data dari sebuah file eksternal. Demikian juga
penyimpanan data yang memiliki banyak angka memerlukan file eksternal.
DEPARTEMEN TEKNIK SIPIL
Pada Fortran, file ini dapat berjenis text file ataupun csv file yang merupakan
hasil export dari sebuah file excel. Misalkan, untuk membaca sebuah text file, per-
UNIVERSITAS SUMATERA UTARA
intah OPEN pada Fortran perlu digunakan dengan sintaks sebagai berikut:
Beberapa hal yang perlu diperhatikan dalam penulisan sintaks di atas adalah:
(1) u berupa angka integer mulai dari 1 untuk mengidentifikasi file yang akan diru-
juk. Angka ini hanya bisa digunakan sekali untuk satu file yang sama,
(a) ”new” jika file sebelumnya belum ada dan akan dibuat oleh perintah OPEN,
(c) ”replace” jika file akan digantikan dengan yang baru dan
(d) ”scratch” jika file hanya akan digunakan selama eksekusi program.
(4) act adalah tindakan yang akan diambil sehubungan dengan file tersebut, yaitu:
(b) ”write” jika hasil perhitungan program akan ditulis ke dalamnya dan
(c) ”readwrite” jika tidak ada batas soal hanya membaca atau menuliskan hasil
perhitungan.
114
7.2 Dasar teori
MODUL PRAKTIKUM
Perhatikan bahwa untuk file yang akan dibaca datanya, pemilihan status adalah
”old” dan action adalah ”read”. Sedangkan untuk menyimpan hasil perhitungan ke
PEMROGRAMAN KOMPUTER
dalam suatu file, pemilihan status adalah ”new” jika file tersebut belum ada, atau
”replace” jika penulisan kembali pada file dengan nama yang sama diperbolehkan.
DEPARTEMEN TEKNIK SIPIL
Misalkan, penulisan sintaks agar dapat mencatat sebuah hasil perhitungan ke dalam
file yang diberi nama ”matriksoutput.txt” ditunjukkan di bawah ini.
UNIVERSITAS SUMATERA UTARA
open(unit=25, file=”matriksoutput.txt”, status=”replace”, action=”write”)
Contoh di atas menunjukkan angka 25 digunakan untuk merujuk kepada file bernama
”matriksoutput.txt” bernilai 25. Perhatikan juga bahwa pemilihan status adalah
”write” untuk setiap file yang akan dihasilkan.
Selanjutnya, untuk membaca data pada sebuah file, gunakan perintah READ.
Sintaks untuk menerapkan READ adalah seperti berikut:
Sedangkan untuk menuliskan data pada suatu file, gunakan perintah WRITE. Sin-
taks yang digunakan diberikan di bawah ini.
Perlu untuk diingat bahwa nilai u pada perintah READ atau WRITE harus sama
dengan nilainya pada perintah OPEN. Lebih lanjut lagi, gunakan tanda baca * jika
tidak terdapat format yang spesifik dari data yang akan dibaca atau ditulis. Jika
tidak, spesifikasikan fmtpada sintaks READ atau WRITE di atas untuk menyatakan
format dari data yang akan dibaca/ditulis. Format bisa ditetapkan untuk angka
maupun karakter. Beberapa pilihan format untuk angka adalah berikut ini:
(1) iw.m untuk bilangan integer, dimana w menyatakan jumlah karakter dari angka
tersebut pada file yang akan dibaca, dan m menampilkan jumlah minimum angka
yang akan ditampilkan.
(2) fw.d untuk bilangan real, dimana pengertian w adalah sama seperti sebelumnya,
115
7.2 Dasar teori
MODUL PRAKTIKUM
namun d menyatakan jumlah angka dibelakang titik desimal. Misalkan untuk
angka 15.623, d bernilai 3.
PEMROGRAMAN KOMPUTER
(3) ew.d digunakan untuk menampilkan bilangan real dengan notasi ilmiah (scien-
Format di atas harus dipatuhi pada penulisan angka pada file yang akan di baca
jika fmtdispesifikasikan. Jika tidak, akan terjadi error dan data gagal dibaca oleh
program.
Misalkan, pada file sebelumnya, yaitu ”matriksinput.txt”, tercatat deretan angka
dengan jumlah baris dan kolom yang masing-masing sebanyak 5, seperti tertulis pada
Gambar 7.1. Perhatikan bahwa terdapat spasi yang memisahkan satu angka dengan
angka lain pada baris yang sama. Spasi ini dapat digantikan dengan koma sebagai
penanda yang memisahkan kedua angka tersebut. Pada sebuah csv file misalnya,
koma digunakan daripada spasi sebagai penanda yang memisahkan angka.
Data pada file tersebut yang ditampilkan pada Gambar 7.1 menunjukkan bahwa
format bilangan tidak teratur. Oleh karenanya, untuk membaca data tersebut, peng-
gunaan format bebas lewat tanda baca * pada perintah READ sangat disarankan.
Dengan demikian, penulisan sintaks untuk membaca data di atas serta mengkon-
versinya menjadi elemen-elemen dari matriks bernama A dengan jumlah baris dan
116
7.2 Dasar teori
MODUL PRAKTIKUM
angka sebanyak 5 adalah:
do i=1,5
write (unit=25, fmt=”(5es12.3)”) (A(i,j), j=1,5)
end do
...
! Alternatif lain adalah dengan menggunakan baris lain untuk mendefenisikan
! format. Gunakan penomoran baris format, misalkan 365.
do i=1,5
write (25, 365) (A(i,j), j=1,5)
end do
! Pendefenisian format spesifik untuk menulis elemen matriks
365 format (5es12.3)
Dalam hal ini, fmt dispesifikasikan sebagai 5es12.3 karena terdapat 5 kolom elemen
matriks A yang ditulis dengan format yang sama. Perintah di atas akan meny-
impan elemen-elemen matriks A dengan tampilan yang ditunjukkan pada Gambar
7.2(a). Elemen matriks tersimpan dengan baik jika menggunakan jumlah karakter,
w, sebanyak 12, dengan jumlah angka digit di belakang titik desimal, d, sebanyak 3.
Namun, jika w bernilai 9, data tidak tersimpan dengan baik. Hal ini dibuktikan dari
tanda baca * pada data yang tersimpan pada file tersebut (lihat Gambar 7.2(b)).
117
7.2 Dasar teori
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA
(a)
(b)
GAMBAR 7.2: Hasil penyimpanan dan penulisan data pada file bernama ”matriksoutput.txt”
dengan format (A) 5es12.3 dan (B) 5es9.3.
Apabila pembacaan/penulisan data dari atau ke file eksternal sudah selesai di-
lakukan, file tersebut perlu ditutup dengan sintaks berikut:
close(unit=u)
u pada sintaks tersebut harus sama dengan angka yang ditetapkan untuk merujuk
kepada file yang akan ditutup tersebut. Jika tidak, maka pembacaan/penulisan
berikutnya akan berlanjut dari bagian terakhir data yang telah dibaca/ditulis.
7.2.2 Input dan output data dari file eksternal pada Matlab
Pada Matlab, pembacaan dan penyimpanan data dari dan ke sebuah file eksternal
harus didahului dengan perintah FOPEN. Sama seperti pada bahasa pemrograman
Fortran, perintah ini berfungsi untuk membuka suatu file. Berikut adalah sintaks
118
7.2 Dasar teori
MODUL PRAKTIKUM
yang digunakan:
formatSpec=fmt
nama variabel=cell2mat(textscan(fileID, formatSpec))
% atau ...
size=[jumlah baris jumlah kolom]
nama variabel=fscanf(fileID, formatSpec, size)
...
fclose(fileID)
Beberapa hal yang perlu diperhatikan sehubungan dengan sintaks di atas adalah:
(1) fmt dapat ditetapkan sebagai %d untuk bilangan integer, %f untuk bilangan real
tanpa notasi ilmiah dan %e atau %E untuk menggunakan notasi ilmiah.
(2) Jumlah angka di belakang titik desimal, d, dan jumlah karakter data, w, dapat
ditentukan dengan %w.dE, %w.de atau %w.df.
(3) Format %f dapat digunakan untuk membaca data yang ditulis dengan atau tanpa
notasi ilmiah pada suatu file.
(4) Untuk format yang berulang, misalnya pada data elemen sebuah matriks, ada
baiknya menggunakan perintah REPMAT.
119
7.2 Dasar teori
MODUL PRAKTIKUM
Sebagai contoh, untuk sebuah file yang bernama ”matriksinput.txt” yang berisi data
matriks berukuran 5x5, sintaks yang diperlukan untuk membuka, membaca serta
PEMROGRAMAN KOMPUTER
menutup file tersebut adalah:
Dalam hal ini data dibaca dan dikonversikan menjadi suatu matriks bernama A
lewat perintah cell2mat. Lebih lanjut lagi, perintah di atas dipakai untuk membaca
data yang melibatkan spasi sebagai tanda pemisah. Apabila koma digunakan pada
data, seperti pada csv file, perintah cell2mat dimodifikasi menjadi:
A=cell2mat(textscan(fileID, formatSpec,’delimiter’,’,’))
Perintah untuk menyimpan data ke sebuah file juga terlebih dahulu menggunakan
perintah FOPEN seperti sebelumnya. Hanya saja, ”w” dipilih untuk action dan
bukan ”r”. Selain dari itu, perintah WRITEMATRIX digunakan untuk menyimpan
data matriks. Alternatif lain bisa menggunakan FPRINTF. Sebagai contoh, sintaks
yang digunakan untuk membuka file bernama ”matriksoutput.txt” lalu menyimpan
data elemen matriks A pada file tersebut adalah sebagai berikut:
fileID=fopen(”matriksoutput.txt”, ”w”)
writematrix(A, ”matriksoutput.txt”, ’Delimiter’, ’tab’)
% tab berarti spasi digunakan untuk memisahkan angka
% atau gunakan koma sebagai tanda pemisah
writematrix(A, ”matriksoutput.txt”, ’Delimiter’, ’,’)
120
7.2 Dasar teori
MODUL PRAKTIKUM
lukan. Dalam modul ini, Lagrange interpolating polynomial, L (x), diterapkan untuk
melakukan interpolasi linear, kuadratik maupun interpolasi dengan derajat polino-
PEMROGRAMAN KOMPUTER
mial, n, yang lebih tinggi. Interpolasi pada suatu variabel bebas x = x dengan fungsi
polinomial ini dapat direpresentasikan sebagai berikut:
DEPARTEMEN TEKNIK SIPIL n
fn (x) = Li (x) f (xi ) ,
X
j=0,j̸=i xi − xj
n bernilai suatu bilangan integer, yaitu 0 apabila fungsi, f (x), adalah konstanta, 1
apabila f (x) adalah fungsi linear (interpolasi linear), 2 untuk fungsi f (x) kuadratik
(interpolasi kuadratik), dan lebih tinggi untuk fungsi f (x) dengan derajat polinomial
n lebih tinggi. Perlu diperhatikan bahwa untuk interpolasi linear (n = 1) diperlukan
data, yaitu f (xi ), pada dua buah xi , sedangkan untuk interpolasi kuadratik (n =
2) diperlukan data sebanyak tiga buah. Secara umum, interpolasi dengan derajat
polinomial n membutuhkan data sebanyak n + 1 buah.
Interpolasi linear, f1 (x), dan kuadratik, f2 (x), pada x = x, dapat diekspresikan
masing-masing dengan mengimplementasikan Persamaan (7.1) sebagai berikut:
x − x1 x − x0
f1 (x) = f (x0 ) + f (x1 ) , (7.2)
x0 − x1 x1 − x0
(x − x1 ) (x − x2 ) (x − x0 ) (x − x2 )
f2 (x) = f (x0 ) + f (x1 )
(x0 − x1 ) (x0 − x2 ) (x1 − x0 ) (x1 − x2 )
(7.3)
(x − x0 ) (x − x1 )
+ f (x2 ) ,
(x2 − x0 ) (x2 − x1 )
dimana x adalah variabel bebas yang akan dicari nilai fungsinya melalui interpolasi.
Nilai x ini harus berada diantara data x0 , x1 , ..., xn untuk setiap interpolasi berderajat
n (lihat Gambar 7.3).
Algoritma yang diterapkan untuk membuat program yang bertujuan melakukan
interpolasi satu dimensi dengan derajat n tertentu pada variabel bebas x adalah
berikut:
(i) Deklarasikan tipe data variabel derajat polinomial, n, data variabel bebas, xi ,
dan terikatnya, f (xi ), masing-masing sebanyak n + 1.
(ii) Deklarasikan pula tipe data yang akan diinterpolasi nilai fungsinya, x.
121
7.2 Dasar teori
MODU
f(x) L PRAKTIKUM
f(x )
PEMROGRA
f(x ) MAN KOMP i+1
f( x )?
i UTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITASx SUMA
x x x x TERA
x
x x x UTARA 0 1 2 i i+1 n-1 n
GAMBAR 7.3: Nilai x berada di antara x0 dan xn pada interpolasi satu dimensi.
(v) Buat do loop dengan indeks iterasi mulai dari i = 0 sampai dengan i = n.
(vi) Tetapkan bahwa nilai f (x) yang terakhir menjadi hasil interpolasi pada x terse-
but, tampilkan serta simpan hasilnya ke file eksternal.
Algoritma di atas berlaku untuk melakukan interpolasi pada satu nilai x. Agar
dapat melakukan interpolasi berkali-kali pada nilai x yang berbeda, gunakanlah
sebuah loop terluar. Sebagai latihan bagi praktikan, algoritma ini tidak dituliskan.
Selain itu, algoritma di atas hanya berlaku untuk interpolasi derajat polinomial
n dengan menggunakan data xi dan f (xi ), masing-masing sebanyak n + 1. Untuk
122
7.2 Dasar teori
MODUL PRAKTIKUM
jumlah data yang sama, tetapi derajat polinomial kurang dari n, algoritma tersebut
perlu dimodifikasi. Dalam praktikum ini, kasus demikian tidak didiskusikan lebih
PEMROGRAMAN KOMPUTER
lanjut.
7.2.4DEPAR
InterpolasiTEME N TEKNIK SIPIL
dua dimensi
f(x0, y1) y
f(x,y)
f( x , y )?
y y1 f(x0, y1) f( x ,y1 ) f(x1, y1)
f(x0, y0)
f(x1, y1) y f( x , y )?
y1 f(x1, y0)
y
y0
f(x0, y0) f( x ,y0 ) f(x1, y0)
y0
x x
x0 x x1 x0 x x1
(a) (b)
GAMBAR 7.4: (A) Nilai x, y berada di x0 ≤ x ≤ x1 dan y0 ≤ y ≤ y1 pada interpolasi dua di-
mensi, (B) Interpolasi linear diterapkan pertama tama untuk mengestimasi nilai fungsi f (x, y0 ), lalu
f (x, y1 ) dan dilanjutkan dengan interpolasi linear kedua untuk mendapatkan hasil akhir f (x, y).
Interpolasi linear dua dimensi untuk mendapatkan nilai fungsi f (x, y) dilakukan
secara bertahap. Pertama-tama, interpolasi linear satu dimensi dilakukan untuk
mendapatkan nilai fungsi pada (x, y0 ) dengan persamaan berikut:
x − x1 x − x0
f (x, y0 ) = f (x0 , y0 ) + f (x1 , y0 ) , (7.4)
x0 − x1 x1 − x 0
x − x1 x − x0
f (x, y1 ) = f (x0 , y1 ) + f (x1 , y1 ) . (7.5)
x0 − x1 x1 − x 0
123
7.2 Dasar teori
MODUL PRAKTIKUM
Dalam hal ini, nilai y diambil konstan untuk tiap persamaan di atas. Selanjutnya,
interpolasi linear dilakukan untuk mendapatkan nilai fungsi f (x, y) dari dua nilai
PEMROGRAMAN KOMPUTER
fungsi sebelumnya, yaitu f (x, y0 ) dan f (x, y1 ) melalui persamaan:
i=0
n
fn (x, y1 ) = Li (x) f (xi , y1 ) ,
X
i=0
...
n
fn (x, yi ) = Li (x) f (xi , yi ) ,
X
(7.7)
i=0
...
n
fn (x, yn ) = Li (x) f (xi , yn ) ,
X
i=0
n
x − xj
dimana Li (x) =
Y
.
j=0,j̸=i xi − xj
i=0
n (7.8)
y − yj
dimana Li (y) =
Y
.
j=0,j̸=i y i − y j
Algoritma yang dapat diterapkan untuk interpolasi dua dimensi dengan derajat
polinomial n pada variabel bebas, x dan y, diberikan di bawah ini.
(i) Deklarasikan tipe data variabel derajat polinomial, n, data variabel bebas,
xi , yi , dan terikatnya, f (xi , yi ), masing-masing sebanyak (n + 1)2 .
(ii) Deklarasikan pula tipe data yang akan diinterpolasi nilai fungsinya, x dan y.
124
7.2 Dasar teori
MODUL PRAKTIKUM
(iii) Lakukan pembacaan nilai n, xi , yi , f (xi , yi ), x dan y.
PEMROGRAMAN KOMPUTER
(iv) Panggil (CALL) sebuah SUBROUTINE yang bertujuan menghitung semua
Li (x), untuk indeks i = 0 sampai dengan i = n. Di dalam SUBROUTINE,
(a) Buatlah do loop dengan indeks iterasi mulai dari i = 0 sampai dengan
UNIVERSITAS SUMATERA UTARA
i = n.
(1) Inisialisasi bahwa nilai hasil faktorial untuk setiap Li (x) sebesar 1.
(2) Buat do loop terdalam dengan indeks iterasi mulai dari j = 0 sampai
dengan j = n.
x−xj
(1) Jika j ̸= i, hitunglah f ak, dimana f ak = xi −xj
.
(2) Jika j = i, tetapkan f ak = 1.
(3) Perbaharui nilai hasil faktorial Li (x) = Li (x) f ak.
(4) Ulangi langkah (1) sampai indeks j terakhir, yaitu j = n, untuk
mendapatkan hasil akhir dari Li (x).
(b) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = n. Jika sudah selesai,
kembali ke program utama.
(v) Buat do loop dengan indeks iterasi mulai dari i = 0 sampai dengan i = n untuk
menghitung nilai dari f (x, yi ).
(vi) Kembali panggil (CALL) SUBROUTINE yang sama dari langkah (iv). Kali
ini, SUBROUTINE bertujuan menghitung semua Li (y), untuk indeks i = 0
sampai dengan i = n. Penting untuk dicatat bahwa perbedaan utama terletak
y−yj
pada perhitungan f ak, dimana f ak = yi −yj
.
125
7.2 Dasar teori
MODUL PRAKTIKUM
(vii) Inisialisasi nilai dari fungsi f (x, y) sebesar 0.
PEMROGRAMAN KOMPUTER
(viii) Buat do loop dengan indeks iterasi mulai dari i = 0 sampai dengan i = n.
(ix) Tampilkan dan simpan ke file eksternal hasil akhir dari f (x, y).
Algoritma di atas berlaku untuk melakukan satu kali interpolasi pada (x, y). Agar
dapat melakukan interpolasi berkali-kali pada (x, y) yang berbeda-beda, gunakanlah
sebuah loop terluar. Sebagai latihan bagi praktikan, algoritma ini tidak dituliskan.
(i) interp1 berfungsi melakukan interpolasi satu dimensi dari data berupa lokasi
koordinat (xi ) beserta nilai fungsinya, f (xi ), pada lokasi tersebut. Misalkan, xi
bernilai 0, 1, 2, ..., 5, sintaks yang dapat digunakan untuk melakukan interpolasi
pada xi bernilai 0, 0.5, 1, 1.5, ..., 5 adalah seperti berikut ini.
126
7.2 Dasar teori
MODUL PRAKTIKUM
% Defenisikan lokasi koordinat yang akan diinterpolasi, xint
% Dimana diketahui sebelumnya jarak antara xint adalah 0.5
PEMROGRAMAN KOMPUTER
xint=0:0.5:5
(ii) interp2 berfungsi melakukan interpolasi dua dimensi dari data grid dua di-
mensi, yaitu lokasi koordinat (xi , yi ) beserta nilai fungsinya, f (xi , yi ), pada
lokasi tersebut. Sebagai contoh, xi bernilai −5, −4, ..., 4, 5 dan yi bernilai
−5, −4, ..., 4, 5, sintaks yang digunakan untuk menginterpolasi nilai fungsi terse-
but pada lokasi koordinat, (xi , y i ), dimana xi bernilai −5, −4.5, ..., 4.5, 5 dan y i
bernilai −5, 4.5, ..., 4.5, 5 diberikan di bawah ini.
127
7.2 Dasar teori
MODUL PRAKTIKUM
% Jika ingin memvisualisasikan nilai fungsi FXY
% pada tiap-tiap X dan Y, gunakan
PEMROGRAMAN KOMPUTER
surf(X, Y, FXY)
Gambar 7.5(a) menampilkan kurva dari fungsi satu dimensi, f (xi ), pada berbagai
lokasi koordinat, xi , yang bernilai 0, 1, 2, ..., 5. Hasil interpolasi secara linear dan
kubik pada lokasi koordinat yang lebih rapat, xi , yang bernilai 0, 0.5, 1, ..., 5 dita-
mpilkan pada Gambar 7.5(b) sebagai perbandingan.
5 5
0 0
f(xint i)
f(x i)
-5 -5
-10 -10
linear
cubic
-15 -15
0 1 2 3 4 5 0 1 2 3 4 5
xi xinti
(a) (b)
GAMBAR 7.5: (A) Kurva fungsi satu dimensi, f (xi ), pada xi dan (B) hasil interpolasinya dengan
linear dan kubik.
128
7.3 Latihan
MODUL PRAKTIKUM
Gambar 7.6(a) menampilkan kurva dari fungsi dua dimensi, f (xi , yi ), pada berba-
gai lokasi koordinat, (xi , yi ), yang masing-masing bernilai −5, −4, ..., 4, 5. Hasil in-
PEMROGRAMAN KOMPUTER
terpolasi secara linear dan kubik pada lokasi koordinat yang lebih rapat, (xi , y i ),
yang masing-masing bernilai −5, −4.5, ..., 4.5, 5 ditampilkan pada Gambar 7.6(b)
DEPARTEMEN TEKNIK SIPIL
dan 7.6(c) sebagai perbandingan.
(a)
(b) (c)
GAMBAR 7.6: (A) Kurva fungsi dua dimensi, f (xi , yi ), pada xi , yi dan hasil interpolasinya
dengan (B) linear serta (C) kubik.
7.3 Latihan
Kerjakanlah hal berikut:
(1) Ketiklah elemen-elemen dari suatu matriks A yang berukuran 1z3 x1z3 , dimana
semua elemen mulai dari baris 1 sampai 5 dan kolom 1 sampai 5 bernilai 1z1 z2 .0z3 8,
sedangkan elemen yang lain bernilai 0.08z2 z3 5, pada suatu text file. Buatlah pro-
gram yang tujuannya:
129
7.3 Latihan
MODUL PRAKTIKUM
(a) membaca elemen-elemen matriks A tersebut dari sebuah file eksternal,
(3) Buatlah program yang bertujuan menghitung nilai f (x) = xz3 cosh (x + π/2) +
ex sin z3 , pada semua x di sebuah interval 0.z3 ≤ x ≤ 1.z3 , dimana subinterval ∆x
adalah sebesar 1.z3 −0.z3
n
, dan n = 10 + z3 . Program ini akan menghasilkan data
xi dan nilai fungsinya, f (xi ), masing-masing sebanyak n + 1. Simpanlah data
xi dan f (xi ) ke sebuah file eksternal.
(4) Buatlah program yang membaca kembali data yang dihasilkan pada soal (3)
dari file ekternal sebelumnya dan lakukan interpolasi derajat polinomial n satu
dimensi untuk mengestimasi nilai f (x) pada 0.z3 ≤ x ≤ 1.z3 . Untuk tugas ini,
subinterval yang diambil adalah ∆x = 1.z3 −0.z3
2n
, dimana n = 10 + z3 . Terapkan
dan modifikasi algoritma yang telah dijabarkan sebelumnya pada hal. 121-122.
Simpanlah data interpolasi baik xi dan f (xi ) pada suatu file eksternal.
(b) Implementasikan Matlab pada soal di atas untuk membaca, menyimpan data
serta melakukan interpolasi dan
130
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA 8
Studi kasus
Bab ini menjelaskan beberapa studi kasus yang relevan pada bidang Teknik Sipil.
Penyelesaian studi kasus ini menerapkan bahasa pemrograman. Dengan adanya studi
kasus ini, mahasiswa diharapkan dapat memahami bagaimana menyelesaikan suatu
permasalahan di bidang Teknik Sipil dengan menggunakan bahasa pemrograman.
1 2.51
!
ϵ
√ = −2.0 log + √ , (8.1)
f 3.7D Re f
ρU D
Re = , (8.2)
µ
131
8.1 Akar Persamaan
MODUL PRAKTIKUM
dimana U adalah kecepatan rata-rata aliran fluida di dalam pipa, ρ rapat massa dan
µ adalah kekentalan dinamik fluida. Jika properti fluida dinyatakan sebagai yang
PEMROGRAMAN KOMPUTER
terlihat pada Tabel 8.1.
−5
0.0015 60 0.005
3 1.23 1.79x10 0.0015 80 0.005
−5
4 1.23 1.79x10 0.0005 40 0.005
−5
5 1.23 1.79x10 0.0015 40 0.005
6 1.23 1.79x10−5 0.002 40 0.005
Jika ruas kiri dari Persamaan (8.1) dipindahkan ke ruas kanannya, persamaan
tersebut menjadi seperti di bawah ini:
1 2.51
!
ϵ
0 = √ + 2.0 log + √ . (8.3)
f 3.7D Re f
1 2.51
!
ϵ
F (f ) = √ + 2.0 log + √ . (8.4)
f 3.7D Re f
Dengan demikian, f yang dicari adalah ketika F (f ) = 0.0. Dalam hal ini dikatakan
bahwa f adalah akar persamaan dari F (f ), fr . Untuk persamaan tak linear seperti
Persamaan (8.4), metode seperti Newton-Raphson perlu diterapkan untuk mencari
akar persamaannya. Namun, sebelum menyelesaikannya, konstanta seperti D, ρ, µ,
ϵ dan Re perlu didefenisikan (lihat Tabel 8.1). Selain itu, estimasi awal (inisial-
isasi) akar persamaan, fr(1) , juga perlu dilakukan. Persamaan Swamee-Jain dapat
digunakan untuk menginisialisasi nilai fr(1) :
1.325
fr(1) = h i2 . (8.5)
ln 3.7ϵ D + Re
5.74
0.9
Perhatikan bahwa tanda superskript (1) menandakan estimasi pertama akar per-
samaan. Setiap estimasi, kebenarannya perlu diperiksa dengan mengevaluasi apakah
nilai fungsi dari F (fr ) sudah mendekati nol, atau lebih kecil dari toleransi yang
ditetapkan. Jika belum, perbaiki estimasi akar persamaan menggunakan formula
132
8.1 Akar Persamaan
MODUL PRAKTIKUM
Newton-Raphson seperti berikut ini:
PEMROGRAMAN KOMPUTER
F fr(1)
fr(2) = fr(1) −
(1)
. (8.6)
F ′ fr
1 2.51
F ′ (f ) = − √ 3 − √ (8.7)
2 f
Re ln 10 f 3 3.7
ϵ
+ √
2.51
Re f
Substitusi fr(1) menggantikan f di dalam Persamaan (8.7) dan Persamaan (8.4) dan
gunakan hasilnya untuk mengestimasi fr(2) (lihat Persamaan (8.6)). Lakukan langkah
ini berulang sampai nilai fungsi dari F (fr ) sudah mendekati nol.
Catatan: Gunakan do loop untuk melakukan perhitungan berulang dan do while
selama nilai fungsi dari F (fr ) belum mendekati nol, atau lebih besar dari toleransi
yang ditetapkan.
gT 2 2π
L= tanh h . (8.8)
2π L
Lagi-lagi, persamaan di atas merupakan persamaan tak linear karena baik pada ruas
kiri dan ruas kanan terdapat variabel yang dicari yaitu L dan pangkat L di ruas kanan
bukan ordo 1. Seperti sebelumnya, ruas kiri dari Persamaan (8.8) dipindahkan ke
ruas kanan menjadi:
gT 2 2π
0 = −L + tanh h . (8.9)
2π L
133
8.1 Akar Persamaan
MODUL PRAKTIKUM
Persamaan (8.9) dapat secara umum ditulis sebagai berikut:
2 2π h
!
gT 2 h
F (L) = −1 −
′
sech . (8.12)
L2 L
(8.10) serta menggunakan Persamaan (8.11), estimasi kedua akar persamaan, L(2)
r ,
dapat dicari. Ulangi langkah ini sampai nilai fungsi dari F (Lr ) sudah mendekati
nol, atau lebih kecil dari nilai toleransi yang ditetapkan.
Catatan: Gunakan do loop untuk melakukan perhitungan berulang dan do while
selama nilai fungsi dari F (Lr ) belum mendekati nol, atau lebih besar dari toleransi
yang ditetapkan.
134
8.2 Matriks
PEMROGRAMAN KOMPUTER 1
2
10
10
20
30
9.8
9.8
3.14
3.14
8.2 Matriks
2 30o F2 60o
2 30o F2 60o H2 3
H2 3
V2 V3 V2 V3
(a) Kasus 1: Gaya luar vertikal (b) Kasus 2: Gaya luar horisontal
GAMBAR 8.1: Gaya luar yang bekerja pada node 1 dari suatu rangka batang.
Gambar 8.1(a) dan 8.1(a) menunjukkan rangka batang memiliki support sendi
(node 2) dan roll (node 3). Pada sendi, terhadap reaksi horisontal, H2 , dan reaksi
vertikal, V2 , sedangkan pada roll hanya terdapat reaksi vertikal, V3 . Selain dari itu,
gaya-gaya internal pada tiap batang yang menghubungkan node 1 dan 2 adalah F1 ,
node 2 dan 3 adalah F2 dan 1 dan 3 adalah F3 .
135
8.2 Matriks
MODUL PRAKTIKUM
Untuk menghitung gaya-gaya tersebut, free body diagram yang bekerja pada tiap
node perlu digambar. Dalam hal ini, gaya-gaya internal pada tiap batang diasum-
PEMROGRAMAN KOMPUTER
sikan berupa gaya tarik. Dengan demikian, free body diagram yang diperoleh adalah
seperti yang ditunjukkan pada Gambar 8.2. Perlu dicatat bahwa di tiap-tiap node,
DEPARTEMEN TEKNIK SIPIL
i, gaya-gaya eksternal (berwarna merah) yang bekerja secara horisontal, Fi,H dan
vertikal, Fi,V , ditunjukkan juga pada gambar ini. Meskipun menurut kasus 1, hanya
UNIVERSITAS SUMATERA UTARA
ada F1,V (lihat Gambar 8.1(a)), dan menurut kasus 2, hanya ada F1,H yang bekerja
sebagai gaya eksternal (lihat Gambar 8.1(b)).
F1,V
1 F1,H
F1
F3
F2,V F3,V
F1 F3
2 30o 60o F3,H
H2
F2 F2 3
F2,H
V2 V3
GAMBAR 8.2: Free body diagram pada masing-masing node dari rangka batang.
Pada persoalan ini, terdapat enam variabel yang tidak diketahui nilainya, yaitu
H2 , V2 , V3 , F1 , F2 dan F3 . Dengan demikian, diperlukan enam persamaan untuk
menyelesaikan analisa rangka batang statik tentu. Persamaan-persamaan diturunkan
dari persamaan kesetimbangan statik karena struktur tidak bergerak. Persamaan ke-
setimbangan yang diterapkan pada node 1:
Perlu dicatat bahwa FH memiliki tanda positif bila arah ke kanan dari kiri, dan FV
memiliki tanda positif bila arah ke atas dari bawah. Untuk node 2, persamaan yang
136
8.2 Matriks
MODUL PRAKTIKUM
berlaku adalah:
PEMROGRAMAN KOMPUTER X
FH = 0 = F2 + F1 cos 30o + F2,H + H2 (8.15)
FV = 0 = F1 sin 30o + F2,V + V2 . (8.16)
X
Seperti yang telah diindikasikan sebelumnya, untuk kasus 1, F1,H = F2,V = F2,H =
F3,V = F3,H = 0, sedangkan F1,V ̸= 0. Untuk kasus 2, F1,V = F2,V = F2,H = F3,V =
F3,H = 0, sedangkan F1,H ̸= 0.
Persamaan (8.13)-(8.17) menunjukkan ada enam persamaan untuk enam vari-
abel yang tak diketahui. Dengan demikian, analisa ini merupakan statik tentu. Per-
samaan tersebut dapat diatur ulang dengan menetapkan suku-suku yang mengan-
dung variabel tak diketahui, F1 , F2 , F3 , H2 , V2 , V3 , di ruas kiri, sedangkan suku-suku
yang tak mengandung variabel ini ditempatkan di ruas kanan persamaan menjadi:
Persamaan (8.19) ini juga dapat diekspresikan ke dalam bentuk perkalian antara
sebuah matriks A6x6 dengan sebuah vektor, B6x1 , yang menghasilkan sebuah vektor,
137
8.2 Matriks
MODUL PRAKTIKUM
C6x1 , sebagai berikut
PEMROGRAMAN KOMPUTER
A6x6 · B6x1 = C6x1
A1,1 A1,2 ... A1,5 A1,6 B1 C1
DEPARTEMEN TEKNIK SIPIL
A2,1
B2
A2,2 ... A2,5 A2,6
C2
(8.20)
A3,1 A3,2 ... A3,5 A3,6
B3
C3
=
UNIVERSITAS SUMATERA UTARA ,
A A4,2 ... A4,5 A4,6
B2
C
4,1 4
A5,1 A5,2 ... A5,5 A5,6 B2 C5
A6,1 A6,2 ... A6,5 A6,6 B3 C6
dimana elemen dari matriks A6x6 merupakan koefisien dari variabel yang tak dike-
tahui, elemen dari vektor B6x1 merupakan variabel yang tak diketahui, dan C6x1
merupakan variabel yang diketahui. A6x6 dan B6x1 diturunkan dari ruas kiri dari
Persamaan (8.19), sedangkan C6x1 diperoleh dari ruas kanannya.
Buatlah program untuk menentukan elemen dari matriks A6x6 dan vektor C6x1
berdasarkan keterangan pada Tabel 8.3.
tukan vektor B6x1 , yang tak lain adalah variabel-variabel yang tak diketahui, yaitu
F1 , F2 , F3 , H2 , V2 , V3 . Vektor B6x1 dapat diperoleh melalui perkalian matriks seperti
berikut:
B6x1 = A−1
6x6 · C6x1 . (8.21)
138
8.3 Integrasi numerik
PEMR
8.3.1 Analisa OGRA MAN KOMPUTER
jumlah kendaraan
Data arus lalu lintas pada suatu persimpangan jalan selama 24 jam diperoleh seperti
DEPARTEMEN TEKNIK SIPIL
berikut:
(i) Jumlah total kendaraan yang melewati persimpangan tersebut selama 24 jam.
(ii) Rata-rata arus lalu lintas dari data di atas dalam satuan jumlah kendaraan/menit.
dimana t adalah waktu. Jika waktu dinyatakan dalam satuan jam, ALL harus
dinyatakan dalam satuan jumlah kendaraan/jam, bukan jumlah kendaraan/menit.
Dengan demikian, data pada Tabel 8.4 perlu dikonversi.
Penyelesaian Persamaan (8.22) dapat dilakukan secara integrasi numerik. Jika
menggunakan metode Trapesium, Persamaan (8.22) dapat diekspresikan seperti di
bawah ini.
X−1
i=N
1
I= (ALLi + ALLi+1 ) ∆ti , (8.23)
i=1 2
sedangkan jika menggunakan metode Persegi Panjang, Persamaan (8.22) dapat diek-
139
8.3 Integrasi numerik
MODUL PRAKTIKUM
spresikan sebagai berikut:
PEMROGRAMAN KOMPUTER I=
X−1
i=N
i=1
ALLi ∆ti , (8.24)
wo
θ (x) = −5x4 + 6L2 x2 − L4 , (8.25)
120EIL
dimana E adalah modulus elastisitas [P a], I momen inertia [m4 ] dan L adalah pan-
jang beam [m]. Untuk nilai Wo besarnya konstan yaitu 2.5kN/cm.
Wo
(a) Beban pada balok (b) Defleksi dan kemiringan pada balok
Hubungan antara defleksi, y (x), dan kemiringan, θ (x), dapat dinyatakan dari
140
8.3 Integrasi numerik
PEMROGRAMAN KOMPUTER 1
2
200
200
0.0003
0.0003
3
5
persamaan turunan:
dy
= θ (x) , (8.26)
dx
Buatlah program untuk menghitung defleksi pada x = 0, ∆x, 2∆x, ..., L − ∆x, L
apabila data properti balok adalah seperti yang disajikan pada Tabel 8.5. Perhatikan
agar dalam penggunaan data pada tabel, satuan dari tiap tiap properti balok selaras.
Gunakan do loop untuk melakukan setiap perhitungan yang berulang.
141