Anda di halaman 1dari 141

PETUNJUK DAN MODUL PRAKTIKUM

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

1 Standar operasional prosedur 9


1.1 Pra praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Pelaksanaan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Pasca praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Sanksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Modul I Pengenalan akan Fortran dan Matlab 12


2.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Diagram alir (flowchart) . . . . . . . . . . . . . . . . . . . . . 14
2.2.3 Statement awal program dan komentar . . . . . . . . . . . . . 16
2.2.4 Tipe variabel dan parameter . . . . . . . . . . . . . . . . . . . 17
2.2.5 Operator aritmatika . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.6 Fungsi intrinsik . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.7 Operator hubungan . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.8 Operator logika . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

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 III Akar persamaan 47


4.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.1 Struktur IF ELSE . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.2 Struktur DO WHILE . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.3 Metode Bisection . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.4 Metode Newton-Raphson . . . . . . . . . . . . . . . . . . . . . 53
4.2.5 Fungsi-fungsi pada Matlab . . . . . . . . . . . . . . . . . . . . 55
4.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5 Modul IV Integrasi numerik 59


5.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.1 Struktur IF ELSE bersarang . . . . . . . . . . . . . . . . . . . 59
5.2.2 Kombinasi IF ELSE dan DO LOOP . . . . . . . . . . . . . . . 61
5.2.3 Defenisi integrasi . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.4 Metode Trapesium dan Persegi Panjang . . . . . . . . . . . . 62
5.2.5 Metode aturan Simpson 1/3 . . . . . . . . . . . . . . . . . . . 67
5.2.6 Fungsi-fungsi pada Matlab . . . . . . . . . . . . . . . . . . . . 73
5.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6 Modul V Diferensiasi numerik dan persamaan diferensial biasa 80


6.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2 Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.1 CALL dan SUBROUTINE . . . . . . . . . . . . . . . . . . . . 81
6.2.2 Turunan numerik . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.3 Persamaan diferensial biasa (PDB) . . . . . . . . . . . . . . . 84

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

7 Modul VI Interpolasi dan visualisasi 113


7.1 Tujuan praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2 Dasar teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2.1 Input dan output data dari file eksternal pada Fortran . . . . 113
7.2.2 Input dan output data dari file eksternal pada Matlab . . . . 118
7.2.3 Interpolasi satu dimensi . . . . . . . . . . . . . . . . . . . . . 120
7.2.4 Interpolasi dua dimensi . . . . . . . . . . . . . . . . . . . . . . 123
7.2.5 Fungsi interpolasi dan visualisasi pada Matlab . . . . . . . . . 126
7.3 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

8 Studi kasus 131


8.1 Akar Persamaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.1.1 Gesekan pada pipa . . . . . . . . . . . . . . . . . . . . . . . . 131
8.1.2 Bilangan gelombang . . . . . . . . . . . . . . . . . . . . . . . 133
8.2 Matriks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.2.1 Analisa rangka batang statik tentu . . . . . . . . . . . . . . . 135
8.3 Integrasi numerik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.3.1 Analisa jumlah kendaraan . . . . . . . . . . . . . . . . . . . . 139
8.3.2 Analisa defleksi balok . . . . . . . . . . . . . . . . . . . . . . . 140

5
DAFTAR GAMBAR

MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIKDaftar
SIPIL gambar

UNIVERSITAS SUMATERA UTARA


2.1 Simbol diagram alir. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Diagram alir untuk perhitungan biaya pembuatan kolom. . . . . . . . 15
2.3 Diagram alir untuk perhitungan faktorial N !. . . . . . . . . . . . . . 16

3.1 Penyusunan elemen-elemen matriks untuk perhitungan determinan


menurut aturan Sarrus. . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Sebuah sistem dengan sepuluh pegas dan sepuluh massa. . . . . . . . 45

4.1 Tahapan dalam pencarian akar persamaan dengan menggunakan metode


Bisection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Tahapan dalam pencarian akar persamaan dengan menggunakan metode
Newton-Raphson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Sebuah sistem pintu air dengan pemberat. . . . . . . . . . . . . . . . 58

5.1 Integrasi satu dimensi. . . . . . . . . . . . . . . . . . . . . . . . . . . 63


5.2 Integrasi dua dimensi. . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 Sebuah penampang melintang dari sungai. . . . . . . . . . . . . . . . 75
5.4 Sebuah penampang melintang dari composite column. . . . . . . . . . 77
5.5 Sebuah penampang melintang dari composite column. . . . . . . . . . 78

6.1 Turunan pertama dan kedua. . . . . . . . . . . . . . . . . . . . . . . 83


6.2 Metode Euler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3 Sebuah penampang melintang dari composite column. . . . . . . . . . 99

7.1 Data pada file bernama ”matriksinput.txt”. . . . . . . . . . . . . . . . 116


7.2 Hasil penyimpanan dan penulisan data pada file bernama ”matrik-
soutput.txt”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.3 Ilustrasi interpolasi pada satu dimensi. . . . . . . . . . . . . . . . . . 122
7.4 Ilustrasi interpolasi pada dua dimensi. . . . . . . . . . . . . . . . . . 123

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

DEPARTEMEN TEKNIK SIPIL


8.2
8.3
Free body diagram pada masing-masing node dari rangka batang. . . 136
Balok yang mengalami pembebanan terdistribusi secara linear. . . . . 140

UNIVERSITAS SUMATERA UTARA


Daftar tabel

2.1 Operator aritmatika pada Fortran dan Matlab . . . . . . . . . . . . . 21


2.2 Fungsi matematika pada Fortran dan Matlab . . . . . . . . . . . . . 22
2.3 Operator hubungan pada Fortran dan Matlab . . . . . . . . . . . . . 24
2.4 Operator logika pada Fortran dan Matlab . . . . . . . . . . . . . . . 25

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

8.1 Properti pada fluida dan diameter pipa . . . . . . . . . . . . . . . . . 132


8.2 Properti pada gelombang . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.3 Analisa rangka batang . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.4 Arus lalu lintas, ALL, dalam satuan jumlah kendaraan/menit) pada
suatu persimpangan diukur di waktu yang berbeda. . . . . . . . . . . 139
8.5 Properti balok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

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) Kepala Laboratorium,

(3) Dosen Pembimbing,

(4) Asisten Laboratorium dan Laboran.

1.1 Pra praktikum


Beberapa hal yang perlu diperhatikan selama pra praktikum adalah:

(1) Praktikan memperhatikan dan masuk sesuai dengan jadwal praktikum,

(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

1.2 MODUL PRAKTIKUM


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

(b) Pengerjaan latihan sesuai dengan modul selama 40 menit.


UNIVERSITAS SUMATERA UTARA
Selama pelaksanaan praktikum, praktikan diharuskan untuk mengikuti peratu-
ran berikut:

(1) Tidak terlambat dan hadir selama pelaksanaan praktikum,

(2) Berpakaian rapi dan sopan dengan menggunakan kemeja, celana/rok dan sepatu,

(3) Tertib serta ikut menjaga ketenangan pelaksanaan praktikum,

(4) Menyelesaikan sekurang-kurangnya dua program pada setiap modul praktikum


untuk ditunjukkan ke asisten laboratorium,

(5) Menjaga agar peralatan yang digunakan selama pelaksanaan praktikum tetap
dalam kondisi yang layak pakai dan

(6) Bertanya kepada asisten laboratorium jika mengalami kendala teknis.

1.3 Pasca praktikum


Setelah pelaksanaan praktikum, praktikan diharapkan untuk melaksanakan hal berikut:

(1) Menyelesaikan tugas yang diberikan selama pelaksanaan praktikum,

(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

1.4 MODUL PRAKTIKUM


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

UNIVERSITAS SUMATERA UTARA


pada pertemuan lebih dari satu (1) kali dan

(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.1 Tujuan praktikum


Modul ini bertujuan untuk memperkenalkan praktikan akan bahasa pemrograman
Fortran dan Matlab. Mahasiswa juga dilatih agar dapat mendeklarasikan berba-
gai variabel, mendefenisikan nilainya, menggunakan operator aritmatika, operator
hubungan, operator logika serta fungsi-fungsi intrinsik yang tersedia.

2.2 Dasar teori

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:

PEMROGRAMAN KOMPUTER A = πR2 , (2.1)


p = 2πR, (2.2)
DEPARTEMEN TEKNIK SIPIL
dimana R adalah jari-jari lingkaran. Persamaan (2.1)-(2.2) mengindikasikan bahwa
UNIVERSITAS SUMATERA UTARA
nilai R harus diketahui/didefenisikan sebelum menghitung A dan p. Dengan demikian,
algoritma untuk perhitungan kedua variabel ini haruslah sebagai berikut:

(1) Defenisikan nilai jari-jari, R,

(2) Defenisikan parameter π dan

(3) Hitung luas, A, dan keliling lingkaran, p, sesuai Persamaan (2.1)-(2.2).

(4) Tampilkan nilai A dan p.

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:

B = N CP V πR2 H, jika berbentuk silinder, (2.3)


B = N CP V w2 H, jika berbentuk balok, (2.4)

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.

(1) Defenisikan nilai CP V dan N ,

(2) Defenisikan parameter π,

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).

UNIVERSITAS SUMATERA UTARA


(5) Tampilkan nilai B.

Dalam contoh kasus di atas, langkah (4) memerlukan keputusan/pengecekkan jenis


kolom. Langkah ini harus ditempatkan sesudah langkah (1)-(3). Namun, langkah
(1) bisa bertukar posisi antara (2) dan (3).
Contoh lain adalah perhitungan faktorial dari suatu bilangan integer N , yang
secara matematis dapat dieskpresikan berikut ini:

N ! = N x (N − 1) x (N − 2) x (N − 3) ...x 3x 2x 1. (2.5)

Berikut adalah algortima perhitungannya:

(1) Defenisikan nilai N ,

(2) Inisialisasi nilai faktorial, F , sebesar 1, dan nilai indeks i = 0,

(3) Perbaharui nilai faktorial, F = F x (N − i) dan perbaharui nilai indeks, i = i + 1,

(4) Cek apakah indeks i < N ,

(a) Jika ya, lakukan kembali (3),

(b) Jika tidak, lanjut ke langkah (5),

(5) Tampilkan nilai F .

2.2.2 Diagram alir (flowchart)


Flowchart merupakan gambar skematis dari algoritma yang menunjukkan tahapan-
tahapan penyelesaian masalah. Flowchart harus dibuat mengikuti algoritma yang
telah dipersiapkan. Gambar 2.1 menunjukkan simbol-simbol yang dipakai dalam
suatu diagram alir.

14
2.2 Dasar teori

MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
DEPARTEMEN TEKNIK SIPIL
UNIVERSITAS SUMATERA UTARA

GAMBAR 2.1: Simbol-simbol pada diagram alir

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

GAMBAR 2.3: Diagram alir untuk perhitungan faktorial N !.

2.2.3 Statement awal program dan komentar


Suatu program yang ditulis dalam bahasa pemrograman Fortran secara garis besar
memiliki sintaks berikut:

Program nama program


! Tuliskanlah komentar yang menjelaskan tujuan dari program ini
...
end program nama program

Beberapa hal yang perlu diperhatikan adalah berikut:

(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

DEPARTEMEN TEKNIK SIPIL


dibaca oleh program dan

(4) Setiap program yang diawali dengan program nama program harus diakhiri
UNIVERSITAS SUMATERA UTARA
dengan end program dengan nama program yang sama.

Untuk pemrograman Matlab, beberapa statement di awal program ditulis di


bawah ini:

clear all
close all
clc
%Tuliskanlah komentar yang menjelaskan tujuan dari program ini
...

Setiap penulisan baris di awal program di atas memiliki tujuan berikut:

(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.

(4) Tanda % untuk mengawali setiap baris komentar.

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.

2.2.4 Tipe variabel dan parameter


Pada bahasa pemrograman Fortran, tipe variabel dan parameter pada suatu program
yang dimulai dengan huruf i, j, k, l, m dan n secara implisit dianggap sebagai bi-

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:

Program nama program


! Tuliskanlah komentar yang menjelaskan tujuan dari program ini
implicit none
! Deklarasikan variabel-variabel integer
integer:: nama variabel1, nama variabel2
! Deklarasikan variabel-variabel real
real:: nama variabel3, nama variabel4
! Deklarasikan parameter-parameter integer beserta nilainya
! misalkan, nilainya masing-masing sebesar 1
integer, parameter:: nama parameter1=1, nama parameter2=1
! Deklarasikan parameter-parameter real beserta nilainya
! misalkan, nilainya masing-masing sebesar 1.0
real, parameter:: nama parameter3=1.0, nama parameter4=1.0
! Deklarasikan sebuah variabel terdiri dari 80 karakter
character(len=80):: nama variabel5
! Deklarasikan sebuah variabel logika
logical:: nama variabel6
! Deklarasikan sebuah variabel complex
complex:: nama variabel7
end program nama program

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

UNIVERSITAS SUMATERA UTARA


(3) Memakai huruf besar dan kecil tidak akan mempengaruhi nama variabel ataupun
parameter.
Untuk mendefenisikan nilai dari suatu variabel, sintaks yang digunakan adalah
dengan menuliskan nama variabel di ruas kiri persamaan dan nilainya di ruas kanan
persamaan tersebut. Sebagai contoh, sebuah variabel bilangan real, x, bernilai 0.5,
suatu variabel bilangan integer, y, bernilai 1, dan suatu variabel character, nama,
dengan panjang karakter sebanyak 10, serta bernilai ”Tanja” ditulis sebagai berikut
pada Fortran:

Program nama program


implicit none
! Deklarasikan variabel x sebagai real
real:: x
! Deklarasikan variabel y sebagai integer
integer:: y
! Deklarasikan variabel nama sebagai character dengan panjangnya 10
character(len=10):: nama
! Defenisikan nilai x, y dan nama
x=0.5
y=1
name=”Tanja”
...
end program nama program

Berbeda dengan Fortran, pendeklarasian variabel tidak perlu dilakukan pada


Matlab. Nama variabel dapat langsung ditulis beserta besar nilainya. Sebuah contoh

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 ,

(2) Tidak menggunakan spasi antar 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.

2.2.5 Operator aritmatika


Operasi penjumlahan, pengurangan, perkalian, pembagian dan pangkat dapat diny-
atakan baik pada bahasa pemrograman Fortran dan Matlab. Tabel 2.1 menunjukkan
persamaan ataupun perbedaan dari operator aritmatika serta prioritasnya pada ke-
dua bahasa tersebut. Tabel 2.1 menyatakan bahwa operator penjumlahan memiliki
prioritas yang sebanding dengan pengurangan. Begitu juga dengan prioritas op-
erator perkalian sebanding dengan prioritas operator pembagian. Tabel ini juga

20
2.2 Dasar teori

MODUL PRAKTIKUM
TABEL 2.1: Operator aritmatika pada Fortran dan Matlab
Operasi Fortran Matlab Prioritas

PEMROGRAMAN KOMPUTER Penjumlahan


Pengurangan
+
-
+
-
3
3

DEPARTEMEN TEKNIK SIPIL Perkalian


Pembagian
*
/
*
/
2
2
Pangkat ** ˆ 1
UNIVERSITAS SUMATERA UTARA
menyatakan bahwa operator pangkat memiliki prioritas tertinggi sedangkan opera-
tor penjumlahan dan pengurangan memiliki prioritas terendah.
Berikut adalah penggunaan operator aritmatika pada suatu program yang menghi-
tung luas, A, dan keliling lingkaran, p, dengan jari-jari lingkaran sebesar R meng-
gunakan bahasa pemrograman Fortran.

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

2.2.6 Fungsi intrinsik


Fungsi intrinsik adalah fungsi-fungsi yang merupakan bagian dari bahasa pemrogra-
man. Fungsi ini dipakai untuk menghitung fungsi trigonometri, fungsi eksponential,
logaritmik dan yang lain. Pada Fortran dan Matlab, terdapat sejumlah besar fungsi-
fungsi matematik seperti yang sebagian ditunjukkan pada Tabel 2.2 berikut. Perlu

TABEL 2.2: Fungsi matematika pada Fortran dan Matlab


Fungsi Fortran Matlab
arccos x acos(x) acos(x)
arcsin x asin(x) asin(x)
arctan x atan(x) atan(x)
cos x cos(x) cos(x)
cosh x cosh(x) cosh(x)
ln x log(x) log(x)
log10 x log10(x) log10(x)
exp x exp(x) exp(x)

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:

UNIVERSITAS SUMATERA UTARA y = sin (x + 2π) , (2.6)


x+2
!
z = log , (2.7)
y
z = esinh(x) , (2.8)

program dalam bahasa Fortran ditulis seperti di bawah ini.

...
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.

2.2.7 Operator hubungan


Operasi hubungan (relational operator) adalah operator yang dapat digunakan un-
tuk membandingkan antara dua operand. Tabel 2.3 menunjukkan persamaan dan
perbedaan dari operator hubungan pada Fortran dan Matlab.
Sebagai contoh, jika ingin mengekspresikan persamaan berikut pada bahasa pem-

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
<
<=
<
<=

DEPARTEMEN TEKNIK SIPIL


Lebih besar dari
Lebih besar dari atau sama dengan
>
>=
>
>=
Sama dengan == ==
UNIVERSITAS SUMATERA UTARA
Tidak sama dengan /= ∼=

rograman Fortran:

x ≥ 3, (2.9)
y = 4, (2.10)
z ̸= 7, (2.11)

penggunaan operator hubungan untuk menyatakan Persamaan (2.9)-(2.11) ditun-


jukkan sebagai berikut:

...
x >= 3
y == 4
z/=7
...

Sedangkan pada Matlab penulisannya dapat dilihat di bawah ini.

...
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

DEPARTEMEN TEKNIK SIPIL


persamaan dan perbedaan dari operator logika pada Fortran dan Matlab. Operator

TABEL 2.4: Operator logika pada Fortran dan Matlab

UNIVERSITAS SUMATERA UTARA Operator


tidak
Fortran
.not.
Matlab

dan .and. &&
atau .or. ||
sebanding .eqv.
tak sebanding .neqv

logika sering dikombinasikan dengan operator aritmatika, operator hubungan dan


fungsi intrinsik. Berikut adalah ekspresi matematika yang memerlukan kombinasi
dari operator serta fungsi tersebut:

− 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)

Pada bahasa pemrograman Fortran, Persamaan (2.12)-(2.15) masing-masing dapat


diekspresikan menjadi

...
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 |

Defenisikan π sebagai parameter. Tuliskan fungsi-fungsi intrinsik yang digu-


nakan pada bahasa pemrograman Fortran dan Matlab.

(2) Buatlah program yang bertujuan menghitung persamaan berikut:

y = 75.z + x, dimana x adalah hasil pembulatan dari bilangan 1.z, (2.17)

dan y adalah bilangan integer. Dalam hal ini, konversikan bilangan real menjadi
bilangan integer.

(3) Tuliskanlah persamaan berikut ke dalam bahasa pemrograman:

−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.

(5) Deklarasikanlah sebuah variabel character dengan panjang karakter sebanyak


z + 10 dan nama variabelnya adalah data. Kemudian, defenisikanlah nilai data
tersebut dengan nama pertama kamu.

Dalam pengerjaan soal di atas, perhatikanlah hal berikut:

(a) z adalah angka terakhir NIM,

(b) Jika z = 0 maka diganti menjadi 5 dan

(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

3.1 Tujuan praktikum


Modul ini bertujuan untuk memperkenalkan dan melatih praktikan bagaimana mende-
fenisikan matriks dan vektor, melakukan operasi aritmatika pada kedua variabel ini
serta menghitung inverse dari sebuah matriks. Baik bahasa pemrograman Fortran
dan Matlab diimplementasikan untuk melakukan perhitungan. Dengan memband-
ingkan kedua bahasa pemrograman tersebut diharapkan praktikan dapat memahami
proses perhitungan serta fungsi intrinsik yang relevan, khususnya yang tersedia pada
Matlab.
Secara khusus, penerapan operasi matriks dan vektor dalam bahasa pemrograman
Fortran bertujuan agar mahasiswa dapat:

(1) Memahami variabel array satu dan dua dimensi untuk mendefenisikan vektor
dan matriks,

(2) Menggunakan struktur perulangan DO LOOP pada perhitungan berulang dan

(3) Memanfaatkan strategi inisialisasi untuk melakukan operasi aritmatika matriks.

28
3.2 Dasar teori

3.2 MODUL PRAKTIKUM


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.

% Pendeklarasian vektor 1x2


nama variabel1= [elemen1 elemen2];
% Pendeklarasian matriks 2x2
nama variabel2= [elemen1 elemen2; elemen3 elemen4];

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.

% Pendeklarasian vektor A beserta pemberian nilai elemennya


A= [1.0 -1.0];
% Pendeklarasian matriks B beserta pemberian nilai elemennya
B= [1.0 2.0; -1.5 1.0];

Adapun penggunaan tipe data real dapat dinyatakan dengan penggunaan titik des-
imal pada nilai-nilai ini.

3.2.2 Operasi aritmatika pada matriks dan vektor


Dalam bahasa Fortran, penjumlahan dan pengurangan matriks dan vektor dilakukan
pada tiap-tiap elemennya. Dengan demikian, operasi do loop yang tersedia pada
Fortran perlu diimplementasikan. Lebih lanjut lagi, operator yang digunakan untuk
penjumlahan adalah + dan pengurangan adalah -. Berikut adalah tahap/algoritma
dari operasi penjumlahan dua buah vektor, A1x4 dan B1x4 , yang menghasilkan vek-
tor E1x4 , serta penjumlahan dua buah matriks, C4x4 dan D4x4 , yang menghasilkan
matriks F4x4 dengan tipe data real dalam bahasa Fortran 95:

(i) Deklarasikan tipe data variabel untuk vektor A1x4 , B1x4 dan E1x4 .

(ii) Deklarasikan tipe data variabel untuk matriks C4x4 , D4x4 dan F4x4 .

(iii) Deklarasikan tipe data variabel untuk indeks loop.

(iv) Defenisikan elemen-elemen dari vektor A dan B.

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.

DEPARTEMEN TEKNIK SIPIL


(vi) Defenisikan elemen-elemen dari matriks C dan D.

(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).

Script berikut diturunkan berdasarkan algoritma di atas. Perlu diperhatikan bahwa


penulisan nama program dan implicit none tidak ditulis agar praktikan bisa berlatih.

...
! 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

DEPARTEMEN TEKNIK SIPIL


do i = 1, 2
do j = 1, 2
! loop pertama diberi nama i
! loop kedua diberi nama j

UNIVERSITAS SUMATERA UTARA


F(i,j) = C(i,j) + D(i,j) ! indeks i menyatakan baris dan j kolom
end do
end do ...

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:.

C (1, 1) = A (1, 1) ∗ B (1, 1) + A (1, 2) ∗ B (2, 1) + A (1, 3) ∗ B (3, 1) + A (1, 4) ∗ B (4, 1) ,


C (1, 2) = A (1, 1) ∗ B (1, 2) + A (1, 2) ∗ B (2, 2) + A (1, 3) ∗ B (3, 2) + A (1, 4) ∗ B (4, 2) ,
C (1, 3) = A (1, 1) ∗ B (1, 3) + A (1, 2) ∗ B (2, 3) + A (1, 3) ∗ B (3, 3) + A (1, 4) ∗ B (4, 3) ,
C (2, 1) = A (2, 1) ∗ B (1, 1) + A (2, 2) ∗ B (2, 1) + A (2, 3) ∗ B (3, 1) + A (2, 4) ∗ B (4, 1) ,
...
C (2, 3) = A (2, 1) ∗ B (1, 3) + A (2, 2) ∗ B (2, 3) + A (2, 3) ∗ B (3, 3) + A (2, 4) ∗ B (4, 3) ,
...
C (3, 1) = A (3, 1) ∗ B (1, 1) + A (3, 2) ∗ B (2, 1) + A (3, 3) ∗ B (3, 1) + A (3, 4) ∗ B (4, 1) ,
...
C (3, 3) = A (3, 1) ∗ B (1, 3) + A (3, 2) ∗ B (2, 3) + A (3, 3) ∗ B (3, 3) + A (3, 4) ∗ B (4, 3) .
(3.2)

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

UNIVERSITAS SUMATERA UTARA


lainnya.

(ii) Defenisikan elemen-elemen dari matriks A dan B ini.

(iii) Lakukan perhitungan elemen matriks Ci,j , pada baris pertama (i = 1) untuk
semua kolom mulai dari j = 1 sampai j = 3:

(a) Gunakan Persamaan (3.3) untuk indeks kolom j = 1. Gunakan do loop


serta inisialisasi untuk menerapkan persamaan ini.

(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.

Berbeda dengan pemrograman pada Fortran, penjumlahan vektor atau matriks


pada Matlab dilakukan dengan menggunakan operator + dan variabel vektor atau
matriks tersebut. Tanpa perlu menuliskan penjumlahan dari tiap-tiap elemen, script
penjumlahan vektor, A1x2 dan B1x2 , dan matriks, C2x2 dan D2x2 , ditulis berikut:

% Pendefenisian nilai-nilai elemen dari vektor A dan B


...
% Penjumlahan vektor A dan B menghasilkan vektor E
E=A+B;
% Pendefenisian nilai-nilai elemen dari matriks C dan D
...
! Penjumlahan matriks C dan D menghasilkan matriks F
F=C+D;

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

Persamaan (3.4) mengindikasikan bahwa elemen dari matriks transpose B2x2


T
pada
baris ke-i dan kolom ke-j dapat ditentukan dari:

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:

(i) Deklarasikan tipe data untuk matriks B4x4 , B4x4


T
serta variabel relevan lainnya.

(ii) Lakukan perhitungan elemen matriks Bi,j


T
, pada baris pertama (i = 1) untuk
semua kolom mulai dari j = 1 sampai j = 4:

(a) Gunakan Persamaan (3.5) untuk indeks kolom j = 1.

(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

DEPARTEMEN TEKNIK SIPIL


harus melakukannya pada tiap-tiap elemennya. Terdapat dua alternatif yang dapat
digunakan untuk menghitung transpose dari suatu matriks.

UNIVERSITAS SUMATERA UTARA


% Alternatif pertama untuk mentranspose matriks B
B trans= B.’;
% Alternatif kedua untuk mentranspose matriks B
B trans= transpose(B);

Pada script di atas, B trans adalah nama variabel dari hasil transpose matriks
dengan nama variabel B .

3.2.4 Determinan matriks


Determinan suatu matriks sering digunakan untuk menilai properti dari matriks
tersebut. Hanya matriks persegi yang memiliki nilai determinan. Sebagai contoh,
suatu matriks persegi berukuran 3x3, A3x3 , dengan elemen:
 
A1,1 A1,2 A1,3
 
A=
A2,1 A2,2 A2,3  .

(3.6)
 
A3,1 A3,2 A3,3

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

MODUL PRAKTIKUM A1,1 A1,2 A1,3 A1,1 A1,2


A2,1 A2,2 A2,3 A2,1 A2,2
PEMROGRAMAN KOMPUTER A3,1 A3,2 A3,3 A3,1 A3,2

(-) (-) (-) (+) (+) (+)


DEPARTEME N TEKNIK SIPIL
GAMBAR 3.1: Penyusunan elemen-elemen matriks untuk perhitungan determinan menurut atu-
ran Sarrus.

UNIVERSITAS SUMATERA UTARA


berikut:

|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 .

Pembuatan script pada Fortran dapat dilakukan dengan mempertimbangkan uru-


tan/algoritma berikut.

(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.

(iii) Inisialisasi nilai determinan, det = 0.

(iv) Lakukan perhitungan pertama dari perkalian elemen matriks dengan tanda (+)
(lihat Gambar 3.1) dengan menggunakan persamaan berikut:

f act1 = B1,1 B2,2 B3,3 . (3.9)

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.

UNIVERSITAS SUMATERA UTARA


Tentukan jumlah loop, indeks awal dan indeks akhir dari loop yang digunakan.

(vi) Jumlahkanlah det = det + f act1 + f act2.

(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|.

Langkah perhitungan di atas juga dapat diterapkan pada Matlab. Alternatif


lain dalam menghitung determinan dari suatu matriks pada Matlab adalah dengan
menggunakan fungsi yang tersedia, yaitu det. Script pada Matlab dapat ditulis
sebagai berikut:

% Perhitungan determinan suatu matriks A


d=det(A);
% dimana d adalah nilai variabel determinannya

3.2.5 Invers matriks


Sebuah matriks dikatakan memiliki invers apabila nilai determinannya tidak bernilai
nol. Jika tidak, matriks tersebut dikatakan matriks singular atau matriks yang tidak
memiliki invers. Salah satu metode menghitung invers matriks adalah metode Gauss-
Jordan. Untuk mencari invers dari suatu matriks AN xN dengan elemen pada indeks

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

DEPARTEMEN TEKNIK SIPIL


 
 
 ... ... ... ... ... ... ...
 

 
AN xN =  Ai,1 Ai,2 ... Ai,j ... Ai,N −1 Ai,N  , (3.11)
 

UNIVERSITAS SUMATERA UTARA


 
 
 ... ... ... ... ... ... ... 
 
 
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

beberapa tahap yang perlu diterapkan dari metode Gauss-Jordan adalah:

(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:

PEMROGRAMAN KOMPUTER A2,1 = A2,1 −


A2,1
A1,1
A1,1 . (3.12)

DEPARTEMEN TEKNIK SIPIL


Suku A2,1 pada ruas kanan dari Persamaan (3.12) merupakan nilai lama dari
A2,1 , sedangkan pada ruas kiri merupakan nilai barunya. Langkah ini diteruskan
UNIVERSITAS SUMATERA UTARA
untuk setiap kolom j, mulai dari j = 1 sampai j = 2N , pada baris kedua (i = 2).
Secara umum, Persamaan (3.12) dapat ditulis kembali menjadi:

A2,j = A2,j − f act A1,j , (3.13)


A2,1
dimana, f act = . (3.14)
A1,1

Langkah selanjutnya adalah pengubahan elemen pada baris ketiga, i = 3. A3,1


diubah 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:

A3,j = A3,j − f act A1,j , (3.16)


A3,1
dimana, f act = . (3.17)
A1,1

Langkah ini terus berlanjut sampai ke baris terakhir, i = N . Secara umum,


untuk menolkan elemen pada setiap baris ke-i di bawah elemen pivot, yaitu A1,1 ,
persamaan yang berlaku untuk tiap baris i dari i = 2, 3, ..., N , dan pada kolom
j dari j = 1, 2, ..., 2N , diekspresikan di bawah ini:

Ai,j = Ai,j − f act A1,j ,


Ai,1 (3.18)
dimana, f act = .
A1,1

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:

DEPARTEMEN TEKNIK SIPIL Ai,j = Ai,j − f act A2,j ,


Ai,2 (3.19)
dimana, f act = .
UNIVERSITAS SUMATERA UTARA A2,2

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.

Ai,j = Ai,j − f act Ak,j , (3.20)


Ai,k
dimana, f act = . (3.21)
Ak,k

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:
AN 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.

PEMROGRAMAN KOMPUTER A∗N −1,N = A∗N −1,N − f act A∗N,N ,


(3.22)
A∗N −1,N
dimana f act = .
DEPARTEMEN TEKNIK SIPIL A∗N,N

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:

A∗N −1,j = A∗N −1,j − f act A∗N,j ,


A∗N −1,N (3.23)
dimana f act = .
A∗N,N

Selanjutnya adalah pengkonversian pada baris i = N − 2 masih dengan elemen


pivot yang sama, yaitu A∗N,N , agar elemen A∗N −2,N menjadi nol. Persamaan (3.23)
berubah menjadi:

A∗N −2,j = A∗N −2,j − f act A∗N,j ,


A∗N −2,N (3.24)
dimana f act = .
A∗N,N

Untuk setiap indeks elemen pivot, k, dengan k = N, N − 1, ..., 2, pengkonversian


pada baris i, mulai dari i = N − 1 sampai i = 1, dimana pada tiap baris
i berlaku pengkonversian pada tiap kolom, j = 1, 2, ..., 2N , persamaan yang
berlaku adalah:

A∗i,j = A∗i,j − f act A∗k,j ,


A∗i,k (3.25)
dimana f act = .
A∗k,k

42
3.2 Dasar teori

MODUL PRAKTIKUM
Tahapan di atas akan menghasilan matriks AN,2N sebagai berikut:
PEMROGRAMAN KOMPUTER
AN x2N = 
A1,1 0 ... 0 ... 0 0 ∗∗
I1,1 ∗∗
I1,2 ... ∗∗
I1,j ... ∗∗
I1,N −1
∗∗
I1,N

DEPARTEMEN TEKNIK SIPIL



0 A∗∗ 0 0 0 ∗∗ ∗∗ ∗∗ ∗∗ ∗∗
 
2,2 ... ... I2,1 I2,2 ... I2,j ... I2,N I2,N
 
 −1 
 

 0 0 ... ... ... ... ... ... ... ... ... ... ... ... 

 
= 0 0 0 A∗∗ 0 0
UNIVERSITAS SUMATERA UTARA
∗∗ ∗∗ ∗∗ ∗∗ ∗∗  .

 i,j ... Ii,1 Ii,2 ... Ii,j ... Ii,N −1 Ii,N  
0 0 0 0 0 0
 

 ... ... ... ... ... ... ... ...  
0 0 0 0 0 A∗∗ 0
 

 N −1,N −1 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 atas elemen diagonal telah bernilai nol dan tanda
** mengindikasikan elemen hasil konversi kedua setelah konversi pertama se-
belumnya.

(4) Pengubahan/pengkonversian elemen diagonal di atas menjadi elemen bernilai 1


dengan cara membagi setiap elemen pada baris ke-i, mulai dari i = 1 sampai
i = N , dengan elemen diagonal dari matriks terbaru. Untuk tiap baris ke-i
dan kolom ke-j = 1, 2, ..., 2N , pembagian tersebut dilakukan dengan persamaan
berikut:

i,j = Ai,j /Ai,i ,


A∗∗ ∗∗ ∗∗
(3.26)
∗∗
Ii,j = Ii,j
∗∗ ∗∗
/Ii,i .

Tahapan di atas akan menghasilan matriks AN,2N sebagai berikut:


AN x2N =
 
1 0 ... 0 ... 0 0 ∗∗∗ ∗∗∗ ∗∗∗ ∗∗∗ ∗∗∗
I1,1 I1,2 ... I1,j ... I1,N −1 I1,N 
0 1 ... 0 ... 0 0 ∗∗∗ ∗∗∗ ∗∗∗ ∗∗∗ ∗∗∗
 
 I2,1 I2,2 ... I2,j ... I2,N −1 I2,N 

 
0 0 ... ... ... ... ... ... ... ... ... ... ... ... 


 
=
0 0 0 1 ... 0 0 ∗∗∗
Ii,1 ∗∗∗
Ii,2 ... ∗∗∗
Ii,j ... ∗∗∗
Ii,N −1
∗∗∗ 
Ii,N .
 
0 0 0 0 ... 0 0
 
 ... ... ... ... ... ... ...  
0 0 0 0 0 1 0 IN∗∗∗
 
∗∗∗ ∗∗∗ ∗∗∗ ∗∗∗
 −1,1 IN −1,2 ... IN −1,j ... IN −1,N −1 IN −1,N 

 
0 0 0 0 0 0 1 IN,1 ∗∗ ∗∗
IN,2 ∗∗
... IN,j ∗∗
... IN,N −1
∗∗
IN,N
Dari matriks di atas maka diketahui invers matriks A−1
N xN adalah elemen dari

matriks di atas yang berasal dari matriks identitas IN xN .

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:

DEPARTEMEN TEKNIK SIPIL


% Pendefenisian nilai-nilai elemen dari matriks A
...
UNIVERSITAS SUMATERA UTARA
% Hitung inverse matriks A, B
B=inv(A)
% B adalah invers matriks A

3.3 Latihan
Untuk soal (1)-(4), buatlah satu program yang tujuannya melakukan

(1) Penjumlahan matriks A dan B, dimana diketahui


 
2 2 2 0 6  
z 2 4 0 2 

5 4 3 8
 
x
3 3 2 2 4 
   
A5x5 = 7
 , B4x5 = 
4 y 1 4 (3.27)
 
,
 

   6 5 2 6 x
2 5 3 4 9
  
 
2 1 0 1 y

 
5 2 1 z 1

(2) Perkalian matriks A dan B, dimana C = AxB,

(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.

DEPARTEMEN TEKNIK SIPIL


gaya dapat diperoleh matriks kekakuan, K, dan matriks massa, M, dari sistem
sebagai berikut:
UNIVERSITAS SUMATERA UTARA
K10x10 =
 
k1 + k2 −k2 0 0 0 0 0 0 0 0
 
−k2 k2 + k3 −k3 0 0 0 0 0 0 0 
 

 
0 k3 + k4 0 0 0 0 0 0 
 

 −k3 −k4 
0 0 k4 + k5 0 0 0 0 0 
 

 −k4 −k5 
 
0 0 0 −k5 k5 + k6 −k6 0 0 0 0 
 

.
 
0 0 0 0 −k6 k6 + k7 −k7 0 0 0 


 
0 0 0 0 0 k7 + k8 0 0 
 

 −k7 −k8 
0 0 0 0 0 0 k8 + k9 0 
 

 −k8 −k9 
 
0 0 0 0 0 0 0 −k9 k9 + k10 −k10 
 

 
0 0 0 0 0 0 0 0 −k10 k10
 
m1 0 0 0 0 0 0 0 0 0
 
0 m2 0 0 0 0 0 0 0 0 
 

 
0 0 0 0 0 0 0 0 0 
 

 m3 
0 0 0 0 0 0 0 0 0 
 

 m4 
 
0 0 0 0 m5 0 0 0 0 0 
 
M10x10 =

.

0 0 0 0 0 m6 0 0 0 0 


 
0 0 0 0 0 0 0 0 0 
 

 m7 
0 0 0 0 0 0 0 0 0 
 

 m8 
 
0 0 0 0 0 0 0 0 m9 0
 
 
 
0 0 0 0 0 0 0 0 0 m10

Frekuensi alamiah sistem tersebut, ω, dapat dievaluasi melalui permasalahan


eigenvalue yang harus memenuhi syarat berikut:

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.

DEPARTEMEN TEKNIK SIPIL


Dalam pengerjaan soal di atas, lakukanlah hal berikut:

(a) Wajib implementasikan DO LOOP structure dan variabel array untuk setiap
UNIVERSITAS SUMATERA UTARA
operasi aritmatika matriks pada bahasa pemrograman Fortran,

(b) Terapkan bahwa x, y dan z adalah tiga angka terakhir NIM,

(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

4.1 Tujuan praktikum


Modul ini bertujuan untuk memperkenalkan dan melatih praktikan bagaimana mem-
buat suatu program yang bertujuan untuk mencari akar persamaan baik yang linear
maupun tak linear. Metode mencari akar persamaan yang akan diimplementasikan
adalah metode Bisection dan metode Newton-Raphson. Bahasa pemrograman For-
tran dan Matlab akan digunakan untuk menerapkan konsep kedua metode ini. Den-
gan melakukan perbandingan implementasi kedua bahasa pemrograman ini diharap-
kan praktikan dapat memahami proses dan logika dalam pencarian akar persamaan
serta fungsi-fungsi intrinsik yang tersedia, khususnya pada Matlab.
Secara khusus, penerapan akar persamaan ke dalam bahasa pemrograman For-
tran bertujuan agar mahasiswa dapat:

(1) Memahami penggunaan struktur IF ELSE untuk menetapkan alur pemrogra-


man,

(2) Menerapkan kombinasi antara operasi hubungan, operasi logika serta operasi
artimatika pada struktur IF ELSE dan

(3) Menggunakan struktur perulangan DO WHILE untuk menetapkan suatu kondisi


berlakunya perhitungan berulang.

47
4.2 Dasar teori

4.2 MODUL PRAKTIKUM


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

4.2.2 Struktur DO WHILE


Struktur DO WHILE digunakan untuk melakukan perhitungan berulang apabila
suatu kondisi terpenuhi. Sintaks dari struktur DO WHILE ditunjukkan di bawah
ini.

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:

(1) Setiap DO WHILE harus diikuti dengan END DO dan

(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
...

4.2.3 Metode Bisection


Akar dari suatu persamaan f (x) memiliki nilai fungsi sebesar nol. Jika akar dinamai
xr , nilai fungsinya adalah f (xr ) = 0. Nilai dari xr dicari dengan mengestimasi suatu
interval dengan batas bawah, xb , dan batas atas, xa , dimana xr berada di antara
kedua batas ini: xb ≤ xr ≤ xa . Gambar 4.1(a) mengilustrasikan koordinat dari xr
di antara selang ini.
Berdasarkan namanya, metode Bisection mengestimasi nilai xr dengan menga-
sumsikan bahwa xr berada di tengah-tengah interval. Secara matematis, asumsi ini
dinyatakan dengan persamaan berikut:

1
xr = (xa + xb ) . (4.1)
2

Oleh karena Persamaan (4.1) merupakan asumsi, kebenarannya perlu diverifikasi


dengan mengevaluasi apakah f (xr ) ≈ 0. Apabila persyaratan ini belum dipenuhi,
asumsi tersebut perlu diperbaharui. Gambar 4.1(b) mengilustrasikan bahwa estimasi
pertama nilai akar, x(1)
r , belum memenuhi persyaratannya.

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)

UNIVERSITAS SUMATERA UTARA


(a) (b)
f(x) f(x)

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.

(ii) Defenisikan nilai xb , xa , tol dan N .

(iii) Inisialisasi nilai indeks iterasi pertama.

(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.

(b) Jika kondisi f (xa ) f (xb ) ≤ 0 terpenuhi, lanjutkan ke langkah (v).

(v) Lakukan estimasi pertama akar persamaan, x(1)


r , dengan menggunakan Per-

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

UNIVERSITAS SUMATERA UTARA


baru dan kembali gunakan Persamaan (4.1).

(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.

4.2.4 Metode Newton-Raphson


Method Newton-Raphson mencari akar persamaan berdasarkan interpretasi geometris
yang diilustrasikan pada Gambar 4.2(a). Dari gambar ini dapat diturunkan hubun-

gan dari suatu gradien atau kemiringan, f (x), pada estimasi pertama akar per-
samaan, x(1)
r , dengan estimasi kedua akar persamaan, xr .
(2)

 

  f x(1)
r −0
f x(1)
r = (1) (2)
. (4.4)
xr − xr

Estimasi kedua akar persamaan, x(2)


r , dapat diperoleh dengan mengatur ulang Per-

samaan (4.4) seperti berikut:


 
f x(1)
r
r = xr −
x(2) (4.5)
(1)  .
(1)
f ′ xr

Persamaan (4.5) ini dikenal sebagai formula Newton-Raphson.


Kebenaran dari estimasi kedua akar persamaan dapat diperiksa dengan cara yang
sama seperti pada metode Bisection. Persyaratan yang diekspresikan ke dalam Per-
samaan (4.2-4.3) harus dipenuhi. Apabila persyaratan ini belum dipenuhi, perhi-

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)

UNIVERSITAS SUMATERA UTARA r

(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

toleransi, tol, dan jumlah maksimum iterasi, N , serta variabel-variabel relevan


lainnya.

54
4.2 Dasar teori

MODUL PRAKTIKUM r , tol dan N .


(ii) Defenisikan nilai x(1)

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.

UNIVERSITAS SUMATERA UTARA


(v) Jika Persamaan (4.2) belum terpenuhi, hitunglah nilai turunan fungsi pada
estimasi akar persamaan yang sekarang. Dua kondisi yang mungkin terjadi
adalah:

(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:

r , dengan menggunakan Per-


(1) Hitung estimasi kedua akar persamaan, x(2)
samaan (4.5).
(2) Perbaharui nilai indeks iterasi dengan menambah nilainya dengan angka
satu.
(3) Ulangi langkah (iv) di atas dan seterusnya sampai kondisi dari Per-
samaan (4.2) atau (4.3) terpenuhi dan nilai indeks iterasi sekarang
masih lebih kecil dari jumlah maksimum iterasi, N . Gunakan do while
untuk melakukan iterasi.

Algoritma di atas dapat diterapkan baik pada Fortran maupun Matlab. Khusus
untuk Matlab, pendeklarasian variabel pada langkah (i) diabaikan.

4.2.5 Fungsi-fungsi pada Matlab


Beberapa fungsi-fungsi yang tersedia pada Matlab yang dapat digunakan untuk men-
cari akar persamaan adalah berikut:

(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)

UNIVERSITAS SUMATERA UTARA


fun adalah nama variabel yang dipakai untuk mendefenisikan fungsi f (x),
sedangkan x0 adalah nama variabel dari estimasi awal akar persamaannya.
x0 bisa hanya memiliki satu nilai saja. Namun, jika ingin menyatakan bahwa
nilai x0 berada di sebuah interval, x0 didefenisikan sebagai vektor. Dalam
pendefenisikan suatu fungsi f (x) = x2 − 4 dengan nilai x0, penulisan scriptnya
adalah berikut:

% Pendefenisian fungsi f(x)


fun=@ xˆ 2.0-4.0;
x0=3;
% Jika x0=3, atau
x0=[1 2];
% Jika x0 ada di antara 1 dan 2.

(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:

% Perhitungan akar-akar persamaan dari fungsi polynomial


p=[a b c];
r=roots(p);

p adalah nama variabel vektor yang menyatakan koefisien-koefisien polino-


mialnya, dan r adalah nama variabel yang menyatakan besar akar-akar per-
samaan polinomialnya. Untuk pendefenisian p, penulisan elemen-elemennya

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.

Jika diketahui bahwa L = 5.zm, H = 4.zm, W = 60.zkN , b = 2.zm, ρ =


1000kg/m3 dan g = 9.8m/s2 , hitunglah tinggi muka air, d, pada saat pintu
air mulai terbuka. Gunakan metode Bisection dan metode Newton-
Raphson. Petunjuk: ubah terlebih dahulu persamaan (4.6) ke dalam bentuk
fungsi terhadap tinggi muka air, f (d), di mana akar persamaannya berlaku saat
f (d) = 0. Pilih akar persamaan yang nilainya positif karena tinggi muka air
harus bernilai positif.

Dalam pembuatan keempat program ini, hal berikut perlu diperhatikan:

(a) z adalah angka terakhir NIM,

(b) Pada soal (1), jika z = 0 maka diganti menjadi 5 (untuk fungsi f (x)),

(c) Pada soal (2), xb = 0 dan xa = 2π untuk z ≤ 5, dan xb = 2π dan xa = 4π untuk


z > 5,

(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

5.1 Tujuan praktikum


Modul ini bertujuan untuk memperkenalkan dan melatih praktikan bagaimana mem-
buat suatu program yang bertujuan untuk mengintegrasi suatu fungsi secara nu-
merik. Metode integrasi yang akan diimplementasikan adalah metode Persegi Pan-
jang, Trapesium dan Simpson. Penerapan kedua metode ini juga menggunakan
bahasa pemrograman Fortran dan Matlab.
Secara khusus, penerapan integrasi numerik ke dalam bahasa pemrograman For-
tran bertujuan agar mahasiswa dapat:

(1) Menggunakan fungsi intrinsik yang tersedia,

(2) Memahami penggunaan struktur IF ELSE bersarang (nested IF ELSE) untuk


menetapkan alur pemrograman dan

(3) Menerapkan kombinasi struktur IF ELSE bersarang dengan DO LOOP bersarang.

5.2 Dasar teori

5.2.1 Struktur IF ELSE bersarang


Struktur IF ELSE bersarang (nested IF ELSE) diperlukan apabila terdapat kondisi
yang lebih spesifik yang harus diterapkan untuk menentukan alur pemrograman.

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.

DEPARTEMEN TEKNIK SIPIL


IF (kondisi1) THEN
...
UNIVERSITAS SUMATERA UTARA IF (kondisi11) THEN
...
ELSE IF (kondisi12) THEN
...
ELSE
...
END IF
ELSE IF (kondisi2) THEN
...
IF (kondisi21) THEN
...
ELSE
...
END IF
ELSE
...
IF (kondisi31) THEN
...
ELSE
...
END IF
END IF

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-

DEPARTEMEN TEKNIK SIPIL


liknya. Beberapa kombinasi dapat dilihat dari contoh-contoh di bawah ini.

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

5.2.3 Defenisi integrasi


Integrasi suatu fungsi f (x) pada suatu interval x dapat diekspresikan ke dalam
persamaan berikut:
Z xa
I= f (x) dx, (5.1)
xb

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.

5.2.4 Metode Trapesium dan Persegi Panjang


Integrasi satu dimensi

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

integrasi secara numerik dapat ditulis dengan persamaan di bawah ini.

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 )] ,

atau dapat juga diekspresikan dengan lebih sederhana seperti berikut:

1 i=N
* +
I ≈ ∆x f (xi ) + f (xi+1 ) . (5.5)
X
2 i=1

Perhitungan integrasi dengan menggunakan metode Persegi Panjang sama den-


gan metode sebelumnya, kecuali luas yang dihitung adalah luas persegi panjang di
bawah kurva f (x) (lihat Gambar 5.1(b)). Untuk menghitung luas sebuah persegi
panjang ke-i, tingginya diambil dari nilai fungsi pada titik tengah subintervalnya,
f (xi ), dimana nilai titik tengah subinterval, xi , adalah:

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:

DEPARTEMEN TEKNIK SIPIL


(i) Deklarasikan tipe data jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa dan xi beserta variabel-variabel relevan


UNIVERSITAS SUMATERA UTARA
lainnya.

(iii) Defenisikan nilai xb , xa dan x1 = xb .

(iv) Hitung nilai ∆x dengan menggunakan Persamaan (5.3).

(v) Inisialisasi nilai hasil integrasi, hi, dengan nol.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + ∆x.

(b) Cek apakah perhitungan integrasi menggunakan metode Trapesium atau


Persegi Panjang.

• Jika menggunakan metode Trapesium, hitung f (xi ), f (xi+1 ) dan se-


buah variabel lain sebut saja, h, dimana h = 12 [f (xi ) + f (xi+1 )].
• Jika menggunakan metode Persegi Panjang, hitung xi dengan meng-
gunakan Persamaan (5.6). Kemudian, hitunglah f (xi ), dan h, dimana
h = f (xi ).

(c) Hitunglah luas satu trapesium/persegi panjang, ∆A, dimana ∆A = h∆x.

(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 .

Integrasi dua dimensi

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

x1 x2 x3 xi-1 xi xi+1 xN xN+1 x


(b) (c)

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:

DEPARTEMEN TEKNIK SIPIL ∆vi,j = f (xi , yj ) ∆x∆y. (5.8)

UNIVERSITAS SUMATERA UTARA


Aproksimasi hasil integrasi dua dimensi dengan menggunakan metode ini menjadi:

j=M
X i=N
∆vi,j . (5.9)
X
I≈
j=1 i=1

Algoritma yang dipakai untuk membuat scriptnya adalah sebagai berikut:

(i) Deklarasikan tipe data variabel jumlah subinterval, N dan M , beserta nilai-
nilainya.

(ii) Deklarasikan tipe data xb , yb , xa , ya , xi , yj dan variabel-variabel relevan lainnya.

(iii) Defenisikan nilai xb , yb , xa , ya dan x1 = xb sedangkan y1 = yb .

(iv) Hitung nilai ∆x dan ∆y seperti pada Persamaan (5.3).

(v) Inisialisasi nilai hasil integrasi, hi, dengan nol.

(vi) Buat sebuah do loop terluar yang memiliki indeks iterasi mulai dari j = 1
sampai dengan j = M .

(a) Untuk setiap j, hitung nilai yj+1 = yj + ∆y.

(b) Buat do loop terdalam yang memiliki indeks iterasi mulai dari i = 1 sampai
dengan i = N .

(1) Untuk setiap i, hitung nilai xi+1 = xi + ∆x.


(2) Untuk setiap i dan j, hitung xi dan yj dengan menggunakan Persamaan
(5.6).
(3) Hitunglah f (xi , yj ), dan h, dimana h = f (xi , yj ).
(4) Hitunglah luas satu balok, ∆v, dimana ∆v = h∆x∆y.
(5) Perbaharui nilai hasil integrasi, hi, dengan nilai terbaru sebesar hi =
hi + ∆v.

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

Algoritma yang dapat diterapkan berdasarkan penjabaran metode di atas adalah


sebagai berikut:

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.

DEPARTEMEN TEKNIK SIPIL


(iii) Defenisikan nilai xb , xa dan x1 = xb .

UNIVERSITAS SUMATERA UTARA


(iv) Cek apakah N adalah bilangan genap. Jika tidak, beritahu bahwa pemilihan
N masih salah dan hentikan program. Jika tidak lanjutkan program.

(v) Hitung nilai ∆x dengan menggunakan Persamaan (5.3).

(vi) Inisialisasi nilai hasil integrasi, hi, dengan nol.

(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.

(a) Hitung f (x2i−1 ), f (x2i ) dan f (x2i+1 ).

(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.

Persamaan (5.10) juga dapat diekspresikan kembali ke dalam bentuk perkalian


vektor seperti berikut:

∆x
I≈ w · f, (5.12)
3

dimana w adalah vektor berukuran 1x(N + 1) dan f adalah vektor berukuran (N +


1)x1. Vektor w dapat juga disebut sebagai faktor pemberat. Elemen dari masing-

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 ) 
 

DEPARTEMEN TEKNIK SIPIL


 
 

 f (x3 ) 

h i  
w = 1 4 2 4 ... 4 1 , f = 
 f (x4 ) .

(5.13)
UNIVERSITAS SUMATERA UTARA
 
 

 .. 

f (xN )
 
 
 
 
f (xN +1 ) .

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.

(a) Defenisikan sebuah variabel array w dengan elemennya untuk tiap i,


wi .

• wi = 2 jika i adalah bilangan ganjil kecuali pada i = 1 atau


N + 1.
• wi = 4 jika i adalah bilangan genap.
• wi = 1 selain dua kondisi di atas.

(b) Untuk setiap i, hitung f (xi ).

(c) Lakukan perkalian antara elemen vektor berikut: ∆A = 13 ∆x wi f (xi ).

(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

DEPARTEMEN TEKNIK SIPIL


dan xb ≤ x ≤ xa (lihat kembali Gambar 5.2(a)). Dalam hal ini, area persegi
panjang tersebut dibagi menjadi subinterval sejumlah N pada axis x dengan ∆x
yang sama, dan subinterval sejumlah M pada ordinat y dengan ∆y yang sama.
UNIVERSITAS SUMATERA UTARA
Proses pembagian ini menghasilkan grid dengan koordinat (xi , yj ), dimana xi :
[xb = x1 , x2 , ..., xN +1 = xa ], dan yj : [yb = y1 , y2 , ..., yM +1 = ya ] (lihat kembali Gam-
bar 5.2(b)). Pada metode ini, M dan N harus berupa bilangan genap
Dalam menyelesaikan integrasi dua dimensi ini, vektor w1x(N +1) pada Persamaan
(5.13) diganti menjadi matriks w(M +1)x(N +1) dengan elemennya sebagai berikut:
 
1 4 2 4 ... 2 4 1
 
4 16 8 16 ... 8 16 4
 
 
2 8 4 8 ... 4 8 2
 
 
4 16 8 16 ... 8 16 4
 
 
 
. . . . ... . . .
 
w=  
, (5.14)
. . . . ... . . .

 
 
. . . . ... . . .
 
2 8 4 8 ... 4 8 2
 
 
 
4 16 8 16 ... 8 16 4
 
 
1 4 2 4 ... 2 4 1

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 )  .
 

UNIVERSITAS SUMATERA UTARA


 
 

 .. 

f (x1 , yM ) f (x2 , yM ) f (x3 , yM ) f (xN , yM ) f (xN +1 , yM )
 

 ... 

 
f (x1 , yM +1 ) f (x2 , yM +1 ) f (x3 , yM +1 ) ... f (xN , yM +1 ) f (xN +1 , yM +1 )
(5.15)

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

atau penjumlahan dari setiap elemen-elemen matriks tersebut menjadi:

1 M +1 N +1
I ≈ ∆x∆y wj,i f (xi , yj ) . (5.17)
X X
9 j=1 i=1

Algoritma yang dapat diterapkan berdasarkan penjabaran metode di atas adalah


sebagai berikut:

(i) Deklarasikan tipe data variabel N dan M beserta nilai-nilainya.

(ii) Deklarasikan tipe data xb , yb , xa , ya , xi , yj dan variabel-variabel relevan lainnya.

(iii) Defenisikan nilai xb , yb , xa , ya dan x1 = xb sedangkan y1 = yb .

(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.

(v) Hitung nilai ∆x dan ∆y seperti pada Persamaan (5.3).

(vi) Inisialisasi nilai hasil integrasi, hi, dengan nol.

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.

DEPARTEMEN TEKNIK SIPIL


(b) Buat do loop terdalam memiliki indeks iterasi mulai dari i = 1 sampai
dengan i = N .

UNIVERSITAS SUMATERA UTARA


(1) Untuk setiap i, hitung nilai xi+1 = xi + ∆x.

(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:

% Defenisikan batas bawah xb, batas atas xa dan


! panjang subinterval dx
...
% Hitung x pada tiap subinterval
x=xb : dx : xa;
% Defenisikan nilai dari fungsi f(x), y, yang akan diintegrasi
% misalnya y=sin x
y=sin(x);
% Hitung integrasinya
Itrap=trapz(x,y);

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);

dimana Iint adalah hasil integrasi dari fungsi f (x).

(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:

% Defenisikan batas bawah, xbdan yb


% dan batas atas, xadan ya
...
% Defenisikan nilai dari fungsi f(x) yang akan diintegrasi
% misalnya f(x)= xˆ 2 + yˆ 2
fun = @ (x) x.ˆ 2 + y.ˆ 2; !Perhatikan tanda titik
% Hitung integrasinya
Iint2=integral2(fun,xb,xa, yb,ya);

Dalam script di atas, Iint2 adalah hasil integrasinya.

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

Kedalaman rata-rata, h, dan kecepatan air rata-rata, u, dapat dinyatakan seba-


gai berikut:

h = A/w, u = Q/A, (5.19)

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

Gunakan metode Simpson untuk mengevaluasi kedalaman rata-rata, h, dan


UNIVERSITAS SUMATERA UTARA
kecepatan rata-rata, u.

(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

Dengan menggunakan persamaan integrasi berikut, jumlah total kendaraan yang


masuk dapat diketahui.
Z 24
I= ALL (t) dt, (5.21)
0

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 .

DEPARTEMEN TEKNIK SIPIL


UNIVERSITAS SUMATERA UTARA

GAMBAR 5.4: Sebuah penampang melintang dari composite column.

Nilai X dapat diestimasi melalui persamaan berikut:

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.

Dengan demikian variabel Iy pada persamaan 5.23 direpresentasikan oleh:

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)

Gunakan metode Trapesium untuk menyelesaikan integrasi dan lanjutkan hasil


integrasi untuk menghitung nilai X.
Dalam pembuatan program di atas, hal berikut diperhatikan:

(a) Untuk soal (1), (2) dan (5), tetapkan bahwa jumlah subinterval, N , adalah 10z,

(b) Tetapkan bahwa z adalah angka terakhir NIM,

(c) Jika angka terakhir NIM adalah 0, tetapkan z = 1,

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

DEPARTEMEN TEKNIK SIPIL


metode Simpson serta

(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

6.1 Tujuan praktikum


Modul ini memperkenalkan mahasiswa cara membuat program untuk menghitung
turunan dari suatu fungsi. Selain dari itu, mahasiswa juga belajar membuat program
penyelesaian satu ataupun sistem persamaan diferensial biasa (ordinary differential
equation). Beberapa metode eksplisit yang diterapkan ke dalam bahasa pemrogra-
man Fortran adalah metode Euler, metode Heun, metode Titik Tengah dan metode
Runge-Kutta. Metode Euler yang bersifat implisit juga diperkenalkan pada modul
ini. Sebagai tambahan, mahasiswa akan belajar menggunakan fungsi pada Matlab
yang dapat menghitung turunan serta memecahkan persamaan diferensial biasa.
Secara khusus, penerapan turunan numerik dan penyelesaian persamaan diferen-
sial biasa ke dalam bahasa pemrograman Fortran bertujuan agar mahasiswa dapat:

(1) Memahami penggunaan struktur CALL pada suatu main program,

(2) Menggunakan struktur SUBROUTINE yang dipanggil dari main program dan

(3) Menerapkan fungsi-fungsi aritmatika yang tersedia pada suatu SUBROUTINE.

80
6.2 Dasar teori

6.2 MODUL PRAKTIKUM


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:

SUBROUTINE namasubprogram (argumen1, argumen2, ...)


! Sama seperti pada program utama, perlu pendeklarasian implicit none
implicit none
! Deklarasikan tipe-tipe data variabel
...
! Lakukan prosedur perhitungan yang diperlukan
...
...
! Setiap SUBROUTINE harus diakhir dengan sintaks end seperti berikut:
end SUBROUTINE namasubprogram

Pemanggilan terhadap subprogram ini dari program utama dilakukan melalui


perintah CALL dengan sintaks berikut:

CALL namasubprogram (argumen1, argumen2, ...)

Beberapa hal yang perlu diingat sehubungan dengan penggunaan CALL dan SUB-
ROUTINE:

(1) Setiap SUBROUTINE harus diakhir dengan end SUBROUTINE,

(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,

DEPARTEMEN TEKNIK SIPIL


suatu subprogram bisa memanggil subprogram yang lain jika diperlukan.

UNIVE RSITAS SUMATERA UTARA


6.2.2 Turunan numerik
Suatu fungsi f (x) pada lokasi xi+1 dan xi dapat dinotasikan masing-masing seba-
gai f (xi+1 ) dan f (xi ). Nilai fungsi f (xi+1 ) tersebut dapat diestimasi dari nilai
fungsi f (xi ) lewat aproksimasi yang juga dikenal dengan istilah ekspansi deret Tay-
lor. Untuk panjang interval antara xi dan xi+1 sebesar h, ekspansi deret Taylor
mengaproksimasi fungsi f (xi+1 ) dari fungsi f (xi ) sebagai berikut:

f ′′ (xi ) 2 f ′′′ (xi )


f (xi+1 ) = f (xi ) + f ′ (xi ) h + h + + ..., (6.1)
2! 3!

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)

PEMROGRAMAN KOMPUTER f(xi+2) f (xi-1)


f (xi-2)
f (xi-1)

DEPARTEMEN TEKNIK SIPIL


xi xi+1 xi+2 x xi-2 xi-1 xi x xi-1 xi xi+1 x
UNIVERSITAS SUMATERA UTARA
h h h h
(a) (b) (c)

GAMBAR 6.1: (A) forward finite difference (FFD), (B) backward finite difference (BFD) dan (C)
central finite difference (CFD)

dinyatakan sebagai berikut:

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.

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa dan xi beserta variabel-variabel relevan


lainnya.

(iii) Defenisikan nilai xb , xa dan x1 = xb .

(iv) Hitung nilai h, dimana h = xa −xb


N
.

(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.

(b) Hitung juga nilai fungsi untuk setiap i, f (xi+1 ).


PEMROGRAMAN KOMPUTER
(vi) Jika menggunakan FFD, gunakan Persamaan (6.2)-(6.3) untuk menghitung
DEPARTEMEN TEKNIK SIPIL
turunan pertama dan kedua, f ′ (xi ) dan f ′′ (xi ), mulai dari i = 1 sampai i =
N − 1.
UNIVERSITAS SUMATERA UTARA
(vii) Jika menggunakan BFD, gunakan Persamaan (6.4)-(6.5) untuk menghitung
f ′ (xi ) dan f ′′ (xi ) mulai dari i = 3 sampai i = N + 1.

(viii) Jika menggunakan CFD, gunakan Persamaan (6.6)-(6.7) untuk menghitung


f ′ (xi ) dan f ′′ (xi ) mulai dari i = 2 sampai i = N .

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.

6.2.3 Persamaan diferensial biasa (PDB)


Suatu persamaan diferensial adalah persamaan yang memiliki suku-suku berupa tu-
runan dari suatu variabel terikat (dependent variable) terhadap variabel bebasnya
(independent variable). Apabila hanya terdapat satu buah variabel bebas, persamaan
tersebut disebut persamaan diferensial biasa (PDB). Salah satu contoh PDB yang
dikenal luas adalah persamaan gerak objek dengan massa, m, yang terhubung dengan
pegas dengan kekakuan, k, dan redaman, c, serta mengalami pembebanan dinamik,
F (x). Persamaan PDB ini diekspresikan seperti di bawah ini.

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

UNIVERSITAS SUMATERA UTARA


menyelesaikan PDB. Suatu metode penyelesaian PDB disebut eksplisit apabila hanya
memerlukan data yang sudah diketahui nilainya. Sebagai contoh dari Persamaan
(6.8), prediksi perpindahan dan kecepatan di waktu berikutnya, yaitu yi dan vi pada
x = xi , hanya memerlukan data perpindahan dan kecepatan dari waktu sebelumnya,
yaitu yi−1 dan vi−1 pada x = xi−1 . Perhatikan bahwa indeks i mengacu ke prediksi
sedangkan i − 1 mengacu ke data sebelumnya.
Berikut adalah beberapa metode dengan pendekatan eksplisit.

(1) Metode Euler


Metode eksplisit yang paling mudah untuk diimplementasikan adalah metode
Euler. Jika PDB yang akan diselesaikan bersifat orde 1 seperti berikut:

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:

yi+1 = yi + f (xi , yi ) h, (6.10)

dimana h adalah jarak antara xi+1 dan xi . Dengan cara yang sama, yi+2 dapat
diprediksi dengan

yi+2 = yi+1 + f (xi+1 , yi+1 ) h. (6.11)

Perhatikan bahwa untuk memprediksi data dengan indeks i + 2 digunakan data


sebelumnya, yaitu dengan indeks i + 1.
Prinsip di atas didasarkan pada makna kemiringan (slope) kurva itu sendiri,

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:

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-


variabel relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.


(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi ).
(c) Hitung yi+1 sesuai Persamaan (6.10), yi+1 = yi + f (xi , yi ) h.
(d) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .

(2) Metode Heun


Metode lain dengan keakuratan lebih baik adalah metode Heun, yang mener-
apkan pendekatan predictor-corrector. Metode ini memprediksi nilai yi+1 meng-
gunakan data xi dan yi sama seperti metode Euler:

0
yi+1 = yi + f (xi , yi ) h, (6.12)

kemudian mengkoreksi hasil prediksi, yi+1


0
, dengan cara:
 
f (xi , yi ) + f xi+1 , yi+1
0
yi+1 = yi + h, (6.13)
2

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 , ....

Algoritma berdasarkan metode Heun untuk menyelesaian PDB dari Persamaan


(6.9) dan menghitung y pada suatu interval xb ≤ x ≤ xa dengan kondisi awal,
yaitu y(xb ) = yb , diberikan di bawah ini.

(i) Deklarasikan tipe data variabel N beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi , yi dan tol beserta variabel-

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 .

DEPARTEMEN TEKNIK SIPIL


(v) Hitung nilai h, dimana h = xa −xb
N
.
(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

UNIVERSITAS SUMATERA UTARA


(a) Untuk setiap i, hitung xi+1 = xi + h.
(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi ).
(c) Prediksi nilai yi+1
0
sesuai Persamaan (6.12).
(d) Inisialisasi nilai indeks iterasi j = 1.
(e) Buat do while selama kondisi konvergen menurut Persamaan (6.14)
belum terpenuhi atau selama indeks iterasi j = 1.
(1) Panggil (CALL) kembali SUBROUTINE dari langkah (b) kali ini
 
untuk menghitung f xi+1 , yi+1
0
.
(2) Perbaiki nilai prediksi untuk menghitung nilai yi+1 sesuai Per-
samaan (6.13).
(3) Perbaharui nilai indeks iterasi j dengan menyatakan j = j + 1.
(4) Nyatakan bahwa yi+1
j
= yi+1 dan yi+1
j−1
= yi+1
0
.
(5) Ganti yi+1
0
yang sekarang dengan yi+1 dengan menyatakan yi+1
0
=
yi+1 .
(f) Jika konvergen sudah terpenuhi, ulangi langkah (a) sampai indeks i
terakhir, yaitu i = N .

(3) Metode Titik Tengah


Improvisasi dari metode di atas adalah metode Titik Tengah. Perbedaan
dengan metode sebelumnya terletak pada prediksinya yang menggunakan data
pada titik tengah antara xi dan xi+1 , yaitu xi+1/2 , sebagai berikut:

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.

UNIVERSITAS SUMATERA UTARA


(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-
variabel relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.


(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi ).
(c) Lakukan prediksi dengan menghitung yi+1/2 sesuai Persamaan (6.15).
(d) Untuk setiap i, hitung xi+1/2 = xi + h/2.
(e) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
 
tuk menghitung f xi+1/2 , yi+1/2 .
(f) Lakukan koreksi dengan menghitung yi+1 sesuai Persamaan (6.16).
(g) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .

(4) Metode Runge-Kutta Orde Kedua


Metode Runge Kutta orde kedua pada dasarnya sama dengan metode
Heun namun tanpa iterasi pada tahap koreksi untuk memastikan konvergensi.
Variasi lain dari orde keduanya juga menyerupai metode Titik Tengah. Den-
gan demikian, metode Runge Kutta orde kedua tidak akan dibahas lanjut
pada modul ini. Walau demikian, praktikan diharapkan bisa membuat algorit-
manya secara mandiri.

(5) Metode Runge-Kutta Orde Ketiga


Metode Runge-Kutta orde ketiga memerlukan data berupa nilai f (x, y)

89
6.2 Dasar teori

MODUL PRAKTIKUM
pada xi , xi+1/2 dan xi+1 untuk menghitung nilai yi+1 sebagai berikut:

PEMROGRAMAN KOMPUTER yi+1 = yi +


1
6
(k1 + 4k2 + k3 ) h, (6.17)

dimana, k1 = f (xi , yi ) , (6.18)


DEPARTEMEN TEKNIK SIPIL 
1 1
k2 = f xi + h, yi + k1 h ,

(6.19)
2 2
UNIVERSITAS SUMATERA UTARA k3 = f (xi + h, yi − k1 h + 2k2 h) . (6.20)

Sama seperti variasi orde keduanya, tidak ada iterasi untuk memastikan konver-
gensi nilai yi+1 .

Dengan prinsip yang dijabarkan di atas, algoritma untuk metode Runge-


Kutta Orde Ketiga adalah sebagai berikut:

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-


variabel relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.


(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi )
dan nyatakan bahwa k1 = f (xi , yi ).
(c) Hitung xt = xi + h/2 dan yt = yi + 21 k1 h.
(d) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k2 = f (xt , yt ).
(e) Hitung xf = xi+1 dan yf = yi − k1 h + 2k2 h.
(f) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xf , yf ) dan nyatakan bahwa k3 = f (xf , yf ).
(g) Hitung yi+1 = yi + 61 (k1 + 4k2 + k3 ) h sesuai dengan Persamaan (6.17).
(h) Ulangi langkah (a) sampai indeks i terakhir, yaitu 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)

Dengan prinsip yang dijabarkan di atas, algoritma untuk metode Runge-


Kutta Orde Keempat adalah sebagai berikut:

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-


variabel relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.


(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung f (xi , yi )
dan nyatakan bahwa k1 = f (xi , yi ).
(c) Hitung xt = xi + h/2 dan yt = yi + 21 k1 h.
(d) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini un-
tuk menghitung f (xt , yt ) dan nyatakan bahwa k2 = f (xt , yt ).
(e) Hitung kembali yt , kali ini yt = yi + 12 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 xf = xi+1 dan yf = yi + k3 h.

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 .

UNIVERSITAS SUMATERA UTARA


(7) Metode Runge-Kutta Orde Lebih Tinggi
Metode Runge-Kutta Orde Lebih Tinggi memerlukan data berupa ni-
lai f (x, y) pada xi , xi+1/4 , xi+1/2 , xi+3/4 dan xi+1 untuk menghitung nilai yi+1 .
Metode ini juga dilakukan tanpa ada iterasi untuk memastikan konvergensi nilai
yi+1 . Algoritmanya adalah sebagai berikut:

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)

Dengan prinsip yang dijabarkan di atas, algoritma untuk metode Runge-


Kutta Orde Lebih Tinggi adalah sebagai berikut:

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-


variabel relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(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 .

6.2.5 Metode implisit untuk PDB


Metode Euler dapat diterapkan secara implisit untuk menyelesaikan suatu PDB.
Sebelumnya, pendekatan eksplisit hanya melibatkan data xi dan yi untuk menghi-
tung ruas kanan PDB orde 1, yaitu f (xi , yi ) (lihat Persamaan (6.10)). Untuk pen-
dekatan implisit dengan metode Euler, ruas kanan PDBnya melibatkan variabel
bebas xi+1 dan variabel terikat yang belum diketahui nilainya, yaitu yi+1 . Persamaan
(6.9) dapat kembali diekspresikan sebagai berikut:

yi+1 = yi + f (xi+1 , yi+1 ) h. (6.33)

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:

DEPARTEMEN TEKNIK SIPIL dy


dx
= −1000y + 3000 − 2000e−x . (6.34)

UNIVERSITAS SUMATERA UTARA


Penyelesaian persamaan di atas dengan metode Euler secara implisit yang menggu-
nakan data xi+1 dan yi+1 pada ruas kanannya serta penyusunan kembali suku-suku
yang melibatkan yi+1 menghasilkan persamaan-persamaan:

 
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)

Algoritma yang diterapkan berdasarkan sesuai metode Euler secara implisit


untuk menyelesaian PDB dari Persamaan (6.36) adalah berikut ini:

(i) Deklarasikan tipe data variabel jumlah subinterval, N , beserta nilainya.

(ii) Deklarasikan tipe data variabel, xb , xa , yb , xi dan yi beserta variabel-variabel


relevan lainnya.

(iii) Defenisikan nilai xb , xa dan yb .

(iv) Nyatakan bahwa x1 = xb dan y1 = yb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.

(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung g (xi+1 , yi ) =


yi +3000h−2000he−xi+1
1+1000h
sesuai dengan Persamaan (6.36).

(c) Hitung yi+1 = g (xi+1 , yi ) sesuai persamaan tersebut.

(d) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .

94
6.3 Fungsi diferensiasi dan penyelesaian PDB pada Matlab

6.3 MODUL PRAKTIKUM


Fungsi diferensiasi dan penyelesaian PDB pada

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.

% Defenisikan batas bawah xb, batas atas xa dan jumlah lokasi N


...
% Hitung nilai interval antar x, h
h=(xa-xb)/N
% Defenisikan nilai x berdasarkan data input
x=xb:h:xa;
% Defenisikan fungsi yang akan dianalisa turunannya, z, misalnya z=sin(x)
z=sin(x);
% Hitung nilai turunan fungsi z tersebut, px
px=gradient(z,h);

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:

% Sama seperti langkah sebelumnya


...
% Hitung perbedaan nilai fungsi pada tiap x, px2
px2=diff(z);
% Hitung nilai turunan fungsi pada tiap x, px2
px2=px2/h;

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

dimana kondisi awalnya adalah berikut: y (0) = 0. Dengan demikian, persamaan

UNIVERSITAS SUMATERA UTARA


berikut berlaku:

yb = 0. (6.39)

Estimasilah nilai y pada suatu selang xb = 0 ≤ x ≤ 0.4 = xa . Beberapa fungsi pada


Matlab yang dapat diimplementasikan untuk penyelesaian PDB orde 1 ini dijabarkan
berikut:

(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:

% Defenisikan batas bawah xb dan batas atas xa


...
% Buat interval x yang akan dianalisa
tspan=[xb xa];
% Defenisikan kondisi awal yb
...
% Selesaikan sistem PDB tersebut dengan memanggil ode23
[x,y]=ode23(@ (x, y) -1000*y+3000-2000*exp(-x), tspan, yb);
% Plot fungsi y terhadap x
plot(x,y,’-o’)

Pernyataan @-1000*y+3000-2000*exp(-x) di atas harus merupakan defenisi


dari fungsi f (x, y) yang juga merupakan ruas kanan dari Persamaan (6.38).

(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

6.4 MODUL PRAKTIKUM


Latihan

PEMROGRAMAN KOMPUTER
Dengan menerapkan dan memodifikasi algoritma yang telah dijabarkan se-
belumnya, buatlah empat program yang masing-masing bertujuan untuk menye-

DEPARTEMEN TEKNIK SIPIL


lesaikan PDB orde 1 berikut:

(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!

exp−x /(2σ ) , dari xb = 0 sampai dengan xa = 10.z2 , dimana F (0) = 0


2 2
(3) dF
dx
= x
σ2
dan σ adalah parameter skala bernilai 0.7. Persamaan ODE ini pada dasarnya
merupakan probability density function dari distribusi Reyleigh. Penyelesaian
ODE tersebut akan menghasilkan cumulative distribution function, F (x). Gu-
nakan CALL dan SUBROUTINE untuk menerapkan metode Euler implisit
dan metode Runge-Kutta orde 2 untuk mencari nilai F (x) pada selang x
tersebut dan plot hasilnya.
q
(4) dh
dt
= 0.6Ao
At
2.0gh (t), di mana h (t) adalah tinggi muka air di dalam tangki
pada waktu tertentu, t. Gambar 6.3 menunjukkan tangki silinder dengan luas
penampang, At , serta memiliki lubang (orifice) di bagian dasar dengan luas
orifice, Ao .

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

DEPARTEMEN TEKNIK SIPIL


UNIVERSITAS SUMATERA UTARA
luas orifice, Ao

GAMBAR 6.3: Sebuah penampang melintang dari composite column.

Dalam pembuatan program dari soal (1)-(4), hal berikut diperhatikan:

(a) z1 dan z2 masing-masing adalah dua angka terakhir NIM,

(b) Tetapkan bahwa jumlah subinterval, N , adalah 2z1 z2 dan

(c) Implementasikan fungsi pada Matlab yang berkaitan.

99
6.5 Dasar teori lanjutan

6.5 MODUL PRAKTIKUM


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:

PEMROGRAMAN KOMPUTER dy1


dx
= y2 ,
(6.42)
= f1 (x, y1 , y2 ) ,
DEPARTEMEN TEKNIK SIPIL dan
dy2 1
= F (x) − y2 −
c k
x,
dx m m m (6.43)
UNIVERSITAS SUMATERA UTARA = f2 (x, y1 , y2 ) .

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:

d4 y1 dy13 dy12 dy1


4
= a 3
+ b 2
+c + dy1 + ex, (6.44)
dx dx dx dx

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 ) .

Untuk bisa memprediksi nilai y4 pada suatu interval xb ≤ x ≤ xa , diperlukan empat


kondisi awal, yaitu nilai y1,b , y2,b , y3,b dan y4,b pada x = xb . Sama seperti penyelesaian
pada suatu PDB, sebuah sistem PDB juga dapat diselesaikan dengan menggunakan
metode eksplisit dan implisit. Penjabaran lebih lanjut mengenai kedua metode ini
diberikan pada bagian di bawah ini.

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.

DEPARTEMEN TEKNIK SIPIL


Sebagai contoh, sebuah sistem PDB terdiri dari dua PDB orde 1 seperti berikut:

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.

y1 (0.5) = y1 (0) + [−0.5y1 (0)] 0.5, (6.51)


y2 (0.5) = y2 (0) + [4 − 0.3y2 (0) − 0.1y1 (0)] 0.5, (6.52)

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:

y1,i+1 = y1,i + [−0.5y1,i ] h, (6.53)


= y1,i + f (xi , y1,i , y2,i ) h, (6.54)
y2,i+1 = y2,i + [4 − 0.3y2,i − 0.1y1,i ] h, (6.55)
= y2,i + f (xi , y1,i , y2,i ) h. (6.56)

Setiap variabel y dengan indeks i + 1 menyatakan variabel terikat pada x terbaru


yang akan dihitung sedangkan variabel y dengan indeks i mengindikasikan variabel
terikat pada x sebelumnya. Langkah ini terus berlanjut sampai indeks i terakhir,
yaitu ketika x = 2.0.
Penjabaran di atas menunjukkan penyelesaian suatu sistem PDB yang terdiri dari

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.

UNIVERSITAS SUMATERA UTARA


(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 .

(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 .

(vi) Hitung nilai h, dimana h = xa −xb


N
.

(vii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.


(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung
f1 (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
f2 (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
...
fj (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
...
fM (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ).
(c) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M .
(1) Hitung yj,i+1 = yj,i + fj (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ) h.
(d) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .

Metode Runge-Kutta juga dapat diimplementasikan untuk menyelesaikan sis-


tem PDB tersebut. Jika menggunakan metode Runge-Kutta Orde Keempat,
langkah yang perlu diambil sesuai dengan Persamaan (6.21-6.25) ditunjukkan di
bawah ini.

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 ,

DEPARTEMEN TEKNIK SIPIL


dan variabel terikat, yj,i , beserta variabel-variabel relevan lainnya.

(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 .

(vi) Hitung nilai h, dimana h = xa −xb


N
.

(vii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.

(b) Panggil (CALL) sebuah SUBROUTINE untuk menghitung


f1 (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
f2 (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
...
fj (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ),
...
fM (xi , y1,i , y2,i , ..., yj,i , ..., yM,i ) .

(c) Hitung xt = xi + h/2

(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 ).

UNIVERSITAS SUMATERA UTARA


(2) Hitung kembali yj,t , kali ini yj,t = yj,i + 12 kj,2 h.
(g) 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 ),
...
fM (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ),
dengan yj,t yang terbaru.
(h) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M .
(1) Nyatakan bahwa untuk setiap indeks j, kj,3 = fj (xt , y1,t , y2,t , ..., yj,t , ..., yM,t ).
(2) Hitung xf = xi+1 dan yj,f = yj,i + kj,3 h.
(i) Panggil (CALL) kembali SUBROUTINE pada langkah (b) kali ini untuk
menghitung
f1 (xf , y1,f , y2,f , ..., yj,f , ..., yM,f ),
f2 (xf , y1,f , y2,f , ..., yj,f , ..., yM,f ),
...
fj (xf , y1,f , y2,f , ..., yj,f , ..., yM,f ),
...
fM (xf , y1,f , y2,f , ..., yj,f , ..., yM,f ).
(j) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M .
(1) Nyatakan bahwa kj,4 = fj (xf , y1,f , y2,f , ..., yj,f , ..., yM,f ).
(2) Hitung yj,i+1 = yj,i + 61 (kj,1 + 2kj,2 + 2kj,3 + kj,4 ) h sesuai dengan Per-
samaan (6.21).

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-

UNIVERSITAS SUMATERA UTARA


samaan (6.33)), fj (x1 , y1 , y2 , ..., yj , ..., yM ) dari setiap PDB orde 1 pada sistem PDB
hanyalah fungsi dari variabel xi+1 dan yj,i+1 , fj (x1,i+1 , y1,i+1 , y2,i+1 , ..., yj,i+1 , ..., yM,i+1 ).
Oleh karenanya, setiap suku yj,i+1 pada ruas kanan PDB tersebut digabung ke suku
yj,i+1 pada ruas kirinya.
Sebagai contoh, sebuah sistem PDB terdiri dari dua PDB orde 1 berikut:

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)

Dengan menggunakan metode Euler, Persamaan (6.61)-(6.64) dapat diuraikan men-


jadi

y1,i+1 = y1,i + y2,i+1 h, (6.65)


= y1,i + f1 (xi+1 , y1,i+1 , y2,i+1 ) h, (6.66)
y2,i+1 = y2,i − 16.1y1,i+1 h, (6.67)
= y2,i + f2 (xi+1 , y1,i+1 , y2,i+1 ) h. (6.68)

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)

UNIVERSITAS SUMATERA UTARA


Persamaan di atas dapat dinyatakan dalam bentuk perkalian matriks A2x2 dengan
vektor B2x1 yang menghasilkan vektor C2x1 :

A2x2 · B2x1 = C2x1


(6.71)
    
1 −h y1,i+1 y1,i
   =  .
16.1 1 y2,i+1 y2,i

Penyelesaian vektor B2x1 dapat diperoleh dengan mencari matriks inverse dari A−1
2x2

dan perkalian dari A−1


2x2 dan vektor C2x1 .

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 .

(iv) Nyatakan bahwa x1 = xb .

(v) Hitung nilai h, dimana h = xa −xb


N
.

(vi) Buat do loop dengan indeks iterasi mulai dari j = 1 sampai dengan j = M .

(a) Untuk setiap j, nyatakan yj,1 = yj,b .

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).

DEPARTEMEN TEKNIK SIPIL


(vii) Panggil (CALL) sebuah SUBROUTINE untuk menghitung inverse matriks
AM xM .
UNIVERSITAS SUMATERA UTARA
(viii) Buat do loop dengan indeks iterasi mulai dari i = 1 sampai dengan i = N .

(a) Untuk setiap i, hitung xi+1 = xi + h.

(b) Buat do loop terdalam dengan indeks iterasi mulai dari j = 1 sampai
dengan j = M

(1) Defenisikan elemen vektor C (j, 1).

(c) Panggil (CALL) sebuah SUBROUTINE untuk menghitung vektor BM x1


melalui perkalian inverse matriks AM xM dengan vektor CM x1 .

(d) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = N .

6.6 Fungsi penyelesaian sistem PDB pada Matlab


Sebagai contoh penyelesaian sistem PDB pada Matlab, lihat persamaan di bawah
ini:

d2 y dy
2
+ (5y) + (y + 7) sin x = 0, (6.72)
dx dx

dimana kondisi awalnya adalah berikut: dy


dx
(0) = 1.5 dan y (0) = 6. Dengan men-
substitusikan suatu variabel sebut saja y1 ke variabel y pada PDB orde 2 ini, dan
melakukan langkah seperti sebelum-sebelumnya, suatu sistem PDB yang terdiri dari
dua buah PDB orde 1 dapat dihasilkan.

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)

UNIVERSITAS SUMATERA UTARA


Beberapa fungsi pada Matlab yang telah diimplementasikan untuk penyelesaian su-
atu PDB orde 1 dapat juga diimplementasikan untuk menyelesaikan sistem PDB
ini.

(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:

% Defenisikan batas bawah xb dan batas atas xa


...
% Buat interval x yang akan dianalisa
tspan=[xb xa];
% Defenisikan kondisi awal y1b dan kondisi awal y2b
...
% Buat vektor yb yang elemennya berisi y1b dan y2b
yb=[y1b; y2b];
% Selesaikan sistem PDB tersebut dengan memanggil ode23
[x,y]=ode23(@pers, tspan, yb); ! ’pers’ adalah nama file kedua
% Plot fungsi y terhadap x
plot(x,y(:,1),’-o’)

Selanjutnya, script yang dipakai untuk mendefenisikan fungsi f1 (x, y1 , y2 ) dan

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);

dydxyang dinyatakan di atas harus berupa vektor kolom.

(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.

Dalam pembuatan program dari soal ini, hal berikut diperhatikan:

(a) Tetapkan bahwa jumlah subinterval, N , adalah 2z1 z2 ,

(b) z1 dan z2 masing-masing adalah dua angka terakhir NIM,

(c) Tunjukkan penurunan sistem PDB dari persamaan PDB orde 2 di atas,

(d) Implementasikan fungsi pada Matlab yang berkaitan dan

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

7.1 Tujuan praktikum


Modul ini bertujuan untuk memperkenalkan dan melatih praktikan bagaimana mem-
buat suatu program yang bertujuan untuk menginterpolasi nilai dari suatu data yang
tersedia. Metode interpolasi yang digunakan adalah penerapan dari Lagrangian in-
terpolating polinomial dan cubic spline. Penerapan metode ini melibatkan baik fungsi
satu dimensi dan dua dimensi. Selain dari itu, fungsi-fungsi intrinsik yang berkaitan
dengan interpolasi dan yang tersedia pada Matlab juga digunakan.
Secara khusus, penerapan metode interpolasi ke dalam bahasa pemrograman For-
tran dan Matlab bertujuan agar mahasiswa dapat:

(1) Membaca data input dari file eksternal untuk diinterpolasi,

(2) Menyimpan data output berupa hasil interpolasi ke file eksternal dan

(3) Memvisualisasikan data input maupun data output pada grafik.

7.2 Dasar teori

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:

open(unit=u, file=filename, status=st, action=act)

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,

(2) filename adalah nama file yang akan dibuka,

(3) st adalah status file berupa:

(a) ”new” jika file sebelumnya belum ada dan akan dibuat oleh perintah OPEN,

(b) ”old” jika file sudah ada sebelum program dijlankan,

(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:

(a) ”read” jika file hanya akan dibaca,

(b) ”write” jika hasil perhitungan program akan ditulis ke dalamnya dan

(c) ”readwrite” jika tidak ada batas soal hanya membaca atau menuliskan hasil
perhitungan.

Misalkan, sebuah file bernama ”matriksinput.txt” akan dibaca dan u ditetapkan


bernilai 15, penulisan perintah OPEN adalah seperti berikut:

open(unit=15, file=”matriksinput.txt”, status=”old”, action=”read”)

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:

read(u, *) nama variabel


read(unit=u, fmt=fmt) nama variabel

Sedangkan untuk menuliskan data pada suatu file, gunakan perintah WRITE. Sin-
taks yang digunakan diberikan di bawah ini.

write(u, *) nama variabel


write(unit=u, fmt=fmt) nama variabel

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-

DEPARTEMEN TEKNIK SIPIL


tific notation) dengan pengertian wdan dsama seperti sebelumnya. Misalkan,
suatu bilangan real tertulis 0.5235e-5 memiliki d bernilai 4.

UNIVERSITAS SUMATERA UTARA


(4) esw.d juga digunakan untuk menampilkan bilangan real dengan notasi ilmiah.
Perbedaan dengan format ew.d terletak pada angka di depan titik desimal berni-
lai antara 1 ke 10. Untuk contoh sebelumnya, bilangan 0.5235e-5 ditulis menjadi
5.235e-6 agar sesuai dengan format esw.d dimana d sekarang bernilai 3.

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

GAMBAR 7.1: Data pada file bernama ”matriksinput.txt”.

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:

PEMROGRAMAN KOMPUTER do i=1,5


read(15, *) (A(i,j), j=1,5)
DEPARTEMEN TEKNIK SIPIL end do

UNIVERSITAS SUMATERA UTARA


Dalam hal ini, pembacaan angka pada baris pertama, i = 1, dilakukan sekaligus
untuk semua kolom. Langkah ini kemudian dilanjutkan untuk pembacaan angka
pada baris kedua dan seterusnya.
Untuk menulis data, misalkan elemen-elemen matriks A, ke file yang bernama
”matriksoutput.txt”, dengan format tertentu untuk tiap elemen, yaitu es12.3, penulisan
sintaksnya adalah seperti berikut:

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:

PEMROGRAMAN KOMPUTER fileID=fopen(filename, action)

DEPARTEMEN TEKNIK SIPIL


dimana filename adalah nama file eksternal dan st adalah action adalah tindakan.
st dapat berupa ”r” yang berarti read untuk membaca data dari file, dan ”w” yang

UNIVERSITAS SUMATERA UTARA


berarti write untuk menulis data ke file.
Selanjutnya, untuk membaca file tersebut, perintah TEXTSCAN atau FSCANF
digunakan. Bersamaan dengan penggunaan perintah ini, format data pada kedua
perintah tersebut dan ukuran (size) data yang dihasilkan pada perintah FSCANF
perlu dispesifikasikan. Setelah data dibaca, file tersebut perlu ditutup. Berikut
perintah-perintah yang perlu diterapkan.

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:

DEPARTEMEN TEKNIK SIPIL


fileID=fopen(”matriksinput.txt”, ”r”)
ncolm=5
UNIVERSITAS SUMATERA UTARA
formatSpec=repmat(’%f’, 1, ncolm)
A=cell2mat(textscan(fileID, formatSpec))

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’, ’,’)

7.2.3 Interpolasi satu dimensi


Interpolasi adalah estimasi terhadap nilai dari suatu fungsi, baik fungsi satu dimensi
maupun dua dimensi, pada variabel bebas tertentu. Untuk melakukan interpolasi
satu dimensi, nilai-nilai fungsi satu dimensi, f (x), pada variabel bebasnya, x, diper-

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

UNIVERSITAS SUMATERA UTARA dimana Li (x) =


i=0
Yn
x − xj
.
(7.1)

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.

(iii) Lakukan pembacaan nilai n, xi , f (xi ) dan x.

(iv) Inisialisasi nilai hasil interpolasi pada x, f (x), sebesar nol.

(v) Buat do loop dengan indeks iterasi mulai dari i = 0 sampai dengan i = n.

(a) Inisialisasi nilai hasil faktorial untuk menghitung Lagrange polinomial, L,


sebesar 1.
(b) 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 L = L f ak.
(4) Ulangi langkah (1) sampai indeks j terakhir, yaitu j = n.
(c) Perbaharui nilai hasil interpolasi, f (x), dimana f (x) = f (x) + (L f (xi )).
(d) Ulangi langkah (a) sampai indeks i terakhir, yaitu 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

UNIVERSITAS SUMATERA UTARA


Pada kenyataanya, banyak kasus aktual melibatkan fungsi dua dimensi. Interpolasi
untuk mengestimasti nilai fungsi dua dimensi, f (x, y), pada dua variabel bebasnya,
x dan y, merupakan hal yang perlu dilakukan. Dalam modul ini, Lagrange in-
terpolating polinomial juga digunakan pada interpolasi dua dimensi. Gambar 7.4(a)
mengilustrasikan interpolasi linear dua dimensi pada (x, y) dari data-data yang dike-
tahui, yaitu x0 , x1 , y0 , y1 beserta nilai-nilai fungsinya f (x0 , y0 ) , f (x0 , y1 ) , f (x1 , y0 )
dan f (x1 , y1 ). Interpolasi ini bertujuan untuk mengestimasi nilai fungsi f (x, y).

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

dan pada (x, y1 ) dengan persamaan di bawah ini:

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:

DEPARTEMEN TEKNIK SIPIL


f (x, y) =
y − y1
y0 − y1
f (x, y0 ) +
y − y0
y1 − y0
f (x, y1 ) . (7.6)

UNIVERSITAS SUMATERA UTARA


Tahapan di atas juga diilustrasikan secara skematis pada Gambar 7.4(b).
Prosedur di atas menjelaskan interpolasi linear pada dua dimensi. Untuk inter-
polasi dengan derajat polinomial n pada dua dimensi, Persamaan (7.1) dimodifikasi
menjadi dua tahapan. Tahapan pertama diberikan seperti berikut:
n
fn (x, y0 ) = Li (x) f (xi , y0 ) ,
X

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

Tahapan kedua diberikan di bawah ini.


n
fn (x, y) = Li (y) f (x, yi ) ,
X

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,

DEPARTEMEN TEKNIK SIPIL


lakukan perintah berikut:

(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 ).

(a) Inisialisasi nilai dari f (x, yi ) sebesar 0.


(b) Buat do loop terdalam dengan indeks iterasi mulai dari j = 0 sampai j = n
(1) Hitunglah hasil perkalian dari f ak = Lj (x) f (x, yi ).
(2) Pebaharui nilai f (x, yi ) = f (x, yi ) + f ak.
(3) Ulangi langkah (1) sampai indeks j terakhir, yaitu j = n, untuk men-
dapatkan hasil akhir dari f (x, yi ).
(c) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = n, untuk mendap-
atkan hasil f (x, yi ) untuk semua i.

(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.

(a) Hitunglah hasil perkalian dari f ak = Li (y) f (x, yi ).


DEPARTEMEN TEKNIK SIPIL
(b) Perbaharui nilai f (x, y) = f (x, y) + f ak.

UNIVERSITAS SUMATERA UTARA


(c) Ulangi langkah (a) sampai indeks i terakhir, yaitu i = n, untuk mendap-
atkan hasil akhir dari f (x, y).

(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.

7.2.5 Fungsi interpolasi dan visualisasi pada Matlab


Beberapa fungsi interpolasi yang terdapat pada Matlab dijabarkan berikut ini:

(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.

% Defenisikan nilai xi dimana jarak antara x adalah 1


x=0:1:5
% x yang dihasilkan berupa vektor
% Selanjutnya, baca nilai dari fungsi, fx, pada tiap x
...
% fx juga berupa vektor dengan jumlah elemen yang sama dengan x
% Jika ingin memvisualisasikan nilai fungsi fx pada tiap x, gunakan
plot(x, fx, ’k-o’)

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

DEPARTEMEN TEKNIK SIPIL


% Lakukan interpolasi linear untuk mendapat nilai fungsi pada xint
fxint=interp1(x,fx,xint)

UNIVERSITAS SUMATERA UTARA


% Atau lakukan interpolasi kubik, yaitu interpolasi dengan derajat polinomial 3
Fxint=interp1(x, fx, xint,’cubic’)
% Jika ingin memvisualisasikan hasil interpolasi, gunakan
plot(xint, fxint, ’k-o’)

(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.

% Defenisikan nilai xi dimana jarak antara x adalah 1


x=-5:1:5
% Defenisikan nilai yi dimana jarak antara y adalah 1
y=-5:1:5
% x dan y di atas perlu diubah ke dalam matriks menggunakan MESHGRID
[X, Y] = meshgrid(x, y)
% Hasil X dan Y ditampilkan dalam bentuk matriks, dimana elemen
% kolom dari X berbeda nilainya, sedangkan elemen barisnya sama
% Sebaliknya, elemen baris dari Y berbeda nilainya
% Selanjutnya, baca nilai dari fungsi, FXY, pada tiap-tiap X dan Y
...
% FXY juga berupa matriks dengan jumlah kolom dan baris
% yang sama dengan X dan Y

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)

DEPARTEMEN TEKNIK SIPIL


% Defenisikan lokasi koordinat yang akan diinterpolasi, xint dan yint
% Seperti didefenisikan sebelumnya bahwa jarak antara xint adalah 0.5

UNIVERSITAS SUMATERA UTARA


% dan jarak antara yint adalah 0.5
xint=-5:0.5:5
yint=-5:0.5:5
% Lakukan hal yang sama seperti sebelumnya, gunakan MESHGRID
[XINT, YINT] = meshgrid(xint, yint)
% Lakukan interpolasi linear untuk mendapat nilai fungsi pada XINT dan YINT
FXYINT=interp2(X, Y, FXY, XINT, YINT)
% Atau lakukan interpolasi kubik, yaitu interpolasi dengan derajat polinomial 3
FXYINT=interp2(X, Y, FXY, XINT, YINT,’cubic’)
% Jika ingin memvisualisasikan hasil interpolasi, gunakan
surf(XINT, YINT, FXYINT)

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.

UNIVERSITAS SUMATERA UTARA

(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,

(b) menghitung matriks B, dimana B = 1.z3 A dan


PEMROGRAMAN KOMPUTER
(c) menyimpan data elemen-elemen matriks B ke dalam sebuah file eksternal

DEPARTEMEN TEKNIK SIPIL


dengan format esw.d. Pilihlah w dan d sedemikian rupa supaya semua angka
di belakang koma tertulis pada file.

UNIVERSITAS SUMATERA UTARA


(2) Buatlah program yang bertujuan menghitung nilai f (x) pada x = 5.z3 jika data
yang diketahui adalah x = 3.z3 , f (3.z3 ) = −2.z3 dan x = 7.z3 , f (7.z3 ) = 1z1 .z3 .
Lakukan interpolasi linear satu dimensi dengan menerapkan dan memodifikasi
algoritma yang telah dijabarkan sebelumnya pada hal. 121-122.

(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.

Dalam pembuatan program dari soal ini, hal berikut diperhatikan:

(a) z1 , z2 dan z3 masing-masing adalah tiga angka terakhir NIM,

(b) Implementasikan Matlab pada soal di atas untuk membaca, menyimpan data
serta melakukan interpolasi dan

(c) Plot/visualisasikan hasil interpolasi dari soal (2) dan (4).

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.

8.1 Akar Persamaan

8.1.1 Gesekan pada pipa


Pada semester ketiga, mahasiswa telah belajar mengenai kehilangan energi pada pipa
akibat gesekan, atau yang juga disebut dengan istilah major losses. Berdasarkan
persamaan Colebrook-White, faktor gesekan, f , pada aliran turbulen dalam pipa
memiliki hubungan dengan bilangan Reynolds, Re, diameter pipa, D, serta ketebalan
kekasaran dinding pipa, ϵ, sebagai berikut:

1 2.51
!
ϵ
√ = −2.0 log + √ , (8.1)
f 3.7D Re f

dimana Re didefenisikan di bawah ini.

ρ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.

DEPARTEMEN TEKNIK SIPIL


TABEL 8.1: Properti pada fluida dan diameter pipa
Kasus ρ[kg/m3 ] µ[P a.s] ϵ[mm] U [m/s] D[m]
1 1.23 1.79x10−5 0.0015 40 0.005
UNIVERSITAS SUMATERA UTARA
2 1.23 1.79x10 −5

−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

Persamaan (8.3) secara umum dapat ditulis sebagai:

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

DEPARTEMEN TEKNIK SIPIL


Perhatikan tanda superskript di ruas kiri adalah (2) yang menandakan estimasi
 
kedua. Hal lain yang perlu diperhatikan adalah bahwa F ′ fr(1) merupakan turunan
UNIVERSITAS SUMATERA UTARA
dari fungsi F (f ) pada f = fr(1) . Secara analitik, turunannya dapat dinyatakan ke
dalam persamaan berikut:

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.

8.1.2 Bilangan gelombang


Suatu gelombang laut memiliki periode, T , dan tinggi gelombang, H, menjalar di
kedalaman perairan sebesar, h. Panjang gelombangnya, L, dapat ditentukan dari
persamaan dispersi yang ditulis seperti di bawah ini.

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:

PEMROGRAMAN KOMPUTER F (L) = −L +


gT 2

tanh

L

h .

(8.10)

DEPARTEMEN TEKNIK SIPIL


Dengan demikian, L yang dicari adalah ketika F (L) = 0.0. Dalam hal ini, L adalah
akar persamaan dari F (L), Lr . Perhatikan bahwa dalam menyelesaikan akar per-
UNIVERSITAS SUMATERA UTARA
saman ini, beberapa parameter seperti π dan g dan variabel seperti T dan h perlu
didefenisikan. Lihat Tabel 8.2 untuk melihat nilai parameter dan variabel ini. Sama
seperti sebelumnya, estimasi pertama dari akar persamaan, L(1)
r juga perlu dide-
fenisikan. Hanya saja, kita tidak memiliki persamaan untuk memberikan estimasi
pertama agar perhitungan akar sebenarnya lebih cepat.
Dengan menggunakan metode Newton-Rapshon, estimasi kedua akar persamaan,
r ,
L(2) dapat dihitung seperti sebelumnya, yaitu:
 
F L(1)
r
r = Lr −
L(2) (8.11)
(1)  ,
(1)
F ′ Lr
 
dimana turunan fungsinya, F ′ L(1)
r , dapat diekspresikan ke dalam persamaan di
bawah ini:

2 2π h
!
gT 2 h
F (L) = −1 −

sech . (8.12)
L2 L

Dengan menggantikan L dengan L(1)


r pada Persamaan (8.12) dan pada Persamaan

(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

MODUL PRAKTIKUM TABEL 8.2: Properti pada gelombang


Kasus T [s] h[m] g[m/s] π[rad]

PEMROGRAMAN KOMPUTER 1
2
10
10
20
30
9.8
9.8
3.14
3.14

DEPARTEMEN TEKNIK SIPIL 3


4
10
8
40
30
9.8
9.8
3.14
3.14
5 10 30 9.8 3.14
UNIVERSITAS SUMATERA UTARA 6 12 30 9.8 3.14

8.2 Matriks

8.2.1 Analisa rangka batang statik tentu


Salah satu tugas penting dalam analisa struktur adalah menghitung gaya-gaya dan
reaksi yang bekerja pada suatu rangka batang statik tentu. Gambar 8.1(a) dan
8.1(a) masing-masing menunjukkan contoh rangka batang yang mengalami pem-
bebanan akibat gaya luar (external) vertikal dan horisontal pada node 2. Pada
gambar tersebut, gaya eksternal, Fe , diberi tanda dengan warna merah, sedangkan
gaya reaksi, H2 , V2 , V3 , dan gaya-gaya internal (tarik atau tekan) yang bekerja pada
batang, F1 , F2 , F3 , diberi warna hitam.
Fe 1 Fe
1
F1 F3
F1 F3

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:

FH = 0 = −F1 cos 30o + F3 cos 60o + F1,H (8.13)


X

FV = 0 = −F1 sin 30o − F3 sin 60o + F1,V . (8.14)


X

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

DEPARTEMEN TEKNIK SIPIL


Untuk node 3, persamaannya menjadi:
UNIVERSITAS SUMATERA UTARA
X
FH = 0 = −F2 − F3 cos 60o + F3,H (8.17)
FV = 0 = F3 sin 60o + F3,V + V3 . (8.18)
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:

cos 30o · F1 + 0 · F2 − cos 60o F3 + 0 · H2 + 0 · V2 + 0 · V3 = F1,H


sin 30o F1 + 0 · F2 + sin 60o F3 + 0 · H2 + 0 · V2 + 0 · V3 = F1,V
− cos 30o F1 − 1 · F2 + 0 · F3 − 1 · H2 + 0 · V2 + 0 · V3 = F2,H
(8.19)
− sin 30o F1 + 0 · F2 + 0 · F3 + 0 · H2 − 1 · V2 + 0 · V3 = F2,V
0 · F1 + 1 · F2 + cos 60o · F3 + 0 · H2 + 0 · V2 + 0 · V3 = F3,H
0 · F1 + 0 · F2 − sin 60o · F3 + 0 · H2 + 0 · V2 − 1 · V3 = F3,V .

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.

TABEL 8.3: Analisa rangka batang


Kasus Fe [N ]
1a 1000
1b 1500
1c 2000
2a 1000
2b 1500
2c 2000

Buatlah program untuk menghitung invers matriks tersebut, A−1


6x6 , serta menen-

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

8.3 MODUL PRAKTIKUM


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:

UNIVERSITAS SUMATERA UTARA


TABEL 8.4: 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 09:00 11 18:00 20
02:00 2 10:30 4 19:00 10
04:00 0 11:30 11 20:00 8
05:00 2 12:30 12 21:00 10
06:00 6 14:00 8 22:00 8
07:00 7 16:00 7 23:00 7
08:00 23 17:00 26 24:00 3

Buatlah program yang bertujuan untuk menghitung:

(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.

Dengan menggunakan persamaan integrasi berikut, soal (i) dapat diselesaikan.


Z 24
I= ALL (t) dt, (8.22)
0

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)

DEPARTEMEN TEKNIK SIPIL


dimana N adalah jumlah data pada Tabel 8.4, yaitu sebanyak 21, i adalah indeks
urutan data dan ∆ti adalah selang waktu dihitung dari dua data berturut. Perlu
UNIVERSITAS SUMATERA UTARA
dicatat bahwa selang waktu, ∆ti , berdasarkan Tabel 8.4 tidak seragam. Tabel ini
menunjukkan selang waktu yang pertama, ∆t1 , dan kedua, ∆t2 , adalah 2 jam (00:00
- 02:00 - 04:00), tetapi selang waktu yang ketiga sampai ketujuh, ∆t3 , ∆t4 , ..., ∆t7 ,
adalah 1 jam (04:00-05:00-06:00- dst).
Gunakan metode Trapesium dan metode Persegi Panjang untuk melakukan per-
hitungannya.

8.3.2 Analisa defleksi balok


Suatu balok mengalami pembebanan terdistribusi dan mengakibatkan defleksi, y,
dan kemiringan, θ, sepanjang jarak pada balok, x. Dalam hal ini, x = 0 terletak pada
struktur penyangga balok paling kiri, dan x positif ke kanan (lihat Gambar 8.3(a)
dan 8.3(b)). Untuk kasus dari beban yang bertambah secara linear, kemiringan, θ,
dapat dihitung secara analitik dari persamaan di bawah ini.

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

(x=0, y=0) (x=L, y=0)

(a) Beban pada balok (b) Defleksi dan kemiringan pada balok

GAMBAR 8.3: Balok yang mengalami pembebanan terdistribusi secara linear.

Hubungan antara defleksi, y (x), dan kemiringan, θ (x), dapat dinyatakan dari

140
8.3 Integrasi numerik

MODUL PRAKTIKUM TABEL 8.5: Properti balok.


Kasus E[GP a] I[m4 ] L[m]

PEMROGRAMAN KOMPUTER 1
2
200
200
0.0003
0.0003
3
5

DEPARTEMEN TEKNIK SIPIL 3


4
200
180
0.0003
0.0003
7
3
5 160 0.0003 3
UNIVERSITAS SUMATERA UTARA 6 140 0.0003 3

persamaan turunan:

dy
= θ (x) , (8.26)
dx

atau dari integrasi fungsi θ (x):


Z x
y (x) = θ (x) . (8.27)
0

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

Anda mungkin juga menyukai