Anda di halaman 1dari 192

Bahan Ajar

Komputasi Proses Teknik Kimia

Oleh:
Marthen Luther Doko

Jurusan Teknik Kimia


Fakultas Teknologi Industri
Institut Teknologi Nasional Bandung
PEMROGRAMAN SCRIPT DENGAN
MATLAB
Sudah sama-sama kita ketahui dan sepakati bahwa suatu program computer adalah sederetan perintah-
perintah computer yang tersusun secara terurut untuk menyelesaikan suatu atau beberapa problema
tertentu. Dalam suatu program komputer yang paling sederhana, perintah-perintah dieksekusi setelah
perintah sebelumnya telah dieksekusi. Kita tahu bahwa perintah yang dijalankan di Command
Window juga bisa menjadi perintah-perintah yang tersusun dalam suatu berkas script. Karena suatu
berkas script menjalankan perintah secara logis harus bisa menyelesaikan problema yang telah
disusun penyelesaiannya. Untuk menyelesaikan problema-problema yang dapat deprogram
bergantung kepada kerumitannya dapat saja melibatkan proses pengambilan keputusan yang
berulang-ulang bahkan proses penghampiran terhadap penyelesaian yang dilakukan secara iterative
sehingga galat yang terjadi cukup kecil. Itulah mengapa setiap bahasa pemrograman harus dilengkapi
dengan beberapa kelengkapan untuk mengendalikan aliran informasi dalam suatu program yang
disusun berdasarkan bahasa pemrogaman tertentu dan sudah tentu termasuk di dalamnya adalah
bahasa pemrograman MATLAB.
MATLAB menyediakan pelbagai kelengkapan untuk mengendalikan suatu program yang disusun
berdasarkan script MATLAB. Tetapi sebelum kita membahas tentang kelengkapan untuk
pengendalian flow program, kita harus terlebih dahulu akan melihat operator relational dan operator
logika dan ini akan dibahas dalam bagian pertama. Yang kemudian diikuti oleh pernyataan
kondisional. Setelah itu kita akan masuk ke dalam struktur kendali dan yang pertama kali dibahas
adalah struktur swith dan struktur if else yang memungkinkan untuk meloncat beberapa perintah
tertentu untuk melaksanakan suatu kelompok pernyataan yang spesifik. Struktur kendali berikut yang
akan dibahas adalah struktur loop, yaitu struktur for loop dan while loop. Dengan struktur-struktur ini
akan memungkinkan untuk mengulang suatu urutan perintah beberapa kali. Kita akan mulai dengan
yang pertama—operator-operator relational dan logika. Tetapi sebelu semuanya itu dibahas kita akan
membicarakan bagaimana mengelola input dan output pada suatu program script MATLAB.
PENGGUNAAN BERKAS-BERKAS SCRIPT dan PENGELOLAN DATA
Sudah kita pelajadi sebelumnya di Bab I bahwa berkas script adalah list dari perintah-perintah yang
digunakan untuk melakukan suatu tugas tertentu atau beberapa tugas untuk suatu masalah yang
dimodelkan secara matematik—berkas ini disebut sebagai program. Ketika program ini dijalankan,
maka MATLAB akan mengesekusi urut-urutan perintah seperti yang telah disusun secara logis sesuai
dengan problema matematika yang dihasilkan untuk diselesaikan. Pembuatan dan penyimpanan serta
cara menjalankan suatu program cukup sederhana, langsung lewat proses interaktif
Dalam BAB ini akan dibahas mengenai bagaimana MATLAB menampilkan data yang tersimpan
dalam memori atau data yang diekspor dari luar ke ruang kerja (work space) dengan demikian kita
sebagai pengguna dapat melihat keberadaannya lewat Window Workspace. Dengan demikian kita
akan dapat melanjutkannya dengan membahas bagaimana variabel dalam berkas script dapat
didefinisikan dalam Command Window dan atau dalam Berkas Script. Selanjutnya akan dibahas
mengenai bagaimana data output dihasilkan ketika berkas-berkas script di eksekusi. Dan setelah itu
akan dibahas juga bagaimana variabel dalam Workspace dapat disimpan dan dipanggil. Bagian
terakhir akan dibahas mengenai bagaimana mengimpor dan mengekspor data dari dank e aplikasi
diluar MATLAB.
Ruang Kerja MATLAB Ruang kerja MATLAB berisi himpunan-himpunan variabel yang disebut
larik dan yang didefinisikan dan disimpan selam suatu sesi perhitungan atau penggunaan MATLAB.
Di dalamnya juga terdapat variabel-variabel yang telah didefinisikan ketika berkas-berkas script
dieksekusi. Ini memberikan kesimpulan pada kita bahwa Command Window dan berkas script
berbagi zone memori yang sama dalam computer dan ini mengimplikasikan bahwa ketika suatu
variabel berada dalam workspace, maka variabel itu dapat dikenal dan demikian dapat digunakan
ataupun diberi niai baru baik dalam Command Window atau berkas-berkas script. Dengan
menggunakan perintah who computer akan menampilkan daftar variabel yang kini berada dalam
workspace. Sedangkan perintah whos akan menampilkan list dari variabel yang kini ada dalam
workspace dan informasi mengenai ukuran, byte dan classnya.
Variabel-variabel yang kini berada dalam memori dapat juga dilihat dalam Workspace Window. Jika
tidak terbuka saat kita menggunakannya, maka kita dapat membukanya dengan memilih Workspace
dalam menu Desktop, atau jika sudah terbuka seperti yang diperlihatkan dalam Gambar 1.1, maka
kita dapat mempebesar window ini dengan cara mengklik ikon kotak di ujung kanan atas window
tersebut. Dalam Gambar 1 diperlihatkan Workspace Window yang bersesuaian dengan memori yang
telah ditampilkan dalam contoh di atas. Variabel yang dipertunjukkan dalam Workspace Window
dapat dirubah atau disunting. Dengan melakukkan klik ganda pada variabel yang terbuka akan
membuka Array Editor Window di mana isi dari variabel diperlihatkan pada suatu table. Sebagai
contoh ketika kita mengklik dua kali pada variabel xkr maka akan muncul tampilan seperti yang
diperlihatkan dalam Gambar 2.

Gambar 1. Workspace Window yang menampilkan variabel-variabel dari suatu tertentu program
yang sudah dijalankan

Sekarang kita sudah siap untuk menyunting elemen-elemen dalam Array Editor Window. Variabel
dalam Workspace Window dapat dihapus dengan memilih variabel tersebut dan kemudian menekan
tombol delete dari keyboard ataupun memilih delete dari menu edit. Efek dari apa yang kita lakukan
itu adalah sama dengan menuliskan perintah cear nama_variabel dalam Command Window.

Bagaimana Melakukan Input pada suatu Berkas Script


Ketika kita mengeksekusi suatu berkas script, variabel yang digunakan dalam ekspresi yang harus
dihitung perlu dimasukkan (input) dan ini memberikan pengertian bahwa variabel tersebut harus
berada dalam workspace. Pemasukkan (assignment) nilai dari suatu variabel dapat dilakukan dengan
tiga cara dan itu bergantung kepada dimana dan bagaimana variable itu didefinisikan.
Pertama, variabel yang didefinisikan, nilainya dimasukkan langsung dalam berkas script. Untuk itu
pengguna harus menulis nama variabel yang diikuti oleh assignment operator (tanda =) lalu nilai dari
variabel itu dan diakhiri dengan semicolon. Dalam kasus ini, nilai yang dimasukkan ke variabel
merupakan bagian dari berkas script dan jika pengguna ingin menjalankan berkas script dengan nilai
variabel yang berbeda maka ia perlu menyunting kembali dengan memasukkan nilai yang baru.
Contoh script berikut menyatakan hal ini.
Kedua, variabel didefinisikan dengan memasukkan nilainya dalam Command Window. Dalam kasus
ini, kita hanya perlu menuliskan ekspresi untuk perhitungan (persamaan matematika), sedangkan
nilai-nilai variabel yang digunakan dalam persamaan dimasukkan melalui Command Window.
Contoh berikut memperlihatkan hal ini.

Ketiga, variabel didefinisikan dalam berkas script, tetapi nilainya dimasukkan dalam melalui
Command Window. Dalam kasus ini variabel dimasukkan melalui perintah input yang dituliskan pada
berkas script. Adapun bentuk perintah input dapat dinyatakan sebagai berikut
Name_Variabel = input(‘string dengan pesan yang ditulis di Command Window’)
Ketika perintah ini dieksekusi maka string yang menyatakan pesan akan meminta pengguna untuk
memasukkan nilai.
Perintah input juga dapat digunakan untuk memasukkan string dan bentuk perintah input menjadi
Name_Variabel = input(‘Pesan untuk memasukkan nilai’, ‘s’)
Dimana tanda ‘s’ dalam perintah mengidentifikasikan bahwa karakter yang dimasukkan akan berniai
string.

Gambar 2.

PERINTAH-PERINTAH OUTPUT
Ada dua perintah yang digunakan untuk menghasilkan keluaran di layar, yaitu disp dan fprintf atau
dapat juga untuk menyimpan keluaran kedalam suatu berkas tertentu. Perintah-perintah ini juga dapat
digunakan di Window Command, dalam berkas-berkas script, dan juga dalam berkas-berkas fungsi
(function files). Ketika kedua perintah ini digunakan dalam suatu berkas script, maka keluaran yang
dihasilkan ditampikan di Command Window.
Perintah disp. Perintah ini digunakan untuk menampilkan elemen dari suatu variabel tanpa
memperlihatkan nama variabel tersebut atau digunakan untuk memperlihatkan teks di layar. Format
dari perintah disp adalah sebagai beriktu
disp(nama variabel) atau disp(‘teks sebagai string’)
Ada dua hal yang perlu diketahui ketika kita menggunakan perintah ini, yaitu
 Setiap kali perintah disp dieksekusi, tampilan akan muncul dalam baris baru
 Hanya satu variabel yang dapat ditampilkan dengan perintah disp. Jika elemen dari dua
variabel perlu ditampilkan bersama, maka variabel baru yang mengandung elemen-elemen
yang harus didefinisikan terlebih dahulu dan kemudian baru bisa digunakan untuk
menampilkan elemen-elemen tersebut.
Dalam banyak situasi kita perlu menampilkan data dalam table dan ini dapat dilakukan dengan mula-
mula mendefinisikan suatu variabel di mana larik dengan bilangan yang hendak ditampikan. Setelah
itu dengan menggunakan perintah disp untuk menampilkannya.

Perintah fprintf. Perintah ini dapat digunakan untuk menampilkan keluaran dalam bentuk teks atau
data pada layar monitor atau juga disimpan dalam suatu berkas tertentu. Dengan perintah ini—tidak
seperti pada perintah disp—keluaran dapat diformat. Sebagai contoh teks dan nilai-nilai numeric dari
variabel-variabel dapat saling diintermix dan ditampilkan dalam baris yang sama. Demikian juga
dengan format dari bilangan dapat diatur. Dengan adanya banyak pilihan yang ada dalam perintah ini,
perintah ini dapat menjadi panjang sekali dan rumit.
Ada dua cara yang umum digunakan dalam penggunaan perintah fprintf.
Pertama, penggunaan perintah fprintf untuk menampilkan teks. Untuk itu dibutuhkan baris perintah
berikut.
fprintf(‘teks yang dituliskan dalam bentuk string’)
Dengan perintah fprintf memungkinkan pengguna untuk memulai suatu baris baru di tengah-tengah
string dan ini dapat dilakukan dengan menyisipkan \n di depan karakter yang akan dimulai pada baris
baru. Contoh berikut memperihatkan penggunaan pilihan ini.
Karakter \n disebut sebagai suatu escape character dan karakter ini digunakan untuk mengendalikan
penampilan data atau string dilayar monitor. Ada dua dua escape code yang sering digunakan bersama
program MATLAB, yaitu \b dan \t. Escape character \b untuk mewakili backspace sedangkan \t untuk
menyatakan horizontal tab.
Untuk memulai suatu baris baru dengan perintah fprintf, suatu escape character \n harus ditempatkan
di depan string yang akan ditampilkan.
Kedua, penggunaan perintah fprintf untuk menampilkan campuran teks dan data numeric dan untuk
itu perintah fprintf akan mengambil bentuk
fprintf(‘teks sebagai string %-5.2f teks tambahan’, nama_variabel)
Tanda persen (%) menyatakan tempat di mana bilangan disisipkan pada teks. Sedangkan elemen
pemformatan -5.2f dapat dijelaskan sebagai berikut. Tanda minus (-) dinyatakan sebagai flag dan
bersifat optional. 5.2 menyatakan lebar field dan presisi dan ini juga bersifat optional. Sedangkan f
merupakan notasi yang diberikan untuk fixed point. Ada beberapa notasi umum yang digunakan
untuk penempatan bilangan, yaitu
No Notasi Kegunaan
1 e Notasi pemangkatan (eksponensiasi) menggunakan huruf kecil (contoh 1.43569e+001)
2 E Notasi pemangkatan (eksponensiasi) menggunakan huruf besar (contoh 1.43569e+001)
3 f Notasi fixed point (contoh 123.4567890)
4 g Notasi e yang terpendek
5 G Notasi E atau f yang terpendek
6 i Integer
Informasi mengenai notasi tambahan tersedia dalam bantuan yang disediakan oleh MATLAB lewat
menu Help.

OPERATOR-OPERATOR RELASIONAL DAN OPERATOR-OPERATOR LOGIKA


Suatu operator relasional memperbandingkan dua bilangan dengan menentukan apakah
pembandingan itu benar (true) atau salah (false). Jika pernyataan benar, maka nilainya adalah 1 tetapi
jika pernyataan salah maka nilainya adalah 0. Operator logika menguji pernyataan benar (true) atau
salah (false) dan memproduksi hasil yang benar (1) dan yang salah (0) sesuai dengan operator yang
spesifik. Sebagai contoh, operator logika AND akan memberikan nilai 1, jika kedua pernyataan benar
dua-duanya. Operator relasional dan operator logika dapat digunakan dalam ekspresi matematika,
dan, seperti yang akan diperlihatkan dalam Bab ini, sering sekali digunakan dalam kombinasi dengan
perintah-perintah yang lain, untuk mengambil keputusan yang mengontrol aliran dari suatu program
computer.

Operator Relasional. Operator relasional yang digunakan dalam lingkungan MATLAB adalah: <
(kurang dari), > (lebih besar dari), <= (lebih kecil atau sama dengan), >= (lebih besar atau sama
dengan), == (sama dengan), dan ~= (tidak sama dengan). Ada beberapa catatan yang dapat dibuat
tentang operator relasional.
 Operator relasional digunakan sebagai operator arihmetik dalam suatu ekspresi matematika.
Hasilnya dapat digunakan dalam operasi-operasi matematika yang lain, dalam pengalamatan
array, bersama dengan perintah-perintah MATLAB yang lain, seperti if dan lain sebagainya
untuk mengontrol aliran program.
 Ketika dua bilangan diperbandingkan, hasilnya adalah 1 (logical true) jika pembamdingan,
menurut operator realsional benar, dan 0 (logical false) jika hasil pembandingannya salah.
 Jika dua scalar diperbandingkan, hasilnya adalah scalar dengan nilai 1 atau 0. Jika dua array
diperbandingkan (hanya array dengan ukuran yang sama yang dapat diperbandingkan),
pemabandingan dilakukan elemen demi elemen, dan hasil ahirnya adalah array logical dengan
ukuran yang sama dengan elemen-elemennya bernilai 1 atau nol, tergantung hasil
pembandingan.
 Jika scalar diperbandingkan dengan array, scalar diperbandingkan dengan setiap elemen dari
array, dan hasilnya adalah suatu array logical dengan 1 dan 0 sebagai elemennya.
Untuk itu memperjelas konsep operator relasional dan operator logika, kita akan melihat beberapa
contoh berikut ini.

>>3>6
ans =
0
>>a=6<10
ans =
1
>>y=(5<10)+(7>8)+(5*5= = 100/4)
y=
2
Untuk contoh yang terakhir 5<10 itu benar jadi nilainya 1 , 7>8 itu salah jadi nilainya 0, sedangkan
5*5 == 100/4 benar jadi nilainya satu sehingga nilai totalnya adalah 1.

>>b=[12 6 8 5 10 3 9 7 13]; c=[9 21 10 3 20 8 10 9 15];

>>d=c>=b
d=
01 1 0

>>b==c
ans=
0 0 1 0 0 1 0

>>b~=c
ans=
1 1 0 1 1 0 1

>>f=b-c>0
f=
1 0 0 1 0 0 1

>>A=[2 7 3;-3 6 2;7 8 1]


A=
2 7 3
-3 6 2
7 8 1

>>B=A<=2
B=
1 0 0
1 0 1
0 0 1

 Hasil dari suatu operasi relasional dengan vector, yang mana vector-vektor dengan elemen-
elemen 0 dan 1 disebut sebagai vector logical dan dapat digunakan untuk pengalamatan
vector. Ketika suatu vector logical digunakan untuk pengalamatan vector lain, maka vector itu
akan mengekstrak dari elemen vector dalam posisi dimana vector logical mempunyai nilai-
nilai 1. Sebagai contoh
>>q=[8 12 9 4 23 19 10]
q=
8 12 9 4 23 19 10
>>w=q<=10
s=
1 0 1 1
>>v=q(w)
v=
8 9 4 10
>>z=q(q<=10)
z=
8 9 4 10
 Vektor numerik dan array dengan elemen-elemennya yang bernilai 0 dan 1 tidaklah sama
dengan vector logical dan array logical dengan elemen-elemennya yang bernilai 0 dan 1.
Vektor numeric dan array tidak dapat digunakan untuk pengalamatan. Vector logical dan
array logical dapat digunakan untuk operasi marithmetik. Ketika vector logika dan array
logical diguanakan dalam operasi arithmetica akan berubah masing-masing menjadi vector
numerk dan array numeric
 Urutan dalam operasi (order of precedence): Dalam ekspresi matematika yang melibatkan
operasi relasional dan operasi logika, operasi arithmetic (+, -, *,/,\) mempunyai urutan operasi
yang lebih tinggi dari operasi reasional. Operasi relasional sendiri mempunya urutan
precedence yang sama dan dievaluasi dari kiri ke kanan. Tanda kurung dapat digunakan untuk
merubah urutan precendence. Sebagai contoh.

>>2+3<11/2
ans=
1
>>2+(3<11)/2
ans=
2.50
Dari perintah yang terakhir ini (3<11) akan dievaluasi terlebih dahulu dan bernilai 1 baru kemudian
dibagi 2 dan ditambahkan kepada 2 sehingga hasilnya adalah 2.50.

Operator-operator Logical. Operator-operator logical yang ada dalam lingkungan MATLAB adalah
sebagai berikut. Pertama, operator & (AND). Operator & beroperasi pada dua operand (A dan B), jika
keduanya benar maka hasilnya adalah 1, jika yang lain yang terjadi maka hasilnya adalah 0. Sebagai
contoh A&B. Kedua, operator | (OR). Operator | beroperasi pada dua operand ( A dan B— sebagai
contoh A|B). Jika salah satunya atau kedua-duanya benar, maka hasilnya adalah benar atau right dan
nilainya adalah (1). Sedangkan bila kedua-duanya salah maka hasilnya adalah salah atau false dan
nilainya adalah 0 . Ketiga, operator ~ (NOT). Operator ~ ini hanya beroperasi pada satu operand (A)
dan akan menghasilkan lawan dari operand sebagai contoh ~A menghasilkan bukan A. Hasilnya
adalah benar (true) jika operandnya salah (false) dan benar jika operandnya benar (true). Ada
beberapa hal yang harus diperhatikan dalam menggunakan operator-operator logical.
 Seperti pada operator relasional, operator logical dapat digunakan bersama-sama dengan
scalar dan array.
 Juga seperti pada operator relasional digunakan sebagai operator arithmetik dalam ekspresi-
ekspresi matematik. Hasilnya dapat digunakan dalam operasi-operasi matematika lainnya,
dalam pengalamatan array, dan besama dengan perintah-perintah MATLAB yang lain seperti
if dan lain sebagainya untuk mengontrol aliran dari program.
 Operator-operator logical mempunyai bilangan-bilangan sebagai operand. Bilangan yang
tidak nol adalah benar (true), dan bilangan nol adalah salah (false).
 Operasi logical AND dan OR dapat mempunyai operand kedua-duanya skalar, kedua-duanya
array atau salah satunya scalar dan yang lainya adalah array. Jika kedua-duanya adalah scalar,
hasilnya adalah scalar 0 atau 1. Jika keduanya array, maka kedua-duanya harus mempunyai
ukuran yang sama dan operasi dilaksanakan elemen demi elemen. Hasilnya adalah array
dengan ukuran yang sama yang elemen-elemennya merupakan bilangan 1 dan nol sesuai
dengan hasil dari operasi yang dilakukan. Jika salah satu operandnya adalah scalar dan yang
lainnya adalah array, operasi logical dilaksanakan antara scalar dan masing-masing elemen
dalam array dan hasilnya adalah array dengan ukuran yang sama dan dengan elemen-
elemennya bernilai 0 dan 1.
 Operasi logical NOT hanya mempunyai satu operand. Jika digunakan dengan scalar akan
memberikan hasil scalar juga dengan nilai 0 atau 1. Bila digunakan dengan array maka
keluarannya adalah array dengan ukuran yang sama dan 1 untuk elemen-elemen matriks asal
merupakan bilangan yang bukan nol, sedangkan 0 untuk elemen-elemen matriks asal adalah
nol.

Untuk memperjelas konsep ini mari kita perhatikan contoh-contoh berikut ini.

>>4&7
ans =
1

>>a=4 | 0
ans =
1
>>~32
ans =
0
Untuk contoh pertama, 4 dan 7 kedua-duanya bukan bilangan nol sehingga hasilnya adalah benar
(true) dan nilainya 1. Untuk contoh kedua, 5 atau 0 dimasukkan ke variable a dan dengan
demikian 1 dimasukkan ke a karena paling tidak salah satu bilangan itu benar (tidak nol).
Sedangkan untuk contoh ketiga NOT 25 (bukan 25) akan menghasilkan 0 karena 25 adalah benar
(true) karena 25 bukanlah bilangan 0. Sekarang kita lanjutkan dengan empat contoh berikut.

>>x=20*((11&0)+(~0)+(0|9)
x=40

Contoh ini menghasilkan sebab hasil dari 11&0 adalah satu, ~0 adalah 0, dan 0|9 adalah 1
sehingga jumalahnya adalah 1+0+1=2. Jadi hasilnya adalah 20x2 = 40.

>>v=[1 4 0 9 0 13]; w=[3 0 11 -9 0 2];

>>v&w
ans=
1 0 0 1
Contoh ini menghasilkan vector baris dengan elemen-elemennya adalah 1 0 0 1, karena untuk
setiap elemen tidak nol dalam v dan w akan memberikan nilai 1 sedangkan untuk setiap nilai 0
dalam v dan w akan memberikan 0, atau sebaliknya.

>>y=v|w
z=
1 1 1 1

Contoh ini , keluarannya adalah satu vector dengan elemen-elemennya adalah bilangan 1 karena x dan
y benar (true) untuk elemen bukan nol dan 0 jika keadaan sebaliknya yang terjadi

>>~(v+w)
ans =
0 0 0 1

Dalam contoh ini, outcome adalah suatu vector dengan 0 dalam setiap posisi (v+w) bila benar (true),
yaitu dimana elemen-elemennya tidak nol dan 1 dalam setiap posisi (v+w) bila salah (false), yaitu
dimana elemen-elemennya nol.

Fungsi logical bawaan dari MATLAB. Seperi program-program lainnya, MATLAB mempunyai
fungsi-fungsi bawaan (built-in functions) dan fungsi-fungsi logical bawaan juga ada seperti:

and(A,B) yang setara dengan A&B


or(A,B) yang setara dengan A|B
not(A) yang setara dengan ~A

Selain itu masih ada beberapa fungsi logical bawaan yang didaftarkan dalam Tabel berikut ini
Tabel
No Fungsi Deskripsi Contoh
1 xor(a,b) Exclusive or. Akan menghasilkan true (benar) >>xor(3,0)
yaitu 1 jika salah satu operandnya true dan yang ans =
lainnya false 1
>>xor(3,-5)
ans =
0
2 all(V) Menghasilkan 1 jika benar (true) apabila semua >>V=[5 3 14 8 6 10];
elemen dalam vector V adalah benar (true),
>>all(V)
yaitu jika elemen-elemenya tidak nol.
Akan menghasilkan 0 (salah—false) jika satu ans =
atau lebih elemennya salah (false). 1
Jika V adalah matriks, perlakukanlah kolom-
kolomnya sebagai vector, akan menghasilkan >>W=[5 3 14 8 0 10];
vector-vektor dengan elemen-elemen 1 atau 0 >>all(W)

ans =
0
3 any(V) Menghasilkan 1 (true) jika setiap elemen dalam >>V=[5 0 14 0 0 10];
suatu vector V adalah benar (true), yaitu
elemen-elemen itu tidak nol.
>>any(V)
Menghasilkan 0 (false) apabila semua adalah
false (bilangan 0). ans =
Jika V adalah matriks, perlakukan kolom-kolom 1
dari V diperlakukan sebagai vector dan
menghasilkan vector dengan elemen-elemen 0 >>W=[0 0 0 0 0 0];
dan 1
>>any(W)
ans =
0
4 find(V) Jika V adalah vector, akan menghasilkan indeks >>V=[0 8 5 6 0 0 1 8];
dari elemen-elemen yang tidak nol >>find(V)
ans =
2 3 4 5 8 9
find(V>d) Jika V adalah vector akan menghasilkan alamat >>find(V>4)
dari elemen-elemen yang lebih besar dari d ans =
(setiap operator relasional dapat digunakan) 2 3 4 9

Operasi dari empat operator logical dapat diringkaskan dalam Tabel berikut ini.

Tabel
Input Output
No A B AND OR XOR NOT NOT
A&B A|B (A,B) ~A ~B
1 false false false false False true true
2 false true false true True true false
3 true false false true True false true
4 true true true true False false false

Urutan kepentingan (Order of Precedence). Operator-operator arithmetic, relasional dan logical


semuanya dapat digabung dalam suatu ekspresi matematika. Ketika suatu ekspresi matematika
merupakan kombinasi yang demikian, maka hasilnya akan bergantung kepada urutan kepentingan
dimana operasi dilakukan. Dalam Tabel berikut ini,

Tabel
No Urutan Operasi No Urutan Operasi
Kepentingan Kepentingan
(Precedence) (Precedence)
1 1 (paling tinggi) Tanda kurung (jika ada 5 5 Penambahan,
struktur sarang, maka yang pengurangan
terdalam yang paling tinggi
2 2 Pemangkatan 6 6 Operator relasional:
>, <, >=, <=, >==,
<==
3 3 Logika NOT (~) 7 7 Logika AND (&)
4 4 Perkalian, pembagian 8 8 (paling rendah) Logika OR (|)

Pernyataan Kondisional.
Dalam lingkungan pemrogramaan script MATLAB, pernyataan kondisional adalah perintah yang
memungkinkan MATLAB untuk membuat keputusan apakah harus mengeksekusi sekelompok
perintah-perintah tertentu yang mengikuti pernyataaan kondisional atau harus melewati (skip)
perintah-perintah ini. Dalam suatu pernyataan kondisional, ekspresi kondisional harus ditulis. Jika
ekspresi ini benar, maka kelompok perintah yang mengikuti ekspresi kondisional itu akan dieksekusi,
jika tidak, yaitu jika ekspresi itu tidak benar (false), maka MATLAB akan melompati atau melewati
kelompok perintah-perintah tersebut. Bentuk dasar dari suatu pernyataan kondisional adalah sebagai
berikut.

if ekspresi kondisional yang terdiri atas operator-operator relational dan atau operator logika
Untuk pernyataan kondisional, ada dua hal yang harus diperhatikan, yaitu:
 Pernyataan-pernyataan kondisional dapat merupakan suatu bagian dari suatu program yang
ditulis dalam bentuk berkas script atau berkas fungsi dalam MATLAB.
 Bahwa untuk setiap pernyataan if selalu ada pernyataan end

Contoh-contoh pernyataan if.


if a>b
if c<=3
if c==b
if b~=c
if (c<=3)&(a>b)
if (c~=2)|(d<0)

Yang perlu kita camkan bahwa dalam lingkungan pemrograman script MATLAB, pernyataan if pada
umumnya digunakan dalam tiga struktur, yakni if-end, if-else-end dan if – elseif – else –end. Dan kita
akan mulai dengan yang pertama.

Struktur if – end. Struktur ini dapat digambarkan secara skematis seperti yang diperlihatkan dalam
Gambar. Dalam gambar ini diperlihatkan pseudo-code umum yang mnyatakan bagaimana struktur ini
dituliskan dalam suatu program dan juga suatu flow-chart yang menunjukkan aliran informasi dalam
struktur if-end dalam pseudo-code tersebut.

Perintah-1
Perintah-2
:
:
Perintah-m Pernyataan
if ekspresi kondisional if false
perintah-a
perintah-a true
…..
…..
perintah-k Kelompok Perintah
end
Perintah-11
Perintah-12
: end
:
Perintah-1n

Gambar

Pada saat program dieksekusi, program akan melaksanakan perintah-perintah yang tersusun secara
sekuensial dan ketika sampai pada pernyataan if maka ekspresi kondisional akan dievaluasi. Jika
pernyataan ini benar (true—bernilai 1) maka program langsung mengerjakan kelompok perintah di
bawah pernyataan if dan menuju end kemudian melanjutkan ke perintah-perintah setelah struktur if-
end. Jika hasil evaluasi terhadap ekspresi kondisional dan ternyata salah (false—nilai 0), maka
program akan melewati semua perintah (kelompok perintah) setelah if dan langsung menuju end.
Untuk mengilustrasikan hal ini, perhatikanlah contoh program untuk menghitung upah lembur. Upah
lembur akan dihitung jika jam kerja mingguan, yaitu 40 jam dilewati. Misalkan gaji mingguan dari
seorang pekerja adalah upah_mingguan maka upah_harian yang diterima adalah upah_mingguan/5.
Pernyataan if akan benar (true) jika jam > 40 dan upah_perjam =upah_harian/8. Program sederhana
ini diperlihatkan dalam script berikut ini.

%program sederhana untuk menghitung upah mingguan termasuk


% uap lembur menggunakan struktur if-end sederhana
%Masukkan data yang diperlukan
jam = input(‘Masukkan total jam kerja dalam minggu yang dievaluasi :’);
upah_mingguan=input(‘Masukkan besar upah mingguan yang diterima:’);
%Menghitung upah miperjam
upah_harian=upah_mingguan/5;
upah_perjam=upah_harian/8;
upah_mingguan=upah_perjam*jam;
if jam>40
upah_mingguan=upah_mingguan+(jam-40)*upah_perjam*05;
end
fprint(‘Upah pekerja adalah Rp. %5.2.f’, upah_mingguan)

Struktur if-else-end. Struktur ini diperlihatkan dalam bentuk skematik dalam bentuk diagram alir dan
pseudo-code seperti yang diperlihatkan dalam Gambar. Pada struktur ini, ketika pernyataan if
ditemukan maka ekspresi kondisional akan dievaluasi. Jika pernyataan ini benar (true—bernilai 1),
maka computer akan langsung mengerjakan kelompok perintah yang berada di bawah perintah if
hingga dan jika telah selesai maka control akan membawa ke pernyaan end. Tetapi apabila evaluasi
ekspresi kondisional tidak benar (false—bernilai 0) maka computer akan segera mengerjakan semua
perintah (Kelompok perintah II) yang berada di bawah perintah else dan setelah itu langsung menuju
perintah end.

Perintah-1
Perintah-2
:
:
Perintah-m Pernyataan
if ekspresi kondisional if false
perintah-11
perintah-12 true
…..
…..
perintah-1k Kelompok Perintah I Kelompok Perintah II
else
Perintah-21
Perintah-22
: end
:
Perintah-2n
end

Gambar

Contoh berikut mengilustrasikan penggunaan struktur if-else-end dalam program script MATLAB.
Dalam contoh hendak dihitung volume air yang ditampung dalam suatu menara air yang mempunyai
geometri seperti yang diperlihatkan dalam Gambar berikut ini.
Diameter atas (DTop) = 50 m Menara air ini terdiri atas dua bagaian, yaitu
DTop bagian atas yang berbentuk kerucut terpancung
yang terbalik sedangkan bagian bawah adalah
sebua selinder. Tepat pada garis tengah dari
16 m DH menara ditempatkan suatu pelampung sebagai
indicator untuk menyatakan ketinggian air dalam
menara air. Dari gambar di sebelah kiri ini, kita
dapat mengatakan bahwa untuk ketinggian air
dalam menara dari 0 hingga 24 m adalah 225Π
m3. Sedangkan untuk bagian kerucut terpancung
24 m 30 m H yang terbalik tinggi airnya adalah H-24. Dengan
demikian kita akan memberpoleh DH dengan
persamaan: 30 + (20/16)(H – 16). Sehingga
volume kerucut terpancung 1/3Π (h-24) (152+
15(15+1.25(H-16)+(15+1.25(H-16)2), atau
Gambar volume keseluruhan menara air adalah:

Vol = 225ΠH +1/3Π(h-24)[15+1.25(H-16)+ (15+1.25(H-16) 2]

Hal ini mengindikasikan bahwa ketika H <= 24 maka Vol(H) = 225ΠH sedangkan untuk H > 24,
maka

Vol(H) = 225ΠH +1/3Π(h-24)[15+1.25(H-16)+ (15+1.25(H-16) 2]

Dengan demikian kita akan mendapatkan program script sebagai berikut.

function v =vol_menara_air(H)
%Fungsi untuk menghitung volume menara air hingga ketinggian H yang tertentu
%program ini melibatkan pernyataan if-else-end
%Fungsi ini dipanggil dari Command Window dengan mengetikkan vol_menara_air(H)
%kemdian diikuti oleh penekanan tombol enter
%clear;
clc;
%menghitung volume menara
if H<=24
v=225*pi*H;
else
v=225*pi*H +pi*(H-24)*[15+1.25*(H-16)+ (15+1.25*(H-16))^2]/3;
end

Simpanlah program ini dengan nama vol_menara_air.m.

Untuk menggunakan Command window kita dapat memanggil fungsi ini hanya dengan menuliskan
vol_menara_air(H) untuk H yang tertentu, misalnya

>> vol_menara_air(H)
Ans =

>>VolumeMenaraAir= vol_menara_air(H)
VolumeMenaraAir=

Struktur if-elseif-else-end. Struktur ini diperlihatkan secara skematik dalam Gambar. Dalam Gambar
ini terdapat flow chart yang menyatakan aliran informasi logis dari suatu program ketika
menggunakan struktur control ini dan pseudo-code berbasis MATLAB yang dapat ditulis berdasarkan
struktur ini. Salam struktur ini, ketika ekpresi kondisional-1 dievaluasi dan benar (true), maka
computer langsung mengerjakan kelompok perintah I yang berada langsung di bawah pernyataan if
setelah itu langsung menuju pernyataan end. Bila pada evaluasi ekspresi kondisional-1 memberikan
hasil salah (false), maka computer mengevaluasi ekspresi kondisional-2 yang mengikuti perintah
elseif. Jika hasil evaluasi terhadap ekspresi kondisional-2 ternyata benar (true), maka computer akan
langsung mengerjakan kelompok perintah II yang berada tepat di bawah perintah elseif dan setelah itu
langsung ke pernyataan end. Tetapi jika hasilnya adalah salah (false), maka compute akan
mengerjakan kelompok perintak III yang berada langsung di bawah pernyataa else dan setelah itu
langsung menuju ke pernyataan end.
Yang perlu kita catat disini juga adalah bahwa beberapa perintah elseif dapat digunakan dalam suatu
program script MATLAB tergantung dari kebutuhannya. Demikian juga seperti yang diberikan dalam
Gambar maka kelompok perintah untuk setiap elseif harus dituliskan tepat di bawah dari elseif yang
terkait. Hal ini mengandung arti bahwa lebih banyak kondisi dapat dilibatkan dengan menggunakan
banyak elseif. Dan juga pernyataan else hanyalah optional. Dengan menlibatkan banyak pernyataan
elseif, maka kita tidak memerlukan else. Jika setiap dari pernyataan kondisional benar (true), maka
kelompok perintah yang sesuai akan dieksekusi, tetapi jika sebaliknya maka kelompok perintah yang
sesuai tidak dieksekusi.

Perintah-1
Perintah-2
:
:
Perintah-m Pernyataan false
if ekspresi kondisional-1 if
perintah-a
perintah-a true
….. Pernyataan false
….. elseif
perintah-k Kelompok Perintah I
elseif ekspresi kondisional-2 true
Perintah-21
Perintah-22
: Kelompok Perintah II
:
Perintah-2l
Else Kelompok Perintah III
Perintah-31
Perintah-32
: end
:
Perintah-3n
End

Gambar

Contoh berikut adalah contoh struktur ini. Dalam contoh ini, dihitung nilai perolehan seorang
mahasiswa untuk mata kuliah tertentu sejak ujian dan program script MATLABnya adalah sebagai
berikut.

% ---------------------------------------
% Program untuk melihat kegunaan struktur
% if .... else if...else if....end
% ---------------------------------------
clear all;
clc;
disp('------------------------------------------------------');
disp('Program Latihan sederhana untuk menghitung Nilai Ujian');
disp('------------------------------------------------------');

Nilai_uts1=input('Nilai Ujian Tengah Semester pertama = ');


Nilai_uts2=input('Nilai Ujian Tengah Semester kedua = ');
Nilai_uas =input('Nilai Ujian Akhir Semester = ');
Nilai_Akhir=(Nilai_uts1*25/100)+(Nilai_uts2*35/100)+(Nilai_uas*40/100);
disp(['Nilai Akhir yang diperileh adalah: ' num2str(Nilai_Akhir)]);
if Nilai_Akhir>80
disp('Grade Akhir Anda adalah : A');
elseif Nilai_Akhir<=80 & Nilai_Akhir>70
disp('Grade Akhir Anda adalah : B');
elseif Nilai_Akhir<=70 & Nilai_Akhir>60
disp('Grade Akhir Anda cuma C saja! Pertimbangkanlagi!!!');
elseif Nilai_Akhir<=60 & Nilai_Akhir>50
disp('Anda tidak kompeten karena Grade akhir anda cuma D, ampun!! Parah!!!');
else
disp('Kasihan sekali Anda!! Anda cuma mendapat Grade akhir E, Parah sekali!! Anda malas bukan
main...!!!');
end;

Pernyataan switch-case. Ada metoda lain yang digunakan mempengaruhi aliran progrman.
Pernyataan ini menyediakan cara untuk memilih salah satu dari kelompok perintah dari beberapa
kelompok perintah. Struktur dari pernyataan switch-case dan pseudo-codenya diberikan dalam
Gambar. Jika nilai-1 dari case pertama dievaluasi dan nilainya benar (true), maka computer akan
melaksanakan kelompok perintah I dan setelah itu langsung ke pernyataan end. Tetapi apabila
evaluasi dari case pertama ternyata salah (false), maka computer langsung akan mengevaluasi case
yang kedua yaitu mengeevaluasi apakah kasus nilai-2 ini benar atau tidak. Jika nilai-2 ini benar (true),
maka computer akan langsung mengerjakan keleompok perintah II yang berada tepat di bawah case
yang kedua setelah itu langsung menuju ke pernyataan end. Akan tetapi jika hasil evaluasi ternyata
salah (false) maka computer akan mengevaluasi pilihan dalam case ketiga. Jika pilihan pada case
ketiga ini, yaitu nilai-3 benar, maka computer langsung mengerjakan kelompok perintah III dan
setelah itu pergi ke pernyataan end. Jika pilihan tidak sesuai dengan maka computer langsung memilih
pilihan keempat dan melaksanakan kelompok perintah IV, setelah itu lalu ke pernyataan end. Struktur
switch case ini dapat lebih dari 4. Contoh berikutnya memperlihatkan suatu program script dengan
struktur switch … case … otherwise… end yang mempunyai case hingga 8.

Ekspresi switch dapat merupakan scalar atau string. Biasanya ekspresi switch merupakan varibel yang
mempunyai nilai yang dimasukkan berupa scalar atau string. Namun demikian, ekspresi matematika
yang melibatkan nilai yang perlu dimasukkan dan dapat dievaluasi. Beberapa hal yang perlu menjadi
catatan adalah:
 Yang mengikuti perintah switch adalah satu atau lebih perintah case. Setiap perintah case
mempunyai nilainya sendiri-sendiri yang bisa saja merupakan scalar atau string dan diikuti oleh
kelompok perintah yang sesuai.
 Setelah perintah case yang terakhir dan kelompok perintah yang terkait dengannya maka harus
ada satu perintah otherwise yang diikuti oleh kelompok perintah yang terkait dengan perintah
otherwise.
 Ada satu perintah end yang menutup struktur ini.
Nilai daripada ekspresi switch dalam perintah switch diperbandingkan dengan nilai-nilai yang dekat
dengan pernyatataan-pe3rnyataan case. Jika ada yang cocok ditemui, maka kelompok perintah yang
mengikuti pernyataan case yang dieksekusi. Hanya satu kelompok perintah yang diekselusi, yaitu di
anara case yang cocok dan case berikutnya setelah case yang cocok, atau otherwise jika itu adalah
case yang terakhir sebelum otherwise. Setelah itu perintah yang dieksekusi terakhir adalah perintah
end. Ada beberapa hal juga yang harus diperhatikan agar struktur switch-case dapat bekerja dengan
baik, yaitu
 Jika terdapat lebih dari satu atau banyak nilai yang cocok, maka nilai pertama yang cocok
yang dikerjakan.
 Jika tidak ada lagi nilai yang cocok yang ditemukan dan pernyataan otherwise ada
(otherwise hanyalah pernyataan yang berupa pilihan—optional saja) maka kelompok
perintah antara perintah other wise dan end yang akan dieksekusi.
 Jika tidak adalagi pilihan yang cocok dan tidak ada perintah otherwise, maka tidak ada lagi
kelompok perintah yang harus dieksekusi.
 Suatu pernyataan case dapat memiliki lebih dari satu nilai. Hal ini dilakukan dengan
mengetikkan nilai-nilai itu dalam bentuk: {nilai1, nilai2, nilai3,…}. Bentuk seperti ini tidak
dibahas dalam buku ini dan disebut sebagai cell array. Pernyataan case ini akan dikerjakan,
jika salah satu dari nilai-nilai itu cocok.

Perintah-1
Perintah-2
:
:
Perintah-m case nilai-1 false
switch ekspresi switch
case nilai-1
perintah-11 true
perintah-12
…..
perintah-1k Kelompok Perintah I case nilai-2
case nillai-2
perintah-21
perintah-22 true false
:
perintah-2l
case nilai-3
perintah-21 Kelompok Perintah II
perintah-22
:
: case nilai -3
perintah-2m
otherwise nilai-4
perintah-21
perintah-22
:
otherwise
: Kelompok Perintah III nilai-4
perintah-2m
end
... end Kelompok PerintahIV
...

Gambar
Contoh berikut ini digunakan untuk menghitung isi dari beberapa wadah dengan bentuk geometris
tertentu.

% --------------------------------------------------------
% Program latihan Sederhana untuk struktur switch ... case
% Matlab Programming..
% --------------------------------------------------------

clear all;
clc;

disp('-------------------------------------------------------------');
disp('Program Latihan Sederhana untuk menghitung Luas dan isi benda');
disp('-------------------------------------------------------------');

disp('Pilih Luas dan Isi Bangun Geometri yang akan Anda Hitung!');
disp('1. Perhitungan Luas Selubung kotak');
disp('2. Perhitungan Isi kotak');
disp('3. Perhitungan Luas Permukaan Silinder');
disp('4. Perhitungan Isi Silinder');
disp('5. Perhitungan Luas permukaan Bola');
disp('6. Perhitungan Isi Bola');
disp('7. Perhitungan Luas Selubung Kerucut');
disp('8. Perhitungan Isi Kerucut');

disp(' ');
pilih=input('Masukkan pilihan anda (antar 1 hingga 8): ');

switch pilih
case 1
disp('Hitung Luas permukaan Kotak');
disp('---------------------------');
panjang=input('Masukkan panjang kotak = ');
lebar=input('Masukkan Lebar kotak = ');
tinggi=input('Masukkan Tinggi kotak = ');
luas_kotak=2*(panjang*lebar)+2*(panjang*tinggi);
disp(['luas kotak = ' num2str(luas_kotak)]);
case 2
disp('Hitung Isi Kotak');
disp('----------------');
panjang=input('Masukkan Panjang kotak = ');
lebar=input('MasukkanLebar kotak = ');
tinggi=input('Masukkan Tinggi kotak = ');
isi_kotak=panjang*lebar*tinggi;
disp(['Isi kotak = ' num2str(isi_kotak)]);
case 3
disp('Hitung Luas Selubung Silinder');
disp('-----------------------------');
jari_jari_selinder=input('Ukuran jari-jari silinder = ');
tinggi_silinder=input('Tinggi silinder = ');
luas_selubung_silinder=(2*pi*jari_jari_selinder*tinggi_silinder) + 2*(pi*jari_jari_selinder^2);
disp(['Luas selubung silinder =' num2str(luas_selubung_silinder)]);
case 4
disp('Hitung Isi Silinder');
disp('-------------------');
jari_jari_selinder =input('jari-jari silinder = ');
tinggi_silinder =input('tinggi silinder = ');
volume_silinder=pi* jari_jari_selinder ^2*tinggi_silinder;
disp(['Isi silinder = ' num2str(volume_silinder)]);
case 5
disp('Hitung Luas selimut Bola');
disp('------------------------');
jari_jari_bola =input('jari-jari Bola = ');
luas_selimut_bola=4*pi* jari_jari_bola ^2;
disp(['Luas selimut bola = ' num2str(luas_selimut_bola)]);

case 6
disp('Hitung Isi Bola');
disp('---------------');
jari_jari_bola =input('jari-jari Bola = ');
isi_bola=4*pi* jari_jari_bola ^3/3;
disp(['Isi Bola adalah: ' num2str(isi_bola)]);
case 7
disp('Hitung Luas selimut Kerucut');
disp('---------------------------');
jari_jari_alas_kerucut =input('Jari-jari Alas Kerucut = ');
tinggi_kerucut =input('Tinggi Kerucut = ');
luas_kulit_kerucut=(pi* jari_jari_alas_kerucut*(tinggi_kerucut^2+tinggi_kerucut^2)^0.5);
disp(['Luas Kulit Kerucut = ' num2str(luas_kulit_kerucut)]);

case 8
disp('Hitung Isi Kerucut');
disp('------------------');
tinggi_kerucut=input('Masukkan tinggi kerucut: ')
jari_jari_alas_kerucut =input('jari-jari Alas Kerucut = ');
isi_kerucut=(pi* jari_jari_alas_kerucut ^2*tinggi_kerucut)/3;
disp(['Isi Kerucut adalah: ' num2str(isi_kerucut)]);

otherwise
disp('Elo ngawuur banget pilihan harus 1 s/d 8!!!')
end

LOOP
Metoda loop dalam setiap bahasa pemrograman merupakan metoda lain untuk mengubah aliran dari
suatu program. Dalam suatu loop, eksekusi dari suatu perintah atau kelompok perintah diulang
beberapa kali sesuai dengan pengulangan yang diinginkan. Setiap putaran eksekusi disebut sebagai
pass. Jika pengulangannya lima kali maka ada lima pass dalam looping yang dilakukan. Ada dua
perintah loop yang digunakan dalam MATLAB, yaitu loop for-end dan loop while-end. Kita akan
mulai dengan yang pertama.
Loop for-end. Untuk struktur loop for-end, eksekusi dari satu perintah tertentu atau satu kelompok
perintah tertentu dilakukan berulang dengan jumlah pengulangan yang telah ditentukan di awal loop.
Struktur dari loop for-end ini diperlihatkan dalam Gambar. Dalam gambar ini diperlihatkan pseudo-
code di bagian kiri dan flowchart yang terkait di sebelah kanan. Dalam struktur ini, a adalah counter
awal yang diberikan b adalah beda di antara nilai counter sedangkan l adalah nilai counter terakhir.
Atau lebih sering digunakan istilah untuk a adalah pass pertama (first pass).
Dalam struktur looping for-end, eksekusi dari perintah atau sekelompok perintah dilakukan secara
berulang dengan jumlah pengulangan yang sudah ditentukan sebelumnya. Hal ini dilakukan dengan
cara menambahkan putarannya dengan beda yang diberikan di awal. Dari loop yang diberikan dalam
Gambar, kita mencatat beberapa hal.
 Indeks dari loop dapat saja berupa nama variabel apa saja dan ini biasa dengan menggunakan i, j,
k, m dan n. Tapi yang perlu diperhatikan adalah untuk penggunaan i dan j. Sebaik penggunaan
dari kedua variabel i dan j dihindari karena dalam MATLAB, i dan j telah digunakan untuk
mendefinisikan bilangan imajiner.
 Dalam pass pertama k = a dan computer mengeksekusi perintah-perintah atau kelompok perintah
antara perintah for dan end kemudian computer kembali untuk for pada pass kedua. Sekarang k
mendapat nilai yang baru yaitu k + b, dan kelompok perintah di antara for dan end dieksekusi
berdasarkan nilai k yang baru. Proses ini berjalan terus hingga kepada pass terakhir l. Dan
program tidak akan kembali ke perintah for. Sebagai contoh, jika k = 1:3:10, ada 4 loop dan nilai
k pada setiap loop adalah 1, 4, 7 dan 10.
 Kenaikan b dapat saja negatif sebagai contoh k = 24:-3:3 akan memberikan delapan pass, yaitu
24, 21, 18, 15, 12, 9, 6, 3

for k = a:b:l i = a;
perintah-1
perintah-2 perintah-1
. . . perintah-2
. . . . . .
. . . . . . i=i+b
perintah-m perintah-m
end
Tidak
i=l ?
Ya

end

Gambar

 Jika k = l, loop akan dieksekusi satu kali saja.


 Jika Jika a > l dan b > 0, atau jika a < l dan b < 0 loop tidak akan dieksekusi
 Jika nilai-nilai dari k, b, dan l adalah sedemikian sehingga k tidak sama dengan l, maka jika b
positif, pass terakhir adalah yang terakhir di mana k mempunyai nilai terbesar yang lebih kecil
dari l. Sebagai contoh, k=6:5:30 akan memberikan 5 pass dengan k = 6, 11, 17, 21, 26. Jika beda
b negative pass terakhir adalah k yang mempunyai nilai terkecil yang lebih besar dari l.
 Dalam perintah for k dapat juga diberikan nilai spesifik yang diketikkan sebagai vector, sebagai
contoh for k = [6 8 -1 2 2 4]
 Nilai k tidak boleh diredefinisikan dalam loop.
 Setiap perintah for dalam program harus mempunyai satu perintah end.
 Nilai dari variabel indeks loop k tidak diperlihatkan secara otomatis. Nilai ini dapat ditampilkan
untuk setiap pass dengan mengetikkan k dalam loop. Ini akan berguna untuk debugging atau
melihat sejauh mana jumlah iterasi yang dilakukan hingga galat yang dihasilkan dalam satu
perhitungan memenuhi nilai epsilon yang diambil
 Ketika loop berakhir, variabel indeks loop k ankan mempunyai nila sebesar nilai terakhir yang
diberikan kepadanya
Untuk memperjelaskan penggunaan konsep dari struktur kendali for - - - end, akan diberikan
beberapa contoh di bawah ini.
Contoh 1. Hitunglah cos x berdasarkan ekspansi Taylor, yaitu

x2 x4 x6 x8 (−1 )k (2 k )
cos x=1− + − + −…=∑ x
2! 4! 6! 8! k=0 ( 2 k ) !
di mana satuan dari x adalah radian. Karena putaran yang harus di ambil adalah tidak hingga, maka
untuk membuat program yang rasional maka kita akan mengambil nilai k yang berhingga misalnya 5,
6, 10 atau 50, yaitu dengan mengambil a = 1 dan l = n di mana n adalah 5, 6, 10 atau 50 sehingga
deret Taylor dari cos x untuk nilai n yang berhingga dapat ditulis sebagai
n
(−1 )k ( 2 k )
cos x=∑ x
k=0 ( 2 k ) !
Dengan demikian untuk program penghitungan cos x berdasarkan deret Tailor ini yang menjadi input
adalah x dan n sedangkan outputnya adalah cos x. Karena x dalam derajat maka harus dirubah dahulu
ke dalam radian dengan persamaan
xrad = x*pi/180
Persamaan yang menjadi bagian proses diletakkan di bagian dalam dari struktur for - - - end, yaitu

y = y + (-1)^k*xrad^2*k/factorial(2*k)
Dengan demikian script dari program sederhana yang dibuat akan terlihat sebagai berikut

function y=cosinusTaylor(x,n)
%cosinusTaylor digunakan untuk menghitung cos dengan menggunakan
%deret Taylor, dengan argumen input masing-masing adalah:
%x sebagai sudut dalam derajat dan n adalah jumlah suku dalam
%deret Taylor
format long g
xrad=x*pi/180;
sigma = 0;
for k=0:n-1
sigma = sigma +(-1)^k*xrad^(2*k)/factorial(2*k);
end
y = sigma;
Dan hasilnya untuk ans =
0.707106781186546
>> cosinusTaylor(45,10)
ans =
beberapa n adalah
>> cosinusTaylor(45,8)
0.707106781186547
>> cosinusTaylor(45,12)
ans =
0.707106781186547
>> cosinusTaylor(45,15)
ans =
0.707106781186547
>> cosinusTaylor(45,20)
ans =
0.707106781186547
Dari hasil ini kita melihat bahwa mulai n = 10 nilai sinus sudah tetap untuk ketelitian 15 angka
dibelakang koma. Ini berarti dengan mengambil n yang lebih besar dari 10 hanya akan memperbesar
waktu komputasi.
Contoh 2. Diminta untuk membentuk matriks dengan dimensi mulai tertentu di mana elemen-elemen
matrik dihitung dari a(k,l)=k^1.25+(1.5*l)dengan nilai l dihitung mulai dari 1 hingga dimensi sedankan l
dimulai dari dimensi hingga 1 dengan beda -1. Juga pada akhir program dihitung determinan, invers dan eigen
dari matriks yang paling akhir dibentuk. Program tersebut ditunjukkan berikut ini.
% ---------------------------------------
% Program latihan sederhana dengan MATLAB
% Matlab Programming untuk proses looping
% ---------------------------------------
clear all;
clc;
disp('--------------------------------------------------------');
disp('Program Latihan sederhana untuk menghitung harga-harga' );
disp('dari elemen suatu matriks dengan a(k,l)=k^1.25+(1.5*l),');
disp('nilai determinannya, nilai inversnya, dan nilai eigennya');
disp('--------------------------------------------------------');
dimensi=input('dimensi matriks = ');
for k= 1:dimensi
for l=dimensi:-1:1
a(k,l)=k^1.25+(1.5*l)
end;
end;
determinan=det(a)
inversi=inv(a)
nilaieigen=eig(a)

Ketika program ini dijalankan maka kita dapat melihat hasilnya sebagai berikut, maka matriks
terakhir yang diperoleh akan nonsingular jika dimensi matriks adalah dua, tetapi jika dimensi matriks
adalah tiga maka matriks yang dihasilkan adalah matriks yang singular.

Loop while-end. Struktur while-end digunakan dalam keadaan dimana looping atau pengulangan
tidak diketahui di awal proses dan ini biasanya terjadi untuk perhitungan yang menggunakan nilai
coba-coba dan kondisi yang tercapai bila galatnya cukup kecil. Struktur ini dinyatakan dalam pseudo-
code dan flow chart di dalam Gambar. Evaluasi dilakukan di awal dan bila ekspresi kondisi
memenuhi, maka computer mengerjakan perintah-perntah di antara while dan end. Jika tidak
memenuhi, maka computer menghentikan looping dan menuju ke pernyataan end.

EksKon
While ekspresi kondisional
perintah-1
perintah-2 perintah-1
. . . perintah-2
. . . . . .
. . . . . .
perintah-m perintah-m
end

end

catatan: EksKon = ekspresi kondisional

Gambar

Agar suatu struktur while - - - end dapat dieksekusi dengan sepatutnya, maka ada beberapa hal yang
perlu diperhatikan.
 Ekspresi kondisional dalam perintah while harus paling tidak satu variabel.
 Variabel dalam ekspresi kondisional harus diberi nilai ketika MATLAB mengeksekusi perintah
while pada pertama kalinya
 Paling tidak satu dari variabel dalam ekspresi kondisional harus dimasukkan nilai baru dalam
perintah-perintah yang berada di antara perintah while dan end. Kalau tidak, ketika looping mulai
berjalan ia tidak akan berhenti karena ekspresi kondisional tetap benar (true).
Untuk memperjelas konsep ini kita akan membahas beberapa problema yang ketika diprogramkan
dengan script harus menggunakan looping dari jenis ini.
Contoh 1. Dalam contoh pertama ini kita akan menghitung berapa jumlah ember yang dibutuhkan
untuk mengosongkan suatu bak air berbentuk kotak dengan panjang, lebar dan tinggi yang tertentu
dan dengan ember dengan volume tertentu. Dalam program sederhana ini, inputnya adalah panjang,
lebar dan tinggi dari bak (dalam meter), dan volume dari ember yang digunakan (dalam liter).
Sedangkan proses pertamanya adalah menghitung volume bak air. Karena panjang, lebar, dan tinngi
bak air dalam meter, maka volumenya perlu dikonversikan ke lite dengan mengalikannya dengan
1000. Proses kedua adalah menghitung jumlah ember yang dibutuhkan untuk mengosongkan bak ini
dilakukan dengan menggunakan perintah dalam struktur while - - - end seperti yang ditunjukkan
dalam program berikut ini.

% ---------------------------------------
% Program latihan sederhana untuk looping
% Script Programming dari MATLAB
% --------------------------------------
clear all;
clc;
disp('--------------------------------------------------------');
disp('Program Latihan sederhana untuk menghitung jumlah ember ');
disp('dibutuhkan untuk mengisi atau mengosongkan suatu bak air');
disp('(volume bak dan volume ember yang diketahui!');
disp('--------------------------------------------------------');
tinggi_bak=input('Tinggi bak air adalah (m) = ');
pangjang_bak=input('Panjang bak air adalah (m)= ');
lebar_bak=input('lebar bak air adalah (m) = ');
Bak_Air= pangjang_bak*lebar_bak*tinggi_bak*1000;
vember=input('Volume ember(ltr) adalah = ');
nember=1;
while Bak_Air > 0
Bak_Air=Bak_Air-vember;
nember=nember+1;
%Bak_Air
%nember
end
disp(['Jumlah ember air, agar bak penuh/kosong adalah : ' num2str(nember-2)]);

Contoh 2. Sekarang kita memodifikasi program untuk menghitung cos x dengan menggunakan
struktur while - - - end. Dengan struktur ini kita akan menyetop iterasi ketika nilai suku deret Taylor
itu sudah cukup kecil, yaitu 0.00000001. Hal ini berarti bahwa kita akan mengambil nilai suku deret
Taylor yang menyebabkan

%cosinusTaylor digunakan untuk menghitung cos dengan menggunakan


%deret Taylor, dengan argumen input masing-masing adalah:
%x sebagai sudut dalam derajat dan n adalah jumlah suku dalam
%deret Taylor
x=input('Masukkan nilai sudut (derajat) : ');
format long g
xrad=x*pi/180;
k=0; suku=1;
sigma = 0;
while abs(suku)>=0.000000001 & k <=30
suku=(-1)^k*xrad^(2*k)/factorial(2*k);
sigma = sigma +suku;
k=k+1;
end
y = sigma
disp(['jumlah iterasi = ' num2str(k)])
Contoh 4. Ini merupakan contoh yang memadukan struktur switch case --- end dan for --- end.
Rectifier adalah suatu alat yang digunakan sebagai perata arus. Suatu rectifier yang sederhana terdiri
atas sumber tegangan AC, tahanan (beban) dan kapasitor, skema alat ini terlihat dalam Gambar
berikut ini.
Suatu rectifier dioda setengah gelomban (half
wave diode rectifier adalah suatu rangkaian
listrik yang tegangan AC menjadi tegangan DC.
Untuk rectifier yang ditunjukkan di gambar di
sebelah kiri ini, tegangan sumber Vs=V0sin(ωt),
Vs C dimana ω = 2Πf, di mana f adalah frequensi.
RL VL Operasi dari rangkaian ini diilustrasikan dalam
diagam di samping. Garis putus-putus
memperli-hatkan tegangan sumber, garis yang
tidak putus-putus menyatakan tegangan yang
melintasi beban R, VL. Dalam siklus pertama,
dioda berada dalam keadaan on (conducting
V VR current) dari t = 0 hingga t = tIn. Pada waktu
mencapai tIn dioda berada dalam keadaan off
dan tegangan listrik yang disupply ke beban R
diberikan oleh pengosongan listrik dari
tIn tB tE capasitor. Pada t = tE, capasitor kosong dan
waktu dioda kembali on untuk memberikan aliran
hingga waktu TB. Siklus ini berlangsung terus
selama tegangan sumber berada dalam keadaan
V=Tegangan on.
Gambar

Dengan mengambil analisis yang sederhana untuk rangkaian ini, dioda dianggap ideal dan kapasitor
dianggap tidak mempunyai muatan listrik pada awalnya—pada t = 0. Ketika dioda on, tegangan listrik
dan arus pada beban R, masing-masing adalah

V 0 sin ( ωt )
V R=V 0 sin ( ωt ) dan I R =
R

Arus listrik dalam kapasitor adalah

i C =ωCV 0 cos ( ωt )

Ketika dioda off, tegangan pada beban R diberikan oleh

− t−t ¿
( )

V R=V 0 sin ( ω t ) e
( ( ) )
RC
¿
Ketika dioda mati (switches off), maka tIn,tE dan seterusnya dihitung dari kondisi iR = -iC. Dioda akan
hidup lagi ketika tegangan sumber Vs mencapai nilai sebesar nilai dari teganan pada beban VR (waktu
tB dalam Gambar.
Dengan kenyataan ini, kita dapat menyusun script program MATLAB untuk menggambarkan profil
tegangan pada beban VR dan tegangan sumber sebagai fungsi dari waktu t dalam domain 0 ≤ t ≤ 60 (t
dalam milidetik). Untuk itu kita menyusun program script sebagai berikut.

%program sederhana untuk melihat profil tegangan beban dan tegangan sumber
%dalam suatu rangkaian rectifier sederhana vs adalah tegangan sumber, vR adalah
%tegangan beban, f=60 adalah frequensi, C kapasitas kapasitor, R adalah tahanan beban
%v0 adalah tegangan sumber, iR adalah arus yang melalui beban, dan iC adalah arus
%yang melalui kapasitor
v0=input('Masukkan nilai tegangan sumber (volt) : ');
C=input('Masukkan nilai kapasitas kapasitor (mikro farad) : ');
RL=input('Masukkan nilai tahanan beban (ohm) : ');
tf=60e-3; f=60;
w=2*pi*f;
clear t vR vs
t=[0:0.04e-3:tf];
n=length(t);
keadaan= 'on';
for ii=1:n
vs(ii)=v0*sin(w*t(ii));
switch keadaan
case 'on'
vR(ii)=vs(ii);
iR=vs(ii)/RL;
iC=w*C*v0*cos(w*t(ii));
iTot = iR+iC;
if iTot <= 0
keadaan ='off';
tIn = t(ii);
end
case 'off'
vR(ii)=v0*sin(w*tIn)*exp(-(t(ii)-tIn)/(RL*C));
if vs(ii) >= vR(ii)
keadaan='on';
end
end
end
plot(t,vs,'--',t,vR,'k','linewidth',2)
xlabel('Waktu (detik)');
ylabel('Tegangan (Volt)')

Kalau program script ini dieksekusi untuk V0 =12 volt, Beban RL = 1800 ohm dan kapasitas kapitor
adalah C= 45 mikro farad, seperti yang terlihat berikut ini.
>> penyearah_arus
Masukkan nilai tegangan sumber (volt) : 12
Masukkan nilai kapasitas kapasitor (mikro farad) : 45e-6
Masukkan nilai tahanan beban (ohm) : 1800
>>

Untuk input yang diberikan, maka profil tegangan vs waktu akan diberikan dalam Gambar. Tetapi bila
script ini V0 =12 volt, Beban RL = 1800 ohm dan kapasitas kapitor adalah C= 5 mikro farad, seperti
yang terlihat berikut ini.
Gambar
>> penyearah_arus
Masukkan nilai tegangan sumber (volt) : 12
Masukkan nilai kapasitas kapasitor (mikro farad) : 5e-6
Masukkan nilai tahanan beban (ohm) : 1800
>>
Untuk input yang diberikan, maka profil tegangan vs waktu akan diberikan dalam Gambar.

Gambar
Loop-loop yang menyarang dan pernyataan kondisional yang menyarang Loop dan pernyataan
kondisional dapat dibuat menyarang (nested) satu di dalam lainnya. Hal ini berarti bahwa satu loop
dan atau satu pernyataan kondisional akan berada di dalam loop dan/atau pernyataan kondisional
lainnya. Tidak ada batasan hingga berapa loop dan pernyataan dapat dibuat menyarang. Tetapi suatu
hal yang perlu diingat bahwa setiap if, case, for, dan while harus mempunyai satu end yang sesuai.
Dalam Gambar diperlihatkan struktur for - - - end yang menyarang.

for k1=1:n1
for k2:n2
for k3:n3
for k4:n4
perintah-1
perintah-2 loop terluar
. . . .
. . . . loop-loop yang menyarang
perintah-n
end
end
end
end

Gambar

Gambar ini memperlihatkan bahwa struktur ini terdiri atas satu loop terluar dan ada tiga loop yang
menyarang di dalamnya. Urutan operasi dari struktur ini adalah ketika struktur ini dieksekusi, maka
indeks for pertama mendapat nilai satu dan langsung masuk ke for kedua dan indeks for kedua ini
mendapat nilai 1 juga. Operasi masuk ke for ketiga dan mendapat indeks 1 setelah itu ke for keempat
dan indeks for keempat mendapat nilai 1 dan langsung mengerjakan perintah-1, kemudian perintah
ke-2 hingga ke-n setelah itu indeks loop terdalam naik 1 point hingga indeksnya menjadi 2 dan
mengerjakan perintah-1, perintah-2, hingga perintah-n begitu seterusnya hingga loop terdalam
dilakukan sebanyak n4 kemudian computer akan mencek kembali loop ke-3 dan ternyata indeksnya
baru 1 dan indeks ini naik satu point dan proses memasuki kembali loop paling dalam dan melakukan
proses selama n4 kali lalu computer menaikkan indeks menjadi 2 dan kembali ke loop terdalam dan
melakukan proses sebanyak n4, yaitu melaksanakan perintah-1 hingga perintah-n kemudian kembali
ke loop ketiga begitu seterusnya sehingga loop ke-3 dikerjakan sebanyak n3 kali. Sekarang computer
menuju ke loop ke dua dan indeknya bertambah 1 point dan masuk kembali ke loop kedua dan indeks
mulai dari 1 dan masuk ke loop terdalam dan melakukan looping sebanyak n4 kali dan keluar ke loop
3 dan indeks loop ketiga naik satu point dan kembali ke loop terdalam begitu seterusnya hingga
indeks loop 3 menjadi n3. Komputer sekarang kembali ke loop di atasnya dan melakukan hal yang
sama hingga n2 kali dan seterusnya hingga keluar ke loop terluar dan loop terluar kemudian indeksnya
naik menjadi 2 demikan seterusnya hingga loop terluar berulang sebanyak n 1 kali.
Ada dua contoh yang akan dibahas yang menyangkut loop-loop yang menyarang ini. Yang pertama,
kita akan menghitung matrik C sebagai hasil kali dari dua matriks A dan B. Syarat dari perkalian
matriks ini adalah jumlah kolom matriks A harus sama dengan jumlah baris dari matriks B. Kalau
matriks A berukuran n x m, dan baris B berukuran m x l, maka hasil perkalian antara A dan B adalah
matriks C dengan ukuran n x l. Dengan demikian kita akan menemukan persamaan umum yang
menyatakan elemen ke(i,j) dari matriks C, yaitu
m
C ( i , j )=∑ aik b kj
k=1
Untuk semua i = 1, 2, …,n dan semua j =1, 2, …, l.
Dengan demikian dapat disusun script untuk problema ini sebagai berikut.

%program script untuk menghitung perkalian matriks C=AB


%dengan ukuran A adalh n x m, ukuran B adalah m x l sehinga ukuran C
%adalah n x l
n=input('Masukkan ukuran baris A : ');
m=input('Masukkan ukuran kolom A : ');
l=input('Masukkan ukuran kolom B : ');
A=zeros(n,m);
B=zeros(m,l);
C=zeros(n,l);
A=input('Masukkan Matriks A : ');
B=input('Masukkan Matriks B : ');
for ii=1:n
for jj=1:l
sum=0;
for kk=1:m
sum=sum+A(ii,kk)*B(kk,jj);
end
C(ii,jj)=sum;
end
end
disp('C=')
disp(C)
Jika program script ini dieksekusi maka akan diperoleh tampilan berikut di Command Window.
>> PerkalianMatriks
Masukkan ukuran baris A : 3
Masukkan ukuran kolom A : 5
Masukkan ukuran kolom B : 4
Masukkan Matriks A : [1 2 3 1 2;1 1 3 4 1; 2 2 1 2 3]
Masukkan Matriks B : [1 2 1 2;2 2 1 2;3 1 1 3;1 1 2 2;5 3 4 1]

C=
25 16 16 19
21 14 17 22
26 20 21 18

FUNGSI YANG DIDEFINISIKAN SENDIRI OLEH PENGGUNA (USER-DEFINED


FUNCTIONS)
Ada dua fungsi yang dikenali oleh lingkungan MATLAB, yaitu fungsi-fungsi bawaan dari MATLAB
(built-in functions) dan fungsi-fungsi yang didefinisikan oleh pengguna (user-defined functions).
Fungsi dari jenis pertama sudah dijelaskan panjang lebar dalam Bab 2 dan Bab 3. Dalam bagian ini
kita akan khusus membahas fungsi dari jenis kedua.Fungsi ini disusun oleh pengguna sesuai dengan
peruntukkannya dan disimpan sebagai file script dan ekstensi .m diberikan kepadanya Bagian penting
dari suatu file fungsi (selanjutnya file fungsi diartikan sebagai fungsi yang didefinisikan sendiri oleh
pengguna) adalah baris definisi. Baris ini adalah baris pertama dalam suatu file fungsi dan hanya
diperuntukkan untuk pendefinisian fungsi. Bentuk dari definisi fungsi adalah sebagai berikut:
function [arguments- argument output]=nama_fungsi(argumen-argumen input)

Kata cadang (reserved word) function harus ditulis dalam huruf kecil (ingat bahwa semua kata
cadang dan perintah-perintah bawaan di lingkungan MATLAB harus ditulis dalam huruf kecil).
Daftar argument-argumen output harus diletakkan dalam kurung siku. Jika argumen output lebih dari
satu maka argument-argumen tersebut harus dipisahkan oleh tanda koma (,). nama_fungsi dapat
berupa huruf, angka, dan karakter underscore. Aturan penamaan sama dengan aturan yang diterapkan
pada nama variabel seperti yang telah dibahas di Bab 2. Daftar argumen input bisa berisi satu atau
lebih argument. Argumen-argumen, entah untuk input maupun output bisa berupa scalar atau array
(vector atau matriks).
Argumen-argumen Input dan Output Argumen-argumen input dan output masing-masing
digunakan untuk mentransfer data masuk ke dalam dan keluar dari file fungsi. Suatu file fungsi bisa
saja tidak mempunyai argumen output dan fungsi-fungsi seperti ini adalah fungsi untuk memplot
grafik atau menuliskan data pada suatu file database.
Baris-baris H1 dan Teks Bantuan (H1 line and help text lines) Baris-baris ini adalah baris
komentar yang didahului oleh tanda %. H1 adalah baris pertama setelah baris definisi fungsi. Baris ini
biasanya berisi nama dan definisi singkat dari file fungsi. Baris-baris help text adalah baris-baris yang
mengikuti baris H1. Baris-baris text help ini berisi setiap instruksi yang terkait dengan input dan
output.
Badan File Fungsi Badan dari suatu file fungsi mengandung code (program) yang pada kenyataannya
melakukan tugas komputasi tertentu. Code yang membentuk suatu fungsi dapat menggunakan semua
fitur yang ada untuk pemrograman dalam lingkungan MATLAB, yang meliputi perhitungan-
perhitungan, pemasukan nilai, fungsi-fungsi bawaan atau file fungsi buatan, struktur control dan lain
sebagainya.

VARIABEL-VARIABEL LOKAL DAN GLOBAL. Semua variabel yang berada dalam file fungsi
adalah variabel-variabel local (argument-argumen input dan output, dan setiap variabel yang
dimasukkan dalam file fungsi). Ini berarti bahwa variabel-variabel yang didefinisikan hanya dikenal
dalam file fungsi. Ketika suatu file fungsi dieksekusi, MATLAB menggunakan suatu area dari
memori yang terpisah dari workspace (ruang memory dari Command Window dan file-file script).
Dalam suatu file fungsi variabel input dimasukkan nilai setiap kali fungsi itu dipanggil. Variabel-
variabel ini lalu digunakan untuk untuk melakukuan komputasi di dalam fungsi sebagai mana
peruntukkan fungsi itu. Ketika komputasi selesai dilakukan oleh fungsi, nilai-nilai argument output
ditransfer ke dalam variabel-variabel yang digunakan ketika fungsi tersebut dipanggil. Dengan semua
ini diartikan bahwa suatu file fungsi dapat mempunyai nama seperti variabel-variabel dalam
Command Window atau file script. Fungsi tidak mengenal variabel-variabel dengan nama yang sama
yang telah diberikan nilai diluar fungsi tersebut. Nilai-nilai yang diberikan kepada variabel-variabel
ini di dalam file fungsi tidak akan merubah peruntukkannya.
Setiap file fungsi mempunyai variabel lokalnya sendiri-sendiri yang tidak akan berbagi di dalam file
fungsi yang lain atau dengan workspace dari Command Window dan file-file script. Karena itu adalah
mungkin untuk membuat beberapa variabel yang ada dalam suatu file fungsi tertentu menjadi variabel
yang umum—yang dapat dikenal oleh beberapa file fungsi lainya, dan mungkin juga oleh workspace.
Dan dalam lingkungan MATLAB, hal ini dapat dilakukan dengan mendeklarasikan variabel global
dengan menggunakan perintah global yang mempunyai bentuk

global nama_variabel

Lebih dari satu variabel yang dapat dideklarasikan sebagai variabel global dengan menyusun mereka
secara beruurutan dengan memberikan spasi di antara dua variabel global yang berdekatan. Sebagai
contoh
global KONSTANTA_REAKSI TEMPERTUR TEKANAN Kapasitas_Panas

Ada beberapa hal penting yang perlu diperhatikan agar mempermudah pengguna menggunakan
variabel-variabel global dalam merancang file-file function untuk maksud-maksud tertentu sesuai
dengan peruntukkannya, yaitu
 Variabel-variabel yang dipilih sebagai variabel global adalah variabel-variabel yang memang
harus digunakan dalam file-file fungsi yang lain dan script utamanya dan variabel-variabel ini
harus dideklarasikan dengan menggunakan perintah global
 Perintah global harus ditulis dalam huruf kecil dan harus muncul didepan variabel-variabel yang
digunakan sebagai variabel global. Sangat dianjurkan agar variabel global ditempatkan di atas
dari file
 Perintah global harus dimasukkan dalam Command Window dan atau dalam file script untuk
semua variabel yang harus dikenal di workspace.
 Nilai variabel dapat dimasukkan atau dimasukkan kembali nilai-nilai tertentu dalam setiap lokasi
yang dideklarasikan global
 Sangat dianjurkan untuk menggunakan nama deskriptif yang panjang (dengan menggunakan
huruf besar semuanya) untuk variabel global agar dapat dibedakan dengan variabel-variabel
yang lain—variabel-variabel regular

MENYIMPAN FILE FUNGSI. Sebelum suatu file fungsi dapat digunakan, file itu harus disimpan
terlebih dahulu. Hal ini dapat dilakukan dengan cara yang sama dengan file script seperti yang telah
dijelaskan di Bab 2. Dengan memilih Save As… dari menu File kemudian memilih lokasi tempat
penyimpanan, dan memberikan nama dan kemudian mengklik ok untuk menyimpannya. Hal yang
perlu selalu diingat adalah bahwa file function harus berada dalam direktori yang sama dengan file
script atau file fungsi lainnya yang memanggil file fungsi tersebut. Dan direktori tempat
penyimpanan itu harus merupakan direktori kerja ketika hendak menggunakan file-file yang
dimaksud.

MENGGUNAKAN FILE FUNGSI. Suatu file yang didefinisikan sendiri oleh penggunannya dapat
digunakan seperti pengguna menggunakan fungsi-fungsi bawaan dalam lingkungan MATLAB
seperti yang telah dijelaskan dalam BAB 2. Fungsi yang disusun oleh pengguna dapat dipanggil dari
Command Window, dari file script (program) ataupun dapat dipanggil dari fungsi buatan yang lain.
Yang harus diperhatikan bahwa file fungsi buatan harus disimpan dalam directori kerja (current
directory).
Suatu fungsi buatan dapat digunakan dengan memasukkan output ke dalam variable atau beberapa
variabel (tergantung pada kebutuhan), sebagai bagian dari ekspresi matematika, sebagai argument
bagi fungsi buatan yang lain, atau hanya dengan mengetikkan nama fungsi buatan tersebut dari
Command Window. Dalam semua kasus yang disebutkan, pengguna harus mengetahui dengan tepat
dan pasti apakah dan dari jenis apakah argumen-argumen input maupun output. Argumen input dapat
saja berupa suatu bilangan, suatu ekspresi yang dapat dihitung, atau dapat merupakan suatu variabel
yang mempunyai nilai-nilai yang dimasukkan (assignment values). Argumen-argumen diisi sesuai
dengan posisinya dalam daftar argument input dan hal yang sama juga berlaku untuk argument-
argumen output dalam baris definisi. Ada tiga contoh yang akan dibahas disini.
Yang pertama adalah fungsi, Yang kedua adalah fungsi yang dinyatakan oleh persamaan

f ( x )=x 3.5
√( 2∗x+ 4 )
( x2 +2 )
Untuk contoh pertama ini juga akan kita juga akan melihat bagaimana seharusnya fungsi ini
didefinisikan agar kita bisa menghitung f(x) jika x adalah sederetan nilai yang bisa digunakan untuk
menghasilkan plot f(x) vs x.
Contoh kedua adalah fungsi yang digunakan untuk menghitung akar dari fx dengan metoda Newton-
Raphson dalam fungsi ini terdapat dua output, yakni fungsi itu sendiri, yaitu fx dan turunannya, dfdf.
Contoh ketiga adalah contoh sederhana untuk menghitung kenaikan entalpi bahan jika alat ukur
temperatur yang ada adalah untuk mengukur skala temperatur dalam derajat Fahrenheit dan data
kapasitas yang ada adalah dalam satuan KKal per (kg 0C).
Contoh terakhir akan kita tinjau fungsi dengan dua variabel dalam bentuk tunggal dan dalam bentuk
bila inputnya merupakan array. Fungsi itu adalah
2 2

z=1.51.5 √(x + y )cos (0.25 y ) sin⁡(0.75 y)

Kita mulai dengan pertama

Untuk contoh pertama, kita dapat mendefinisikan fungsi f(x) sebagai


function y=fungsiX(x)
y=x^3.5*sqrt(2*x+4)/(x^2+2)

Kalau kita tuliskan fungsi ini dalam Command Window untuk beberapa nilai x, maka kita akan
menemukan hasil-hasil sebagai berikut
>> a=5

a=

>> b=fungsiX(a)

y=

38.7343

b=

38.7343

Kalau fungsiX(x) akan bisa diakses oleh array, maka fungsi ini perlu dirubah menjadi
function y=funcX(x)
y=x.^3.5.*sqrt(2*x+4)./(x.^2+2)
return

Ketika fungsi ini eksekusi di Command Window dengan argument tertentu memberikan hasil sebagai
berikut.
>> b=[0:3:15]

b=

0 3 6 9 12 15

>> y=funcX(b)

y=

0 13.4441 55.6937 123.5896 216.9504 335.7631


>>
>> y=funcX([0:0.5:10])

y=

Columns 1 through 14

0 0.0878 0.8165 2.5732 5.3333 8.9837 13.4441 18.6689 24.6336 31.3246


38.7343 46.8582 55.6937 65.2391

Columns 15 through 21

75.4934 86.4560 98.1264 110.5044 123.5896 137.3821 151.8817

>> f=[-5:1:5]

f=

-5 -4 -3 -2 -1 0 1 2 3 4 5
>> y=funcX(f)

y=

Columns 1 through 7

25.3575 - 0.0000i 14.2222 - 0.0000i 6.0124 - 0.0000i 0 -0.0000 - 0.4714i 0


0.8165

Columns 8 through 11

5.3333 13.4441 24.6336 38.7343

>>
Untuk contoh yang kedua, kita mempunyai fungsi buatan, yaitu fungsi yang dipakai untuk
menghitung akar dari persamaan polinom berderajat empat, yaitu y = 4x4 – 4x3 + 4x2 -8x -32 =0.
Karena yang digunakan adalah metoda Newton-Raphson, maka kita perlu mendefinisikan suatu file
fungsi dengan dua keluaran, yakni f(x) yang dinyatakan oleh fx dan turunannya yang dinyatakan oleh
dfdx. Dengan demikian file fungsi dapat dibuat sebagai berikut dan disimpan dengan nama
fungsi_nr.m, seperti berikut ini.

function [fx dfdx]=fungsi_nr(x)


%fungsi dan turunan yang dipakai
%dalam program NewtonRaphson
%fx adalah fungsi
%dfdx adalah turunan dari fx
fx=x^4-4*x^3+4*x^2-8*x-32;
dfdx=4*x^3-12*x^2+8*x-8;
return

Jika fungsi ini dieksekusi dari Command Window untuk beberapa nilai x, maka kita akan melihat
hasil-hasilnya berikut ini.
>> fungsi_nr(5)

ans =

153

>> [a b]=fungsi_nr(5)

a=

153

b=

232

>> x=5;
>> [a b]=fungsi_nr(x);
>> y=[a b]

y=
153 232

function derajatC=FahrenheitToCelcius(F)
%FahrenheitToCelcius adalah fungsi yang digunakan untuk mengkonversi derajat Fahrenheit ke
%derajat Celcius dan disimpan dengan nama yang sama
derajatC=5*(F-32)./9;

%Hitung entalpi disimpan sebagai file script entalpi.


%program sederhana ini akan memanggil function FahrenheitToCelcius()
%untuk menghitung konversi derajat Fahrenheit ke derajat Celcius
Der1=input('Masukkan suhu awal yang diukur (derajat Fahrenheit): ');
Der2=input('Masukkan suhu akhir yang diukur (derajat Fahrenheit): ');
cp=input('Masukkan Cp bahan (KKal/der C Kg): ');
berat=input('Jumlah bahan yang dikur perubahan entalpinya (kg) : ');
deltaT = Der2-Der1;
deltaTC=FahrenheitToCelcius(deltaT);
deltaH = berat*cp*deltaTC;
fprintf('Perubahan entalpi bahan sebanyak %4.0f kg untuk kenaikan %4.2f der C adalah : %8.4f
KKal.\n',berat,deltaTC,deltaH)

Kalau kita mengeksekusi fungsi FahrenheitToCelcius dari Command Window untuk beberapa temperatur
Fahrenheit, maka hasilnya akan ditunjukkan di bawah ini.
>> TF1=120

TF1 =

120

>> TF2=180

TF2 =

180

>> deltaTC=FahrenheitToCelcius(TF2)-FahrenheitToCelcius(TF1)

deltaTC =

33.3333

Sedangkan untuk script entalpi, bila dieksekusi untuk kenaikan temperature dari 120 0F ke 1800F diperlihatkan
berikut ini
>> entalpi
Masukkan suhu awal yang diukur (derajat Fahrenheit): 120
Masukkan suhu akhir yang diukur (derajat Fahrenheit): 180
Masukkan Cp bahan (KKal/der C Kg): 2.5
Jumlah bahan yang dikur perubahan entalpinya (kg) : 100
Perubahan entalpi bahan sebanyak 100 kg untuk kenaikan 33.33 der C adalah : 8333.3333 KKal.

Sekarang kita akan melihat contoh yang terakhir. Jika fungsinya ditulis sebagai fungsi scalar, maka
akan didapatkan fungsi berikut ini
function z=f(x,y)
z=1.50^(-1.50*sqrt(x^2+y^2))*cos(0.25*y)*sin(0.75y)
return

Bila fungsi ini (z.m) dieksekusi dari Command Window untuk nilai x dan y tertentu, misalnya x= dan
y= , maka hasilnya seperti terlihat di bawah ini.
>> u=5

u=

>> v=-2

v=

-2

>> p=z(u,v)

z=

-0.0331
p=

-0.0331

Bila fungsi ini dirubah dalam bentuk array (vector), maka fungsi itu ditulis sebagai
function zarray=f(x,y)
zarray=1.50.^(-1.50*sqrt(x.^2+y.^2)).*cos(0.25*y).*sin(0.75y)
return

Sekarang kalau fungsi ini dieksekusi untuk nilai x dan y tertentu, misalnya x = dan y = , maka
hasilnya dapat dilihat berikut ini.
>> u=[-6:1:6]

u=

-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6

>> v=[-7:1:5]

v=

-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5

>> w=zarray(u,v)

w=

-0.0006 0.0006 0.0037 -0.0036 -0.0635 -0.2247 -0.3595 0 0.1695 0.0977 0.0272
0.0016 -0.0016

Bila kita ingin menggambarkan fungsi ini dalam ruang 3 dimensi, maka kita harus mendefinisikan
dahulu vector u yang menyatakan domain dari x dan vector v yang menyatakan domain y setelah itu
kita menentukan mesh grid dalam bidang xy. Kemudian kita juga perlu menghitung nilai z untuk
setiap titik di mesh grid. Baru setelah itu kita dapat menggunakan perintah surf(x,yz). Dan ini
semuanya dilakukan di Command Window. Hasilnya untuk nilai u dan v tertentu diperlihatkan di
bawah ini dan gambar dari fungsi ini di ruang tiga dimensi diberikan dalam Gambar.

>> u=[-6:1:6]
u=
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6

>> v=[-7:1:5]

v=
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5

>> [x,y]=meshgrid(u,v)

x=
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
y=

-7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7
-6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6
-5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5
-4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4
-3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3
-2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5

>> z=zarray(x,y)

z=
-0.0006 -0.0008 -0.0011 -0.0015 -0.0018 -0.0021 -0.0022 -0.0021 -0.0018 -0.0015
-0.0011 -0.0008 -0.0006
0.0004 0.0006 0.0009 0.0012 0.0015 0.0017 0.0018 0.0017 0.0015 0.0012
0.0009 0.0006 0.0004
0.0016 0.0024 0.0037 0.0052 0.0068 0.0081 0.0086 0.0081 0.0068 0.0052
0.0037 0.0024 0.0016
-0.0009 -0.0016 -0.0024 -0.0036 -0.0050 -0.0062 -0.0067 -0.0062 -0.0050 -0.0036
-0.0024 -0.0016 -0.0009
-0.0096 -0.0164 -0.0272 -0.0431 -0.0635 -0.0832 -0.0918 -0.0832 -0.0635 -0.0431
-0.0272 -0.0164 -0.0096
-0.0187 -0.0331 -0.0577 -0.0977 -0.1567 -0.2247 -0.2594 -0.2247 -0.1567 -0.0977
-0.0577 -0.0331 -0.0187
-0.0163 -0.0297 -0.0538 -0.0965 -0.1695 -0.2794 -0.3595 -0.2794 -0.1695 -0.0965
-0.0538 -0.0297 -0.0163
0 0 0 0 0 0 0 0 0 0 0 0 0
0.0163 0.0297 0.0538 0.0965 0.1695 0.2794 0.3595 0.2794 0.1695 0.0965
0.0538 0.0297 0.0163
0.0187 0.0331 0.0577 0.0977 0.1567 0.2247 0.2594 0.2247 0.1567 0.0977
0.0577 0.0331 0.0187
0.0096 0.0164 0.0272 0.0431 0.0635 0.0832 0.0918 0.0832 0.0635 0.0431
0.0272 0.0164 0.0096
0.0009 0.0016 0.0024 0.0036 0.0050 0.0062 0.0067 0.0062 0.0050 0.0036
0.0024 0.0016 0.0009
-0.0016 -0.0024 -0.0037 -0.0052 -0.0068 -0.0081 -0.0086 -0.0081 -0.0068 -0.0052
-0.0037 -0.0024 -0.0016

>> surf(x,y,z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')

Gambar

PERBANDINGAN ANTARA FILE-FILE SCRIPT DAN FILE FUNGSI BUATAN. Pengguna


yang mempelajari MATLAB untuk pertama kalinya kadang-kadang mempunyai kesulitan dalam
pemahaman yang tepat tentang perbedaan antara file script dan file fungsi buatan, karena untuk
banyak problema ketika orang-orang seperti ini ditanyakan bagaimana menyelesaikan problema yang
dia temui dengan MATLAB dan pada kenyataannya kedua tipe file ini dapat digunakan. Kesamaan
dan perbedaan dari kedua jenis file ini dapat diringkaskan sebagai berikut.
 Baik file script maupun file fungsi buatan disimpan dengan ekstensi m., yaitu dalam bentuk M-
File
 Baris pertama dari file fungsi buatan adalah baris definisi fungsi
 Variabel-variabel dalam suatu file fungsi buatan merupakan variabel-variabel yang bersifat local
—variabel-variabel ini hanya dikenal dalam file fungsi buatan tersebut. Variabel-variabel dalam
file script dikenal dalam Command Window
 File script dapat menggunakan variabel-variabel yang telah didefinisikan dalam workspace
 File script berisi sederetan perintah-perintah MATLAB yang tersusun secara berurutan. Perintah-
perintah ini sering disebut sebagai pernyataan-pernyataan (statements)
 File fungsi buatan dapat menerima data melalui argument-argumen inputdan dapat
mengembalikan data hasil olahan dari fungsi melalui argument-argumen output
 Ketika suatu file fungsi hendak disimpan, maka namanya harus sama dengan nama yang
didefinisikan di baris definisi fungsi, yaitu baris pertama pada suatu file fungsi buatan

FUNGSI ANONIM DAN FUNGSI INLINE. Fungsi yang didefinsikan sendiri oleh pengguna
(fungsi buatan) dapat digunakan untuk menggunakan fungsi yang sederhana dan ini bisa dilakukan
dengan fungsi anonym atau fungsi inline. Hal ini disebabkan karena kecenderungan makin rumitnya
file script atau file buatan yang dibuat. Jadi dalam kasus ketika nilai dari ekspresi yang relatif
sederhana perlu ditentukan berkali-kali dalam suatu program atau suatu file fungsi buatan, MATLAB
menyediakan pilihan untuk menggunakan fungsi anonym. Fungsi anonym adalah sejenis fungsi yang
didefinsikan sendiri oleh pengguna yang didefinisikan dan langsung ditulis di dalam program
computer (code). Jadi fungsi anonym ini tidak terpisah dalam suatu file fungsi buatan tersendiri dan
dengan demikian fungsi ini langsung dapat digunakan dalam program. Fungsi-fungsi anonym dapat
didefinisikan disemua bagian dari MATLAB, seperti dalam Command Window, dalam file-file script,
dan di dalam fungsi-fungsi buatan yang regular.
Fungsi-fungsi ini mulai diperkenalkan dalam MATLAB 7 dan sekaligus fungsi-fungsi ini
menggantikan fungsi-fungsi inline yang telah digunakan untuk maksud yang sama dalam versi-versi
MATLAB sebelumnya. Tetapi kedua fungsi ini masih bisa digunakan dalam MATLAB dengan versi
yang lebih baru. Namun demikian fungsi-fungsi anonym, namampaknya mempunyai kelebihan dari
pada fungsi-fungsi inline dan dapat kita katakan bahwa fungsi-fungsi inline akan berangsur-angsur
akan keluar dari penggunaannya. Kita akan membicarakan fungsi anonym terlebih dahulu dan baru
kemudian diikuti oleh pembahasan fungsi-fungsi inline.
Fungsi-fungsi Anonim Suatu fungsi anonym adalah suatu fungsi sederhana yang hanya memakan
satu baris saja dalam script dan ini berarti fungsi ini dapat didefinisikan tanpa membuat file-M yanga
baru. Fungsi-fungsi anonym dapat dibentuk dalam Command Window, dalam file script, atau di
dalam fungsi-fungsi buatan yang regular.
Fungsi anonym dibuat dengan mengetikkan perintah berikut ini

nama = @ (daftar_argumen) ekspresi

Ada beberapa hal yang perlu diperhatikan dalam mengelola fungsi anonym.
 Perintah menciptakan fungsi anonym, dan memberikan suatu nilai handle bagi fungsi untuk nama
variabel yang berada di sebelah kiri tanda samadengan (=). Handle dari fungsi menyediakan cara
penggunaan fungsi dan melewatkanya ke fungsi yang lain—hal ini akan kita bahas lebih ditil
nanti
 ekspresi terdiri atas suatu ekpresi matematis MATLAB yang valid
 Ekspresi matematis bisa saja merupakan ekpresi matematis dengan beberapa variabel bebas.
Variabel-variabel bebas ini didaftarkan dalam daftar_argumen (argument list). Jika ada lebih dari
satu variabel, maka dua variabel terdekat dipisahkan oleh tanda koma(,). Sebagai contoh fungsi
berikut untuk menyatakan lingkaran. Lingkaran=@ (x,y) 25*x^2 + 16*y^2
 Expresi matematika dapat mengikutkan setiap fungsi bawaan yang ada dalam lingkungan
MATLAB maupun fungsi buatan yang regular.
 Ekspresi harus ditulis sesuai dengan dimensi dari argument karena dalam perhitungan dilibatkan
perhitungan elemen-demi-elemen.
 Ekspresi dapat mengikutkan variabel-variabel yang telah terdefinisi terlebih dahulu (predefined
variables) ketika fungsi anonil di definisikan. Sebagai contoh, jika ada tiga variabel p, q dan r
yang didefinisikan (variabel-variabel ini telah diberi nilai tertentu), maka variabel-variabel ini
dapat digunakan dalam suatu fungsi anonym sebagai contoh parabola=@(x) p*x^2+q*x+r.
Hal penting yang perlu dicatat di sini, bahwa MATLAB menangkap nilai-nilai dari variabel-
variabel yang telah terlebih dahulu didefinisikan (predefined variables) ketila fungsi anonym
didefinisikan. Hal ini berarti bahwa jika secara terurut nilai-nilai dimasukkan dalam variabel
yang telah didefinisikan terlebeh dahulu (predefined variables), fungsi anonym tidak berubah.
Fungsi anonym harus diredefinisikan agar supaya nilai-nilai yang baru dari predefined variables
dapat digunakan dalam ekspresi.
Bagaimana menggunakan fungsi anonym Ada dua hal yang dapat dicatat mengenai bagaimana
menggunakan fungsi anonym.
 Ketika suatu fungsi anonym didefinisikan, maka fungsi itu dapat digunakan dengan mengetikkan
namanya dan suatu nilai untuk argument (atau argument-argumen) dalam tanda kurung untuk itu
bisa menyimak contoh yang akan disajikan di bawah ini
 Fungsi anonym bisa juga digunakan sebagai argument-argumen dalam fungsi-fungsi lain.
Berikut ini akan diberikan bagaimana menbuat fungsi anonym dan memberikan nilai kepada
argument-argumen inputnya
Perhatikan contoh beriku. Fungsinya adalah fungsi yang telah diberikan dalam contoh yang telah
diberikan di sub-bagian yang membahas tentang file fungsi, yaitu

f ( x )=x 3.5
√( 2∗x+ 4 )
( x2 +2 )
Fungsi ini dapat ditulis sebagai fungsiX = @ (x) x^3.5*sqrt(2*x+4)/(x^2+2). Jika fungsi ini di
tuliskan di Command Window dan kemudian dieksekusi, maka kita akan dapat melihat bahwa

>> fungsiX=@ (x) x^3.5*sqrt(2*x+4)/(x^2+2)

fungsiX =

@(x)x^3.5*sqrt(2*x+4)/(x^2+2)

>> A=fungsiX(10)

A=

151.8817

Kalau fungsiX(x) akan bisa diakses oleh array, maka fungsi ini perlu dirubah menjadi

fungsiX(x) =x.^3.5.*sqrt(2*x+4)./(x.^2+2) atau kalau ditulis dalam bentuk fungsi anonym di


Command Window sebagai berikut
>> fungsiX=@ (x) x.^3.5.*sqrt(2*x+4)./(x.^2+2)

fungsiX =

@(x)x.^3.5.*sqrt(2*x+4)./(x.^2+2)

>> x=[1 2 3 4 5]

x=

1 2 3 4 5

>> y=fungsiX(x)

y=
0.8165 5.3333 13.4441 24.6336 38.7343

Kita juga bisa membuat plot ini dengan memberikan harga-harga x sebagai vector dan kemudian
menghitung y=fungsiX(x) dan kemudian membuat plot y vs x dengan cara

>> x=[0:0.01:5];
>> y=fungsiX(x);
>> plot(x,y)
>> xlabel('Sumbu - x')
>> ylabel('Sumbu - y')
>>

Dan hasil nya ditunjukkan oleh Gambar .

Gambar

>> fungsiZ=@ (x,y) 2.3.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.5*y).*sin(0.8*x)

fungsiZ =

@(x,y)2.3.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.5*y).*sin(0.8*x)

>> x=[0:2:16]

x=

0 2 4 6 8 10 12 14 16

>> y=[1:9]
y=

1 2 3 4 5 6 7 8 9

>> z=fungsiZ(x,y)

z=

0 0.0284 -0.0000 0.0002 -0.0000 -0.0000 0.0000 0.0000 -0.0000


Fungsi-fungsi Inline Mirip dengan fungsi-fungsi anonym, fungsi-fungsi inline adalah fungsi-fungsi
buatan yang sederhana yang didefinisikan tanpa menyimpannya sebagai file-M. Seperti yang telah
disebutkan, Fungsi-fungsi inline diciptakan dengan perintah inline dengan format:

nama = inline(‘ekspresi matematika yang diketikkan sebagai string’)

Ada beberapa hal yang perlu diperhatikan terkait dengan fungsi-fungsi inline.
 Ekspresi matematika dapat saja mengandung lebih dari satu variabel independent
 Setiap huruf apa saja dapat digunakan untuk memberikan nama kepada variabel-variabel yang
ada dalam ekspresi matematika kecuali huruf I dan j karena sudah didefinisikan sebagai bilangan
imajiner oleh MATLAB
 Ekspresi matematik yang digunakan bisa mengandung fungsi-fungsi bawaan dari MATLAB
termasuk fungsi-fungsi buatan yang didefinisikan sendiri oleh pengguna
 Ekspresi harus ditulis sesuai dengan dimensi dari argument—operasi elemen-demi-elemen atau
perhitungan-perhitungan yang mengikuti aturan aljabar linear
 Ekspresi tidak dapat variabel-variabel yang telah terisi nilai terlebih dahulu (preassignment)
 Ketika fungsi telah didefinisikan, maka fungsi itu langsung dapat digunakan dengan cara
menuliskan namanya di Command Window lalu menekan tombol enter
 Fungsi inline dapat juga digunakan sebagai argument dari fungsi-fungsi yang lain (fungsi-fungsi
bawaan MATLAB maupun fungsi-fungsi yang didefinisikan sendiri oleh pengguna

Perhatikan contoh beriku. Fungsinya adalah fungsi yang telah diberikan dalam contoh yang telah
diberikan di sub-bagian yang membahas tentang file fungsi dan fungsi anonim, yaitu

f ( x )=x 3.5
√( 2∗x+ 4 )
( x2 +2 )
Fungsi ini dapat didefinisikan sebagai fungsi inline dalam Command Window sebagai berikut
FInline =

Inline function:
FInline(x,y) = 2.3.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.5*y).*sin(0.8*x)
>> FInline(10,10)

ans =
1.1315e-007

>> u=[1:2:12]

u=
1 3 5 7 9 11

>> v=[0:1.5:7.5]

v=
0 1.5000 3.0000 4.5000 6.0000 7.5000

>> FInline(u,v)
ans =

0.2533 0.0150 -0.0001 0.0001 -0.0000 -0.0000


FUNGSI DARI BANYAK FUNGSI. Sering sekali pengguna menemukan situasi di mana suatu
fungsi P menggunakan suatu fungsi Q. Hal ini berarti bahwa ketika Fungsi P dieksekusi, fungsi ini
harus dilengkapi oleh fungsi Q. Suatu fungsi yang menerima fungsi yang lain dalam lingkungan
MATLAB disebut function function. Sebagai contoh, MATLAB mempunyai fungsi bawaan yang
disebut fzero kita sebut sebagai fungsi A yang mencari nilai akar dari f(x) yaitu fungsi B, yaitu nilai
dari x sedemikian hingga f(x)=0. Program dalam fungsi fzero ditulis sedemikian sehingga program
tersebut dapat mencari akar dari setiap fungsi f(x)=0. Ketika fzero dipanggil, fungsi yang spesifik f(x)
yang hendak diselesaikan dilewatkan ke dalam fzero yang menemukan akar dari f(x).
Suatu fungsi function, yang menerima fungsi yang lain (fungsi yang diimport), yang mengikutkan di
dalamnya argument-argumennya sendiri suatu nama yang menyatakan fungsi yang diimport. Nama
fungsi yang diimport yang digunakan untuk operasi dalam program dari fungsi function. Ketika
fungsi function digunakan—fungsi tersebut dipanggil—fungsi spesifik yang diimport dilist dalam
argument inputnya. Dengan cara ini, fungsi-fungsi yang berbeda dapat diimport—dilewatkan—ke
dalam fungsi function. Ada dua cara untuk mendaftarkan nama dari suatu fungsi yang diiport dalam
daftar argument dari suatu fungsi function. Yang pertama adalah dengan menggunakan suatu handel
fungsi (function handle) yang akan dibahas dalam sub-bagian berikut. Cara yang satu lagi dilakukan
dengan cara mengetikkan nama dari fungsi yang hendak dilewatkan dalam suatu ekspresi string yang
akan dibahas dalam sub-bagian yang membicarakan soal handel fungsi. Metoda yang digunakan akan
mempengaruhi cara operasi dari fungsi dalam funsi function yang ditulis. Menggunakan handel fungsi
adalah cara yang termudah dan lebih effisien dan dianjurkan sebagai metoda yang digunakan.
Menggunakan Handel Fungsi untuk melewatkan suatu Fungsi tertentu ke dalam Fungsi
Function Handel fungsi (bertindak sebagai contoh handel untuk membuka pintu) digunakan untuk
mengimport atau melewatkan fungsi-fungsi buatan, fungsi-fugnsi bawaan dari MATLAB, da fungsi
anonym ke dalam fungsi function yang dapat menerima fungsi-fungsi tersebut. Ada empat hal yang
akan kita bahas untuk mempertajam konsep kita tentang handel fungsi.
Handel Fungsi (Function Handle): Suatu function handle dalam MATLAB adalah suatu nilai yang
dikaitkan dengan suatu fungsi. Ia merupakan type data MATLAB, dan dapat dilewatkan sebagai
argument kedalam fungsi yang lain. Ketika handel ini dilewatkan, handel ini akan menyediakan suatu
cara untuk memanggil fungsi yang terkait dengannya. Handel fungsi dapat digunakan dengan setiap
jenis fungsi yang ada dalam lingkungan MATLAB, yang terdiri atas fungsi-fungsi bawaan, fungsi-
fungsi yang didefinsikan sendiri oleh pengguna (user-defined functions yang dituliskan dalam file-file
function), dan fungsi-fungsi anonym.
 Untuk fungsi-fungsi bawaan dalam ligkungan MATLAB, suatu handel fungsi diciptakan dengan
mengetikkan symbol @ di depan nama fungsi. Sebagi contoh @sin adalah handel fungsi dari
fungsi bawaan sin, dan @FtoC adalah handel fungsi dari fungsi yang didefinisikan oleh
pengguna—fungsi buatan FtoC yang telah ditulis sebelunmya
 Handel fungsi dapat juga ke dalamnya dimasukkan suatu nama variabel. Sebagai contoh,
sinHandle = @sin. Dalam hal ini kita telah memasukkan @sin ke dalam sinHandle. Setelah itu
nama sinHandle dapat digunakan untuk melewatkan handel.
 Untuk fungsi-fungsi anonym, nama-nama fungsi ini telah merupakan handel fungsi.
Menuliskan suatu fungsi yang menerima suatu handel fungsi sebagai suatu argument input:
Seperti yang telah disebutkan, argument-argumen inputdari suatu fugnsi function—yang menerima
fungsi yang lain mengikutkan suatu nama—nama fungsi boneka yang merepresntasikan fungsi yang
diimport. Fungsi boneka ini—yang mengikutkan terdapat suatu list arugumen-argumen yang
dikurung dalam tanda kurung—digunakan untuk operasi dalam program yang tertulis dalam fungsi
function.
 Fungsi yang sesungguhya sedang diimport harus konsisten dengan cara fungsi boneka yang
sedang digunakan di dalam program. Hal ini berarti keduanya harus mempunyai jumlah dan
type yang sama dari argument-argumen output dan input.
Contoh berikut Fungsi adalah boneka yang merepresentasikan fungsi yang diimport, p dan q adalah
ujung dari domain x yang diambil, dan r dan s adalah ujung-ujung domain s adalah ujung-ujung
domain y. Dinginkan juga Fungsi PlotFungsi juga mempunyai suatu output numeric, yaitu suatu
matriks yang berukuran 5 x 3 yang elemen-elemenya adalah x, y, z =f(x,y) pada titik-titik ujung
domain x dan titik-titik ujung domain y, tengah-tengah dari domain x, dan tengah-tengah dari
domain y, titik tengah antara titik tengah yang dihitung sebelumnya dengan titik ujung kanan dan
terakhir adalah titik tengah antara titik tengah yang baru dihitung dengan titik ujung kanan. Selain itu
juga PlotFungsi akan memplot fungsi z dalam domain yang sudah ditentukan.
Untuk membuat fungsi ini, berarti kita mempunyai fungsi utamanya adalah fungsi PlotFungsi dengan
parameternya adalah fungsi yang dipanggil dan empat nilai, yakni p,q,r, dan s. Dan output utamanya
adalah zout dan berdasarkan zout ini kita dapat membuat matriks 5x3 dan memplot. 5 titik x dan y
digunakan untuk mendapatkan nilai z. Script selengkapnya adalah sebagai berikut.

function zkeluaran = PlotFungsi(Fungsi,p,q,r,s)


function zout=PlotFungsi(Fungsi2var,p,q,r,s);
%membuat 100 titik di domain x dan domain x dengan jarak yang sama untuk
%maksud penggambaran fungsi z=Fungsi2var(x,y)
u=linspace(p,q,100);
v=linspace(r,s,100);
[x,y]=meshgrid(u,v);
z=Fungsi2var(x,y); %memanggil fungsi agar bisa dipakai untuk membuat gambar
%z=1.75.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.6*y).*sin(x);
xout(1)=p;
yout(1)=r;
xout(5)=q;
yout(5)=s;
i=2;
while i<=4
xout(i) =(p+q)/2;
yout(i)=(r+s)/2;
p=xout(i);
r=yout(i);
i=i+1;
end
zout=Fungsi2var(xout,yout);
A=[xout' yout' zout'];
A
surfl(x,y,z)
xlabel('x');
ylabel('y');
zlabel('z')

Sedangkan fungsinya adalah

function z=Fungsi2var(x,y);
z=1.75.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.6*y).*sin(x);
Jika PlotFungsi dieksekusi dengan mengetikkan PlotFungsi(@Fungsi2var,-8,12,-8,15) dari Command
Window, akan memberikan Matriks A dan Plot seperti yang diberikan dalam Gambar.

>> PlotFungsi(@Fungsi2var,-8,12,-8,15)

A=

-8.0000 -8.0000 -0.0000


2.0000 3.5000 -0.0274
7.0000 9.2500 0.0001
9.5000 12.1250 -0.0000
12.0000 15.0000 0.0000

Gambar

Melewatkan suatu fungsi anonym ke dalam suatu fungsi function: Untuk bisa menggunakan
fungsi anonym, fungsi f(x,y)=1.75.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.6*y).*sin(x) harus ditulis dulu
dalam bentuk fungsi anonym dan kemudian dilewatkan ke fungsi bawaan PlotFungsi. Karena kalau
kita mendefinisikan fungsi sebagai fungsi anonym dengan fungsi yang sama, akan dihasilkan output
yang sama, maka dengan demikian, fungsi f(x,y) ditulis dengan format anonym dan kemudian
dilewatkan ke dalam fungsi buatan PlotFungsi dengan menggunakan Command Window akan
memberikan hasil seperti berikut ini

>> fungsi=@(x,y) 1.75.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.6*y).*sin(x)

fungsi =

@(x,y)1.75.^(-1.25*sqrt(x.^2+y.^2)).*cos(0.6*y).*sin(x)

>> PlotFungsi(fungsi,-8,12,-8,15)

A=

-8.0000 -8.0000 -0.0000


2.0000 3.5000 -0.0274
7.0000 9.2500 0.0001
9.5000 12.1250 -0.0000
12.0000 15.0000 0.0000

Gambar yang dihasilkan juga persis sama seperti yang diberikan dalam Gambar.
Menggunakan suatu nama Fungsi untuk melewatkan Fungsi ke dalam Fungsi Function Metoda
kedua yang digunakan juga dalam melewatkan suatu fungsi ke dalan fungsi function adalah dengan
mengetikkan nama dari fungsi yang hendak diimport sebagai string dalam argument input fungsi
function. Cara ini dapat digunakan untuk mengimport fungsi-fungsi buatan. Fungsi ini telah
digunakan sebelum metoda handel fungsi diperkenalkan. Seperti yang telah disebutkan bahwa metoda
yang menggunakan handle fungsi lebih mudah dan lebih efisien dan dianjurkan untuk dipilih sebagai
metoda yang akan digunakan.
Ketika fungsi buatan diimport dengan menggunakan namanya, nilai dari fungsi yang diimport di
dalam fungsi function harus dihitung dengan menggunakan perintah feval.
Perintah feval: Perintah feval (yang berarti function evaluate) mengevaluasi nilai dari fungsi untuk
suatu nilai yang diberikan berdasarkan argumen fungsi tersebut. Format dari perintah ini adalah
sebagai berikut.

Variabel=feval(‘nama fungsi’,nilai argument)

Nilai yang ditentukan oleh feval dapat dimasukkan pada suatu variabel, atau kalau perintah ini tidak
tanpa suatu assignment, MATLAB menampilkan ans= dan nilai dari fungsi. Ada beberapa hal yang
perlu diperhatikan.
 Nama fungsi ditulis sebagai string
 Fungsi dapat berupa fungsi buatan atau fungsi bawaan.
 Jika ada lebih dari satu argument input, argument dipisahkan satu sama lainnya dengan
menggunakan tanda koma.
 Jika lebih dari satu argument, variabel-variabel di sebelah kiri dari tanda sama dengan
(assignment operator) ditulis dalam kurung siku dan dipisahkan oleh tanda koma.
Sebagai contoh, bila kita mengambil nilai dari akar kuadrat 81 maka kita harus menulis
feval(‘sqrt’,81) dan jika kita ingin memperoleh nilai dari sinus pi/6, maka kita harus menulis
feval(‘sin’,pi/6). Jika kedua perintah ini dieksekusi dalam Command Window akan memberikan hasil
sebagai berikut.

Dua contoh sederhana telah menggunakan fungsi bawaan dari MATLAB, yaitu sqrt dan sin. Kita juga
dapat menggunakan perintah feval untuk fungsi-fungsi buatan.

SUBFUNGSI
Suatu file fungsi dapat mengandug lebih dari satu fungsi buatan. Fungsi-fungsi ini diketikkan satu
mendahului yang lainnya. Setiap fungsi selalu dimulai dengan baris fungsi. Fungsi pertama disebut
sebagai fungsi primer dan fungsi-fungsi berikutnya disebut sebagai subfungsi-subfungsi. Subfungsi-
subfungsi ini dapat ditulis satu di dalam yang lain. Nama dari fungsi yang mengandung satu atau lebih
subfungsi atau fungsi primer disimpan sebagai nama fungsi yang akan dipanggil. Di luar fungsi yag
mengandung subfungsi, yaitu di dalam script program, maka yang dipanggil adalah fungsi primer.
Untuk mempertajam konsep pemrograman subfungsi ini kita akan melihat contoh sederhana berikut.
Pengguna diminta untuk membuat suatu fungsi buatan yang digunakan untuk menghitung standard
deviasi dari data-data yang diberikan, persamaan yang digunakan adalah
n

σ=
√ ∑ ( x i−x av )
i=1
n−1
Sedangkan xav dihitung dari
x av =x x2 +¿ x ¿
3+ …+x
1+¿ n
¿
n
Untuk ini kita membuat dua fungsi sebagai subfungsi masing-masing untuk menghitung xav dan
standard deviasi σ dengan nama rataan dan stddev . Kemudian kita membuat fungsi primer yang
bernama simpangan_baku. Dalam penyusunan fungsi rataan telah digunakan struktur while --- end.
Karena struktur ini berulang maka digunakan suatu variabel boneka sigma yang mewakili hasil
penjumlahan setiap putaran. Sigma pada putaran yang terakhir dpakai sebagai jumlah dari nilai-nilai
data yang ada dalam vector x.
function [rata smpbaku]=simpangan_baku(x);
%fungsi yang memberi keluaran rataan dan standard deviasi dari sejumlah n
%data yang disusun dalam vektor x
%fungsi ini pertama-tama akan memanggil fungsi rataan untuk menghitung
%rataa dan setelah itu akan memanggil fungsi sttdev untuk menghitung
%simpangan baku berdasarkan rataan yang dihitung dalam pemanggilan
%sebelumnya
%Anggapan bahwa x dimasukkan dalam bentuk vector maka untuk mengetahui
%jumlah data maka kita harus menghitung panjang vektor x dimana panjang
%vektor x menyatakan jumlah elemen yang terdapat dalam vektor x

%menghitung jumlah elemen dalam vektor x


n=length(x);

%memanggil subfungsi rataan


rata=rataan(x,n);

%memanggil fungsi stddev untuk menghitung simpangan baku


smpbaku=stddev(x,rata,n);

function aver =rataan(x,bil);


%fungsi untuk menghitung rataan dari sejumlah n data yang disusun dalam
%vektor x
i=1;
sigma=0;
while i<=bil
sigma=sigma+x(i);
i=i+1;
end
aver=sigma/bil;

function simpbaku=stddev(x,rataX,bil);
%fungsi untuk menghitung simpangan baku dari sejumlah n data yang disusun
%dalam vektor x
beda = x-rataX;
kuadratbeda=beda.^2;
simpbaku=sqrt(sum(kuadratbeda)/(bil-1));

Jika fungsi ini dipanggil dengan memasukkan


>>nilai=[80 75 95 60 72 76 78 89 65 80 95 50 81 85 71 83 63 53 55 82 73 98 97]

nilai =

80 75 95 60 72 76 78 89 65 80 95 50 81 85 71 83 63 53 55 82 73 98 97

>> [ratanilai stddeviasi]=simpangan_baku(nilai)

rata =

76.3478

ratanilai =

76.3478

stddeviasi =

13.9532
FUNGSI-FUNGSI MENYARANG (NESTED FUNCTIONS)
Suatu fungsi disebut nested function adalah suatu fungsi yang ditulis sendiri oleh pengguna yang
dituliskan atau ditempatkan dalam fungsi buatan (ditulis juga oleh pengguna) lain. Bagian dalam code
script yang sesuai dengan nested function diawali dengan baris definisi fungsi dan diakhiri dengan
pernyataan end. Suatu statement end harus ditaruh di akhir fungsi yang di dalamnya terdapat nested
function.
Untuk fungsi yang menyarang hanya satu, maka strukturnya adalah sebagai berikut.

function x=fungsi_A(a1,a2);
----------
----------
function y=fungsi_B(b1,b2);
----------
----------
end
----------
----------
end
Untuk struktur ini, ada tiga hal yang patut diperhatikan
 Pernyataan-pernyataan end harus ditempatkan pada akhir fungsi_A dan fungsi_B
 Fungsi yang disarangkan—fungsi_B dapat mengakses workspace MATLAB untuk fungsi
primer fungsi_A, dan fungsi primer fungsi_A dapat mengakses workspace MATLAB untuk
fungsi_B yang menyarang di fungsi_A. Hal ini mempunyai arti bahwa suatu variable yang
didefinisikan dalam fungsi primer fungsi_A dapat dibaca dan diredefinisikan dalam fungsi_B
yang menyarang pada fungsi primer
 fungsi_A dapat memanggil fungsi_B, dan sebaliknya fungsi_B dapat memanggil fungsi_A

Jika ada dua atau lebih dari fungsi yang menyarang dalam level yang sama, maka strukturnya ditulis
sebagai berikut.

function x=fungsi_A(a1,a2);
----------
----------
function y=fungsi_B(b1,b2);
----------
----------
end
----------
----------
function y=fungsii_C(c1,c2);
----------
----------
end
----------
----------
end
Untuk struktur fungsi seperti ini, ada dua hal yang dapat diamati. Pertama, tiga fungsi dapat saling
mengakses workspace dari satu sama lainnya. Kedua, ketiga fungsi ini dapat saling memanggil satu
sama lainnya.
Kita akan mengambil contoh sederhana untuk mempertajam pemahaman kita tentang konsep ini, yaitu
contoh sebelumnya dengan sedikit modifikasi.
Akar-Akar Persamaan
Tidak linear
Dalam aplikasi sains dan rekayasa, metoda pencarian akar dari persamaan tidak linear sangat
dibutuhkan. Contoh pertama yang paling sederhana adalah dalam industri proses kimia, seperti
mencari volume molar dari gas tidak ideal menggunakan persamaan-persamaan gas seperti van der
Waals, Redlich-Kwong, Peng Robinson, Soave-Redlich-Kwong dan lain-lain. Persamaan-persamaan
keadaan gas seperti ini adalah persamaan-persamaan kubik dengan koefisien yang bukan bilangan
bulat yang sederhana yang tidak mungkin dihitung secara manual. Contoh, yang lain adalah mencari
temperatur untuk reaksi-reaksi kimia dalam keadaan setimbang seperti pada reaksi yang terjadi dalam
reformer.

Contoh kedua yang akan kita ambil adalah menghitung suku bunga yang dibutuhkan agar suatu
proyek mencapai titik impasnya. Dengan mengetahui nilai tingkat sukubunga ini seseorang dapat
menyimpulkan apakah proyek yang dievaluasinya layak secara ekonomi. Akar-akar yang dibutuhkan
dari persamaan-persamaan ini adalah akar-akar yang real. Karena itu kita bisa menggunakan metoda
untuk mencari akar persamaan tidak linear yang real, yaitu metoda yang pertama dalam menghitung
akar-akar persamaan tidak linear. Selain itu juga kita akan membahas juga metoda-metoda yang
digunakan untuk menemukan semua akar dari fungsi tidak linear, seperti metoda Horner, dan metoda
Bairstow. Kita akan segera memulai dengan membahas metoda-metoda yang terkait dengan metoda
pencarian akar real dari suatu fungsi yang tidak linear.

Metoda untuk mencari akar real dari Persamaan tidak linear


Dalam metoda ini, dari cara penelusurannya, dibagi menjadi dua, yaitu metoda terbuka dan metoda
tertutup. Metoda terbuka meliputi metoda-metoda iterasi titik tetap (fixed point iteration method),
metoda Newton-Raphson dan metoda Secant. Sedangkan metoda jenis kedua meliputi metoda
membagi dua interval (bisection method) dan metoda regula falsi. Untuk kedua metoda terakhir ini,
akar yang hendak ditemukan dikurung dalam suatu interval tertentu.

Metoda terbuka.
Untuk metoda tertutup ini, yang akan kita tinjau pertama sekali adalah metoda iterasi titik tetap (fixed
point iteration). Kemudian disusul oleh metoda Newton-Raphson dan terakhir kita akan
membicarakan metoda Secant. Sekarang kita akan mulai dengan yang pertama.
Metoda iterasi titik tetap. Secara sederhana, dalam metoda ini kita akan merubah fungsi f(x) = 0
menjadi f(x) = x – F(x) = 0 atau kita dapat menuliskan x = F(x) dengan mengambil suatu nilai xi, kita
dapat mengevaluasi nilai fungsi F(x), yaitu F(xi) dan nilai ini kita sebut xi+1, dengan demikian kita
bisa menuliskan xi+1 = F(xi). Kita akan mengevaluasi apakah nilai x penelusuran ke i + 1 sudah
mendekati nilai x pada penelesuran sebelumnya, yaitu nilai absolut dari (F(xi+1) – F(xi)) cukup kecil
dari eps, misalnya eps = 0.000001 berarti xi+1 adalah akar dari f(x) yang dicari. Itu berarti kita dapat
menuliskan proses iterasi dari metoda ini adalah
x i+1 = F(xi) (1)
Teorema berikut memberikan kondisi cukup untuk eksistensi dan keunikan dari suatu titik tetap (fixed
point).
Teorema. Jika F(x) kontinu dalam interval [a, b] dan F(x)ϵ [a ,b ], maka F mempunyai suatu titik tetap
di dalam [a, b]. Lebih lagi F’(x) ada dalam (a, b) dan
|F’(x)| ≤ μ < 1 untuk semua x ϵ (a , b) (2)
dan p adalah titik tetap yang unik dalam [a, b], di mana p adalah nilai x pada saat F(p) = p.
Bukti: Jika F(a) = a atau F(b) = b, eksistensi dari titik tetap jelas. Anggaplah bahwa tidak demikian
adanya, maka sudah seharusnya benar bahwa F(a) > a dan F(b) < b. Sekarang, kita mendefinisikan
h(x) = F(x) – x; h kontinu pada [a, b], dan lebih lagi,
h(a) = F(a) – a > 0, h(b) = F(b) – b < 0
Teorema nilai antara memberikan arti bahwa ada p ϵ ( a ,b) untuk mana h(p) = 0, jadi F(p) – p = 0 dan
p adalah titik tetap dari F.
Sebagai tambahan anggaplah bahwa bahwa ketidak persamaan (2) berlaku dan bahwa p dan q kedua-
duannya adalah titik tetap dalam [a, b] dengan p ≠ q. Dengan teorema nilai rata-rata (mean value
theorem), ada suatu bilangan ξ di antara p dan q , dan karena itu berada dalam [a, b] dengan

|p - q| = |F(p) – F(q)| = |F’(ξ)||p - q| ≤ μ|p - q| < |p - q|,

Yang mana merupakan suatu kontradiksi. Kontradiksi ini harus datang dari satu-satunya supposisi,
p≠q. Dan karena itu p = q dan karena itu titik tetapa di dalam [a, b] adalah unik.
Untuk menghampiri titik tetap dari suatu fungsi F(x), kita mengambil suatu hampiran awal p0 dan

kemudian kita menghasilkan barisan { pi }i=0 dengan mengambil pi+1 = F(pi) untuk setiap i ≥ 1. Jika
barisan konvergen menuju p dan F kontinu, maka berdasarkan teorema kontinuitas suatu fungsi dan
barisan, kita dapat menuliskan
p=lim pi+1 =¿ lim F ( pi ) =F lim pi =F ( p ) ¿
i →∞ i →∞ ( i→∞ )
Dan dengan demikian, solusi dari x = F(x) diperoleh dan teknik ini disebut sebagai teknik iterasi titik
tetap.
Dari persamaan (1) kita dapat membuat algoritma untuk menghitung akar real dari suatu persamaan
tidak linear seperti yang ditunjukkan oleh Algoritma 1 berikut ini.

Algoritma 1. Algoritma Iterasi titik tetap.


Algoritma ini mengharuskan f(x) dirubah menjadi f(x) = x – F(x) = 0
Inputnya adalah nilai coba-coba, nilai konvergensi yang ingin dicapai, yaitu eps = 0.000001
Step 1. Set eps = 0.000001; Set i = 0; Set x(0) = x0 = nilai coba-coba awal;
Step 2. Hitung xi+1 = F(xi)
Hitung galat = abs[(F(xi+1 – F(xi+1)]
Step 3. Apakah galat ≤ eps? Jika tidak, naikkan counter iterasi satu poin, yaitu i =i + 1 dan kembali
ke Step 2.
Jika tidak lanjut ke Step 4.
Step 4. Akar persamaan adalah x* = xi+1. Komputasi selesai. STOP

Secara geometris, teknik ini dapat diterangkan berdasarkan Gambar berikut ini.

(a) (b)
Gambar
Sebagai contoh, kita akan menggunakan algoritma ini untuk menghitung volume molar gas tidak ideal
yang mengikuti persamaan keadaan van der Waals. Untuk itu mari kita lihat bentuk umum dari
persamaan keadaan van der Waals sebagai berikut ini.
a
( P+
V2 )
(V −b )=RT (3)

Persamaan (3) ini perlu dibuat menjadi persamaan diubah ke dalam bentuk f(V) = 0, yaitu
P V 3−( bP+ RT ) V 2 +aV −ab=0
Langkah berikutnya adalah mengubah persamaan f(V) = V – F(V) dan dengan demikian kita akan
memperoleh
1
( bP+ RT ) V 2−aV +ab
V= [ P ] 3
(4)

Dengan demikian persamaan untuk proses iterasinya menjadi


1
( bP+ RT ) V 2i −a V i +ab
V i+1 = [ P ] 3
(5)

Dengan
27 R 2 T 2C
a= (6)
64 PC
Dan
RTC
b= (7)
8 PC
Karena a dan b sudah ada nilainya sebelum digunakan dalam persamaan (5), maka sudah harus
dihitung dalam Step 1. Nilai coba-coba awal yang diambil adalah
RT
V (0)= (8)
P
Persamaan (6) hingga (8) harus diset di Step 1. Demikian juga dengan P, R dan T harus di inputkan di
Step 1. Dengan demikian, kita dapat menyusun Algoritma untuk menghitung volume molar gas tidak
ideal dengan menggunakan persamaan keadaan van der Waals seperti berkut ini.

Algoritma van der Waals (Fixed point).


27 R 2 T 2C RTC
Step 1. Input P, T, PC, TC dan R; Hitung a= dan b=
64 PC 8 PC
RT
Set eps = 0.000001; Set i = 0; Set V (0)= = nilai coba-coba awal;
P
1
( bP+ RT ) V 2i −a V i +ab 3
Step 2. Hitung V i+1 =
[ P ]
Hitung galat = abs[(F(Vi+1) – F(Vi+1)]
Step 3. Apakah galat ≤ eps? Jika tidak, naikkan counter iterasi satu poin, yaitu i =i + 1 dan kembali
ke Step 2.
Jika tidak, Akar persamaan adalah V* = Vi+1. Komputasi selesai. STOP

Dari algoritma ini kemudian kita dapat membuat script Matlab dan script ini disimpan dengan nama
vanderwaals1.m

Metoda Newton Raphson. Metoda ini biasanya disebut metoda Newton (tanpa Raphson)
dibelakangnnya. Metoda ini paling banyak digunakan karena metoda ini sangat berdaya guna
(powerfull). Ada tiga cara yang paling umum untuk memperkenalkan Metoda Newton ini. Cara yang
paling umum digunakan adalah cara grafis seperti yang ditunjukkan dalam Gambar. Kemungkinan
yang lain adalah Metoda ini diturunkan dari daret Taylor dengan memotongnya hingga suku yang
linear saja. Sekarang kita akan memulai dengan deret Taylor di sekitar x = a, yaitu:

' f ' ' ( a) 2 f ( n) ( a ) n


f ( x )=f ( a ) + f ( a )( x−a )+ ( x−a ) + …+ ( x−a ) + … (9)
2! n!
Karena metoda ini menggunakan deret ini hanya sampai bentuk linearnya, maka persamaan (9) ini
kemudian ditulis kembali sebagai

f ( x )=f ( a ) + f ' ( a )( x−a )+ Galat (10)

Karena untuk menghitung akar persamaan maka kita mengambil f(x) = 0 dan dengan memasukkan
galat yang dibuat karena pemenggalan kita dapat menuliskan kembali (10) sebagai

f ' ' (ξ )
f ( x )=f ( a ) + f ' ( a )( x−a )+ ( x−a )2 (11)
2!
Di mana ξ berada di antara x dan a. karena f(t) = 0, maka persamaan (11), dengan x = t akan
memberikan

f ' ' (ξ )
0=f ( a )+ f ' ( a ) ( t−a ) +
( t−a )2 (12)
2!
Metoda Newton diturunkan berdasarkan assumsi bahwa suku ( t−a )2 diabaikan sehingga

0 ≈ f ( a )+ f ' ( a ) ( t−a ) (13)


Atau

f ( a)
t ≈ a− (14)
f ' ( a)
Jika kita menggantikan a dengan xi dan t dengan xi+1, maka kita akan menemukan persamaan utama
proses iterative Newton, yaitu
f ( xi )
x i+1=x i− ' (15)
f ( xi )

Seperti yang sudah diutarakan di atas metoda yang paling umum yang digunakan untuk menurunkan
(15) adalah metoda Grafis seperti yang diberikan oleh Gambar. Dalam Gambar ini diperlihatkan garis
singgung yang berurutan yang digunakan untuk menurunkan metoda ini

x
xi+1 xi+1 xi xi-1
Gambar

Dari Gambar ini kita dapat melihat bahwa


f ( xi)
f ' ( xi )= (16)
x i−x i+1

Dengan menyusun kembali persamaaan (16), kita dapat menemukan persamaan utama proses iteratif
metoda Newton-Raphson seperti yang diperlihatkan dalam persamaan (15).
Kriteria penghentian iterasi ini didasarkan atas nilai konvergensi yang dihitung dari kenyataan sebagai
berikut. Hasilkanlah nilai-nilai x1, x2, …, xN-1, xN berdasarkan persamaan (15)dan pilihlah suatu nilai
toleransi tertentu sedemikian sehingga

|xN – xN - 1| < ε (17)


Demikian juga
|x N −x N −1|
< ε, xN ≠ 0 (18)
| x N|
dimana ε > 0.Untuk ini, nilai toleransi (konvergensi) yang diambil adalah ε.
Dengan demikian kita dapat menyusun Algoritma Newton-Raphson, seperti yang diberikan dalam
algoritma berikut ini.

Agoritma . (Newton-Raphson)
Algoritma ini membutuhkan f(x) dan f’(x), serta input i = 0, nilai coba-coba awal x0 dan nilai toleransi
eps = 0.000001
Step 1. Set eps = 0.000001; Set i = 0; Set x(i) = x0 (x0 adalah nilai coba-coba)
f ( xi )
Step 2. Hitung x i+1=x i−
f ' ( xi )
Hitung Galat = abs(xi – xi - 1)
Step 3. Apakah Galat ≤ eps? Jika tidak, naikkan counter iterasi i satu poin, yaitu i=i +1 dan kembali
ke Step 2.
Jika ya, x* = xi+1, proses komputasi selesai. STOP.

Dalam program script Matlab dengan nama newton.m adalah representasi dari metoda ini dan kode
scriptnya diberikan seperti berikut ini.

Penurunan metoda Newton dari deret Taylor menyatakan pentingnya suatu hampiran awal yang
akurat. Asumsi krusial datangnya dari peralihan persamaan (12) ke persamaan (13), yaitu bahwa
persamaan asal yang melibatkan ( t−a )2 dapat dihilangkan. Jelaslah bahwa ini adalah asumsi yang
salah terkecuali a adalah hampiran yang terbaik dari t. Pada khususnya, jika x0 tidak begitu dekat
dengan, mungkin saja metoda ini tidak akan konvergen ke arah akar yang diinginkan. Namun
demikinan inilah bukannya kasus yang selalu terjadi.
Dalam Teorema 2 berikut ini, yaitu teorema tentang konvergensi untuk metoda Newton
memperlihatkan pentingnya pemilihan nilai hampiran awal x0.

Teorema 2. Katakanlah bahwa f(x) kontinu hingga turunan kedua dalam [a, b] sedemikian sehingga
f’(t) ≠ 0, maka ada suatu δ > 0 sedemikian sehingga metoda Newton-Raphson akan menghasilkan
barisan {t i }∞i=1 konvergen ke t untuk setiap hampiran awal t 0 ϵ [ t−δ , t+δ ] .
Bukti: Bukti yang diberikan disini akan berbasis pada analisis metoda Newton sebagai suatu skema
iterasi fungsional dari ti = F(ti - 1) untuk i ≥ 1, dengan
Metoda Secant. Metoda Newton adaah metoda yang sangat berdaya guna, tetapi mempunyai
kelemahan, yaitu kita memerlukan nilai turunan pada setiap penghampiran nilai akar yang dilakukan.
Sering sekali f’(x) sulit ditemukan dan memerlukan lebih banyak operasi arithmetic untuk
menghitungnya ketimbang untuk menghitung f(x) khususnya fungsi yang melibatkan fungsi-fungsi
trigonometric dan fungsi pangkat dalam satu fungsi. Turunan-turunan untuk fungsi-fungsi yang
demikian ini rumit dan memerlukan banyak operasi aritmetik untuk menghitungnya.
Untuk mengatasi hal ini, turunan dalam metoda Newton di rubah menjadi:
f ( x )−f ( t i )
f ' ( t i ) = lim (19)
x →t i−1 x−t i
Dengan mengambil x =ti-1, kita dapat menuliskan

'
f ( t i−1 )−f ( t i) f ( t i ) −f ( t i−1 )
f (t i ) ≈ = (20)
t i−1−t i t i −t i−1
Dengan memasukkan nilai hampiran ini ke dalam metoda Newton, kita akan menemukan

f ( t i ) [ t i−t i−1 ]
t i+1=t i− (21)
f ( t i )−f ( t i−1)
Dengan menggantikan t dengan x, maka kita dapat menuliskan kembali persamaan (21) sebagai:
f ( x i ) [ x i−x i−1 ]
x i+1=x i− (22)
f ( x i )−f ( x i−1 )
Proses yang dinyatakan oleh persamaan (22) ini dapat dilukiskan dalam Gambar 3.

xi-1 xi+1
x
xi

Gambar 3
Dari persamaan proses iterasi yang diberikan dalam persamaan (22) disebut sebagai metoda Secant
dan berdasarkan persamaan ini, kita dapat menyusun Algoritma Secant seperti yang diberikan dalam
Algoritma berikut ini.

Algoritma. Metoda Secant


Algoritma ini membutuhkan f(x), serta input i = 0, nilai coba-coba awal x0, i = 1, nilai coba-coba x1;
Set i = 2 dan nilai toleransi eps = 0.000001
Step 1. Set eps = 0.000001; Set i = 0; Set x(i) = x0 (x0 adalah nilai coba-coba pertama)
Set i = 1; Set x(i) = x1 (x1 adalah nilai coba-coba kedua);
f ( x i ) [ x i−x i−1 ]
Step 2. Hitung x i+1=x i−
f ( x i )−f ( x i−1 )
Hitung Galat = abs(xi+1 – xi )
Step 3. Apakah Galat ≤ eps? Jika tidak, naikkan counter iterasi i satu poin, yaitu i=i +1 dan kembali
ke Step 2.
Jika ya, x* = xi+1, proses komputasi selesai. STOP.

Dalam program script Matlab dengan nama secant.m adalah representasi dari metoda ini dan kode
scriptnya diberikan seperti berikut ini.

Metoda Tertutup
Metoda ini mengisolasi akar yang akan dicari dalam satu interval tertentu. Dengan dasar ini kita dapat
mencari akar yang diisolasi dengan menggunakan dua cara yaitu dengan metoda membagi dua
interval dan metoda regula falsi (false position method). Kita akan mulai dengan metoda yang
pertama.
Metoda Membagi Dua Akar. Dalam metoda ini, pertama sekali interval yang diketahui di awal
komputasi dibagi menjadi dua. Jika titik tengah memberikan nilai fungsi yang lebih kecil dari nol
maka nilai tengah ini menjadi batas kiri interval, jika titik tengah memberikan nilai fungsi yang
positif, maka titik tengah menjadi ujung interval kanan yang baru. Interval baru ini kemudian dibagi
dua untuk mendapat titik tengah dan kita mengevaluasi fungsi di titik ini seperti dalam langkah
sebelumnya. Hal ini dilakukan terus sehingga diperoleh nilai-nilai fungsi dikedua ujung interval
memberikan selisih yang sangat kecil. Metoda ini dapat di jelaskan dengan Gambar 3 berikut ini.

xkr xkr(1) = xc(2)


x
xkn(1) = xc(1) xkn

Gambar 3
Dari Gambar 3 ini, kita dapat melihat bahwa ada dua kemungkinan bagi titik tengah yang dihitung.
Titik-titik tengah itu bisa menjadi titik ujung kanan interval baru, misalnya xkn(1) = xc(1) atau titik
ujung kiri interval yang baru. Dengan demikian sekarang kita dapat menyusun algoritma untuk
menghitung akar persamaan tidak linear dengan metoda bagi dua interval seperti yang diberikan
dalam Algoritma Bagi Dua Interval seperti yang ditunjukkan oleh Algoritma berikut ini

Algoritma 4. Algoritma Bagi Dua Interval


Step 1. Masukkan nilai ujung interval kanan awal xkn
Masukkan nilai ujung interval kiri awal xkr
Masukkan nilai konvergensi eps = 0.000001
x kn + x kr
Step 2. Hitung titik tengah interval c=
2
Step 3. Hitung Galat = abs(xkn - xkr)
Apakah Galat ≤ eps?
Jika tidak, lanjut ke Step 4.
Jika ya, akar persamaan x* = xkn. Proses komputasi selesai. STOP.
Step 4. Cek d = f(c)!
Jika d > 0, maka xkn = c dan kembali ke Step 2. (xkr tidak berubah)
Jika d < 0, maka xkr = c dan kembali ke Step 2. (xkn tidak berubah)

Script dari proram Matlab yang dibuat berdasarkan algoritma ini adalan bisection.m yang listingnya
diberikan berikut ini.

Metoda Regula Falsi. Metoda ini disebut juga sebagai metoda “false position” adalah metoda yang di
dasarkan atas interpolasi linear. Sama seperti pada metoda sebelumnya, hal yang paling pertama
dilakukan adalah mengurung akar yang hendak dicari dalam suatu interval tertentu, yaitu [p, q][x2, x1],
sedemikian sehingga f(q) > 0 dan f(p) < 0 f(x1) > 0 dan f(x2) < 0. Untuk menjelaskan hal ini, perhatikan
Gambar 4.

xkr
c x
xkn

Gambar 4

Pertama, kita akan mencari persamaan garis yang melalui titik (xkr, f(xkr)) dan (xkn, f(xkn)). Persamaan
garis ini adalah
y ( x ) =ax +b (23)
Dengan a adalah slope garis y(x), yang dihitung dengan persamaan
f ( x kn ) −f ( x kr )
a= (24)
x kn −x kr
Sedangkan b dihitung dengan persamaan berikut ini.
x kn f ( x kr ) −x kr f ( x kn )
b= (25)
x kn −x kr

c adalah titik potong dari garis yang diberikan oleh persamaan (23) dengan sumbu x, atau kita
mendapatkan y(c) = 0 = ac + b, atau c = -b/a tetapi c ini menjadi xkr yang baru sehingga kita dapat
menuliskan persamaan proses iterative metoda regula falsi sebagai berikut.

f ( x kn ) (x kn−x kr )
x kr =x kn− (26)
f ( x kn ) −f ( x kr )

Dengan demikian kita dapat menyusun algoritma untuk menemukan akar persamaan persamaan tidak
linear f(x) dengan menggunakan proses iteratif metoda regula falsi dengan Algoritma berikut ini.

Algoritma
Step 1. Tentukan konvergensi yang akan dicapai eps = 0.000001
Tentukan xkn sedemikian sehingga f(xkn) > 0
Tentukan xkr sedemikian sehingga f(xkr) < 0
Set iterMax = 100;
Set i = 1 (counter iterasi awal)
Step 2. Hitung xkr yang baru dengan menggunakan persamaan (26), yaitu
f ( x kn ) ( x kn−x kr )
x kr =x kn−
f ( x kn ) −f ( x kr )
Hitung Galat = abs(xkn - xkr)
Step 3. Apakah Galat ≤ eps?
Jika tidak, naikkan counter iterasi satu poin, yaitu i = i + 1 dan kembali ke Step 2.
Jika ya, nilai akar dari f(x) adalah x* = xkn. Proses komputasi. STOP
Jika i > iterMax lanjut ke Step 4.
Step 4. “Proses komputasi gagal karena jumlah iterasi maksimum dilewati”. STOP

Script dari proram Matlab yang dibuat berdasarkan algoritma ini adalan regulafalsi.m yang listingnya
diberikan berikut ini.

Percepatan Konvergensi—Metoda Stefenson.


Dalam bagian ini kita akan membahas suatu konsep yang disebut sebagai metoda Δ 2 Aitken. Metoda
ini dapat digunakan untuk mengakselerasi konvergensi dari setiap barisan yang konvergen secara
linear tanpa mempedulikan bentuk asalnya. Konsep ini dapat diuraikan sebagai berikut.

Katakanlah bahwa { t i }i=0 adalah suatu barisan yang konvergen dengan limit t, yaitu ei = ti – t, berlaku

|ei+ 1|
lim =λ dan 0 < λ < 1 (27)
i → ∞ |e i|

Sekarang kita akan menyelidiki suatu barisan baru { t^ i }i=0 yang konvergen lebih cepat ketimbang t.
Untuk memulainya, anggaplah bahwa i cukup besar sehingga rasio dapat digunakan untuk
menghampiri limit. Jika kita juga menganggap bahwa setiap ei mempunyai tanda yang sama, maka
e i+1 ≈ λ e i dan e i+2 ≈ λ e i+1
Dengan demikian kita akan memperoleh
t i+2 ≈ ei +2+ t ≈ λ e i+1 +t , atau
t i+2 ≈ λ(t i+1−t )+t (28)
Dengan menggantikan (i + 1) dengan i dalam persamaan (28), maka kita akan memperoleh
t i+1 ≈ λ(t i−t)+t (29)
Dan dengan menyelesaikan persamaan (28) dan (29) untuk mendapatkan t sambil mengeleminasi λ
setelah beberapa operasi aljabar, maka diperoleh bentuk akhir
2
( t i+1 −ti ) (30)
t=t i−
t i +2−2 t i+1 +t i

Metoda Δ2 Aitken didasarkan atas asumsi bahwa {t^ i }i=0, yang didefinisikan oleh
2
( t i+1−t i ) (31)
t^ i=t i−
t i+ 2−2t i+1 +t i


yang konvergen dengan cepat menuju t, ketimbang barisan asal { t i }i=0.
Δ Aitken yang terkait dengan metoda ini asalnya dinyatakan oleh definisi berikut ini.

Definisi. Diberikan barisan { t i }i=0, definisikan beda hingga maju Δti oleh

Δti = ti+1 - ti (32)

Karena definisi ini, kita dapat menurunkan


Δ2ti = Δ(Δti) = Δti+1 - Δti
= (ti+2 - ti+1) – (ti+1 - ti)
= ti+2 - 2ti+1 + ti (33)
Jadi dengan memasukkan persamaan (32) dan (33) ke dalam persamaan (31), kita akan memperoleh
persamaan berikut ini.
2
( ∆ t i)
t^ i=t i− (34)
∆2 t i
Hingga di sini, kita telah membahas mengenai konsep Δ 2 Aitken, dan kita telah mendapatkan bahwa
∞ ∞
barisan { t^ i }i=0 konvergen ke t lebih cepat ketimbang yang dicapai oleh barisan asal { t i }i=0, tetapi kita
tidak dapat secara eksak menjelaskan tentang apa yang dimaksudkan dengan ungkapan “lebih cepat”
mencapai konvergensi. Untuk itu teorema berikut akan menjelaskan dan menjustifikasi terminology
ini.
Teorema. Katakanlah bahwa ti adalah setiap barisan yang konvergen secara linear menuju limit t

dengan ei = ti – t ≠ 0 untuk semua i ≥ 0. Maka barisan { t^ i }i=0 konvergen dengan cepat menuju t

ketimbang barisan asal { t i }i=0 dalam sense bahwa
t^ i−t
lim
i→∞ t i−t
Bukti: Lihat soal no.
Dengan menerapkan metoda Δ2 Aitken kepada barisan yang konvergen secara linear yang diperoleh
dari iterasi titik tetap, kita dapat mengakselerasi konvergensi menjadi kuadratik. Prosedur ini dikenal
sebagai metoda Stefenson dan berbeda sedikit dari penggunaan metoda Δ 2 Aitken secara langsung
kepada barisan iterasi titik tetap yang konvergen secara linear. Prosedur langsung dapat dikonstruksi
dalam urutan t0, t1 = F(t0), t2 = F(t1), t^ 0={ ∆2 } t 0 , t3 = F(t2), t^ 1={ ∆ 2 } t 1, …

Dimana { ∆2 } menyatakan dimana proses Δ2 Aitken diterapkan. Dalam algoritma Stefenson,


mengkonstruksi empat suku dalam urutan seperti di atas, yaitu t0, t1, t2, dan t^ 0. Bagaimanapun pada
Step ini, dianggap bahwa t^ 0 adalah hampiran yang terbaik terhadap t ketimbang t2 dan menerapkan
iterasi titik-tetap (fixed-point iteration), kepada t^ 0 ketimbang kepada t2. Dengan menggunakan notasi
seperti yang akan digunakan dalam Algoritma Stefenson yang akan kita susun, barisan yang terbentuk
adalah:
t (00 ) , t (10)=F ( t (00) ) , t (20 )=F ( t (10 )) ,t (01 )={ ∆ 2 } t (00 ) , t (11)=F ( t (01) ), …
Dengan demikian kita sudah menyusun Algoritma Stefenson seperti yang ditunjukkan oleh algoritma
berikut ini.
Algoritma . Algoritma Stefenson
Input: Konvergensi yang disyaratkan eps = 0.000001; Nilai coba-coba awal t0
Step 1. Masukkan nilai coba-coba awal t0. Set i = 1
Step 2. Hitung: t1 = F(t0)
t2 = F(t1)
2
( t 1 −t0 )
t=t 0−
t 2 −2t 1+ t 0
Jika abs(t – t0) < eps, maka akar persamaan adalah x* = t. STOP.
Step 3. Apakah I = N? Jika tidak, naikkan iterasi satu poin, yaitu i=i + 1 dan kembali ke Step 2.
Jika tidak, Komputasi gagal setelah iterasi maksimum dilewati. STOP

Menghitung semua akar dari persamaan-persamaan tidak Linear


Persamaan tidak linear yang umum kita temui adalah persamaan polinom yang berderajat n, seperti
yang dinyatakan oleh persamaan berikut ini.
f(x) = a0 + a1x + a2x2 + a3x3 + . . . + anxn = 0 (35)
\

di mana setiap ai menyatakan koefisien dari f dan yang merupakan konstan dan an ≠ 0. Dalam hal ini,
f disebut sebagai polinom berderajat n. Fungsi f yang nol, yaitu f(x) = 0 mengisyaratkan bahwa kita
dapat menemukan akar-akar dari fungsi polinom ini. Teorema berikut merupakan teorema
fundamental untuk aljabar yang pembuktiannya ada dalam buku-buku teks yang terkait dengan
aljabar.

Teorema. (Teorema Fundamental dari Aljabar). Jika f adalah suatu polinom berderajat n dimana n≥1,
maka f(x) = 0, mempunyai paling sedikit satu akar (yang mungkin kompleks).

Walupun Teorema ini merupakan teorema dasar untuk setiap studi yang terkait dengan fungsi-fungsi
elementer, biasanya membutuhkan teknik-teknik pembuktian dari study yang terkait dengan teori
fungsi kompleks, untuk itu para pembaca yang ingin membuktikan teorema ini perlu berkonsultasi
dengan buku-buku mengenai fungsi kompleks. Akibat yang penting yang diberikan oleh teorema ini
adalah Akibat 1 dan Akibat .
Akibat 1. Jika f(x) = a0 + a1x + a2x2 + a3x3 + . . . + anxn adalah suatu polinom berderajat n ≥ 1, maka
ada konstanta-konstanta unik x1, x2, …, xk, yang mungkin saja di antaranya ada yang kompleks, dan
k
bilangan-bilangan positif m1, m2, …, mk sedemikian sehingga ∑ mi =n dan
i=1

f ( x )=( x−x1 ) m ( x−x 2 )m … ( x−x k )m


1 2 k

Akibat 1 dari teorema ini menyatakan kepada kita bahwa akar-akar dari polinom adalah unik, dan
bahwa setiap akar xi dihitung sebanyak multiplisitasnya, yaitu mi, maka polinom berderajat n secara
tepat mempunyai n buah akar.

Akibat 2. Katakanlah bahwa f dan g masing-masing adalah polinom yang berderajat paling besar n.
Jika x1, x2, …, xk, k > n, adalah bilangan-bilangan yang berbeda dengan f(xi) = g(xi) untuk i = 1, 2, …,
k, maka f(x) = g(x) untuk semua harga dari x.

Metoda Horner. Penggunaan dari metoda Newton-Raphson untuk mencari nilai dari akar suatu
persamaan tidak linear, kita memerlukan turunan dari fungsi yang hendak dievaluasi akarnya. Metoda
berikut adalah metoda Horner yang digunakan untuk menghitung akar dari suatu persamaan tidak
linear. Teorema berikut akan mengantarkan kita kepada Metoda ini.

Teorema (Horner). Katakanlah bahwa


f(x) = a0 + a1x + a2x2 + a3x3 + . . . + anxn = 0 dan bn = an
Jika
bk= ak + bk+1x0 untuk k = n – 1, n – 2, . . ., 2, 1, 0
maka
b0 = f(x0). Lebih-lebih lagi jika
g(x) = b1 + b2x + b3x2 + . . . + bnxn-1 = 0,
maka
f(x) = (x - x0)g(x) + b0 (36)

Bukti: Berdasarkan definisi dari g(x), maka


(x - x0)g(x) + b0 = (x - x0)(b1 + b2x + b3x2 + . . . + bnxn-1) + b0
= (bnxn + bn-1xn-1 +…+ b2x2 + b1x)
-(bnx0xn-1 + bn-1x0xn-2 + … + b2x0x + b1x0) + b0
= bnxn + (bn-1 – bnx0)xn-1 +…+( b1 - b2x0) x +(b0 - b1x0)

Berdasarkan hypothesis, bn = an dan bk - bk + 1x0 = ak, maka dengan demikian

f(x) = (x - x0)g(x) + b0 dan b0 = f(x0)

Berdasarkan Teorema ini kita dapat menyusun Algoritma Horner seperti yang diperlihatkan dalam
Agoritma berikut ini.

Algoritma. Algoritma Horner


Algoritma ini digunakan untuk mengevaluasi polinom f(x) = a0 + a1x + a2x2 + a3x3 + . . . + anxn
dan turunannya
Input derajat polinom, n, koefisien dari polinom, a0, a1, a2, …, an
Step 1. Set z = an
w = an
Set j = n – 1;
Step 2. Hitung z = x0z + aj;
w = x0w + z;
Step 3. Apakah j = 1? Jika tidak kurangkan indeks j satu poin yaitu j = j -1 dan kembali ke Step 2.
Jika ya, ke Step 4.
Step 4. Set z = x0z + a0
Step 5. Output (z, w); Proses komputasi selesai. STOP

Problema lain yang terkait penerapan metoda Newton bagi polinom menyangkut kemungkinan dari
polinom untuk mempunyai akar-akar yang kompleks, sekalipun semua koefisien dari polinom adalah
bilangan real. Jika hampiran awal menggunakan metoda Newton merupakan bilangan real, semua
hampiran berikutnya akan berupa bilangan real.
Salah satu cara untuk mengatasi kesulitan ini adalah memulai dengan hampiran awal yang tidak real
dan lakukan semua komputasi dengan menggunakan aritmetik kompleks. Alternatif ini berbasiskan
Teorema berikut ini.

Teorema. Jika w = p + qi adalah akar kompleks dengan multisiplitas m dari polinom f, maka
ẃ= p−qi adalah juga akar dengan multisiplitas m dari polinom f dan (x2 -2ax + a2 + b2)m adalah suatu
factor dari f.

Metoda Müller.
Suatu pembagian sintetis yang melibatkan polinom kuadratik dapat disiapkan untuk menghampiri
polinom dengan pemfaktoran sehingga satu suku akan menjadi polinom kuadratik yang memiliki akar
kompleks yang merupakan hampiran dari akar polinom asli.
Sekarang kita akan melihat pada metoda yang pertama kalinya diberikan oleh D.E. Muller di tahun
1956. Metoda yang diusulkan ini dapat digunakan untuk setiap problema pencarian akar, tapi
khususnya bermanfaat untuk pencarian akar dari polinom.
Metoda Muller merupakan generalisasi dari metoda Secant. Metoda Secant bermula dengan dua nilai
penghampiran, yaitu x0 dan x1 dan menentukan hampiran berikutnya sebagai perpotongan antara garis
yang melalui (x0, f(x0)) dan (x1, f(x1)) dengan sumbu-x, perhatikan Gambar 5. Metoda Muller
menggunakan tiga hampiran awal yakni x0, x1, dan x2 dan kemudian menentukan hampiran berikut x3
dengan mempertimbangkan perpotongan antara sumbu-x dengan parabola melalui tiga titik hampiran,
yakni (x0, f(x0)), (x1, f(x1)) dan (x2, f(x2)) perhatikan Gambar 5 (b).
f(x0)
f(x1)

x0 x1 x0 x1 x2 x3

(a) (b)
Gambar 5

Penurunan metoda Muller ini dimulai dengan mempertimbangkan polinom kuadratik berikut ini:
f(x) = a(x – x2)2 + b(x – x2) + c

Polinom kuadratik ini melewati titik-titik (x0, f(x0)), (x1, f(x1)) dan (x2, f(x2)). Konstanta a, b, dan c
dapat ditentukan dari kondisi-kondisi
f(x0) = a(x0 – x2)2 + b(x0 – x2) + c

f(x1) = a(x1 – x2)2 + b(x1 – x2) + c

f(x2) = a(x2 – x2)2 + b(x2 – x2) + c


dari kondisi di atas, kita dapat menyimpulkan bahwa
c = f(x2) (37)
2 2
( x0 −x 2) [ f ( x1 ) −f ( x 2 ) ]− ( x1 −x2 ) [ f ( x 0 ) −f ( x 2 ) ]
b= (38)
( x 0−x 2 )( x1−x 2 ) ( x 0−x 1 )
Dan
( x1 −x2 ) [ f ( x0 ) −f ( x 2 ) ] −( x 0−x 2 ) [ f ( x 1 )−f ( x2 ) ]
a= (39)
( x 0−x 2 ) ( x1 −x2 ) ( x 0−x 1 )
Untuk menentukan x3, akar dari f kita menerapkan formula kuadratik. Karena problema galat
pembulatan yang disebabkan karena pengurangan dari bilangan yang hampir sama, bagaimanapun
kita akan menggunakan formula berikut ini.
−2 c
x 3−x 2= (40)
b ± √b 2−4 ac
Hal ini memberikan dua kemungkinan untuk x3 bergantung kepada tanda dari suku radikal dalam
persamaan (39). Dalam metoda Muller, tanda dipilih untuk sesuai dengan tanda dari b. Memilih dalam
cara ini, penyebut akan merupakan yang terbesar dan akan memberikan hasil x3 yang dipilih dekat
dengan akar dari f ke x2. Dengan demikian
−2 c
x 3=x 2− (41)
b+ sign ( b ) √ b2 −4 ac
di mana a, b dan c diberikan dalam persamaan-persamaan (37) sampai (39).
Dengan demikian kita dapat menyusun algoritma untuk metoda Muller ini berdasarkan persamaan-
persamaan yang diturunkan di atas yakni persamaan (37) hingga (41)
Sekali x3 ditentukan, algoritma akan direinisialisasi menggunakan x1, x2, dan x3 sebagai pengganti x0,
x1, dan x2 untuk menemukan nilai hampiran x4. Demikian seterusnya sehingga suatu kesimpulan yang
memuaskan ditemukan. Suatu catatan yang perlu dibuat bahwa dalam setiap iterasi, radikal √ b2−4 ac
selalu dilibatkan dan inilah yang memungkinkan metoda ini untuk menghampiri akar-akar kompleks
juga.
Algoritma yang disusun berdasarkan metoda ini dapat dilihat dalam Algoritma berikut ini
Algoritma. (Metoda Muller)
Algoritma ini digunakan untuk mencari akar-akar dari persamaan tidak linear (polynom) dengan tiga
hampiran awal x0, x1, dan x2. Karena perhitungan bersifat iteratif, maka diperlukan syarat konvergensi
eps = 0.000001 (sebagai contoh) dan jumlah iterasi maksimum, maxIter.

Step 1. Hitung h1 = x1 – x0;


h2 = x2 – x1;
delta1 = [f(x1) – f(x0)]/h1;
delta2 = [f(x2) – f(x1)]/h2;
d = [delta2 – delta1]/(h2 + h1);
Set i = 2;
Step 2. Hitung b = delta2 + h2d;
Disk = (b2 – 4f(x2)d)1/2;
Step 3. Jika abs(b – Disk) < abs(b + Disk), maka Set E = b + Disk
Kalau yang lain yang terjadi Set E = b – Disk
Step 4. Hitung h = -2f(x2)/E;
t = x2 + h;
Step 5. Jika abs(h) < eps, maka Keluaran(t). Proses Komputasi Selesai. STOP.
Step 6. Set x0 = x1; (Langkah ini merupakan persiapan untuk iterasi berikutnya)
x1 = x2;
x2 = t;
Step 7. Hitung h1 = x1 – x0;
h2 = x2 – x1;
delta1 = [f(x1) – f(x0)]/h1;
delta2 = [f(x2) – f(x1)]/h2;
d = [delta2 – delta1]/(h2 + h1);
Step 8. Apakah i = maxIter? Jika tidak, naikkan counter iterasi satu poin, yaitu i = i + 1 kembali ke
Step 2
Jika ya, jumlah iterasi melebihi jumlah iterasi maksimum. Komputasi gagal. STOP

Hal lain yang perlu kita catat di sini, bahwa metoda Muller ini tidak seefisien seperti metoda Newton.
Orde konvergensinya sekitar 1.84 sedangkan metoda Newton 2.0. Tapi yang jelas metoda ini lebih
baik ketimbang metoda Secant dimana orde konvergensinya 1.62.
Secara umum deflasi biasanya digunakan bersama-sama metoda Muller ketika suatu akar hampiran
diperoleh. Setelah penghampiran terhadap akar dari persamaan yang telah dideflasi diperoleh,
gunakan entah metoda Muller atau metoda Newton dengan akar ini sebagai hampiran awal. Ini akan
menjamin bahwa akar yang dihampiri merupakan solusi dari persamaan yang sesungguhnya, bukan
bagi persamaan yang dideflasi.
Metoda berorde tinggi yang lainnya juga tersedia untuk menentukan akar dari polinom. Ada metoda
lain seperti metoda Bairstow dan metoda Laguerre.
Metoda Bairstow.
Perhatikan yang diberikan di persamaan (35) di atas. Karena persamaan ini adalah suatu persamaan
polinom berorde n, maka berdasarkan Teorema kita memastikan bahwa persamaan ini mempunyai n
akar. Metoda umum yang dipakai untuk melokalisir akar-akar dari polinom adalah dengan
menemukan semua factor kuadratiknya. Faktor-faktor kuadratik itu akan mempunyai bentuk

g(x) = x2 + αx + β (42)
Katakanlah kita mempunyai suatu persamaan lain yaitu h(x) dan R(x), yaitu
h(x) = b2 + b3x + b4x2 + … + bn-1xn-3 + bnxn-2 (43)

dan
R(x) = b0 + b1x (44)

Sehingga polinom f(x) di persamaan (35) dapat dinyatakan dalam bentuk perbanyakan dari persamaan
(42) dan (43) yang kemudian ditambahkan dengan persamaan (44), yakni
f(x) = g(x)h(x) + R(x) (45)
Yang memberikan
f(x) = (x2 + αx + β)( b2 + b3x + b4x2 + … + bn-1xn-3 + bnxn-2) + b0 + b1x (46)
Dengan menyamakan koefisien yang sesuai untuk x dan pangkatnya, maka kita akan memperoleh
sistem persamaan berikut ini.
an = bn
an-1 = bn-1 + αbn
an-2 = bn-2 + αbn-1 + βbn
an-3 = bn-3 + αbn-2 + βbn-1
. . . . . .
. . . . . . (47)
. . . . . .
a3 = b3 + αb4 + βb5
a2 = b2 + αb3 + βb4
a1 = b1 + αb2 + βb3
a0 = βb2
Persamaan (47) ini bisa diselesaikan untuk mendapatkan koefisien-koefisien bn, bn-1, bn-2, …, b2, b1, b0
sebagai berikut:
bn = an
bn-1 = an-1 - αbn
bn-2 = an-2 - αbn-1 - βbn
bn-3 = an-3 - αbn-2 - βbn-1
. . . . . .
. . . . . . (48)
. . . . . .
b3 = a3 - αb4 - βb5
b2 = a2 - αb3 - βb4
b1 = a1 - αb2 - βb3
b0 = a0 - βb2
Yang kita butuhkan adalah g(x) sebagai faktor kuadratik eksak dari f(x), dengan demikian sisa R(x)
seperti yang diberikan dalam persamaan (44) adalah nol. Dan ini mengisyaratkan
b0 = 0 dan b1 = 0 (49)

Dapat kita lihat dari persamaan (48), bahwa b0 dan b1 adalah fungsi dari α dan β. Kalau sekarang kita
katakan bahwa α^ dan ^β masing-masing menyatakan nilai yang benar dari α dan β, persamaan (49)
akan memberikan
b0(α^ , ^β ) = 0 dan b1(α^ , ^β ) = 0 (50)
Jika kita mengambil α dan β sebagai hampiran awal dari α^ dan ^β , kita akan mencari harga-harga yang
diperbaiki yaitu α + dα dan β + dβ, yang mendorong persamaan (50) mendekati nol. Dengan
mengekspansikan b0 dan b1 dalam deret Taylor di sekitar α dan β, kita akan mendapatkan
b 0 ( α +dα , β +dβ )=b 0 ( α , β ) + Δ α ( ∂∂bα )+ Δ β ( ∂∂bβ )
0 0
(51)

dan

b 1 ( α + dα , β+ dβ )=b1 ( α , β ) + Δ α ( ∂∂bα )+ Δ β ( ∂∂bβ )


1 1
(52)

di mana turunan parsial dievaluasi pada α dan β, dan Δα dan Δβ yang diberikan oleh:
Δ α= α^ −α dan Δ β = ^β−β (53)
Dengan membuat persamaan (51) dan (52) menjadi nol, yaitu dengan mengambil anggapan bahwa
α +dα ≈ α^ dan β +dβ ≈ β^ , kita akan memperolah

Δα ( ∂∂bα )+ Δ β ( ∂∂bβ )=−b ( α , β )


0 0
0 (54)

dan

Δα ( ∂∂bα )+ Δ β( ∂b∂ β )=−b ( α , β )


1 1
1 (55)

Dapat dilihat bahwa evaluasi turunan parsial dari b0 dan b1dalam persamaan-persamaan (54) dan (55)
menghendaki perhitungan rekursif turunan-turunan parsil dari semua bi, untuk i = n, n-1, …, 2, 1, 0
dalam persamaan (48), yaitu
∂ bn
=0
∂α
∂ bn
=0
∂β
∂ bn−1 ∂ bn
=−b n−α =−b n
∂α ∂α
∂ bn−1 ∂ bn
=α =0
∂β ∂β
∂ bn−2 ∂ bn−1 ∂ bn
=−b n−1 −α −β =−b n−1+ α bn
∂α ∂α ∂α
∂ bn−2 ∂ bn−1 ∂ bn
=−α −b n−β =−bn
∂β ∂β ∂β
. . . . . .
. . . . . . (56)
. . . . . .
∂ b2 ∂ b3 ∂ b4
=−b3 −α −β
∂α ∂α ∂α
∂ b2 ∂ b3 ∂ b4
=−α −b 4−β
∂β ∂β ∂β
∂ b1 ∂ b2 ∂ b3
=−b2 −α −β
∂α ∂α ∂α
∂ b1 ∂ b2 ∂ b3
=−α −b 3−β
∂β ∂β ∂β
∂ b0 ∂ b2
=−β
∂α ∂α
∂ b0 ∂ b2
=−b 2−α
∂β ∂β

Disini semua turunan parsil dievaluasi di (α, β). Sekali turnan-turunan parsil dari b0 dan b1 terhadap α
dan β dievaluasi, persamaan (57) dapat diselesaikan untuk Δα dan Δβ dan kita akan memperoleh

∆ α=
b1 ( ∂∂bβ )−b ( ∂∂bβ )
0
0
1

(57)
∂ b 0 ∂b 1 ∂ b 1 ∂ b 0
( −
∂α ∂ β ∂α ∂ β )
∆ β=
b0 ( ∂∂bα )−b ( ∂∂bα )
1
1
0

(58)
∂b 1 ∂b 0 ∂ b 0 ∂b 1
( −
∂ β ∂α ∂ β ∂α )
Sekali Δα dan Δβ diketahui, penghampiran baru untuk mengoreksi harga-harga dari α^ dan ^β masing-
masing dihitung sebagai α + Δα dan β + Δβ.
Faktor kuadratik dari polinom, yaitu x2 + αx + β dan akar-akarnya dihitung secara iterative dengan
menggunakan algoritma yang disusun berdasarkan metoda yang telah diturunkan di atas yang
diberikan oleh Algoritma Bairstow.

Algoritma . Bairstow.

Step 1. Pilihlah nilai hampiran untuk α dan β, masing-masing untuk α^ dan ^β . Set i = 1
Step 2. Hitunglah koefisien-koefisien b1 dan b0 dengan menggunakan persamaan (48)
Step 3. Hitung turunan-turunan parsial dari b1 dan b0 masing-masing terhadap α dan β dengan
menggunakan persamaan (56)
Step 4. Selesaikan persamaan (57) dan (58) untuk Δα dan Δβ.
Step 5. Hitung penghampiran baru untuk α^ dan ^β sebagai α + Δα dan β + Δβ.
Step 6. Apakah Δα dan Δβ sudah cukup kecil (lebih atau sama dengan batas toleransi eps)?
Jika belum, naikkan counter itersi satu poin, yaitu i = i + 1, dan kembali ke Step 2.
Jika sudah, lanjut ke Step 7.
Step 7. Gunakan nilai-nilai α dan β yang telah konvergen ke α^ dan ^β untuk menghitung akar
persamaan f(x) dari faktor kuadratik x2 + α^ x + ^β = 0 dengan menggunakan rumus abc.
Carilah polinom baru yang mempunyai derajat n – 2, dan kemudian cari faktor kuadratik yang
baru dan ulangi kembali dari Step 1.

Metoda Bairstow ini dapat digunakan untuk menentukan akar-akar real, kompleks atau yang berulang
dari fungsi polinom. Namun demikian seringkali kita terkendala dengan pemilihan hampiran awal.
Kelemahan lainnya, bahwa akar yang dihitung tidak terlalu akurat.
MATRIKS DAN SISTEM
PERSAMAAN-PERSAMAAN LINEAR

PENDAHULUAN

Penggunaan dari matriks sangat luas dalam sains dan rekayasa. Dalam Bab ini hanya akan dibicarakan
beberapa contoh saja. Dalam industri proses, misalnya, dalam industri proses kmia, sebagai contoh
adalah industri semen. Dalam industri semen, dengan bahan baku seperti batu kapur, tanah liat, tanah
pasir, pasir besi dan material korektif seperti sandy clay. Mineral-mineral dalam terak semen (clinker)
terdiri atas C3S (tricalciumsilicate) C2S (diciumsilicate), C3A (tricalciumaluminate) dan C4AF. Untuk
ini, C menyatakan CaO, S menyatakan SiO 2, A menyatakan Al2O3 dan F menyatakan Fe2O3. Semen
dengan tipe harus terbuat dari terak (clinker) dengan kandungan C 3S, C2S, C3A, dan C4AF tertentu.
Sebagai contoh untuk penggunaan khusus seperti oil well cement, kandungan C 3S, C2S, C3A, dan
C4AF, masing-masing adalah: Untuk menyederhanakan masalah, kita membuat proses pembuatan
clinker untuk oilwell cement sebagai kotak hitam. Kita hanya akan meninjau suatu kotak dimana
semua proses terjadi dan hanya ada input empat bahan baku dan satu keluaran yang diketahui yang
dipecah berdasarkan CaO, SiO2, Fe2O3, Al2O3 dan MgO sebagai pengganggu. Untuk itu perhatikan
Gambar 1. Aliran masuk terbagi atas empat dengan informasi kandungan CaO, SiO 2, Fe2O3 dan Al2O3.
Bila laju massa batu kapur F1, laju massa pasir F2, laju massa kaolin F3, laju massa pasir besi F4,
dan laju massa bahan korektif F5, semuanya dalam ton per jam. Sedangkan kompisi-komposisi CaO
dari bahan pertama a11, bahan kedua a12, bahan ke tiga a13, bahan keempat a14 dan bahan kelima adalah
a15. Kompoisisi-komposisi SiO2 dari bahan pertama a12, bahan kedua a22, bahan ke tiga a32, bahan
keempat a42 dan bahan kelima adalah a52. Komposis-komposisi Al2O3 dari bahan pertama a13, bahan
kedua a23, bahan ke tiga a33, bahan keempat a43 dan bahan kelima adalah a53. Komposis-komposisi
Fe2O3 dari bahan pertama a14, bahan kedua a24, bahan ke tiga a34, bahan keempat a44 dan bahan kelima
adalah a54. Komposis-komposisi MgO dari bahan pertama a15, bahan kedua a25, bahan ke tiga a35,
bahan keempat a45 dan bahan kelima adalah a55.

Sekarang kita tinjau


F1

F2

F3 Clinker (laju FC)

F4

F5

Gambar 1. Neraca Massa pada pembuatan Clinker di Pabrik Semen

Sekarang kita akan melihat neraca dari setiap komponen

Untuk CaO :: a11F1 + a12F2 + a13F3 + a14F4 + a15F5 = c1FC

Untuk SiO2 :: a21F1 + a22F2 + a23F3 + a24F4 + a25F5 = c2FC

Untuk Al2O3 :: a31F1 + a32F2 + a33F3 + a34F4 + a35F5 = c3FC

Untuk Fe2O3 :: a41F1 + a42F2 + a43F3 + a44F4 + a45F5 = c4FC

Untuk MgO :: a51F1 + a52F2 + a53F3 + a54F4 + a55F5 = c5FC

Karena semua besaran yang menyangkut komposisi diketahui dan laju produksi clinker diketahui,
maka kita akan mempunyai lima persamaan linear dengan lima anu yang akan dihitung, yaitu F1, F2,
F3, F4, dan F5. Sistem persamaan linear itu adalah:

a11F1 + a12F2 + a13F3 + a14F4 + a15F5 = c1FC

a21F1 + a22F2 + a23F3 + a24F4 + a25F5 = c2FC

a31F1 + a32F2 + a33F3 + a34F4 + a35F5 = c3FC

a41F1 + a42F2 + a43F3 + a44F4 + a45F5 = c4FC

a51F1 + a52F2 + a53F3 + a54F4 + a55F5 = c5FC


Sekarang kalau kita mengambil c1FC = b1, c2FC = b2, c3FC = b3, c4FC = b4, dan c5FC = b5 dan F1, F2, F3,
F4, dan F5 masing-masing diganti menjadi x1, x2, x3, x4, dan x5, maka kita akan mempunyai system
persamaan linear berikut ini.

a11x1 + a12x2 + a13x3 + a14x4 + a15x5 = b1

a21x1 + a22x2 + a23x3 + a24x4 + a25x5 = b2

a31x1 + a32x2 + a33x3 + a34x4 + a35x5 = b3

a41x1 + a42x2 + a43x3 + a44x4 + a45x5 = b4

a51x1 + a52x2 + a53x3 + a54x4 + a55x5 = b5

atau dalam bentuk matriks dan vektor persamaan ini dapat dituliskan kembali sebagai:

Ax = b

Dimana

a 11 a 12 a13 a 14 a15 x1 b1

[
a21
A= a31
a41
a51
a 22
a 32
a 42
a 52
a23
a33
a43
a53
a 24
a 34
a 44
a 54
a25
a35
a 45
a55
] () ()
,
x2
x= x3
x4
x5
dan
b2
b= b3
b4
b5

Contoh berikutnya adalah rangkaian listrik sederhana seperti yang ditunjukan oleh Gambar 2 berikut
ini.

R1

+
V1 i1
-

R2 R3
i2
+
R4 V2
-

i3 R6

R5

-
V3

R7 i4 +

R8

Gambar 2. Rangkaian Listrik Hipotetik Sederhana

Dengan menggunakan Hukum Kirchhof kedua yang mengatakan bahwa jumlah voltase (tegangan
listrik) dalam suatu sirkit tertutup adalah nol, maka diperoleh bahwa:

Untuk mesh sirkit pertama : V1 – i1(R1 – R3) - i1R2 + i2R2 = 0

Untuk mesh sirkit kedua : -i2R5 – i2R2 + i1R2 - i2R7 + i4R7 = 0

Untuk mesh sirkit ketiga : -V2-i3R6 + i4R6 + i1R3 - i3R3 = 0

Untuk mesh sirkit keempat : V3 - i4R8 + i4R7 + i2R7 - i4R6 + i3R6 = 0

Karena sumber listrik DC diketahui tegangannya, yaitu V1, V2 dan V3, maka kita dapat menyusun
system persamaan dalam bentuk matriks dan vektor sebagai berikut

−( R1 + R 2 + R3 ) R2 R3 0 i1

[ ]( ) (
−V 1
R2
R3
0
− ( R 2 + R4 + R5 + R 7 )
R4
R7
R4
−( R3 + R 4 + R6 )
R6
R7
R6
− ( R6 + R 7 + R 8 )
i2
i3
i4
= 0
V2
−V 3
)
Contoh berikutnya adalah lima reactor kimia yang disusun secara seri dengan pengembalian seperti
yang diperlihatkan dalam Gambar 3. Reaktor-reaktor ini dioperasikan dalam keadaan tunak (steady
state). Reaksi yang terjadi dalam setiap reactor adalah reaksi kimia A Produk dengan laju
reaksi berorde satu terhadap reaktan A, yaitu r = kCA. Informasi dari volume setiap reactor, konstanta
laju reaksi di setiap reactor dan informasi lain diberikan dalam Tabel 1. Sedangkan asumsi yang
diambil adalah bahwa pengadukan sempurna.

V1, CA1 V1, CA2 V1, CA3 V1, CA4 V1, CA5

CA1 CA2 CA3 CA4 CA5

Gambar 3. Lima buah Reaktor Kimia yang disusun secara seri dengan pengembalian pada reactor

kedua hingga kelima

Table 1. Informasi tentang sistem

reactor dalam Gambar 3.

Reakto Volume (m3) Ki, jam-1 Karena pengadukan diasumsikan sempurna maka konsentrasi
r A yang berada di dalam reaktor akan sama dan ini berarti
konsentrasi A dalam keluaran reaktor akan sama dengan
1 800 0.10 konsentrasi A dalam reaktor. Laju umpan yang masuk adalah
2 1200 0.20 1000 l perjam, laju umpan yang dikembalikan kesetiap reactor
4, 3, dan 2 adalah 150 liter perjam Untuk setiap reaktor dalam
3 200 0.35 sistem ini berlaku neraca massa, yaitu:
4 600 0.40

5 400 0.30 Laju Massa A Laju massa A Laju A yang


hilang Laju akumulasi
yang masuk - yang keluar - karena reaksi di = massa A

ke reaktor dari reaktor dalam reactor di dalam reactor

Tetapi karena asumsi operasi adalah steady state, maka laju akumulasi adalah nol, sehingga

Laju Massa A Laju massa A Laju A yang hilang

yang masuk - yang keluar - karena reaksi di = 0

ke reaktor dari reaktor dalam reactor

Dari data-data ini kita dapat menurunkan sistem persamaan linear untuk sistem reaktor ini.

Penggunaan yang lain dari penyelesaian sistem persamaan linear adalah dalam bidang struktur,
sebagai contoh perhatikan Gambar 4.

Berdasarkan informasi yang diberikan oleh Gambar 1 dan matriks yang dihasilkan, dan Gambar 3
dengan matriks yang dihasilkan memberikan kesimpulan bahwa hasil pemodelan steady-state
flowsheet dari suatu system proses kimia untuk kepentingan perancangan pabrik kimia. Dalam adalah
dalam penyelesaian masalah numerik sendiri sistem persamaan linear digunakan, misalnya dalam
penyelesaian persamaan diferensial biasa dengan nilai batas dengan menggunakan metoda beda
hingga dan elemen hingga akan mendapatkan model penyelesaian yang berbentuk

Penambahan dan Pengurangan Matriks. Penambahan dari dua matriks A dan B (dengan ketentuan
ukuran dari kedua matriks ini harus sama!) akan menghasilkan matriks C dengan ukuran yang sama
dan elemen-elemennya sama dengan penjumlahan elemen-elemen dengan indeks yang sama dari
matriks A dan B. Sedangkan pengurangan dari dua matriks A dan B akan menghasilkan matriks C
dengan ukuran yang sama dan elemen-elemennya sama dengan pengurangan elemen-elemen dengan
indeks yang sama dari matriks A terhadap B. Kita dapat menuliskan kedua operasi ini sebagai berikut:
c11 c 12 . .. c 1n a11 a 12 . .. a1 n b11 b12 ... b1 n

( )( )( )
c21 c 22 . .. c 2n a21 a 22 . .. a2 n b21 b22 ... b 2n
C=A±B= . . . .. . =. . . .. . ±. . ... .
. . . .. . . . . .. . . . ... .
. . . .. . . . . .. . . . ... .
cm 1 cm 2 . .. c mn am 1 am 2 . .. amn bm 1 bm 2 ... b mn

a 11±b 11 a 12±b12 .. . a1 n ±b1 n

( )
a 21±b21 a 22±b22 .. . a 2n ±b2 n
=. . .. . .
. . .. . .
. . .. . .
a m 1±bm 1 a m 2±bm 2 .. . a mn±b mn
(1)

Kita dapat membuat prosedur komputasi untuk mendapatkan matriks C sebagai hasil penambahan
atau pengurangan dari matriks A dengan matriks B, sebagai berikut.

Prosedur komputasi untuk mendapatkan matriks C = A ± B.

Input: semua elemen dari mtriks A dan semua elemen B

Step 1. Set i =1

Step 2. Set j =1

Step 3. cij = aij ± bij; Output(cij)

Step 4. Apakah j = n?

Jika tidak, naikkan counter j satu poin, yakni j = j + 1 dan kembali ke Step 3

Jika ya, lanjutkan ke Step 5

Step 5. Apakah i = m?

Jika tidak, naikkan counter i satu poin, yakni i = i + 1 dan kembali ke Step 2

Jika ya, proses komputasi selesai. STOP

Transpos dari suatu Matriks.Transpos dari suatu matriks A adalah suatu matriks B yang baru
sebagai hasil memutar matriks A pada diagonalnya sebagai sumbu. Secara matematis, B adalah hasil
transpose dari matriks A, jika

B = A T.

Atau jika
a 11 a12 .. . a 1n

( )
a21 a22 .. . a 2n
A= . . .. . .
. . .. . .
. . .. . .
am 1 am 2 .. . amn

Maka,

a11 a21 ... am 1

( )
a 12 a22 ... am 2
B= AT = . . ... .
. . ... .
. . ... .
a1n a2 n ... amn

Kita dapat membuat prosedur komputasi untuk mendapatkan matriks B sebagai hasil transpose dari
matriks A, sebagai berikut.

Prosedur komputasi untuk mendapatkan matriks B sebagai hasil transpose dari matriks A.

Input: semua elemen dari mtriks A

Step 1. Set i =1

Step 2. Set j =1

Step 3. bji = aij; Output(bji)

Step 4. Apakah j = n?

Jika tidak, naikkan counter j satu poin, yakni j = j + 1 dan kembali ke Step 3

Jika ya, lanjutkan ke Step 5

Step 5. Apakah i = m?

Jika tidak, naikkan counter i satu poin, yakni i = i + 1 dan kembali ke Step 2

Jika ya, proses komputasi selesai. STOP

Perkalian Matrik. Perkalian antara suatu matrik A dengan suatu matrik B akan menghasilkan suatu
matrik baru dengan elemen-elemennya adalah hasil dari perkalian baris tertentu matrik A dan kolom
tertentu dari matrik B. Hal ini mengatakan kepada kita bahwa syarat yang harus dipenuhi agar
perkalian A dan B terjadi adalah dimensi kolom dari matrik A harus sama dengan dimensi baris dari
matrik B.
Mengacu kepada konsep vektor, yaitu perkalian skalar dari dua buah vektor akan memberikan hasil
skalar, maka matrik baris dikali dengan matrik kolom akan menghasilkan suatu skalar. Sebagai contoh
katakanlah matrik A berukuran 1  n (vektor baris) dan matrik B berukuran n  1(vektor kolom),
yaitu

b1

()
b2
.
.
.
bn
a = ( a1 a2 . . . an ) dan b =

Dengan demikian, maka

a.b = a1.b1 + a2.b2 + . . . an . bn

Konsep inilah yang mendasari pendefinisian daripada perkalian matrik. Kalau kita tinjau matrik
sebagai suatu himpunan, maka matrik adalah himpunan vektor-vektor kolom

Sekarang, katakanlah bahwa B*1, B*2, …, B*n menyatakan kolom-kolom dari B. Dengan demikian kita
dapat menuliskan B = [B*1 B*2 … B*n], sehingga kita dapat mendefinisikan AB sebagai berikut.

AB = [AB*1 AB*2 … AB*n]

Hal ini memberikan isyarat kepada kita bahwa kolom ke-i dari matrik AB merupakan product dari A
dengan kolom ke-i dari matrik B. Komputasi dari kolom ke-i dari matrik AB hanya bergantung
kepada pengetahuan dari A dan kolom ke-i dari B. Dengan demikian setiap product dari AB*k dapat
dihitung secara independentdan karena itu dapat dihitung secara simultan pada suatu komputer paralel
yang mempunyai n arithmetic units. Persamaan di atas, jumlah kolom dari matrik A harus sama
dengan jumlah baris dari B. Jika matrik A berukuran m  n, maka ukuran matrik B haruslah n  p.
Jadi dengan demikian, matrik AB mempunyai ukuran mp. Untuk matrik-matrik yang demikian ini
dikatakan bahwa A dan B adalah conformable bagi product AB. Dalam product dari AB, A disebut
sebagai premultiplier dan B disebut postmultiplier.

Sekarang anggaplah bahwa C=AB dan cij adalah entri pada posisi (i,j) dari C. Kita dapat mengatakan
bahwa cij berada dalam baris ke-i dan baris ke-j dari matrik AB. Juga baris ke-i dari A dan kita beri
simbol Ai*. Dengan demikian, kita dapat menarik kesimpulan bahwa:
cij = Ai* B*j

Dengan B*j adalah kolom ke-j dari matrik B. Atau kalau ditulis dalam bentuk yang diperluas,

¿ ¿ ¿ . .. ¿ ¿ ¿ . .. b j1 ¿
. .. ¿

( )( )
¿ ¿ ¿
¿ ¿ . .. b j2 ¿
. . . . .. .
. . . .. . ¿ ¿ . .. b j3 ¿
ai 1 ai 2 a i3 . . a in . . . .. . .
. . . . .. . . . .. .
. . . . .. ¿ . . . .. . .
. . . . .. . . . .. . .
¿ ¿ ¿ . .. ¿ ¿ ¿ ¿ b jn ¿
AB =

Dengan demikian, kita akan memperoleh

cij = ai1b1j + ai2b2j + ai3b3j + … + ainbnj

Atau dalam notasi sigma,

n
c ij= ∑ aik b kj
k=1

Contoh. Diketahui matrik Am×n dan Bn×2. Jika matrik C adalah hasil perkalian dari A dan B, carilah
entri (2,1) dari matrik C.

Jawab. Hasil perkalian matrik Am×n dengan Bn×2 menghasilkan matrik Cm×2. Secara umum kita dapat
menghitung cij = Ai‫٭‬.B‫٭‬j. Sehingga entri ke (2,1) dari C adalah c21 = A2‫٭‬.B1‫٭‬, yaitu

¿ ¿ . .. ¿ ¿ ¿ .. . ¿ b11 ¿ . .. ¿

( )( )( )
c 21 ¿ . .. ¿ a21 a22 .. . a2n b21 ¿ . .. ¿
. . . .. . =. . .. . . . . .. .
. . . .. . . . .. . . . . .. .
. . . .. . . . .. . . . . .. .
¿ ¿ . .. ¿ ¿ ¿ .. . ¿ br 1 ¿ . .. ¿
A2‫٭‬.B1‫= ٭‬
Atau secara ringkas:

n
∑ a2 k b k 2
c21 = A2‫٭‬B1‫=٭‬ k =1 = a21b11 + a22b12 + a23b13 + … + a2nb1n

Contoh berikut akan memberikan insight bagi kita mengenai perkalian matrik secara utuh. Dalam
contoh ini kita akan menghitung perkalian A dan B, yang masing-masing berukuran 35 dan 53
dengan menggunakan persamaan

Contoh. Carilah AB untuk matrik-matrik berikut:

0 −1 2

A=
(
1 2 0 −1 3
0 2 4 1 2
3 1 0 5 −1 ) B =
( )
3 1 4
1 2 1
5 0 3
−1 3 2

Jawab. Karena A mempunyai lima buah kolom dan B mempunyai lima baris, berarti matrik A dan B
adalah conformable dan AB ada dan berukuran 3  3. Untuk mencari entri-entri dari AB, kita akan
menghitung product antara A dengan setiap kolom dari kedua kolom B, yaitu

AB*1 =
(
1 2 0 −1 3
0 2 4 1 2
3 1 0 5 −1 ) ()
3
1
5
−1
=
−2
()
13
29

−1

AB*2 =
(
1 2 0 −1 3
0 2 4 1 2
3 1 0 5 −1 ) ()
1
2
0
3
=
10
()
16
−5
2

AB*3 =
(
1 2 0 −1 3
0 2 4 1 2
3 1 0 5 −1 ) ()
4
1
3
2
=
13
()
17
23

Dengan demikian product dari AB diberikan oleh:

−2 10 13

AB = [AB*1 AB*2 AB*3] =


(13 16 17
29 −5 23 )
Yang perlu dicatat di sini, conformability dari A dan B tidaklah menjamin conformability B dan A.
Sebagai contoh, jika A adalah matrik dan B adalah vektor maka BA tidak ada. Jadi dengan demikian
kita mengatakan bahwa secara umum adalah noncomutative dan distributif atas penambahan
(distributive over addition).

Teorema. Anggap bahwa hasil kali dari AB, AC, DF, dan EF ada. Maka

(i). A(B + C) = AB + BC
(ii). (D + E)F = DF + EF
Bukti. Bukti (i) dan (ii) merupakan penerapan perkalian matrik yang sederhana. Untuk itu kami akan
meninggalkan pembuktian teorema ini sebagai latihan

Selain sifat distributive over addition, ada sifat yang lain yang dipunyai oleh perkalian matrik, yaitu
sifat associative. Sifat ini, di dalam teks dituangkan dalam bentuk teorema. Untuk mempermudah
pembuktian teorema tersebut, kita memerlukan suatu lemma untuk mempermudah pembuktian dari
teorema tersebut. Lemma ini merupakan kasus khusus, yaitu matrik yang menjadi postmultiplier
merupakan suatu matrik kolom atau vektor

Lemma. Katakanlah bahwa A conformable dengan B, dan c adalah suatu vektor yang conformable
dengan AB. Maka

A(Bc) = (AB)c

Bukti. Katakanlah vektor c = (c1 c2 … cn)T. Itu berarti bahwa:

c = c1e1 + c2e2 + … + cnen


dimana ei adalah vektor-vektor satuan dalam arah ke-i. Dengan demikian,

A(Bc) = c1(AB)e1 + c2(AB)e2 + … + cn(AB)en

Persamaan ini menunjukkan kepada kita bahwa ci(AB)ei merupakan kolom ke-i dari AB. Yaitu
(AB)ei = AB*i. Dengan memasukkan ini ke dalam persamaan di atas, maka kita peroleh:

A(Bc) = c1 AB*1 + c2AB*2 + … + cn AB*n

= A(c1B*1 + c2B*2 + … + cn B*n)

Tetapi karena Bei = B*i, maka

A(Bc) = A(c1 Be1 + c2 Be2 + … + cn Ben)

Atau

A(Bc) = A(c1 Be1 + c2 Be2 + … + cn Ben)

= A(B(c1e1 + c2 e2 + … + cn en)

= (AB)c

Dengan berbekal Lemma ini kita akan dapat membuktikan teorema yang lebih umum validitasnya di
bawah ini.

Teorema. Jika A konformable dengan B dan B dengan C, maka A juga konformabel dengan BC, AB
conformable dengan C, dan

A(BC) = (AB)C

Bukti. Kita akan menggunakan Lemma untuk membuktikan teorema ini, yaitu dengan menggantikan
c dengan C*j. Dengan demikian

A(BC) = A(B[ … C*j. ..]) = A[… B C*j. ..]


= [… A(BC*j). ..] = [… (AB)C*j. ..]

= (AB)C

Berikut ini akan dibuktikan suatu Teorema penting yaitu teorema mengenai transpose dari dua matrik
yang conformable

Teorema. Jika AB ada, demikian juga BT AT, dan

(AB)T = BT AT

Bukti. Katakanlah bahwa C = AB, D = CT = (AB)T dan F = BT AT. Kita akan memulai pembuktian
kita dengan membandingkan entri (i,j) dari matrik C, yaitu cij dengan kedua ruas persamaan di atas.
Maka kita harus membuktikan bahwa entri (j,i) dari ruas kiri persamaan yaitu dji = cij dan untuk
entri (j,i) dari ruas kanan persamaan, yaitu fji = cij. Sekarang kita mulai dengan C = AB, yaitu

a11 a12 a13 ... a1n b11 b12 . . b1 j . . b 1n


a21 a22 a23 ... a2n b 21 b22 . . b2 j . . b 2n

( )( )
. . . ... . . . . . . . . .
. . . ... . . . . . . . . .
. . . ... . bi1 b i2 . . b ij . . bin
ai 1 a i2 a i3 ... a in . . . . .
.
. . . ... . . . . . .
.
. . . ... . . . . . .
.
. . . ... . . , . . .
a n1 a n2 a n3 ... a nn bn 1 b n2 . . b nj
C = AB =

Berarti entri (i,j) dari matrik C adalah:

n
c ij= ∑ aik b kj
k=1

Itu berarti entri (j,i) dari ruas kiri persamaan , yaitu CT adalah sama dengan cij. Sekarang perhatikan
ruas kanan persamaan , F = BT AT, yang kalau ditulis dalam bentuk yang diperluas akan terlihat
seperti ini.
b11 b21 b31 ... bn 1 a11 a21 . . ai1 . . a1 n
b12 b22 b32 ... a2n a12 a22 . . ai2 . . a2 n

( )( )
. . . ... . . . . . . . . .
. . . ... . . . . . . . . .
. . . ... . a1 j a2 j . . aij . . ani
b1 j b2 j b3 j ... b nj . . . . . . .
.
. . . ... . . . . . . . .
.
. . . ... . . . . . . . .
.
. . . ... . . , . . . . .
b1 n b 2n b 3n ... b nn a1 n a 2n . . ain . . ann
F =

Persamaan ini memberikan hasil

n
f ij = ∑ b kj aik
k =1

Karena perkalian skalar komute, maka

n
f ji = ∑ aik b kj
k =1

dengan perkataan lain fji = cij.

Suatu hasil yang penting dari perkalian matrik adalah perkalian matrik A yang berorde m  n dengan
matrik kolom yang akan menghasilkan matrik kolom atau vektor, yaitu

Ax = b

Atau kalau ditulis dalam bentuk yang diperluas, adalah

a11 a12 .. . a1 n x1 b1

( ) () ()
a21 a22 .. . a 2n x2 b2
. . .. . . . .
. . .. . . . .
. . .. . . . .
a m1 am 2 .. . amn xn bm
=

Yang tidak lain merupakan sistem persamaan linear dengan m persamaan dan n anu, yaitu:
a11x1 + a12x2 + ... + a1nxn = b1

a21x1 + a22x2 + ... + a2nxn = b2

... ... … ...

... ... … ...

am1x1 + am2x2 + ... + amnxn = bm

Sebelum kita menanjak kepada teorema-teorema dasar perkalian matrik dengan vektor, kita akan
mebuktikan satu teorema yang tidak kalah pentingnya, yaitu:

Teorema. Aek merupakan kolom ke-k dari matrik A.

Bukti. Karena vektor ek adalah vektor dengan elemen-elemennya bernilai nol terkecuali elemen ke-k
bernilai 1. Sehingga

A*k ek = ai1.0 + ai2.0 + … + aik.1 + … ain.0 = aik

Karena subscript k menyatakan bilangan bulat antara 1 hingga n, karena itu:

ai 1

¿¿ ()
ai 2
.
.
.
ain
Aek = = (A*k ek) = (aik) =

Berikut ini akan dibuktikan teorema dasar yang mendukung uraian lebih lanjut mengenai perkalian
antara matrik dan vektor. Hal ini penting karena pada kenyataannya perkalian antara matrik dan
vektor merepresentasikan sistem persamaan linear yang kegunaannya sangat luas.

Teorema : Jika A adalah suatu matrik berukuran m  n, x dan y adalah vektor, dan k dan l masing-
masing adalah skalar. Maka

a. A ( kx ) = kAx
b. A (x + y) = Ax + Ay
c. Ix = x
d. A (k x + l y ) = kAx + lA y

Bukti.
a. A(kx) = ¿¿ ¿¿ ¿¿ = = k = k(Ax)

b. A (x + y) = ¿ ¿¿ ¿¿
(x + y) = =

= ¿¿ = Ax + Ay

e e x x1
1T 1T

( ) ( ) ()
e T e T x x2
2 2
. . .
. . .
. . .
e T e T x xn
n n
c. Ix = x = = =x

d. Berdasarkan pembuktian di bagian (b), A (k x + l y ) = A(k x) + A(l y). Dan berdasarkan


pembuktian bagian (a) kita peroleh

A (k x + l y ) = kAx + lA y

Sifat-sifat dari perkalian matrik yang telah disajikan di atas dapat di ringkas menjadi:

a. A(BC) = AB(C)
b. AB ¿ BA
c. AI = IA
d. AB = 0 tapi A ¿ 0 dan B ¿ 0
e. ( AB ) T = B TA T
f. AB = AC tapi B ¿ C
g. A( B + C ) = A B + A C
T
h. Aei = A‫٭‬i e j A = Aj‫٭‬

Dari Teorema, kita dapat membuktikan bahwa algoritma perkalian matriks dapat dituliskan sebagai:

Teorema. Jika matriks A berukuran m × n dan matriks B berukuran n × p, maka bisa diperoleh
matriks C berukuran m × p dengan prosedur komputasinya adalah sebagai berikut.

Input ukuran dari matrik A: m × n dan elemen-elemennya. Ukuran matrik B n × p dan elemen-
elemennya.

Step 1. Set i = 1;

Step 2. Set j = 1;

Step 3. Set Sigma = 0;

Step 4. Set k = 1;

Step 5. Hitung Sigma = Sigma + aikbkj

Step 6. Apakah k = n?

Jika tidak, naikkan counter k satu poin, yaitu k = k + 1 dan kembali ke Step 5

Jika ya, cij = sigma, lanjutkan ke Step 6.

Step 7. Apakah j = p?

Jika tidak, naikkan counter j satu poin, yaitu j = j + 1 dan kembali ke Step 3

Jika ya, lanjutkan ke Step 8.

Step 8. Apakah i = m?

Jika tidak, naikkan counter i satu poin, yaitu i = i + 1 dan kembali ke Step 2

Jika ya, proses komputasi selesai. STOP

Bukti:
c 11 c 12 c12 . .. . c1 j . . c1 p

[ ]
c 21 c 22 c22 . .. . c2 j . . c2 p
. . . . .. . . . . .
c ij= . . . . . . . .
c i1 c i2 ci 3 . .. . c ij . . c ip
. . . . .. . . . . .
. . . . .. . . . . .
cm 1 cm 2 cm 3 . .. . c mj . . c mp

a11 a12 a12 .. . . a1 j . . a1 n b 11 b12 b 12 .. . . b1 j . . b 1n

[ ][ ]
a 21 a22 a22 .. . . a2 j . . a2 n b 21 b22 b 22 .. . . b2 j . . b 2n
. . . .. . . . . . . . . . .. . . . . . .
=. . . . . . . . . . . . . . . .
ai 1 ai 2 ai3 .. . . aij . . ain b i1 bi2 b i3 .. . . b ij . . b in
. . . .. . . . . . . . . . .. . . . . . .
. . . .. . . . . . . . . . .. . . . . . .
a m1 am 2 am 3 .. . . a mj . . a mn b n1 bn 2 b n3 .. . . b nj . . b np

Dari perkalian matriks di atas kita temui bahwa elemen cij adalah hasil perkalian antara vektor baris
ke-i: [ai1 ai2 … aij … ain] dari matriks A dengan vektor kolom ke-j: [b1j b2j … bij … bnj]T yang
menghasilkan
n
∑ aik bkj
cij = ai1b1j + ai2b2j + ai3b3j +… + ainbnj = k =1 untuk i = 1, 2, …, m dan j = 1, 2, …, p.

untuk baris ke i, kita dapat menghitung untuk setiap j = 1, 2, …, p.


n
∑ aik bk 1
untuk j = 1:: ci1 = ai1b11 + ai2b21 + ai3b31 +… + ainbn1 = k=1

n
∑ aik bk 2
untuk j = 2:: ci2 = ai1b12 + ai2b22 + ai3b32 +… + ainbn2 = k =1

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .
n
∑ aik bkp
untuk j = p:: cip = ai1b1p + ai2b2p + ai3b3p +… + ainbnp = k =1

Jadi untuk setiap baris i = 1, 2, …, m kita menghitung sebanyak p elemen matriks C, maka dengan
demikian, kita harus melakukan komputasi dengan Algoritma . q.e.d

MATRIKS-MATRIKS BARIS ELEMENTAR


Dalam bagian ini kita akan membahas topik yang lain yang penting dan mempunyai peranan penting
dalam analisis matriks. Suatu matriks elementer adalah suat matriks yang invertibel. Agar dapat
mendorong pembahasan kita adalah penting An elementary matrix is an invertible matrix. In order to
motivate our discussion, it is important for us to study certain operations on the rows of a matrix and
these opertions will change the elements of a row of a matrix and are called elementary row
operations. There are three types of elementary row operations, they are:
Type 1. Interchange two rows of A.
Type 2. Multiply a row of A by a nonzero scalar.
Type 3. Add a multiple of one row of A to another row.
The matrix A is row equivalent to B (or for short, A is equivalent to B) if there is a sequence of
elementary row operations that transform A into B. We can picturize this process in an arrow diagram
as follows
A = A0  A1  A2  Ak = B (1)
Each arrow describes the effect of a single elementary operation that transform each Ai (I = 1, 2, …,
n). By definition, Ai is equivalent to Aj if i < j.
Example 1. Apply elementary row operation to find the sequence of elementary row operations
implicit in arrow diagram for the following matrix
2 0 0

A=
( )
0 0 4
2 −1 0
Answer:

2 0 0 2 0 0 2 0 0 1 0 0 1 0 0 1 0 0

A =
( 0 0 4
2 −1 0 )(
→ 2 −1 0 →
0 0 4 ) ( 0 −1 0
0 0 4

)(
0 −1 0
0 0 4
→ 0 1 0
0 0 4

)( )( )
0 1 0
0 0 1 =I

Or diagramitacally we can write

A = A0  A1  A2  A3 A4  A5 = I
where
2 0 0 2 0 0 1 0 0 1 0 0

A = A0, A1 =
( )
2 −1 0
0 0 4 , A2 =
( )
0 −1 0
0 0 4 , A3 =
( )
0 −1 0
0 0 4 , A4 =
( )
0 1 0
0 0 4 , and

1 0 0

A5 =
( )
0 1 0
0 0 1 =I
For this sequence, A0  A1 is obtained by interchanging rows 2 and 3 of A, A1  A2 is obtained by
row 2 – 2 × row 1. To obtain A3 from A2, ½ row 1 and to obtain A4 from A3, -1× row 2. And finally,
A4  A5 is obtained by ¼ row 3 and A5 = I.

The arrow diagram in Eq. 1 implies a second, “inverse” arrow diagram: operation is done in the
reverse direction.
B = Ak  Ak-1  ….Ac  A1  Ao = A (2)
This inverse sequence can be verified by prove that every step in a diagram is reversible. If Ai Ai+1
then Ai+1 Ai. The proof for elementary row operations of type 1 and 2 are straight forward. If Ai
Ai+1 represent the addition of α times row k to row l, then Ai+1 Ai is obtained by adding - α times
row k to row l.

Example
I = A5 A4  A3  A2  A1  A0 = A

1 0 0 1 0 0 2 0 0 2 0 0

that is I =
( )(
0 1 0 → 0 −1 0 →
0 0 1 0 0 4 ) ( 0 0 4 )(
2 −1 0 → 0 0 4
2 −1 0 ) =A

Karena operasi dapat mengubah A menjadi I and sebaliknya I menjadi A, dan untuk kasus ini kita
katakan bahwa A ekivalen baris dengan I atau singkatnya A equivalen dengan I. Dua contoh numerik
terakhir membawa kita kepada Teorema berikut ini.

Theorem. Jika A is ekivalen baris dengan B, maka sebaliknya B ekivalen baris dengan A
Bukti. Kita harus membuktikan bahwa Ak →Ak+1 dan sebaliknya Ak+1→ Ak. Bila operasi
type 1 dilakukan terhadap Ak, misalnya baris ke i dipertukarkan dengan baris ke-j, maka
Ak+1 merupakan matrik baru dengan semua baris sama terkecuali baris ke-i dan ke-j yang
bertukar posisi. Jika baris ke-j dan baris ke-i, dari matrik Ak+1, yaitu dengan menggunakan
operasi tipe pertama, maka yang dihasilkan adalah matrik Ak. Jika operasi type 2 dilakukan
terhadap Ak, yaitu dengan memperkalikan, misalnya baris ke-j dengan suatu skalar r. Maka
Ak+1 yang dihasilkan adalah suatu matrik yang sama dengan Ak terkecuali baris ke-j yang
besarnya r kali baris ke-j dari matrik Ak. Jika operasi tipe 2 dilakukan pada Ak+1, yaitu
dengan memperkalikan baris ke-j matrik ini dengan 1/r, maka kita akan kembali
memperoleh matrik asal, yaitu Ak. Operasi type 3 yang dilakukan terhadap Ak akan
menghasilkan Ak+1 dan sebaliknya, jika operasi type 3 dilakukan terhadap Ak+1 akan
menghasilkan Ak. Mengapa?
Sekarang kita melihat kepada suatu konsep yang penting, yaitu konsep premultiplier dan
postmultiplier. Misalkan kita mempunyai matrik A dan G sedemikian, perkalian antara G dengan A
adalah GA. Untuk kasus ini, G disebut sebagai premultiplier dari A dan sebaliknya A disebut sebagai
postmultiplier dari G. Dari uraian yang telah kita lihat di atas, kita dapat menyimak bahwa dalam
operasi baris elementer terhadap matrik A terdapat suatu matrik G sebagai premultiplier dari A
sedemikian sehingga terjadi GA  G. Misalkan kita mempunyai A→A1. Maka akan ada suatu
matrik G yang nonsingular sebagai premultiplier dari A sehingga GA = A1. Multiplier-multiplier
semacam ini disebut matrik elementer. Matrik-matrik elementer in sangat mudah untuk dibangun dan
dengan mudah untuk ditunjukkan bahwa mereka invertibel. Sekarang marilah kita liat contoh matrik
A seperti yang dicontohkan sebelumnya. I adalah matrik akhir operasi baris elemeter terhadap A, dan
I adalah matrik identitas. Konsep premultiplier dan postmultiplier ini kemudian kita gunakan untuk
mendayagunakan matrik elementer.
Pertama kali kita pertukar baris kedua dengan baris ketiga sehingga dihasilkan matrik G1, yaitu
1 0 0

G1
[ ]
=0 0 1
0 1 0
Perkalikan baris kedua dari I dengan suatu skalar r, akan diperoleh matrik G2, yaitu

1 0 0

G2
[ ]
=0 r 0
0 0 1
Tambahkan r kali baris pertama pada baris kedua dari natrik I, sehingga diperoleh matrik G3, yaitu:
1 0 0

G3
[ ]
=r 1 0
0 0 1
Kenyataan-kenyataan ini dapat diperlihatkan kebenarannya dengan melakukan perkalian
Contoh 3. Temukanlah sekuens dari matriks elementer yang menyatakan operasi elementer yang
dihasilkan pada contoh 1.
Jawab : Tukarkan baris 2 dan 3 dari matriks I
1 0 0 1 0 0 2 0 0

I  G1
[ ]
=0 0 1
0 1 0 , maka kita akan memperoleh G1A
[ ][ ]
=0 0 1 .0 0 3
0 1 0 4 −2 0 = A1

Matriks M diperoleh dari menambahkan baris kedua dengan -2 baris pertama

1 0 0 1 0 0 2 0 0

I→ G2
= −2 1 0
0 0 1 [ ] , maka kita memperoleh G2A1
[ ][ ]
= −2 1 0 . 4 −2 0
0 0 1 0 0 3 =A2
1 1
Operasi terakhir adalah memperkalikan baris pertama 2 , baris kedua dengan - 2 dan baris ketiga
1
dengan 3 , sehingga matrik I berubah menjadi G3
1 1
0 0 0 0

I→ G3
[ ]
2
= 0 − 12
0 0
0
1
3
, maka kita akan memperoleh G3A2
[ ][ ]
0
2
= 0 − 12
0
0
1
3
2 0 0
0 −2 0
0 0 3 =I

Contoh ini memberikan :

I = G3A2 = G3G2A1 = G3G2G1A (3)

Persamaan (3) ini menyatakan bentuk lain dari operasi yang dinyatakan oleh persamaan (1), yaitu
bentuk yang melibatkan matrik premultiplier setiap operasinya untuk matrik yang berorde tiga. Jadi
kita dapat merampatkannya untuk matrik yang berorde k, yaitu:

Gk.Gk-1 …. G2G1A = B (4)


Di mana Gi adalah matrik elemeter sedemikian sehingga Gi Ai-1 = Ai.
Sekarang kita akan melihat teori tentang matrik elementer lebih jauh lagi.
Satu matriks yang diperoleh dari matriks satuan I dengan melakukan satu operasi baris elementer
disebut matriks elementer. Terdapat tiga jenis matriks-matriks elementer yang berkorespondensi
dengan ketiga jenis operasi baris elementer.

Jenis Pertama. Matriks elementer jenis pertama adalah matriks yang diperoleh dengan
mempertukarkan dua baris dari I
1 0 0

CONTOH 1. Misal
[ ]
E1 = 0 0 1
0 1 0
E1 adalah matriks elementer jenis I, karena diperoleh dengan mempertukarkan kedua baris yang
pertama dari I. Misalkan A adalah matriks 3 x 3.
1 0 0 a11 a12 a12 a11 a12 a13

[
E1 A= 0 0
0 1 0 a ][
1 . a21
31
][
a22
a32
a23
a33
= a31
a21
a32
a22
a33
a23 ]
a11 a12 a13 1 0 0 a 11 a 13 a12

[
AE 1= a21
a31
a22
a32 ][ ] [
a23 . 0 0 1 = a 21 a 23
a33 0 1 0 a 31 a 33
a22
a32 ]
Mengalikan A di sebelah kiri dengan E 1 akan mempertukarkan baris pertama dan kedua dari A.
Mengalikan A di sebelah kanan dengan E 1 adalah ekivalen dengan operasi kolom elementer yang
mempertukarkan kolom-kolom pertama dan kedua.

Jenis Kedua. Matriks elementer jenis II adalah matriks yang diperoleh dengan mengalikan satu baris
dari I dengan konstanta bukan nol.

CONTOH 2
1 0 0

E2 =
[ ]
0 1 0
0 0 4

Adalah suatu matriks elementer jenis II

1 0 0 a11 a12 a12 a11 a12 a12

[ ] [
0 1 0
0 0 4
a21
a31
a22
a32
a23
a33 ] [ =
a21 a22 a 23
4 a 31 4 a32 4 a33 ]
Akhirnya, misalnya E adalah matriks elementer jenis III yang terbentuk dari I dengan menjumlahkan
m kali baris ke-i pada baris ke-j

[ ]
⋮ ⋱ 0
0 ⋯ 1
⋮ ⋱
0 ⋯ m ⋯ 1
⋮ ⋱
0 ⋯ 0 ⋯ 0 ⋯ 1
E= baris ke-i dan baris ke-j

E dapat ditransformasikan kembali menjadi I dengan mengurangi m kali baris ke-i. Jadi
1

[ ]
⋮ ⋱ 0
0 ⋯ 1
⋮ ⋱
0 ⋯ −m ⋯ 1
⋮ ⋱
E−1 =
0 ⋯ 0 ⋯ 0 ⋯ 1

Dengan perkataan lain, B ekivalen baris dengan A jika B dapat diperoleh dari A dengan operasi-
operasi baris yang berhingga banyaknya. Khususnya, dua matriks augmented ⟨ A|b⟩ dan ⟨B|c⟩
adalah ekivalen baris jika dan hanya jika Ax = b dan Bx = c adalah sistem-sistem ekivalen.
Sifat-sifat berikut mengenai matriks-matriks yang ekivalen baris dengan mudah dapat dibuktikan.
(i) Jika A ekivalen baris dengan B, maka B ekivalen baris dengan A
(ii) Jika A ekivalen baris dengan B, dan B ekivalen baris dengan C, maka A ekivalen baris
dengan C.

a11 a12 a13 1 0 0 a11 a12 3 a13

[ a21 a22 a23


a31 a32 a33 ] [ ] [
0 1 0
0 0 3 =
a21 a22 3 a23
a31 a32 3 a33 ]
Perkalian di sebelah kiri oleh E2 melakukan operasi baris elementer dengan mengalikan baris ketiga
oleh 3. Sedangkan perkalian di sebelah kanan oleh E2 melakukan operasi kolom elementer dengan
mengalikan kolom ketiga oleh 3.

Jenis Ketiga. Matriks elementer jenis ketiga adalah matriks yang diperoleh dari I dengan
menjumlahkan kelipatan dari satu baris pada baris yang lain.

1 0 4

Contoh 3. E3 =
[ ]
0 1 0
0 0 1

Adalah satu matriks elementer jenis ketiga. Jika A adalah matriks 3 x 3 maka

a11 + 4 a31 a12 +4 a32 a13 +4 a33

E3A =
[ a21
a31
a 22
a32
a 23
a 33 ]
a11 a12 4 a11 + a13

AE3 =
[ a21
a31
a22
a32
4 a21+ a23
4 a31+ a33 ]
Perkalian di sebelah kiri oleh E3 akan menjumlahkan 4 kali baris ketiga pada baris pertama. Perkalian
di sebelah kanan E3 akan menjumlahkan 4 kali kolom pertama pada kolom ketiga.
Pada umumnya, misalkan E adalah matriks elementer n x n. Kita dapat mengganggap E diperoleh
dari I oleh suatu operasi baris atau suatu operasi kolom. Jika A adalah matrik n  n maka perkalian di
sebelah kiri oleh E mempunyai pengaruh melakukan operasi baris yang sama tersebut pada A. Jika B
adalah matriks m  n, maka perkalian di sebelah kanan oleh E ekivalen dengan melakukan operasi
kolom yang sama pada B.
TEOREMA 1.2 Jika E adalah matriks elementer, maka E taksingular dan E-1 adalah matriks
elementer dengan jenis yang sama.
Bukti. Jika E adalah matriks elementer jenis I yang terbentuk dari I dengan mempertukarkan baris
ke-i dan baris ke-j, maka E dapat ditransformasi menjadi I kembali dengan mempertukarkan baris-
baris yang sama ini lagi.jadi EE = I sehingga E adalah invers dari matriks itu sendiri. Jika E adalah
matriks elementer jenis kedua yang terbentuk oleh perkalian baris ke-i dari I dengan skalar bukan nol
, maka E dapat ditransformasikan menjadi matriks satuan kembali dengan perkalian baris ke -i atau
1/. Jadi :

[ ]
⋱ 0
1
1/α
1
0 ⋱
1
E-1 = baris ke-i

Berikut ini akan dibuktikan dua hasil penting yang bermanfaat ketika kita meninjau teori matrik
elementer. Keduanya disajikan dalam bentuk teorema.

Teorema . Setiap matriks elementer adalah invertible dan inversnya adalah matriks elementer dengan
type yang sama.
Bukti. Katakanlah G1 adalah berasal dari operasi tipe 1. Ini berarti bahwa G1 akan
mempertukarkan dua baris yang berbeda dan G12 = I. Jika G2 merupakan matrik yang terjadi karena
operasi tipe 2. Itu berarti G2 memperkalikan baris ke-I dengan suatu skalar r ≠ 0, definisikan juga G3
yang berasal dari tipe 2 tetapi dia memperkalikan baris ke-I dengan 1/r. Maka kita akan memperoleh
G3 G2 = G2 G3 = I. Sekarang ambil G4 yang menambahkan r kali baris ke-I kepada baris ke-j, dan G5
menambahkan –r kali baris ke-I kepada baris ke-j. Maka G4 G5 = G5 G4 = I.

Teorema. Jika operasi baris elementer dilakukan satu kali terhadap I. Jika:
(i). G1 adalah matrik yang dihasilkan karena operasi tipe 1, yaitu dua baris dari matrik I
dipertukarkan, maka det(G1) = -1
(ii). G2 adalah matrik yang dihasilkan karena operasi tipe 2, yaitu suatu baris dari I dikalikan
dengan suatu skalar r, maka det(G2) = r
(iii). G3 adalah matrik yang dihasilkan karena operasi tipe 3, yaitu suatu baris dalam matrik I
dikalikan dengan suatu skalar tertentu kemudian diperkurangkan dengan baris yang lain juga
dalam I, maka det(G3) = 1

Bukti.

Teorema 2. Jika A equivalen dengan B, maka ada suatu matriks non singulir S sedemikian hingga SA
=B

Bukti.

Akibat 1 : Jika A row equivalen dengan B maka A dan B kedua-duanya non singular.
Bukti.
Akibat 2 : If A is row equivalent to I, then A is non singular.
Bukti.

MENCARI INVERS DAN DETERMINAN SUATU MATRIK DENGAN BANTUAN


OPERASI BARIS ELEMENTER
Bila kita menggunakan konsep penghitungan determinan yang didefinisikan di atas (konsep
determinan yang didasarkan atas permutasi) untuk menentukan determinan suatu matrik A, maka
penghitungan akan efektif hanya untuk matrik yang berorde lebih kecil atau sama dengan tiga. Untuk
mendapatkan insight yang benar tentang hal ini, pertama-tama kita akan memulai bagian ini dengan
memperlihatkan bahwa setiap matrik A row ekivalen dengan trapesoidal atas U. Berdasarkan U yang
merupakan hasil operasi baris elementer terhadap A, kita dapat melihat apakah matrik A singular atau
non singular. Dan yang tidak kalah penting setelah itu kita akan memperlihatkan bahwa A row
ekivalen dengan matrik identitas I, walaupun secara numerik kita telah melihat hal itu dalam contoh
yang diberikan dalam bagian sebelumnya. Hal ini akan membawa kita kepada algoritma yang
digunakan untuk menghitung invers dari A. Kemudian kita akan menutup bagian ini dengan
menemukan cara untuk menghitung determinan daripada A berdasarkan konsep operasi baris
elementer.

Operasi Baris Elementer yang menghasilkan matrik U dan matrik I: Pengecekan kesingularan.
Dalam sub bagian ini kita akan membicarakan dua konsep penting, yaitu suatu operasi baris elementer
yang dilakukan kepada matrik A hingga suatu saat tertentu akan menghasilkan matrik trapesoidal atas
yang pada kenyataannya ekivalen baris dengan matrik A. Dengan pengertian dari konsep ini
kemudian kita akan membawa kita kepada cara untuk mengecek apakah suatu matrik A singular atau
non singular dan dengan kesingularan yang diketahui kemudian kita dapat atau tidak dapat
menentukan invers dari A. Kita akan mulai dengan yang pertama, yaitu memperlihatkan bahwa setiap
matrik A row ekivalen dengan matrik segitiga atas U.
Theorem 3 : Setiap matrik A adalah row equivalen dengan matrik trapesoidal atas U.
Bukti. Sebenarnya pembuktian untuk teorema ini cukup sederhana. Dengan menerapkan operasi
baris elementer untuk menghapus entri-entri di bawahnya, dimulai dari kolom pertama dan diteruskan
dengan cara yang sama untuk setiap kolom (sambil bergerak kekanan). Misalkan untuk matrik A kita
sudah melakukan sebanyak r operasi sehingga diperoleh:

¿ ¿ ¿ . . ... ¿
0 . . ....

( )
¿ ¿ ¿
0 0 ¿ . . .... ¿
0 0 0 . . .... ¿
. . . . . .... ¿
. . . . . .... ¿
0 0 . . c .... ¿
0 0 0 . d .... ¿
0 0 0 e .... ¿
A A1 A2 … Ar-1 Ar =

Langkah berikutnya adalah


Teorema 4 : Matriks bujur sangkar A singulir jika dan hanya jika row equivalen dengan matrik
segitiga atas dengan paling kurang satu suku diagonalnya nol.
Bukti.

Akibat 1. Matriks bujur sangkar A singulir jika dan hanya jika row equivalen dengan matriks segitiga
atau yang salah satu barisnya nol.
Bukti.

Contoh 3.
3 3 3 1 1 −3 1 1 −3 1 1 −3

A =
singulir
[ ][ ][
6 6 −1 → 6 6 −1 → 0 0 −19 →
1 1 −3 3 3 3 3 3 3 ] [ → 0 0 −19
0 0 12 ] = U  Matriks A

Teorema 5. Matriks A non singular jika dan hanya jika row equivalen dengan matriks I.
Bukti.

Akibat 1. Jika A non singulir maka diagram anak panah :


[A | I]  …  [I |B] (4)
adalah mungkin dan berarti bahwa
B = A-1 (5)
Bukti.

3 −1 1

Contoh 4. Cari invers dari A =


Menurut diagram 4
[ ]
1 0 2
0 1 1

3 −1 1 : 1 0 0 1 0 2 : 0 1 0

[
1 0 2 : 0
0 1 1 : 0
1 0 2 :
1
0
0
0
1 ][

1 0
3 −1 1 :
0 1 1 :
1 0
1 0
0 0
2 :
0 →
1 ]
0 1 0
[
→ 0 −1 −5 :
0 1 1 :
1
0 0 1 ][
−3 0 → 0 −1
0 0
−5 :
−4 :
1 −3 0 →
1 −3 1
1
]
−1 1

[ ]
1 0 0 :
1 0 2 : 0 1 0 2 2 2

[ 0
0
1
0
−5
1
:
:
−1
−1
4
−3
3
4
0
−1
4
] → 0

0
1

0
0

1
:

:
5

−1
4

4
−27

3
4
2
−1
5
4

2 −2 1

Berdasarkan persamaan (5) A-1 =


1
4 [
−5 27 5
−1 3 −1 ]
Akibat 2. Matriks A non singulir jika dan hanya jika matriks A adalah produk dari matriks-matriks
baris elementer.
Bukti.

Akibat 3. Jika A adalah matriks bujursangkar dan juga AB = I atau CA = I, maka A invertibel.
Bukti.

Akibat 4. Jika A dan B kedua-duanya singular maka C = A B juga singular.


Bukti.

Determinan dan Operasi Baris Elementer. Dalam subbab ini kita membahas bagaimana pengaruh-
pengaruh dari operasi baris pada determinan suatu matriks. Ketika kita melihat dan mengerti
pengaruh-pengaruh ini, maka kita dapat membuktikan bahwa suatu matriks A dapat singular jika dan
hanya jika determinannya adalah nol. Sehingga dengan demikian kita akan dapat mengembangkan
suatau metode untuk menghitung determinan yang lebih efisien, yaitu perhitungan determinan yang
menggunakan operasi-operasi baris. Juga,kita akan membuktikan suatu teorema penting tentang
determinan dari hasil kali dua matriks. Kita awali dengan lemma berikut.

Teorema Misalkan A adalah matriks n x n. Jika Ajk menyataka kofaktor dari ajk untuk k = 1, 2, …, n

ai 1 A j 1 +ai 2 A j2 +. . .+ain A jn = det( A ) i= j


{ 0 i≠ j (1)

Bukti. Jika i = j, (1) tak lain


adalah ekspansi kofaktor dari det(A) sepanjang baris ke-i dari A. Untuk membuktikan (1) dalam
kasus i j, misalkan A* adalah matriks yang diperoleh dengan mengganti baris ke-j dari A dengan baris
ke-i dari A.

a11 a12 ⋯ a1n

( )

ai1 a i2 ⋯ a in
¿
A= ⋮
ai1 a i2 ⋯ a in

an 1 a n2 ⋯ a nn
baris ke-j

karena dua baris dari A * adalah sama, determinannya pasti nol. Maka dari ekspansi kofaktor dari
det(A*) sepanjang baris ke-j akan berakibat bahwa :

0=det( A¿ )=a11 A ¿j1 +a j 2 A ¿j2 +...+ain A¿jn

=a 11 A j 1+a i2 A j2 +.. .+ain A jn


Jika A adalah hasil dari pada perlakuan operasi baris terhadap A, maka ada suatu matriks elementer
G1 sedemikian sehingga A1 = G1 A. Teorema berikut berhubungan dengan hal ini.

Teorema 6: Katakanlah bahwa A  A1. Jika

(i). A1 merupakan hasil dari pertukaran baris dalam A,maka det (A)= -det (A1)
(ii). A1 merupakan perkalian suatu baris dalam A dengan r  0, maka rdet(A) = det (A1)
(iii). A1 merupakan bentuk dari operasi type ke tiga, maka det(A) = det (A1)
Bukti.

(i). Sudah diperlihatkan di atas bahwa, jika kita melakukan satu operasi baris elementer,
maka Untuk melihat pengaruh-pengaruh dari operasi baris I, harap diperhatikan bahwa
operasi ini dapat diselesaikan dengan menggunakan operasi-operasi baris II dan III. Kita akan
menggambarkan bagaimana hal ini bisa dilakukan untuk matriks-matriks 3 x 3.

a11 a12 a13

(
A= a 21
a 31
a22
a32
a23
a33 )
Dengan mengurangi baris 3 dari baris 2 akan menghasilkan
a 11 a12 a13
( 1)

(
A = a21 −a31
a31
a22 −a32
a32
a 23 −a33
a33 )
Selanjutnya, baris kedua dari A(1) ditambahkan pada baris ketiga:

a11 a12 a13


( 2)

(
A = a21 −a31
a 21
a22 −a 32
a22
a 23 −a33
a23 )
Dengan mengurangi baris 3 dari baris 2, kita peroleh :

a 11 a 12 a13
( 3)

(
A = −a 31 −a32 −a33
a21 a 22 a23 )
Karena matriks-matriks ini telah dibentuk hanya dengan menggunakan operasi baris II, maka
ini berarti bahwa:
det(A) = det(A(1)) = det(A(2)) = det(A(2))
Akhirnya, jika baris kedua dari A dikalikan dengan –1, maka kita peroleh :

a11 a12 a13


( 4)
A = a31
a21 ( a32
a22
a33
a23 )
Karena digunakan operasi baris II, maka

det(A(4)) = -1 det(A(3)) = -det(A)

A(4) tak lain adalah matriks yang diperoleh dengan mempertukarkan baris kedua dan baris
ketiga dari A.
Uraian yang sama ini dapat diterapkan pada matriks-matriks n x n untuk menunjukkan bahwa
jika dua baris dipertukarkan tempatnya maka tamda dari determinan akan berubah. Jadi jika A
adalah matriks n x n dan E ij adalah matriks elementer n x n yang diperoleh dengan
mempertukarkan baris ke-i dan baris ke-j dari I, maka :

det(EijA) = -det(A)

Khususnya,
det(Eij) = det(EijI) = -det(I) = -1

Jadi untuk sembarang matriks elementer E jenis I, akan berlaku

det(EA) = -det(A) = det(E) det(A)


(ii). Misalkan E menyatakan matriks elementer jenis II yang berbentuk dari matrik identitas I,
yaitu dengan mengalikan baris ke-i dengan suatu konstanta tak nol r. Jika det(EA)
diekspansikan dengan kofaktor-kofaktor sepanjang ke-i, maka

det(A) = rai1Ai1 + rai2Ai2 + …+ rainAin

= r(ai1Ai1 + ai2Ai2 + …+ ainAin)

= rdet(A)

Khususnya

det(E) = det(EI) = rdet(I) = r

sehingga

det(EA) = rdet(A) = det(E) det(A)

(iii). Misalkan E adalah matriks elementer jenis III yang terbentuk dari I dengan menambahkan c
kali baris ke-i pada baris ke-j. Karena E adalah matriks segitiga dan elemen-elemen
diagonalnya semuannya 1, maka det(E)=1, Kita akan membuktikan bahwa

det (EA) = det (A) = det (E) det (A)

Jika det(EA) diekspansikan oleh kofaktor-kofaktor sepanjang baris ke-j maka berdasarkan
Teorema (*)

det(A) = ( a j 1+cai 1 ) A j1+ ( a j2 +cai 2 ) A j 2 +. ..+ ( a jn +ca in ) A jn

= ( a j 1 A j 1 +. ..+a jn A jn ) +c ( ai 1 A j 1+. ..+a in A jn)

= det(A)
Jadi
det(EA) = det(A) = det(E) det(A)

Sebagai ikhtisar, maka jika E adalah matriks elementer, maka

det(A) = det(E) det(A)

di mana

−1
det ( A )=
{ r≠ 0
1 ¿
¿
(&)

Hasil-hasil serupa berlaku juga untuk operasi-operasi kolom. Memang benar, bahwa jika E adalah
matriks elementer, maka :

det(AE) = det((AE)T) = det(ETAT)

= det(ET) det(AT) = det(E) det(A)


Sehingga pengaruh-pengaruh dari operasi-operasi baris atau kolom itu pada nilai dari determinan
dapat diringkaskan dalam pengalimatan sederhana berikut ini.
I. Pertukarkan dua baris (atau kolom) dari suatu matriks akan mengubah tanda dari
determinan.
II. Mengalikan satu baris atau kolom dari suatu matriks dengan suatu skalar sama
akibatnya dengan mengalikan nilai dari determinan dengan skalar tersebut.
III. Menjumlahkan perkalian dari satu baris (atau kolom) pada baris lainnya (atau kolom
lain) tidak akan menungubah nilai dari determinan.
Teorema di atas memberikan dua konsekwensi penting berikut ini.

Akibat 1. Jika A row equivalen dengan B, maka ada r skalar non zero sedemikian hingga det(A) =
rdet (B)

Akibat 2. Jika satu baris atau kolom dari suatu matriks adalah kelipatan dari baris (atau kolom) lain,
maka determinan dari matriks tersebut harus sama dengan nol.

Bukti: Hal ini merupakan akibat langsung dari point (iii) Teorema di atas

Sebagai akibat dari (&) maka semua matriks elementer memiliki determinan tak nol. Pengamatan ini
dapat digunakan untuk membuktikan teorema berikut.

Theorem Suatu matriks A berorde n × n adalah singular jika dan hanya jika det(A) = 0

Bukti. Matriks A dapat direduksikan menjadi bentuk eselon baris dengan operasi-operasi baris yang
berhingga banyaknya. Jadi

U = EkEk-1…E1A

Di mana U berbentuk eselon baris dan semua EI adalah matriks-matriks elementer.

det(U) = det(EkEk-1…E1A)

= det(Ek) det(Ek-1)…det(E1) det(A)

Karena determinan-determinan dari E 1 semuanya tak nol, maka det(A) = 0 jika dan hanya jika
det(U)=0. Jika A matriks singular, maka matriks U memiliki satu baris yang seluruhnya terdiri dari
nol dan dengan demikian det(U) = 0. Jika A matriks taksingular, maka U matriks segitiga yang
elemen-elemen diagonal semuanya 1 sehingga det(U) = 1.
Berdasarkan bukti Teorema ini kita dapat menemukan suatu metode untuk menghitung det(A).
Reduksikan A menjadi bentuk eselon baris.

U = EkEk-1….E1A

Jika baris terakhir dari U terdiri seluruhnya dari nol maka A singular dan det(A) = 0. Jika tidak
demikian, A adalah taksingular dan

det(A) = [det(Ek) det(Ek-1)…det(E1)]-1

Sesungguhnya jika A taksingular, maka adalah lebih sederhana untuk mereduksi A menjadi bentuk
segitiga. Hal ini dapat dilakukan hanya dengan menggunakan operasi-operasi baris I dan III. Jadi

T = EmEm-1…E1A
Sehingga

det (A) = ±det(T) = ±t11t22…tnn


dimana semua tii adalah entri-entri diagonal dari T. Tandanya akan menjadi positif jika operasi baris I
telah digunakan sebanyak bilangan genap dan menjadi negatif jika sebaliknya.

Teorema 3.7 Jika A dan B adalah matriks-matriks n x n, maka


det(AB) =det(A)det(B)
Bukti. Jika B singular, maka berdasarkan teorema 1.4.3 AB juga singular (lihat ), sehinggga

det(AB) = 0 = det(A)det(B)

Jika B taksingular, maka B dapat ditulis sebagai hasil kali matriks-matriks elementer. Kita telah
melihat bahwa sifat ini berlaku untuk matriks-matriks elementer. Jadi:

det(AB) = det(AEkEk-1…E1)

= det(A)det(Ek)det(Ek-1)…det(E1)

= det(A)det(AEkEk-1…E1)

= det(A) det(B)

Theorem 7. Determinan dari suatu matriks segitiga atas adalah produk dari entri diagonalnya.

1 −1 1

Contoh 5. Carilah det


[ 0 1 1
2 1 −1 ]
1 −1 1 1 −1 1 1 −1 1

Jawab :
[ ] [
det 0 1 1 = det 0 1 1 = det 0 1 1 = −6
2 1 −1 0 3 −3 0 0 −6 ] [ ]
−1 2 1 1

Contoh 6. Jika A =
−1 2 1 1 −1
[ 0
0
2
2
1
1
0
0 0
1 −1
0 3
1 1
]maka hitunglah det A
−1 2 1 1

[ 0
0
2
1
1
0
0 0
1 −1
0 3

][0
0
0
1
1
4
0 0
1 −1
2 5

][
0
0
0
1
0
0
0 0
1 −1
0 7
]
Dengan demikian maka, det A = (-1 .1 .1 .7) = -7.

Catatan tambahan :
det (kA) = (kn) det (A) dimana A adalah matriks n x n
Jika P M dan E masing-masing adalah matrik baris elementer dari type 1, 2, dan 3 dan bahwa M
memperkalikan baris ke I dari A dengan . Maka : a). det (P) = -1; b) det (M) =  det (I) = ; c) det
(E) = 1
Det (G A) = det (G) det (A), jika G adalah setiap matrik baris elementer.
Teorema 9. Untuk setiap matriks bujursangkar A dab B, berlaku :
Det (AB) = det(A) det (B)

Lamena 1. Bila G adalah matriks elementer, maka det (GT) = det(G)

Teorema 10. Untuk setiap matriks A, det (A) = det (AT).

Faktorisasi LU dari matrik A. Dengan mengkonstruksikan diagram A  …  U untuk matriks A.


Dan produk dari matrik baris elementer merupakan matrik segitiga bawah S sehingga SA = U.

2 2 1

Contoh 13. Perhatikan matriks A =


[ ]
2 3 −1
3 1 −2
2 2 1 2 2 1

A
2 2 1
[
→ 0 1 −2 →
3 1 −2 ]
0 1 −2
0 −2 − [ ][ ]
7
2

0 1 −2
0 0 −
15
2
=

Berikutnya kita dapat melakukan verifikasi, yaitu:

1 0 0 1 0 0 1 0 0

E1 =
Yaitu :
[ ] [
−1 1 0
0 0 1 ; E2 =
0 1 0
−2 0 1 ] ; E3 =
[ ]
0 1 0
0 3 1 ;

1 0 0 2 2 1 2 2 1

E1 A =
[ ] [ ]
−1 1 0
0 0 1
2 3 −2
4 1 −2 =
[ ]
0 1 −3 =
4 1 −2 A1
1 0 0 2 2 1 2 2 1

E2 (E1A ) =
[ ] [ 0 1 0
−2 0 1
0 1 −3 =
4 1 −2 ] [ ]
0 1 −3 =
0 −3 4 A2
1 0 0 2 2 1 2 2 1

[ ] [
E3 (E2 E1 A ) =
0 1 0
0 3 1
0 1 −3 =
0 −3 4 ] [ ]
0 1 −3 =
0 0 −13 U
Karena produk dari matriks segitiga bawah adalah matrik segitiga bawah, maka:

1 0 0

S = E1 E2 E3 =
[ ] −1 1 0
−5 3 1 dan

1 0 0 2 2 1 2 2 1

SA =
[ ] [ ] [
−1 1 0
−5 3 1
2 3 −2
4 1 −2 =
0 1 −3 =
0 0 −13 ]
U

L = S-1 dan S A = U  S = L U
1 0 0 1 0 0 2 2 1

S-1 = L =
[ ] 1 1 0
2 −3 1 ; LU =
[ ] [
1 1 0
2 −3 1
0 1 −3 =
0 0 −13 ]
2 2 1

=
[ ] 2 3 −2
4 1 −2 =A

Jika beberapa pertukaran baris digunakan dalam diagram A  …  U, maka L akan tidak berupa
matrik segitiga bawah. Tetapi ini bisa saja dibuat dengan mempertukarkan beberapa baris sehingga
ditemukan L yang berbentuk segitiga bawah.

Teorema : Untuk setiap matriks A ada satu matrik segitiga atas U dan satu permuted segitiga bawah
LP, sedemikian sehingga : A = LP U.
Secara umum, LP adalah suatu matriks yang dapat dibuat segitiga bawah dengan mempertukarkan
baris, yaitu bahwa ada sederetan matriks elementer dari type 1 : P1, P2, …,Pk sedemikian sehingga :

Pk Pk-1 … P1Lp = L

Akibat : Untuk setiap matrik A, ada suatu permutasi baris dari A yang leading kepada A1, suatu
matrik segitiga atau U, dan matrik segitiga bawah L sedemikian sehingga : A1 = LU

Dari uraian di atas tentang Determinan dan invers dari suatu matriks A, kita dapat menyusun
Algoritma berikut ini.

Algoritma
Input untuk algoritma ini adalah orde dari matriks A, n, elemen-elemen dari matriks A, dan vektor
konstanta b.

Step 1.
Step 2.
Step 3.
Step 4.
Step 5.

BENTUK REDUCED ROW ECHELON (RREF)


Suatu konsep yang tidak boleh dilupakan dalam teori matrik adalah bentuk eselon baris tereduksi
(reduced row echelon form), yang disingkat rref. Definisinya ditentukan oleh kriteria-kriteria :
1. Baris-baris nol, jika ada, merupakan baris-baris terakhir dari matriks.
2. Entry pertama yang tidak nol dalam baris yang tidak nol adalah 1 dan disebut sebagai leading
one.
3. Setiap kolom yang mengandung suatu leading coloumn, adalah suatu vektor satuan ei, untuk
beberapa nilai i.
4. Suatu leading one dalam baris p yang berada disebelah kiri dari suatu leading one dalam baris
q bilamana p < q.
Untuk memperjelas konsep ini, kita akan meninjau beberapa contoh berikut ini.

Contoh 7. Tunjukkan bahwa ei untuk semua i, I, [I | B] untuk semua B dan [0 0 1 * … *] : masing-


masing adalah matrik yang berada dalam rref.
1 0 0 . . . 0

( )
0 1 0 . . . 0
0 0 1 . . . 0
. . . . . . .
. . . . . . .
. . . . . . .
0 0 0 . . . 1
Jawab: (ei) = jelas merupakan matrik yang berada dalam rref.

Contoh 8.

1 ¿ 0 0 ¿ 1 0

[ 0
0
0
0
0
0
1
0
0
0
1
0
0
¿
0
][]
dan
0 1
0 0
0 0 berada dalam rref

Sedangkan matrik-matrik berikut

1 ¿ 0 0 ¿ 1 ¿ 0 0 0

[ 0
0
0
0
0
0
0
0
0
0
1
0
0
¿
0
][
dan
0 0
0 0
0 0
0
0
0
0
1
0
1
0
0
] bukan berada dalam rref.

Teorema . Untuk setiap matriks A yang row equivalen dengan suatu matrik Ar dalam rref. Lebih-
lebih lagi jika B row equivalen dengan A dan jika B berada dalam rref, maka B = Ar.
Karena rref adalah unik kita dapat mengidentifikasi kolom-kolom dalam A akan menjadi leading
coloumn dari Ar. Kita sebut kolom-kolom ini sebagai leading coloumn.

Contoh 9. Carilah leading column dari

0 1 1 1 1

A=
[ 0 −1 −1 1 1
0 1 1 −1 2 ]
0 1 1 1 1 0 1 1 1 1

Jawab : A =
[ 0 0 0 2 2 → 0 0 0 1 1 →
0 0 0 −2 1 0 0 0 −2 1 ][ ]
0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0

[
0 0 0 −2 1 0 0 0 0 3 ][
→ 0 0 0 1 1 → 0 0 0 1 1 → 0 0 0 1 1 →
0 0 0 0 1 ][ ] [ → 0 0 0 1 0
0 0 0 0 1 ] = Ar

Leading coloumn dari A adalah kolom ke-2, ke-4 dan ke-5.

1 1 1

A*2 =
[]
−1
1 ; A*4 =
[]
1
−1 ; A*5 =
[]
1
2
PENGGUNAAN OPERASI BARIS PADA SOLUSI DARI Ax = b

Teorema. Sistem Ax = b dan Bx = c mempunyai vektor solusi yang sama jika [A|b]  …  [B|c].
Dengan ini kita dapat menganalisa dan menyelesaikan sistem Ax = b. Suatu sistem dengan satu atau
lebih solusi disebut konsisten. Tetapi yang tidak mempunyai solusi disebut inkonsisten.

Contoh 10. Perlihatkan bahwa sistem berikut tidak konsisten :

1 1 1 1 x1 1

Ax =
[ 0 −1 1 1
0 1 1 −1 ][ ] [ ]
x2 = 1
x3 2

1 1 1 1 1 1 1 1 1 1 1 0 0 2 2

Jawab :
[ ][
0 −1 −1 1 1 → 0 1 1 −1 −1 → 0 1 1 −1 −1 →
0 1 1 −1 2 0 1 1 −1 2 0 1 1 −1 2 ][ ]
1 0 0 2 2 1 0 0 2 2

[ 0 1 1 −1 −1 →
0 0 0 0 3 ] Ar =
[ 0 1 1 −1
0 0 0 0 ] C =
[]
−1
3

 Tidak ada jawaban  Tidak konsisten

Contoh 11. Perlihatkan bahwa sistem berikut konsisten

1 1 1 1 x1 1

Ax =
[ 0 −1 −1 1
0 1
1 0
1 2
1 −1
2
2
0
0
]( ) ( )
x2

x4
x5
1
x 3 = −1
2
0

1 1 1 1 1 1 0 0 2 2

[A|b] =
[ 0 −1 −1 1 1
0 1 1 −1 −1 → ... →
1 0 2 0 2
1 2 2 0 0
] [ ] 0
0
0
0
1
0
0
0
0 0 −1
1 −1 0
0 0 0
0 0 0

 x1 + 2x4 = 2 x2 = 1 x3 – x4 = 0. Dua persamaan berikut semuanya nol  sistem konsisten.

Keuntungan dari rref. Dalam Sub-bagian ini kita akan mendaftarkan keuntungan-keuntungan yang
dapat diperoleh kalau kita memahami konsep rref. Untuk itu kita akan membukanya dengan
membuktikan tiga Lemma berikut ini.

Lemma 1: Katakanlah bahwa A dan B berada dalam rref dan row equivalen. Ambil A1 dan B1
adalah hasil dari menghilangkan k kolom terakhir dari masing-masing A dan B, maka A1 dan B1
berada dalam rref dan juga row equivalen.

Lemma 2 : Jika [Ar|c] berada dalam rref, maka sistem Ar x = c tidak konsisten, jika dan hanya jika c
adalah leading coloumn dari [Ar|c].
Lemma 3 : Jika [Ar|c] dan [Ar|] berada dalam rref dan row equivalen maka c= .

Teorema (Keunikan). Jika A dan B berada dalam rref dan row equivalen, maka A = B.

System x1 + 2x2 = 1
x3 = -1

Mempunyai matrik augmented


[ 10 2 0 1
0 1 −1 ] (*)
Kita dapat menyusun kembali menjadi :
x1 + 2x2 = 1

 Augmented matrik 
[10 0 2 1
1 0 −1 ] (**)
x3 = -1
(*) berada dalam rref

SOLUSI DARI Ax = b MENGGUNAKAN ELIMINASI GAUSS


A adalah matriks bujursangkar dan non singular, maka A invertibel sehingga A-1b adalah solusi unik
dari sistem Ax = b. Kita dapat menghitung x = A-1b. Karena rref dari matriks non singular adalah I,
maka
[A|b]  …  [I| A-1b]. (1)
Juga kita dapat menyelesaikan dengan cara
[A|b]  …  [U|c]. (2)
Dimana U = matriks segitiga atas. Ax = b dan Ux = c equivalen. (2) disebut eliminasi maju (forward
elimination). Peneyelesaian akhir dengan substitusi balik. Entri diagonal dari U disebut pivot.
Contoh 12. Selesaikan sistem persamaan
2x1 – x2 + x3 = 1
2x1 + 2x2 + 2x3 = 2
-2x1 + 4x2 - x3 = 5
Jawab : Dalam bentuk matriks dan vektor : x = (x1 x2 x3)T
2 −1 1

b = (1 2 5)T dan A =
[ ]
2 2 2
−2 4 −1
Mulai dengan eliminasi maju :
2 −1 1 1 2 −1 1 1 2 −1 1 1

[A|b] =
[
= [U|c]
2 2 2 2
−2 4 −1 5

] [
... → 0 3 1 1
0 3 0 6

][
0 3 1 1
0 0 −1 5 ]
Dengan substitusi balik diperoleh : x = (4 2 -5)T.

Teorema. Pernyataan-pernyataan berikut ekivalen untuk setiap matriks A

a. Persamaan Ax = 0 mempunyai jawab x = 0


b. Sistem persamaan linear Ax = b mempunyai solusi yang unik untuk setiap vektor kolom yang
berdimensi n
c. Matriks A nonsingular; yaitu A-1 ada.
d. det(A) ≠ 0
Dari konsep operasi baris di atas kita dapat menyusun algoritma Eliminasi Gauss termasuk Substitusi
baliknya seperti yang dierlihatkan dalam Algoritma berikut ini.
Algoritma. Eliminasi Gauss (Naïve)

Input dari Algoritma ini adalah dimensi dari matriks A, yaitu n dan harga-harga dari elemen-elemen
matriks A dan vektor konstanta b

Step 1. Set k = 1

Step 2. Set i = k + 1

Step 3. Hitung faktor = (aik)/akk dan Set j = k + 1

Step 4. Hitung aij = aij – faktor . aik

Step 5. Apakah j = n

Jika tidak, naikkan counter j satu point, yaitu j = j + 1 dan kembali ke Step 4.

Jika ya, Hitung bi = bi – faktor . ci dan lanjutkan ke Step 6.

Step 6. Apakah i = n?

Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 3.

Jika ya, lanjutkan ke Step 8.

Step 8. Apakah k = n - 1?

Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 2.

Jika ya, Proses komputasi elinisi selesai dan lanjutkan ke Step 9.

Step 9. Set xn = bn/ann; Set i = n – 1;

Step 10. Sigma = 0; Set j = i + 1, lanjutkan ke Step 11

Step 11. Hitung Sigma = Sigma + aij . xi

Step 12. Apakah j = n?

Jika tidak, naikkan counter j satu point, yaitu j = j + 1 dan kembali ke Step 11.

Jika ya, lanjutkan ke Step 13.

Step 13. Hitung xi = (bi - Sigma)/aii.

Step 14. Apakah i = 1?

Jika tidak, turunkan counter i satu point, yaitu i = i - 1 dan kembali ke Step 10.

Jika ya, Proses Komputasi Selesai. STOP.


Dari Algoritma ini kemudian kita dapat menyusun program (script) Matlab dengan nama
naivegauss.m seperti yang tertuang dalam listing berikut ini.

Sistem Persamaan Linear dengan keadaan yang tidak sehat (Ill-conditioned systems)

Kecukupan dari suatu sistem untuk memberikan jawaban yang akurat akan bergantung kepada kondisi
dari sistem persamaan yang akan diselesaikan. Sistem-sistem dengan keadaan yang sehat (well-
conditioned system) adalah sistem-sistem yang dengan sedikit perubahan pada satu atau lebih dari
koefisien persamaan hanya menghasilkan perobahan yang kecil juga dalam solusinya. Sedangkan
suatu sistem persamaan yang tidak sehat (ill-conditioned system) adalah sistem persamaan yang
dengan sedikit saja perubahan dalam satu atau lebih konstantan persamaan akan memberikan
perubahan yang besar dalam jawaban yang dihitung.

Ketika proses pencarian solusi dengan menggunakan metoda eliminasi Gauss dilakukan, maka dalam
perhitungan akan ditemui galat yang disebabkan karena pembulatan (round-off errors) yang pada
gilirannya dapat memberikan perubahan yang besar dalam solusi.

Karena masalah inilah kita harus mencarikan suatu cara untuk mencegah hal itu terjadi. Dan untuk
maksud tersebut ada dua hal yang perlu kita bahas berikut ini.

Pivoting. Kalau elemen matriks dengan nilai nol terjadi pada baris pertama dan kolom pertama
(elemen poros—pivot), maka normalisasi akan menyebabkan pembagian dengan nol dan ini tidak
diinginkan. Hal ini juga terjadi apabila elemen-elemen pivot dalam perhitungan yang terjadi
memberikan harga yang cukup dekat dengan nol maka hal yang sama dapat terjadi. Jadi adalah suatu
keharusan untuk menentukan koefisien sistem persamaan terbesar yang ada. Baris kemudian
dipertukarkan untuk mendapatkan elemen pivot yang paling besar. Karena terjadi pertukaran hanya
terjadi pada baris, maka strategi ini disebut sebagai “partial pivoting”. Jika terjadi perubahan kolom
maupun baris untuk mendapatkan elemen pivot, maka strategi yang digunakan disebut sebagai
“complete pivoting”.

Scaling. Proses scaling adalah proses untuk menghindari galat yang disebabkan karena pembulatan
(round-off errors) dan yang terjadi pada sistem persamaan dengan koefisien yang sangat besar dan
situasi seperti ini sering sekali terjadi pada bidang rekayasa di mana dalam pemodelan untuk
mendapatkan suatu sistem persamaan dilibatkan banyak satuan yang berbeda. Sebagai contoh, dalam
bidang rekayasa elektrik ketika seorang insinyur elektrikal hendak memodelkan suatu rangkaian
listrik, beda tegangan atau voltase bisa berkisar dari beberapa milivolt hingga kilovolt. Karena
banyaknya satuan yang dilibatkan akan memberikan koefisien-koefisien dengan besar dan arah yang
berbeda. Dan pada gilirannya akan berdampak pada galat pembulatan sebagai mana itu juga
berpengaruh pada pivoting.

Dari uraia dalam bagian ini kita dapat membuat algoritma untuk proses pivoting sebagai berikut.

Algoritma
Input bagi algoritma ini adalah orde dari matriks A, n, dan elemen-elemen dari matriks A.

Step 1. pivot = k; Besar = abs (akk); Set ii = k + 1

Step 2. Boneka = abs(aii,k);

Step 3. Jika Boneka > Besar, maka Set Besar = Boneka

pivot = ii

Step 4. Apakah ii = n?

Jika tidak, naikkan counter ii satu point, yaitu ii = ii + 1 dan kembali ke Step 2.

Jika ya, lanjutkan ke Step 5.

Step 5. Jika pivot ≠ k Set jj = k dan lanjutkan ke Step 6.

Step 6. Boneka = apivot, jj

apivot, jj = ak,jj

ak,jj = Boneka

Step 7. Apakah jj = n?

Jika tidak, naikkan counter jj satu point, yaitu jj = jj + 1 dan kembali ke Step 6.

Jika ya, lanjutkan ke Step 8.

Step 8. Boneka = bpivot

bpivot = bk

bk = Boneka

Step 9. Proses komputasi untuk pivoting selesai. Lanjutkan untuk proses berikut.

Dengan adanya proses pivoting maka kita bisa meminimalisir galat karena pembulatan. Algoritma
pivoting ini kemudian dapat ditanamkan dalam algoritma eliminasi Gauss dan menghasilkan suatu
Algoritma Eliminasi Gauss dengan proses pivoting.

Metoda Gauss-Jordan

Metoda eliminasi yang kita bicarakan di atas dapat digunakan menyelesaikan cukup banyak
persamaan dalam suatu sistem persamaan tertentu. Metoda Gauss-Jordan ini merupakan varian dari
metoda eliminasi Gauss. Perbedaan utama adalah bahwa ketika eliminasi anu dalam metoda Gauss-
Jordan hal itu dilakukan terhadap semua persamaan ketimbang apa yang dilakukan oleh eliminasi
Gauss yang hanya melakukan eliminasi hanya pada baris berikutnya. Sebagai tambahan dalam metoda
ini, sebagai tambahan semua baris dibagikan dengan elemen pivotnya.
Dari Analisis di atas, kita dapat membuat algoritma berikut ini.

Step 1. Set k = 1

Step 2. Boneka = akk; Set j = 1; Hitung akj = akj/Boneka

Step 3. Apakah k = n?

Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 2.

Jika ya, Set i = 1 dan lanjutkan ke Step 4.

Step 4. Jika (i ≠ k)

Boneka = aik; Set j = 1; ke Step 5.

Step 5. Hitung aij = aij - Boneka . aij

Step 6. Apakah j = n + 1?

Jika tidak, naikkan counter k satu point, yaitu j = j + 1 dan kembali ke Step 5.

Jika ya, lanjutkan ke Step 7.

Step 7. Apakah i = n?

Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 4.

Jika ya, lanjutkan ke Step 8.

Step 8. Apakah k = n?

Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 2.

Jika ya, Proses Komputasi Selesai. STOP

Dekomposisi matrik berdasarkan perkalian matrik L dan matrik U

Ada tiga metoda dekomposisi terhadap suatu matrik A menjadi matrik L dan U dengan menggunakan
konsep perkalian matrik, yaitu:

 Dekomposisi Crout
 Dekomposisi Doolitle
 Dekomposisi Cholesky
Ketiga dekomposisi ini digunakan untuk mendekomposisi matrik A, yang secara matematika
mengikuti persaman:

A = LU
Atau secara detail dalam bentuk matrik:

a11 a 12 .. . a1 n l 11 0 . .. 0 u11 u12 ... u 1n

( ) ( )( )
a21 a 22 .. . a2 n l 21 l 22 . .. 0 0 u22 ... u 2n
. . .. . . =. . . .. . . . ... .
. . .. . . . . . .. . . . ... .
. . .. . . . . . .. 0 . . ... .
a n1 an 2 .. . ann l n1 ln 2 . .. l nn 0 0 ... unn
(1)

Dimana L adalah matrik segitiga bawah dan U adalah matrik segitiga atas. Dua metoda dekomposisi
yang pertama menggunakan keuntungan dari elemen diagonal dari matrik-matrik L dan U. Pada
metoda Crout, setiap elemen diagonal matrik U yang dihasilkan karena dekomposisi diberi bernilai
satu, yaitu uii = 1. Sedangkan pada metoda Doolitle, setiap elemen diagonal matrik L yang dihasilkan
karena dekomposisi diberi bernilai satu, yaitu lii = 1. Dan pada metoda Cholesky, matrik U yang
dihasilkan karena dekomposisi adalah hasil transpose dari matrik L. Sekarang kita akan maju ke
dalam setiap metoda dengan ditil.

Metoda Dekomposisi Crout. Seperti yang telah dinyatakan di atas, bahwa metoda ini menggunakan
kenyataan bahwa elemen diagonal matrik U hasil dekomposisi A semuanya bernilai satu, yaitu uii = 1.
Sehingga kita dapat menulis kembali persamaan (1) di atas sebagai:

a11 a 12 .. . a1 n l 11 0 . .. 0 1 u12 . .. u1 n

( ) ( )( )
a21 a 22 .. . a2 n l 21 l 22 . .. 0 0 1 . .. u2 n
. . .. . . =. . . .. . . . . .. .
. . .. . . . . . .. . . . . .. .
. . .. . . . . . .. 0 . . . .. .
a n1 an 2 .. . ann l n1 ln 2 . .. l nn 0 0 . .. 1
(2)

Hasil dekomposisi yang dilakukan berdasarkan persamaan (2) dapat diperlihatkan sebagai berikut.
Pertama-tama kita mulai dari kenyataan bahwa elemen pertama baris pertama dari matrik A
merupakan hasil perkalian dari baris pertama matrik L dengan kolom pertama matrik U. Dengan
demikian kita akan memperoleh a11= l11 atau l11= a11. Kita juga tahu kenyataan elemen pertama dari
baris kedua matrik A adalah sama dengan baris kedua matrik L dikalikan dengan kolom pertama
matrik U dan kita mendapatkan l21= a21. Selanjutnya kita akan menghitung l31 dengan menggunakan
kenyataan bahwa elemen pertama dari baris keketiga matrik A adalah sama dengan baris kedua matrik
L dikalikan dengan kolom pertama matrik U. Dan kita akan memperoleh:

l31= a31; (2c)


Demikan seterusnya dan kita akan secara umum dapat menuliskan persamaan umum berikut, yaitu:

li1= ai1; untuk setiap i = 1,3, …, n (2d)

Karena l11 sudah dihitung dengan persamaan (2a), langkah berikut nya adalah memperkalikan baris
pertama dari matrik L dengan setiap kolom dari matrik U. Kita akan memulainya dengan
memperkalikan baris pertama matrik L dengan kolom kedua dari matrik U dan kita memperoleh l11u21
= a21. Sehingga kita akan memperoleh:

u12= a12/l11 (2b)

Langkah berikutnya adalah memperkalikan baris pertama L dengan kolom ketiga dari matrik U dan
kita memperoleh l11u13 = a13. Sehingga kita akan memperoleh:

u13= a13/ l11 (2c)

Bila kita lanjutkan dengan cara yang sama, yaitu memperkalikan baris pertam matrik L dengan kolom
keempat dan seterusnya, secara rekursif kita akan memperoleh:

u12= a1i/ l11; untuk setiap i = 2,3, …, n (2d)

Berdasarkan persamaan (2d) dan (2d) ini kita dapat menyusun step pertama Algoritma
Dekomposisi LU Crout, sebagai

Step 1. Set l11 = a11

Untuk setiap i = 1, 2, 3, …, n;

Set li1= ai1

Hitung u1i= a1i/ l11


Sekarang kita akan menyusun Step 2 untuk Algoritma ini. Ini dimulai dari kenyataan bahwa untuk j
=2, kita dapat menghitung l22 dan dengan nilai ini kita menghitung u23, u24, …, u2n. dengan cara
memperkalikan baris kedua dari matrik L dengan kolom kedua dan seterusnya dari matrik U. Kita
akan mulai dari menghitung l22 yaitu dengan memperkalikan baris kedua matrik L dengan kolom
kedua matrik U, yang mana setelah penyusunan ulang kita memperoleh:

l22 = a22 – l21u12 (2e)

Berdasarkan nilai l22 dari perhitungan dengan menggunakan persamaan (2e), kita telah siap untuk
mengitung u23, u24, …, u2n. Dan kita mulai dengan menghitung u23. Dengan memperkalikan baris
kedua dari matrik L dengan kolom ketiga dari matrik U dan setelah penyusunan ulang maka kita
peroleh:

u23 = (a23 – l21u13)/l22 (2f)

Untuk menghitung u24 kita lakukan dengan cara memperkalikan baris kedua matrik L dengan kolom
keempat dari matrik U dan hasil akhirnya adalah:

u24 = (a24 – l21u14)/l22 (2g)

Untuk menghitung u25 kita lakukan dengan cara memperkalikan baris kedua matrik L dengan kolom
kelima dari matrik U dan hasil akhirnya adalah:

u25 = (a25 – l21u15)/l22 (2g)

Proses ini kita lanjutkan dalam pola yang sama hingga u2n , sehingga secara rekursif kita akan
memperoleh:

u2j = (a2j – l21u1j)/l22; untuk j = 3, 4, …, n (2g)

Untuk mempermudah uraian mengenai penyusunan algoritma bagi step 2 ini, kita akan memecah step
2 ini menjadi beberapa step. Berdasarkan persamaan-persamaan (2e) dan (2g), kita dapat menulis
step 2.1 sebagai:

Step 2.1 Set j = 2.

Hitung l22 = a22 – l21u12


Untuk i = j+1, j+2, …, n

Hitung u2j = (a2j – l21u1j)/l22;

Sekarang kita mengambil j = 3. Dengan demikian kita dapat menghitung l33 dan dengan nilai ini kita
menghitung u34, u35, …, u3n. dengan cara memperkalikan baris ketiga dari matrik L dengan kolom
kedua dan seterusnya dari matrik U. Kita akan mulai dengan menghitung l23 yaitu dengan
memperkalikan baris kedua matrik L dengan kolom kedua matrik U, yang mana setelah penyusunan
ulang kita memperoleh:

l33 = a33 – l31u13 – l32u23 (2h)

Atau dalam notasi sigma kita dapat menulis persamaan (2h) sebagai:
2
l 33=a33− ∑ l 3k u k 3
k=1 (2h1)

Berdasarkan nilai l33 dari perhitungan dengan menggunakan persamaan (2h1), kita telah siap untuk
mengitung u34, u35, …, u3n. Dan kita mulai dengan menghitung u34. Dengan memperkalikan baris
ketiga dari matrik L dengan kolom keempat dari matrik U dan setelah penyusunan ulang maka kita
peroleh:

u34 = (a34 – l31u14 - l32u24)/l33 (2h2)

Atau dalam notasi sigma kita dapat menulis persamaan (2h2) sebagai:
2
a 34 − ∑ l 3 k uk 4
k =1
u34 =
l 33 (2h3)

Untuk menghitung u35 kita lakukan dengan cara memperkalikan baris ketiga matrik L dengan kolom
kelima dari matrik U dan hasil akhirnya adalah:

u35 = (a35 – l31u15 – l32u25)/l33 (2h4)

Atau dalam notasi sigma kita dapat menulis persamaan (2h4) sebagai:
2
a35− ∑ l3 k u k 5
k=1
u35=
l 33 (2h5)

Jika kita melakukan pola perhitungan yang analog untuk menghasilkan bentuk yang lebih umum,
yaitu :
2
a3 i− ∑ l 3 k u ki
k=1
u3 i=
l 33 ; untuk i = 4, 5, …, n-1 (2h6)

Berdasarkan persamaan-persamaan (2h1) dan (2h6) kita dapat menuliskan step 2.3 sebagai

Step 2.2 Set j = 3.


2
l 33=a33− ∑ l 3k u k 3
Hitung k=1

Untuk i = j+1, j+2, …, n – 1


2
a3 i− ∑ l 3 k u ki
k=1
u3 i=
Hitung l 33

Analog dengan penurunan step 2.2 kita dapat menurunkan step 2.3 sebagai berikut:

Step 2.3 Set j = 4.


3
l 44=a44 −∑ l 4 k uk 4
Hitung k =1

Untuk i = j+1, j+2, …, n


3
a4 i− ∑ l 4 k uki
k=1
u4 i =
Hitung l 44

Dan seterusnya hingga step 2.n-1, yaitu:

Step 2.n-1 Set j = n-1.


n−2
l n−1 , n−1 =an−1, n−1− ∑ ln−1, k u k , n−1
Hitung k =1

Untuk i = j+1, j+2, …, n


n−2
a n−1i − ∑ l3 k uki
k =1
un−1, i=
Hitung l n−1, n−1

Step 2.1 hingga step 2.n-1 mempunyai bentuk yang analog sehingga kita dapat menggabungkannya
menjadi satu step yang kompak, yaitu step 2 sebagai berikut.

Step 2 Untuk j = 2, 3, …, n-1


j−1
l jj =a jj −∑ l jk u kj
Hitung k =1

Untuk i = j+1, j+2, …, n


j−1
a ji− ∑ l jk u ki
k=1
u ji=
Hitung l jj

Sekarang hanya tinggal lnn yang belum dihitung. Untuk menghitungnya, kita memperkalikan baris ke-
n dari matrik L dengan kolom ke-n dari matrik U. Dan setelah disusun kembali, hasilnya adalah:
n−1
l nn=a nn −∑ l jk u kj
k =1 (2h7)

berdasarkan persamaan (2h7) ini, kita dapat menuliskan step terakhir dari algoritma, yaitu
n−1
l nn=a nn −∑ l jk u kj
Step 3. Hitung k =1 . Stop

Dengan demikian kita sekarang sudah siap untuk menuliskan Algoritma Dekomposisi LU Crout,
sebagai berikut (Algoritma )

Algoritma Dekomposisi LU Crout. Prosedut untuk menghitung elemen-elemen dari

matrik L dan U.

Step 1. Set l11 = a11

Untuk setiap i = 2, 3, …, n;

Set li1= ai1

Hitung u1i= a1i/ l11;

Step 2 Untuk j = 2, 3, …, n-1


j−1
l jj =a jj −∑ l jk u kj
Hitung k =1

Untuk i = j+1, j+2, …, n – 1


j−1
a ji− ∑ l jk u ki
k=1
u ji=
Hitung l jj

n−1
l nn=a nn −∑ l jk u kj
Step 3. Hitung k =1 . Stop
Untuk Step 1, jumlah perhitungan yang dilakukan sebanyak 2(n - 1). Untuk mengerjakan Step 2
jumlah perhitungan yang harus dilakukan adalah…. Sedangkan untuk mengerjakan step 3 diperlukan
sebanyak n perhitungan. Sehingga jumlah perhitungan seluruhnya yang harus dilakukan Algoritma ini
adalah … perhitungan.

Dari Algoritma di atas kita dapat menyusun Pseudocodenya, yang nantinya akan digunakan sebagai
acuan untuk menyusun program komputer. Pseudocode Algoritma ini diberikan dalam bentuk akhir
berbasis sriptPemrograman Matlab.

Metoda Dekomposisi Doolitle. Seperti yang telah dinyatakan di atas, bahwa metoda ini
menggunakan kenyataan bahwa elemen diagonal matrik L hasil dekomposisi A semuanya bernilai
satu, yaitu lii = 1. Sehingga kita dapat menulis kembali persamaan (1) di atas sebagai:

a11 a 12 .. . a1 n 1 0 . .. 0 u 11 u12 .. . u1n

( ) ( )( )
a21 a 22 .. . a2 n l 21 1 . .. 0 0 u22 .. . u 2n
. . .. . . = . . . .. . . . .. . .
. . .. . . . . . .. . . . .. . .
. . .. . . . . . .. 0 . . .. . .
a n1 an 2 .. . ann l n1 ln 2 . .. 1 0 0 .. . unn
(3)

Hasil dekomposisi yang dilakukan berdasarkan persamaan (3) dapat diperlihatkan dalam bentuk
teorema sebagai berikut.

Teorema. Entri-entri dari matrik-matrik L dan U dalam persamaan (3) dapat dihitung dengan

menggunakan Algoritma berikut:

Step 1. Untuk i = 2, …, n

Set u1i = a1i

ai1
li 1 =
Set a11

Step 2. Untuk Set j = 2, 3, …, n -1


j −1
u jj= a jj − ∑ l jk ukj
Hitung k =1

Untuk i = j+1, j+2, …, n

j−1

Hitung :
l ij= ( aij −∑ l ik ukj
k=1
u jj )
n−1
unn=ann− ∑ l nk ukn
Step 3. Hitung k =1 . Stop

Bukti. Mirip dengan cara pembuktian algoritma Dekomposisi Crout

Metoda Dekomposisi Cholesky. Metoda ini didasarkan kepada kepada kenyataan bahwa ada suatu
matrik A yang positif definit sehingga dapat diambil matrik U sebagai hasil transpose dari matrik L,
yaitu LT. Atau dalam notasi matrik dan vektor kita dapat menghitng entri-entri dari matrik L dengan
menggunakan persamaan berikut.

A = LLT (4)

Atau dalam bentuk ditilnya kita boleh menuliskannya sebagai:

a11 a 12 .. . a1 n l 11 0 . .. 0 l 11 l 21 .. . l n1

( ) ( )( )
a21 a 22 .. . a2 n l 21 l 22 . .. 0 0 l 22 .. . l n2
. . .. . . =. . . .. . . . .. . .
. . .. . . . . . .. . . . .. . .
. . .. . . . . . .. 0 . . .. . .
a n1 an 2 .. . ann l n1 ln 2 . .. l nn 0 0 .. . l nn
(5)

Berdasarkan persamaan (5) kita dapat menuliskan Teorema berikut

Jika suatu matrik A adalah matriks yang positif definit dan dapat didekomposisi ke dalam bentuk
seperti yang dinyatakan oleh persamaan (4) atau (5), maka algoritma untuk menghitung setiap elemen
dari matrik L, yaitu :

Step 1. Set l 11= √a 11

Untuk j = 2, 3, …, n

a ij
l j 1=
Hitung l11

Step 2. Untuk j =2, 3, …, n-1

j −1

Hitung

l jj = a jj− ∑ l
k=1 kk
2

Untuk i = j+1, j+2, …, n


j −1

l ij=
( a ji− ∑ l jk l ik
k =1
)
Hitung l jj

Step 3 Untuk j = n

j −1

Hitung

l jj = a jj− ∑ l
k=1 kk
2
. Stop.

Bukti. Kita mulai dari kenyataan bahwa nilai entri (1,1) dari matrik A adalah a11 = (l11)2 sehingga:

l 11= √a 11 (5.a)

Karena nilai l11 ini telah dihaitung, maka kita dapat menghitung elemen-elemen l12 , l13, …, l1n; dari
kenyataan bahwa nilai a12 , a13, …, a1n diketahui, yaitu a1j =lj1.l11, sehingga:

a ij
l j 1=
l11 , untuk j = 2, 3, …, n (5.b)

Dengan demikian kita telah menemukan step 1, yaitu:

Step 1. Set l 11= √a 11

Untuk j = 2, 3, …, n

a ij
l j 1=
Hitung l11

Langkah berikutnya kita akan menghitung elemen-elemen dari setiap kolom matrik A. Perhitungan-
perhitungan ini kemudian kita simpulkan dalam Step 2. Untuk mempermudah analisis, kita akan
menghitung elemen-elemen kolom satu persatu dimulai dari kolom kedua dan seterusnya hingga
kolom ke- (n – 1). Untuk setiap kolomnya kita akan memformulasikan sub step tersendiri, sehingga
untuk mendapatkan Step 2, kita harus mulai dari Step 2.1 yang digunakan untuk menghitung elemen-
elemen kolom kedua, Step 2.2 untuk menghitung elemen-elemen kolom ketiga dan seterusnya hingga
Step 2.(n – 2).

Pertama sekali kita akan menghitung elemen-elemen kolom kedua dari matrik L. Ini berarti kita akan
mengambil j = 2. Mula-mula kita akan menghitung l22. Hasil perkalian antara baris kedua dari matrik
L dengan kolom kedua matrik LT, akan menghasilkan:
2 2
l 21 +l 22 =a22
(5.c.1)

Sehingga
2
l 22= a22−l √ 21 (5.c.2)

Untuk menghitung l32, kita akan menggunakan hasil perkalian dari baris kedua matrik L dengan
kolom ketiga dari matrik LT, dan akan memberikan:
l 21 l 31+l 22 l32 =a23 (5.c.3)

Sehingga

( a23−l 21 l31 )
l 32 =
l22

Untuk menghitung l42, kita akan menggunakan hasil perkalian dari baris kedua matrik L dengan
kolom keempat dari matrik LT, dan akan memberikan:

l21 l 41 +l 22 l 42=a 24 (5.c.4)

Sehingga

( a24 −l21 l41 )


l 42 =
l 22 (5.c.5)

Untuk menghitung l52, kita akan menggunakan hasil perkalian dari baris kedua matrik L dengan
kolom kelima dari matrik LT, dan akan memberikan:

l 21 l 51+l 22 l52 =a25 (5.c.6)

Sehingga

( a25−l 21 l51 )
l 52 =
l22 (5.c.7)

Bila kita meneruskan proses perhitungan ini kita akan menemukan bahwa untuk i = 3, 4, …, n
berlaku:

( a2 j −l 21 l j1 )
li 2 =
l 22 (5.c.8)

Dengan demikian untuk j = 2, berdasarkan persamaan (5.c.1) dan (5.c.8), dapat disusun step 2.1
sebagai berikut

Step 2.1 Set j =2


2
l 22= a22−l√
Hitung 21

Untuk i = 3, 4, …, n

( a2 j −l21 l j1 )
li 2 =
Hitung l 22

Berikutnya kita akan menghitung elemen-elemen kolom ketiga dari matrik L. Ini berarti kita akan
mengambil j = 3. Mula-mula kita akan menghitung l33. Hasil perkalian antara baris ketiga dari matrik
L dengan kolom ketiga matrik LT, akan menghasilkan:
2 2 2
l +l +l =a 33
21 22 33 (5.d.1)

Sehingga

l 33= a33−(l 2 +l
√ 2)
11 22 (5.d.2)

Untuk menghitung l43, kita akan menggunakan hasil perkalian dari baris ketiga matrik L dengan
kolom keempat dari matrik LT, dan akan memberikan:

l 31 l 41 +l 32 l 42+l 33 l 43=a43 (5.d.3)

Sehingga

( a 34−( l 31 l 41+l 32 l 42 ))
l 43=
l 33 (5.d.4)

Untuk menghitung l53, kita akan menggunakan hasil perkalian dari baris ketiga matrik L dengan
kolom kelima dari matrik LT, dan akan memberikan:

l 31 l 11 +l 32 l 52+ l 33 l 53=a35 (5.d.5)

Sehingga

( a35−( l 31 l 51+l 32 l 52 ) )
l 53=
l 33 (5.d.6)

Untuk menghitung l63, kita akan menggunakan hasil perkalian dari baris kedua matrik L dengan
kolom kelima dari matrik LT, dan akan memberikan:

l 31 l 61 +l 32 l 62+l 33 l 63 =a36 (5.d.7)

Sehingga

( a36 −( l 31 l 61+ l 32 l 62 ) )
l 63=
l 33 (5.d.8)

Bila kita meneruskan proses perhitungan ini kita akan menemukan bahwa untuk i = 3, 4, …, n
berlaku:

( a3 i−( l31 li 1 +l32 li2 ))


l i3 =
l 33 (5.d.9)

Dengan demikian untuk j = 2, berdasarkan persamaan (5.d.1) dan (5.d.9), dapat disusun step 2.2
sebagai berikut

Step 2.2 Set j =3


2 2
l 33= a22−(l +l )

Hitung 11 22
Untuk i = 4, 5, …, n

( a3 i−( l31 li 1 +l32 li2 ))


l i3 =
Hitung l 33

Berikutnya kita akan menghitung elemen-elemen kolom ketiga dari matrik L. Ini berarti kita akan
mengambil j = 3. Mula-mula kita akan menghitung l33. Hasil perkalian antara baris ketiga dari matrik
L dengan kolom ketiga matrik LT, akan menghasilkan:

2 2 2 2
l 11 +l 22 + l 33 +l 44 =a 44
(5.e.1)

Sehingga
2 2 2
l 44= a 44−(l +l + l )
√ 11 22 33 (5.e.2)

Untuk menghitung l54, akan digunakan hasil perkalian dari baris keempat matrik L dengan kolom
kelima dari matrik LT, dan akan memberikan:

l 41 l51 +l42 l 52+ l 43 l 53 +l 44 l54=a 45 (5.e.3)

Sehingga

( a 45−( l 41 l51+l 42 l52 l43 l53 ))


l 54=
l 44 (5.e.4)

Untuk menghitung l64, kita akan menggunakan hasil perkalian dari baris keempat matrik L dengan
kolom keenam dari matrik LT, dan akan memberikan:

l 41 l 61 +l 42 l 62 +l 43 l 63 +l 44 l 64=a46 (5.e.5)

Sehingga

( a 46−(l 41 l61+l 42 l62 l43 l 63 ) )


l 64=
l 44 (5.e.6)

Untuk menghitung l74, kita akan menggunakan hasil perkalian dari baris keempat matrik L dengan
kolom ketujuh dari matrik LT, dan akan memberikan:

l 41 l71 +l 42 l 72+ l43 l73 +l 44 l 74=a 47 (5.e.7)

Sehingga

( a 47−(l 41 l 71+l 42 l72 l43 l 73 ))


l 74=
l 44 (5.e.8)
Bila kita meneruskan proses perhitungan ini kita akan menemukan bahwa untuk i = 5, 6, …, n
berlaku:

( a4 i−( l 41 li 1 + l 42 l i2 +l 43 l i 3 ) )
l i4 =
l 44 (5.e.9)

Dengan demikian untuk j = 4, berdasarkan persamaan (5.d.1) dan (5.d.9), dapat disusun step 2.3
sebagai berikut

Step 2.2 Set j =4


2 2 2
l 44= a 44−(l +l + l )

Hitung 11 22 33

Untuk i = 5, 6, …, n

( a4 i−( l 41 li 1 + l 42 l i2 +l 43 l i 3 ) )
l i4 =
Hitung l 44

Dari proses untuk mendapatkan step 2.1 dan step 2.2, kita dapat melanjutkannya sehingga diperoleh
step 2.(n-2), yaitu

Step 2.(n-1) Set j = n-1

ln−1 ,n−1 = an−1 ,n−1−(l 2 +l2 +. ..+l 2


√ )
Hitung 11 22 n−1 ,n−1

Untuk i = n

( a n−1 ,i −(ln−1,1 li 1+ln−1,2 li 2+.. .+l n−1 , n−1 li, n−1 ))


l i, n−1 =
Hitung l n−1, n−1

Berdasarkan step 2.1, step 2.2, …, step 2.(n-1), kita dapat menyusun step 2 yang lebih umum, yaitu:

Step 2 Untuk j =2, 3, …, n-1

j−1

Hitung

l jj = a jj−∑ l
k=1
2
kk

Untuk i = j+1, j+2, …, n


j −1

l ij=
( a ji− ∑ l jk l ik
k =1
)
Hitung l jj

Paling akhir kita akan menghitung lnn, yaitu dengan cara memperkalikan baris ke-n dari matrik L
dengan baris ke-n matrik LTsehingga diperoleh:
n
ann =∑ l 2
kk
k=1 (5.f.1)

Atau

n−1


l nn= ann−∑ l
i=1
2
ii
(5.f.2)

Dengan demikian step 3 dapat disusun sebagai berikut

Step 3 Untuk j = n

j−1

Hitung

l jj = a jj−∑ l
k=1
2
kk

Bila kita menggabungkan step 1, step 2 dan step 3, maka dihasilkan algoritma yang dimaksud.

MATRIKS TRI DIAGONAL


Dalam pelbagai aplikasinya matriks tridiagonal dijumpai ketika kita hendak menyelesaikan suatu
persamaaan differensial parsial secara numerik dengan menggunakan metoda beda hingga.
Penyeleaian numerik dari persamaaan differensial parsial itu sendiri akan di bahas secara khusus
dalam Bab. Sedangkan aplikasi yang lainnya dapat juga kita jumpai dalam interpolasi spline kubik,
yang dibahas juga secara khusus dalam Bab mengenai interpolasi dan regresi. Dalam teknologi
proses, matriks tridiagonal ini muncul ketika kita memodelkan kolom adsorpsi dan kolom distilasi.
Dan masih banyak aplikasi lainnya yang memunculkan matriks tridiagonal dalam pemodelannya.
Matrik tridiagonal adalah matrik dengan tiga diagonalnya bernilai tidak nol sedangkan elemen-elemen
lainnya berharga nol. Dalam bentuk yang diperluas, jika matrik A adalah matrik tridiagonal maka:

a1 c 1

( )
b 2 a2 c 2 0
. . .
. . .
0 b n−1 . a n−1 cn−1
bn an
A= (6)

Untuk menghitung elemen-elemen dari matrik tridiagonal, maka digunakan metoda Thomas.

Metoda ini tidak lain adalah metoda dekomposisi Crout yang diterapkan untuk matrik tridiagonal,
yaitu mendekomposisi matrik A menjadi dua matrik:
1 α1 c1

( ) ( )
β2 1 0 α 2 c2 0
. . . .
. . . .
0 βn−1 . 1 0 . c n−1
βn 1 an
L= dan U = (7)

Dengan demikian:

a1 c 1 1 α1 c1

( )( )( )
b 2 a2 c 2 0 β2 1 0 α 2 c2 0
. . . . . .
. . . . . .
0 b n−1 . c n−1 0 βn−1 . 1 0 . c n−1
bn an βn 1 an
= (8)

Sekarang, berdasarkan persamaan yang terakhir ini kita dapat menyusun Algoritma untuk menghitung
entri-entri dari matrik Ldan U. Pertama sekali kita akan mulai menghitung 1, yaitu dengan cara
memperkalikan baris pertama dari matrik L dengan kolom pertama dari matrik U, sehingga
dihasilkan:

1 = a1 (8.a.1)

Dengan memperkalikan baris kedua dari matrik L dengan kolom pertama matrik U, akan
memberikan:

21 = b2 (8.a.2)

Karena yang mau dihitung adalah 2, maka kita akan memperoleh

b2
β 2=
α1 (8.a.3)

Selanjutnya dengan memperkalikan baris kedua dari matrik L dengan kolom kedua matrik U, akan
memberikan:

2c1 + 2 = a2 (8.a.4)
Sehingga kita dapat menghitung

2 = a2 - 2c1 (8.a.5)

Berikutnya kita akan menghitung 3 dengan cara memperkalikan baris ketiga dari matrik L dengan
kolom kedua dari matrik U dan diperoleh

b3
β 3=
α2 (8.a.6)

Selanjutnya dengan memperkalikan baris ketiga dari matrik L dengan kolom tiga matrik U, akan
memberikan:

3c2 + 3 = a3 (8.a.7)

Sehingga kita dapat menghitung

3 = a3 - 3c2 (8.a.8)

Berikutnya kita akan menghitung 4 dengan cara memperkalikan baris keempat dari matrik L dengan
kolom ketiga dari matrik U dan diperoleh

b4
β 4=
α3 (8.a.9)

Selanjutnya dengan memperkalikan baris keempat dari matrik L dengan kolom keempat dari matrik
U, akan memberikan:

4c3 + 4 = a4 (8.a.10)

Sehingga kita dapat menghitung

4 = a4 - 4c3 (8.a.11)

Selanjutnya dari bentuk-bentuk yang diberikan dalam persamaan-perasamaan (8.a.3), (8.a.6) dan
(8.a.9) kita dapat menyimpulkan secara umum bahwa kita akan dapat menghitung i dengan cara
memperkalikan baris ke-i dari matrik L dengan kolom ke-i-1 dari matrik U. Dan dengan demikian
diperoleh

bi
β i=
α i −1 ; untuk i = 2, 3, …, n-1 (8.a.12)
Sedangkan dari persamaan-persamaan (8.a.5), (8.a.8) dan (8.a.11), secara umum kita dapat
menyimpulkan bahwa dengan memperkalikan baris ke-I dari matrik L dengan baris ke-I dari matrik
U, kita akan memperoleh (setelah penyusunan kembali)

i = ai - ici-1 ; untuk i = 2, 3, …, n-1 (8.a.13)

Karena dalam persamaan-persamaan (8.a.12) dan (8.a.13) kita menghitung i dan i untuk nilai-nilai
dari 1 hingga n – 1, maka untuk itu kita perlu menghitung lagi n dan n dengan persamaan-
persamaan:

bn
β n=
α n−1 (8.a.14)

dan

n = an - ncn-1 (8.a.15)

Dari persamaan-persamaan (8.a.1), (8.a.12), (8.a.13), (8.a.14) dan (8.a.15) kita dapat menyimpulkan
bahwa algoritma untuk menghitung elemen-elemen dari matrik L dan U dari hasil dekomposisi
terhadap matrik tridiagonal A adalah sebagai berikut.

Step 1. Set 1 = a1

Step 2 . Untuk i =2, 3, …n-1:

bi
β i=
Hitung α i −1

Hitung i = ai - ici-1

bn
β n=
Step 3. Hitung α n−1 ; Hitung  = a -  c . Stop.
n n n n-1

Ketika kita mempunyai suatu system persamaan linear yang melibatkan matriks tridiagonal, maka
misalkan system persamaan linear yang hendak diselesaikan adalah
Ax = d

Sedangkan hasil dekomposisinya adalah

A = LU

Maka itu berarti bahwa

LUx = d

Untuk memudahkan penyelesaian, kita ambil suatu vektor y sedemikian sehingga

Ux = y

Dan ini berari bahwa

Ly = d

Berangkat dari kenyataan ini kita kemdian menghitung nilai dari vektor y dari persamaan terakhir
dan kemudian kita menyelesaikan persamaan sebelumnya, yaitu Ux = y untuk mendapatkan vektor
jawaban yang kita cari.

Sekarang kita akan menyusun algritma untuk menghitung akar system persamaan dengan matriksnya
adalah matriks tridiagonal. Mula-mula kita ambil Ly= d

1 y1 d1

( )( ) ( )
β2 1 0 y2 d2
. . y 3 = d3
. . . .
0 βn−1 . 1 . .
βn 1 yn d

Dari persamaan terakhir ini, kita akan menyusun subalgoritma untuk menghitung vektor y. Pertama-
tama,
y1 = d1

kemudian persamaan kedua yang dapat kita selesaikan untuk mendapatkan y2 adalah:

β2y1 + y2 = d2

dan ini berarti bahwa

y2 = d2 - β2y1

kemudian persamaan ketiga yang dapat kita selesaikan untuk mendapatkan y3 adalah:

β3y2 + y3 = d3

dan ini berarti bahwa

y3 = d3 - β3y2

kemudian persamaan keempat yang dapat kita selesaikan untuk mendapatkan y4 adalah:

β4y3 + y4 = d4

dan ini berarti bahwa

y4 = d4 - β4y3

Dari kenyataan ini, dapat disimpulkan bahwa kita dapat menghitung untuk setiap yi untuk i = 2, 3, ...,n
dapat digunakan persamaan

yi = di - βiyi-1

Itu berarti sub-algoritma yang dapat disusun adalah

Step 1. y1 = d1

Step 2. Untuk i = 1, 2, …, n

Hitung yi = di - βiyi-1

Langkah terakhir untuk mendapatkan vektor jawaban x adalah dengan menyelesaikan system
persamaan Ux = y, yaitu

α 1 c1 x1 y1

( )( ) ( )
α 2 c2 0 x2 y2
. . x3 = y3
. . . .
0 . c n−1 . .
an xn yn
Dari baris terakhir matriks ini kita dapatkan anxn = yn, sehingga kita dapat menuliskan

xn = yn/αn

Baris kedua dari bawah memberikan αn-1xn-1 + cnxn = yn-1, sehingga kita dapat menuliskan

xn-1 = (yn-1 - cnxn)/αn-1

Baris ketiga dari bawah memberikan αn-2xn-2 + cn-1 xn-1 = yn-2, sehingga kita dapat menuliskan

xn-2 = (yn-2 - cn-1 xn-1)/αn-2

Baris keempat dari bawah memberikan αn-3xn-3 + cn-2 xn-2 = yn-3, sehingga kita dapat menuliskan

xn-3 = (yn-3 - cn-2 xn-2)/αn-3

Dengan demikian kita dapat menyimpulkan bahwa untuk setiap I = n -1, n – 2, …, 3, 2, 1 kita dalat
menghitung

xi = (yi - cn+1 x+1)/αi

Dari uraian di atas kita dapat menuliskan sub-algoritman untuk menghitung vektor x dari persmaan
LU = x, sebagai berikut.

Step 3. xn = yn/αn

Step 4. Untuk i = n - 1, n - 2, …, 3, 2, 1

Hitung xi = (yi - cn+1 x+1)/αi

Sekarang kita dapat menggabungkan algoritma untuk menghitung nilai elemen dari matriks L dan U
dengan dua sub-algoritma terakhir menjadi suatu algoritma lengkap untuk menghitung vektor jawaban
x dari system persamaan linear Ax =d yang melibatkan dengan A adalah matriks tridiagonal, yaitu
Algoritma Thomas seperti yang disajikan berikut ini

Step 1. Set 1 = a1

Step 2. Untuk i =2, 3, …n-1:

bi
β i=
Hitung α i−1

Hitung i = ai - ici-1

bn
β n=
Step 3. Hitung α n−1 ; Hitung  = a -  c . Lanjut ke Step 4.
n n n n-1

Step 4. y1 = d1
Step 5. Untuk i = 1, 2, …, n

Hitung yi = di - βiyi-1

Step 6. xn = yn/αn

Step 7. Untuk i = n - 1, n - 2, …, 3, 2, 1

Hitung xi = (yi - cn+1 x+1)/αi.

Step 8. Komputasi selesai. STOP.

Fungsi script untuk program Matlab dari algoritma ini adalah thomas.m yang kodenya disajikan
berikut ini.

Hasil Kali Dalam dan Keortogonalan.

Kita mulai dengan konsep scalar kompleks dan matriks kompleks. Kemudian dilanjutkan dengan hasil
kali dalam dan terakhir adalah ketegaklurusan himpunan vektor. Ketika kita membicarakan
ketegaklurusan himpunan vektor, maka kita kemudian dapat merumuskan Algoritma Gram-Schmidt
dan sebagai konsekwensinya kita dapat merumuskan algoritma QR.

Konjugat kompleks

Suatu konyugat kompleks dari scalar z = a + bi, (a dan b adalah bilangan-bilangan real) diberi
berlambang z̄ adalah z̄=a−ib. Dan konyugat kompleks dari suatu matriks A adalah matriks
Ā yang elemen-elemennya adalah konyugat kompleks dari elemen-elemen matriks A. Sifat-sifat
berikut berlaku untuk scalar-skalar x dan y, demikian juga dengan matriks-matriks A dan B.

S1. ¯x̄ =x; dan Ā¯ = A

S2. x real jika dan hanya jika x̄=x; dan A adalah matriks real jika dan hanya jika Ā= A .

S3. x+ x̄ adalah suatu scalar real; dan A + Ā adalah suatu matriks real jika dan hanya jika
Ā= A .

S4. ( x̄ ȳ )= ( x̄ ) ( ȳ ) ; dan ( Ā B̄ )=( Ā ) ( B̄ ) jika hasil kali ini terdefinisi

S5. ¿¿ ¿¿ jika jumlah matriks ini terdefinisi

S6. x x̄=|x|2 selalu positif real, terkecuali x x̄=0 ketika x = 0


Hasil kali dalam (Inner Product).

Katakanlah bahwa Z adalah suatu matriks nonsingular yang berukuran n × n. Hasil kali dalam dari
vektor-vektor kolom x dan y yang masing-masing berdimensi n terhadap matriks Z didefinisikan
sebagai

¿ x,y >Z ¿ ( Zx ) . ( Z̄ ȳ ) (1)

Jika Z = I, maka tikalas (subscript) di persamaan (1) dihilangkan sehingga kita dapat menuliskan

<x, y>Z = x. ȳ (2)

Ini disebut sebagai hasil kali dalam Euclid (Euclidean inner product). Jika x dan y adalah vektor-
vektor yang real maka hasil kali dalam Euclid menjadi hanya meruakan dot produk dari dua vektor x
dan y.

Ortogonalitas.

Dua vektor yang berukuran sama dikatakan orthogonal bila hasil kali dalamnya memberikan hasil nol.
Karena matriks-matriks Z yang berbeda dalam persamaan (1) akan menghasilkan hasil kali dalam
yang berbeda. Dua vektor dapat saja orthogonal di bawah hasil kali dalam yang satu tetapi tidak di
bawah yang lain. Ortogonalitas akan direduksi menjadi hanya suatu ketegaklurusan secara geometric
di bawah hasil kali dalam Euclid bila kedua vekor tersebut real dan berada dalam ruang dua atau tiga
dimensi.

Suatu himpunan vektor dikatakan orthogonal jika setiap vektor di dalamya saling tegak lurus satu
sama lainnya. Vektor-vektor yang demikian ini dikatakan bebas linear apabila semua vektor-vektor ini
adalah vektor-vektor yang tidak nol.

Suatu himpunan vektor dikatakan ortonormal apabila himpunan vektor itu adalah himpunan vektor-
vektor orthogonal dengan panjang dari setiap vektor adalah satu.

Orthogonalisasi Gram-Schmidt

Setiap himpunan vektor-vektor {u1, u2, …, un} yang bebas linear dan berhingga mempunyai himpunan
vektor-vektor orthogonal tidak nol yang yang terkait {q1, q2, …, qn} yang di dasarkan pada suatu hasil
kali dalam tertentu sedemikian sehingga qi untuk i = 1, 2, …, n, merupakan suatu kombinasi dengan
vektor-vektor u1, u2, …, un-1.

Berikut ini merupakan algoritma yang digunakan utntuk menghasilkan himpunan vektor orthonormal
dan algoritma ini disebut sebagai proses Gram-Schmidt.

1
q1 = u
Step 1. Hitung √ ⟨u1 ,u1 ⟩ 1 Set i = 1, lanjutkan ke Step 2.
i−1
v i =ui −∑ ⟨ ui , q j ⟩ q j
Step 2. Hitung j=1

1
qi = v
Step 3. Hitung √⟨ vi , v i ⟩ i ; OUTPUT(qi)
Step 4. Apakah i = n?

Jika tidak, naikkan counter satu point , yaitu I = I + 1 dan kembali ke Step 2.

Jika Ya. Komputasi berhasil. STOP

Dan Algoritma ini kita dapat menuliskan suatu script Matlab yang diberi nama gramschmidt.m seperti
yang tertuang dalam kode script berikut ini.

Algoritma QR.

Proses orthogonalisasi Gram-Schmidt seperti yang diberikan di atas bisa menghasilkan ketidak-
tepatan. Hal ini terjadi dikarenakan adanya galat karena pembulatan karena perhitungan matematik
yang melibatkan digit dibelakang koma yang terbatas. Untuk itu perlu dilakukan modifikasi agar
algoritma yang dihasilkan dapat lebih stabil dan menghasilkan vektor yang sama dengan tidak
melibatkan galat karena pembulatan. Modifikasi ini juga mentransformasikan suatu himunan vektor-
vektor yang bebas linear {u1, u2, …, un} dalam himpunan vektor orthonormal {q1, q2, …, qn}
sedemikan sehingga vektor qi untuk i = 1, 2, …, n, merupakan suatu kombinasi dengan vektor-vektor
u1, u2, …, un-1. Proses yang telah dimodifikasi ini, melibatkan iterasi seperti yang diperlihatkan dalam
Algoritma berikut ini.

Algoritma

Step 1. Set rkk = ||uk|| dan qk = (1/rkk)uk. Set I = k + 1

Step 2. Hitung rki = <ui, qk>

Step 3. Apakah k = n? OUTPUT(rik);

Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 2.

Jika ya, Set i = k + 1, lanjutkan ke Step 4.

Step 4. Gantikan rki menjadi rki = <ui, qk>

Step 5. Apakah k = n? OUTPUT(r1k);


Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 5.

Jika ya, Proses Komputasi Selesai. STOP.

Dekomposisi QR

Salah satu teknik dekomposisi yang terkenal adalah dekomposisi QR dan dekomposisi ini diperoleh
dari hasil modifikasi proses Gram-Schmidt.

Untuk setiap matriks A berukuran m × n dimana m ≥ n, dapat difaktorkan menjadi suatu produk dari
matriks Q, yang kolomnya membentuk suatu vektor orthonormal dan matriks R merupakan suatu
matriks segitiga atas. Dengan demikian dekomposisi ini dapat ditulis sebagai

A = QR (3)

Jika A adalah matriks suatu bujur sangkar maka matriks Q adalah matriks adalah matriks yang
unitary.

Dekomposis ini dapat disusun langsung dari proses ortogonalisasi Gram-Schmidt yang telah
dimodifikasi dengan menyusun vektor ui merupakan kolom ke-I dari martriks A dan kolom-kolom ini
dipastikan sebagai himpunan vektor yang bebas secara linear hasil orthonormalisasi merupakan
merupakan himpunan kolom dari matriks Q atau matriks Q itu sendiri.

Jika kolom-kolom dari A bergantung linear, maka salah satu dari harga rkk yang dihitung akan
berharga nol. Dengan demikian Step 1 dalam algoritma Gram-Schmidt yang telah dimodifikasi.

Dalam prakteknya jarang sekali kita temui nilai rkk yang nol. Sekalipun kolom-kolom dari A
bergantung linear maka pembulatan

Dengan memodifikasi proses Gram-Scmidt, kita akan dapat menulis Algoritma QR sebagai berikut:
Algoritma
Step 0. a. Set I = 1;
Step 0. b. Set j = 1;
Step 0. c. Set ui = aij
Step 0. d. Apakah j = n?
Jika tidak, naikkan counter j satu point, yaitu j = j + 1 dan kembali ke Step 0.c.
Jika ya, lanjutkan ke Step 0.e.
Step 0. e. Apakah j = m?
Jika tidak, naikkan counter j satu point, yaitu j = j + 1 dan kembali ke Step 0.b.
Jika ya, lanjutkan ke Step 1.
1
q1 = u
Step 1. Hitung
r =√⟨u ,u ⟩
11 1 1 Hitung juga r 11 1 ; OUTPUT(r );
11
Set k = 2 dan lanjutkan ke Step 2.

Step 2. Hitung 1 k
r = √⟨u ,u ⟩
k 1
Step 3. Apakah k = n? OUTPUT(r1k);
Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 2.
Jika ya, Set i = 1, lanjutkan ke Step 4.
i−1
v i =ui −∑ ⟨ ui , q j ⟩ q j
Step 4. Hitung j=1

1
qi = v
Step 3. Hitung
r = √⟨v , v ⟩
ii i i ; Hitung juga r ii i ; OUTPUT(r , q ).
ii i
Set k = i + 1 dan lanjutkan ke Step 5.

Step 5.
r =√ ⟨u ,u ⟩
ik k 1 ; OUTPUT(rik);
Step 6. Apakah k = n?
Jika tidak, naikkan counter k satu point, yaitu k = k + 1 dan kembali ke Step 5.
Jika ya, lanjutkan ke Step 7.

Step 7. Apakah i = n?
Jika tidak, naikkan counter satu point , yaitu I = I + 1 dan kembali ke Step 4.
Jika Ya. Komputasi berhasil. STOP

Dengan Algoritma yang telah disusun di atas, kita dapat menyusun suatu script Matlab naiveqr.m
seperti yang terlihat dalam penggalan program berikut ini.

Persamaan-persamaan Differensial
Biasa dengan Nilai Awal

Persamaan differensial biasa atau system persamaan differensial biasa banyak sekali dijumpai dalam
penerapan bidang sain dan rekayasa. Dalam mekanika kita menemukan bahwa kita dapat membentuk
persamaan-persamaan diferensial biasa. Sebagai contoh, kita dapat menurunkan persamaan berikut
berdasarkan hukum Newton kedua untuk menghitung gerakkan parasut ketika diturunkan dari
pesawat tempur atau pesawat latih, sebagai berikut
dv c
=g− v
dt m
di mana g adalah percepatan gravitasi, m adalah massa dari parasut dan penerjun, dan c adalah
koefisien drag.
Persamaan-persamaan differensial biasa dibentuk oleh suatu fungsi yang tidak diketahui dan turunan-
turunannya. Persamaan-persamaan differensial seperti ini biasanya menyatakan dinamika dan
biasanya disebut sebagai persamaan suku-suku menyatakan laju dan untuk persamaan di atas disebut
sebagai persamaan laju.
Persamaan-persamaan differensial memainkan peranan fundamental dalam rekayasa dan sains karena
banyak fenomena fisik dan fenomena physic-chemical dengan sangat baik diformulasi secara
matematika dalam suku-suku yang terkait dengan laju perubahannya.
Dinamika aras (level) cairan dalam tangi atau reaktor kimia dapat dinyatakan oleh persamaan
differensial berikut ini
dh
A =Fin −β √h
dt
Suatu control valve pneumatic yang digunakan industri proses dapat dimodelkan sebagai persamaan
differensial biasa yang berorde ke-dua, yaitu
2
dx d x
pA−Kx−C  = M 2
dt dt
Di mana p adalah tekanan yang disebabkan oleh udara tekan yang menggerakan katup ke bawah
untuk menutup atau ke atas untuk membuka, A adalah luas diaphragm K adalah konstanta pegas, C
adalah dan x jarak yang ditempuh oleh katup (ke arah bawah atau ke atas). Sedangkan M adalah
massa system torak katup. Setelah disusun kembali maka diperoleh
2
M d x C dx A
+ + x= p
K dt 2 K dt K

Contoh lain yang ditemukan dalam industry proses adalah reactor kimia. Suatu reaktor kimia CSTR
(continuous stirred tank reactor) yang dilengkapi jacket pendingin, di dalamnya terjadi reaksi
eksotermik A Produk dimana reaksi yang terjadi adalah reaksi orde pertama terhadap reaktan A
dan konstanta reaksi mengikuti Hukum Arhenius. Karena reaksi eksotermik maka perlu dialirkan air
pendingin melalui jacket untuk menjaga temperatur reactor. Dengan neraca massa dan energi, dan
beberapa assumsi yang diambil, kita dapat menurunkan satu set persamaan-persamaan diferensial
orde pertama (sistem dengan tiga persamaan diferensial orde pertama) yang diberikan oleh persamaan
berikut ini.
dh
A =Fi −β √ h
dt
E
dC A F i −
a

= (C A −C A )−k 0 e RT C A
dt V i

Ea
dT Fi − Q
= ( T i−T ) +Ψk 0 e RT C A −
dt V ρ Vc p

Persamaan Differensial Orde-pertama dengan Nilai Awal


Persamaan differensial dengan orde terkecil yang dijumpai dalam aplikasi sains dan rekayasa adalah
persamaan differensial orde pertama dengan nilai awal dan dikenal sebagai problema nilai awal.
Bentuk umum dari persamaan diferensial orde pertama dengan nilai awal adalah sebagai berikut.
dy
=f ( t , y i ) ; a≤t ≤b ; y ( a )= y 0
dt (1)

Untuk menyelesaikan persamaan (1) secara numeric, maka interval penyelesaiannya dibagi menjadi N
sub interval dengan panjang langkah adalah
b−a
h=
N (2)
Ada banyak metoda yang dikembangkan untuk menyelesaikan problema ini dan yang paling
sederhana adalah metoda Euler dan pada pengembangannya diperoleh Metoda Euler yang
dimodifikasi. Selain itu juga ada metoda Runge-Kutta dan metoda-metoda lain. Metoda Euler dan
variannya serta metoda-metoda Runge-Kutta termasuk ke dalam metoda langkah tunggal, sedangkan
metoda-metoda lain seperti metoda-metoda Heun, Adam-Bashfort, Adam-Moulton dan Milne. Di
bagian akhir dari Bab ini akan dibahas system persamaan diferensial dengan nilai awal dan persamaan
differensial berorde tinggi dengan nilai awal. Kita akan memulai dengan Metoda penyelesaian
langkah tunggal.

METODA LANGKAH TUNGGAL


Metoda langkah tunggal adalah metoda yang didasarkan atas langkah-langkah tunggal yang
berurutan. Metoda ini meliputi metoda Euler dan metoda Runge-Kutta. Metoda-metoda Runge-Kutta
diturunkan dari deret Taylor dan dalam hal ini dilibatkan deret Taylor untuk fungsi dengan dua
variabel. Penurunan hanya dilakukan untuk Metoda Runge-Kutta orde ke-tiga karena untuk orde-orde
yang lebih tinggi penurunannya sama seperti yang dilakukan untuk metoda orde ketiga. Kita akan
memulai dengan yang paling sederhana, yaitu Metoda Euler.

Metoda Euler
Ini merupakan metoda langkah tunggal yang paling sederhana. Metoda ini mengambil nama Euler,
seorang ahli matematika dan Fisika dari Jerman. Dalam bagian ini akan dibahas mengenai metoda
Euler (naïve) dan metoda Euler yang dimodifikasi.
Metoda Euler (Naive) Metoda ini adalah metoda yang paling sederhana, yaitu menghitung nilai y
pada langkah berikutnya berdasarkan nilai y sebelumnya yang telah diketahui (atau telah dihitung)
dan nilai tangent dari titik t yang sebelumnya. Perhatikan Gambar 1. Dalam gambar ini perhitungan
dimulai dari ti yang nilai yi telah diketahui dan dengan demikian kita dapat menghitung yi+1.

f(t,y)

y(ti) y(ti+1)

ti ti+1

Gambar 1. Visualisasi Metoda Euler


Jika kita mengambil t0 = a dan tN = b dan dari persamaan (2) kita mendapatkan bahwa

ti = a + ih; untuk i = 0, 1, 2, …, N. (3)


Dari Gambar 1 kita dapat melihat bahwa tangen garis singgung di titik ti adalah f(xi,yi) dan dengan
demikian
dy i
=f ( x i , y i )
dt i
dan
y i +1 − y i dy i
=
h dt i
Sehingga
y i+1 − y i =hf (t i , y i )
atau
y i+1 = y i +hf (t i , y i ) untuk i=0,1,2 , .. . , N (4)

Persamaan (4) ini adalah persamaan yang berperan dalam algoritma Euler dan algoritma ini diberikan
sebagai Algoritma 1.

Algoritma 1. (Naive Euler)


Step 1 a. masukkan nilai awal y(a)=
b. tentukan interval penyelesaian t0 = a dan tn = b
c. tentukan jumlah sub interval N
t n −t 0 b−a
h= =
hitung N N

ambil counter awal looping i = 0


Step 2 Hitung ti = a + ih
Hitung yi+1 = yi + h f(ti,yi)
Output ti , yi
Step 3. Apakah i = N?
Bila tidak naikkan counter looping satu poin, yaitu i =i +1 dan kebali ke Step 2
Bila, ya STOP dan keluar dari Algoritma.

Fungsi Matlab yang disusun algoritma ini adalah sebagai berikut.

Metoda Euler yang diperpaiki (Metoda Heun) Metoda ini melibatkan penentuan dua turunan pada
interval. Yang pertama pada ujung awal interval dan yang kedua pada ujung akhir interval. Kedua
turunan ini kemdian dirata-ratakan untuk memperoleh perkiraan dari slope yang diperbaiki bagi
seluruh interval. Slope pada awal interval, yaitu di t = ti adalah
y , =f (t i , y i )
i (5)
Nilai yang diperoleh dari persamaan (5) kemudian digunakan untuk mengekstrapolasi secara linear ke
ti+1, yaitu
0
y i +1 = y i + f ( t i , y i )
(6)
Untuk bentuk naive dari Metoda Euler akan berhenti sampai disini saja. Metoda Heun yang
dinyatakan oleh persamaan (6) bukanlah jawaban akhir tetapi sebagai persamaan antara yang
digunakan untuk memprediksi dan disebut sebagai predictor yang menyediakan estimasi dari yi+1,
yang kemudian dengan persamaan ini dihitung suatu nilai perkiraan slope pada akhir interval, yaitu
, 0
y i+1 =f (t i+1 , y i+1 )
(7)
Dengan demikian dua slope yang dihitung dengan persamaan (5) dan (7) dirata-ratakan untuk
menghasilkan slope rata-rata untuk interval, yaitu
y ,+ y , 0
f ( t i , y i ) + f ( t i +1 , y i+1 )
i i+ 1
=
2 2 (8)

Slope rata-rata ini yang kemudian digunakan sebagai slope untuk menggantikan slope pada metoda
Euler standard, sehingga diperoleh
f ( t i , y i ) + f (t i+1 , y 0i+1 )
y i +1 = y i +h [ 2 (9)
]
Persamaan ini disebut persamaan corrector.
Metoda Heun ini disebut sebagai metoda predictor-corrector. Semua metoda langkah ganda yang akan
dibicarakan kemudian adalah dari jenis ini. Urutan komputasi adalah p c p c…, di mana p adalah
predictor sedangkan c adalah korektor. Berdasarkan persamaan-persamaan (5), (6), (7) dan (9), kita
dapat menyusun Algoritma Heun yang diberikan sebagai Algoritman 2.

Algoritma 2. (Heun)
Step 1 a. masukkan nilai awal y(a)=
b. tentukan interval penyelesaian t0 = a dan tn = b
c. tentukan jumlah sub interval N
t −t b−a
h= n 0 =
hitung N N

ambil counter awal looping i = 0


Step 2 Hitung ti = a + ih
0
y i +1 = y i + f ( t i , y i )
Hitung Predictor dengan persamaan (6), yaitu
Hitung corrector dengan menggunakan persamaan (9), yaitu
f ( t i , y i ) + f (t i+1 , y 0i+1 )
[
y i +1 = y i +h
2 ]
Output ti , yi
Step 3. Apakah i = N?
Bila tidak naikkan counter looping satu poin, yaitu i =i +1 dan kebali ke Step 2
Bila, ya STOP dan keluar dari Algoritma.

Metoda Euler yang diperbaiki (Metoda polygon yang diperbaiki) Metoda ini mempergunakan
metoda Euler untuk memprediksi y di tengah-tengah interval, yaitu

h
y i+1/2 = y i + f (t i , y i )
2 (10)
Nilai ini diprediksi ini kemudian digunakan untuk memperkirakan kemiringan garis pada titik tengah
interval, yaitu
,
y i+1/2 =f (t i +1/ 2 , y i+1 /2 )
(11)
Nilai ini dianggap sebagai representasi yang valid bagi rata-rata kemiringan dari interval secara
keseluruhan dan digunakan mengestrapolasi secara linear dari ti ke ti+1 dengan menggunakan metoda
Euler, yaitu
y i+1 = y i +hf (t i+1/2 , y i+1/2 ) untuk i=1,2 ,...,N (12)

Berdasarkan persamaan-persamaan (10), (11), dan (12) disusunlah Algoritma 3 seperti yang
ditunjukkan berikut ini.
Algoritma 3. (Metoda Polygon yang diperbaiki)
Step 1 a. masukkan nilai awal y(a)=
b. tentukan interval penyelesaian t0 = a dan tn = b
c. tentukan jumlah sub interval N
t n −t 0 b−a
h= =
hitung N N

ambil counter awal looping i = 0


Step 2 Hitung ti = a + ih
0
y = yi + f ( t i , yi )
Hitung Predictor dengan persamaan (6), yaitu i +1

Hitung corrector dengan menggunakan persamaan (9), yaitu


f ( t i , y i ) + f (t i+1 , y 0i+1 )
y i +1 = y i +h [ 2 ]
Output ti , yi
Step 3. Apakah i = N?
Bila tidak naikkan counter looping satu poin, yaitu i =i +1 dan kebali ke Step 2
Bila, ya STOP dan keluar dari Algoritma.

METODA RUNGE-KUTTA
Deret Taylor digunakan untuk menghampiri nilai dari suatu fungsi sebagai fungsi polinom. Metoda-
metoda Runge-Kutta menggunakan kesalahan pemendekan local orde-orde tinggi dari deret Taylor
ketika mengeleminasi komputasi dan mengevaluasi turunan-turunan dari f(t,y). Untuk itu kita perlu
menelusuri kembali Teorema Taylor untuk dua variabel.

Teorema 1. Katakanlah bahwa f(t,y) dan semua turunan parsialnya yang lebih kecil atau sama dengan
n + 1 kontinu dalam D = {(t,y)|a ≤ t ≤ b, c ≤ y ≤ d}. Dan juga bahwa (t0, y0) ∈ D. Untuk setiap (t,y)
∈ D, ada suatu ξ antara t dan t0 dan η antara y dan y0 dengan

f(t,y) = Pn(t,y) + Rn(t,y) (13)

di mana

∂f ∂f
[
Pn ( t , y )=f ( t 0 , y 0 ) + ( t−t 0 )
∂t
( t , t 0 ) + ( y− y 0 ) ∂ y ( t ,t 0 ) ]
2 2
( t−t0 ) ∂2 f ( y − y 0 ) ∂2 f
+
[ 2 ∂ t2
n n
∂2 f
( t , t 0 ) + ( t −t 0 )( y − y 0 ) ∂ t ∂ y ( t , t0 ) + 2
∂ y2
(t , t 0) ]
+.. .+
1
n! [ ∑ ( nk ) ( t−t 0) n−k ( y− y 0 )k ∂∂t fn−k ∂ y k ( t , t0 )
k=0
] (14)
dan
n n+1
1 n+1 t−t n+1−k y− y k ∂ f ( ξ , η )
Rn ( t , y ) = ∑ ( )
( n+1 ) ! k =0 k
( 0) ( 0)
∂t n+1−k ∂ y k (15)

Pn(t,y) disebut sebagai polinom Taylor berderajat n dalam dua variabel untuk fungsi f di sekitar (t0,y0).
Sedangkan Rn(t,y) merupakan sisa yang terkait dengan Pn(t,y)
Dengan Teorema ini kemudian kita dapat menurunkan metoda-metoda yang terkait dengan metoda
Runge-Kutta. Metoda ini mempunyai bentuk yang mirip dengan bentuk looping dari metoda Euler,
yaitu
yi+1 = yi + φ(ti, yi, h) (16)
di mana φ(ti, yi, h) disebut fungsi kenaikan—‘increment function’ yang dapat diinterpretasikan sebagai
slope yang representatif untuk interval yang terkait. Fungsi ini dapat ditulis dalam bentuk umum.

φ = c1k1 + c2k2 + c3k3 + . . . + cmkm (17)


dimana
k1 = hf(ti, yi)
k2 = hf(ti + d1h, yi +p11k1)
k3 = hf(ti + d2h, yi +p21k1 + p22k2)
k4 = hf(ti + d3h, yi +p31k1 + p32k2 + p33k3) (18)
. . . . . .
. . . . . .
km = hf(ti + dm-1h, yi +pm-1,1k1 + pm-1,2k2 + pm-1,3k3 + … + pm-1,n-1kn-1)

Dari persamaan-persamaan (17) dan (18) serta deret Taylor yang diberikan dalam Teorema 1, metoda-
metoda Runge-Kutta dapat diturunkan.
Metoda Runge-Kutta Orde ke-2. Berdasarkan persamaan (17), kita dapat menulis persamaan
berikut untuk Metoda Runge-Kutta orde ke-2,

yi+1 = yi + (c1k1 + c2k2) (19)


di mana
k1 = hf(ti, yi) (20)
dan
k2 = hf(ti + d1h, yi +p11k1) (21)

untuk dapat menggunakan persamaan (19), kita perlu menentukan harga-harga dari c1, c2, d1, dan p11.
Agar kita dapat menentukan besaran-besaran ini, kita menggukan deret Taylor yang diberikan dalam
Teorema 1untuk yi+1 dalam suku-suku yi dan f(ti, yi), yaitu

h2
y i+1 = y i + f ( t i , y i ) h+ f ' ( t i , y i )
2 (22)

Dimana f’(ti, yi) harus ditentukan dengan menggunakan aturan rantai, yaitu
∂ f ∂ f dy
f ' ( ti , y i ) = +
∂ t ∂ y dt (23)
Sekarang masukan persamaan ke dalam persamaan (22) akan memberikan
2
∂f ∂ f dy h
y i+1 = y i +f ( t i , y i ) h+ [ +
∂t ∂ y dt 2 ]
(24)
Strategi yang melatarbelakangi metoda-metoda Runge-Kutta adalah penggunaan manipulasi algebraic
untuk memperoleh nilai-nilai c1, c2, d1, dan p11 yang menyebabkan persamaan (19) dan persamaan
(24) ekivalen. Agar dapat melakukan hal ini, kita menggunakan deret Taylor untuk dua variabel
seperti yang diberikan dalam Teorema 1 dalam bentuk sebagai berikut
∂ G ∂G
G ( t +q , y +r ) =G ( t , y )+q +r +.. .
∂t ∂y (25)
Kita akan menggunakan persamaan ini untuk memperluas (ekspansi) persamaan (21) dan ini akan
memberikan
∂f ∂f
f ( t +d 1 h , y+ p11 k 1 h )=f ( t i , y i ) +d 1 + p11 k 1 h +O ( h2 )
∂t ∂y
(26)
Hasil yang diberikan oleh persamaan (26) ini kemudian bersama-sama dengan persamaan (20)
dimasukkan ke dalam persamaan (19) akan memberikan
∂f ∂f
y i+1 = y i +c1 f ( t i , y i ) h+c 2 f ( t i , yi ) h+c 2 d 1 h2 +c 2 p 11 h2 f ( t i , y i ) +O ( h3 )
∂t ∂y (27)
Sekarang, dengan mengumpulkan suku-suku yang sama kita akan memperoleh
∂f ∂f 2
[
y i+1 = y i + [ c1 f ( t i , y i ) +c 2 f ( t i , y i ) ] h+ c 2 d 1
∂t
+c 2 p11 f ( t i , y i )
(28)
]
∂y
h +O ( h3 )
Kemudian persamakan suku-suku yang mirip dalam persamaan (24) dan (25), kita menentukan agar
kedua persamaan ini ekivalen, maka hal-hal berikut ini harus berlaku:

c1 + c2 = 1 (29a)

c2d1 = ½ (29b)

c2p11 = ½ (29c)

Karena kita mempunyai tiga persamaan dengan empat variabel yang tidak diketahui, kita harus
mengambil assumsi Ketiga persamaan ini dapat diselesaikan secara simultan untuk memberikan

c1 = 1 - c2 (30)
1
d 1 =p 11=
2 c2 (31)
Karena kita dapat menentukan nilai c2 dan jumlahnya tidak hingga, maka kita akan mempunyai
jumlah metoda-metoda Runge-Kutta orde ke-dua yang tak hingga juga. Setiap versi haruslah
menghasilkan hasil yang sama persis untuk penyelesaian persamaan differensial entah itu quadratic,
linear atau konstan.
Dalam bagian ini kita akan mencatat beberapa versi dari metoda ini.
Pertama, Raltson (1962) mengambil c2 = 2/3 yang menjamin batas minimum pada kesalahan
pembulatan. Untuk versi Raltson ini, c1 = 1/3 dan d1 = p11 = ¾. Dengan demikian persamaan (19)-(21)
dapat ditulis kembali sebagai

yi+1 = yi + (k1 + 2k2)/3 (32)


di mana
k1 = hf(ti, yi) (33)
dan
k2 = hf(ti + 3/4h, yi +3/4k1) (34)

Kedua,bila kita ambil c2 =1/2, maka persamaan (30) dan (31) dapat diselesaikan untuk memperoleh c1
= ½; dan d1 =p11 = 1, sehingga persamaan (19) – (21) dapat ditulis kembali sebagai

yi+1 = yi + (k1 + k2)/2 (35)


di mana
k1 = hf(ti, yi) (36)
dan
k2 = hf(ti + h, yi + k1) (37)

Secara konsekuen kita akan mengatakan bahwa persamaan (35) – (37) tidak lain adalah teknik yang
dianjurkan oleh Heun karena dalam hal ini, k1 adalah slope pada awal interval sedangkan k2 adalah
slope pada akhir interval.
Ketiga, bila kita ambil c2 =1, maka persamaan (30) dan (31) dapat diselesaikan untuk memperoleh c1
= 0; dan d1 =p11 = 1/2, sehingga persamaan (19) – (21) dapat ditulis kembali sebagai

yi+1 = yi + k2 (38)
di mana
k1 = hf(ti, yi) (39)
dan
k2 = hf(ti +1/2 h, yi + 1/2k1) (40)
Metoda Runge-Kutta Orde ke-3. Berdasarkan persamaan (17), dengan mengambil n = 3, kita dapat
menulis persamaan berikut untuk Metoda Runge-Kutta orde ke-3,

yi+1 = yi + (c1k1 + c2k2 + c3k2) (41)


di mana
k1 = hf(ti, yi) (42)

k2 = hf(ti + d1h, yi +p11k1) (43)


dan
k3 = hf(ti + d2h, yi +p21k1 + p22k2) (44)

Dengan cara penurunan yang sama dengan yang telah dilakukan metoda Runge-Kutta orde ke-2,
maka untuk metoda Runge-Kutta orde ke-3 ini kita memperoleh c2 = 4/6 sedangkan c1 = c3 = 1/6.
Demikian juga dengan d1 = ½; d2 = 1; p11 = ½; p21 = -1 dan p22 = 2. Itu berarti persamaan (41) hingga
persamaan (44) dapat ditulis kembali sebagai

yi+1 = yi + (k1 + 4k2 + k3)/6 (45)


di mana
k1 = hf(ti, yi) (46)

k2 = hf(ti + 1/2h, yi + 1/2k1) (47)


dan
k3 = hf(ti + h, yi - k1 + 2k2) (48)

Metoda Runge-Kutta Orde ke-4. Berdasarkan persamaan (17), dengan mengambil n = 4, kita dapat
menulis persamaan-persamaan berikut untuk Metoda Runge-Kutta orde ke-4,

yi+1 = yi + (c1k1 + c2k2 + c3k2 + c4k4) (49)


di mana
k1 = hf(ti, yi) (50)

k2 = hf(ti + d1h, yi +p11k1) (51)

k3 = hf(ti + d2h, yi +p21k1 + p22k2) (52)


dan
k4 = hf(ti + d3h, yi +p31k1 + p32k2 + p33k2) (53)

Dengan cara penurunan yang sama dengan yang telah dilakukan metoda Runge-Kutta orde ke-3,
maka untuk metoda Runge-Kutta orde ke-4 ini kita memperoleh c2 = c3 = 2/6 sedangkan c1 = c4 = 1/6.
Demikian juga dengan d1 = d2 = ½; d3 = 1; p11 = ½; p21 = 0 dan p22 = 1/2. p31 = p32 =0 dan p33 = 1.Itu
berarti persamaan (49) hingga persamaan (53) dapat ditulis kembali sebagai

yi+1 = yi + (k1 + 2k2 + 2k3 + k4)/6 (54)


di mana
k1 = hf(ti, yi) (55)

k2 = hf(ti + 1/2h, yi + 1/2k1) (56)

k3 = hf(ti + 1/2h, yi + 1/2k2 ) (57)


dan
k4 = hf(ti + h, yi + k3) (58)

Metoda Runge-Kutta ini dikenal sebagai metoda Runge-Kutta klasik.Algoritma untuk metoda Runge-
Kutta orde ke-4 klasik ini dapat dibuat berdasarkan persamaan (54) hingga (58) seperti yang
ditunjukkan oleh Algoritma 4 di bawah ini.

Algoritma 4. (Metoda Runge-Kutta orde ke-4 klasik)


Step 1 a. masukkan nilai awal y(a)=
b. tentukan interval penyelesaian t0 = a dan tn = b
c. tentukan jumlah sub interval N
t n −t 0 b−a
h= =
hitung N N

ambil counter awal looping i = 0


Step 2 Hitung ti = a + ih
Hitung k1, k2, k3 dan k4 dengan persamaan (55) hingga (58), yaitu
k1 = hf(ti, yi)
k2 = hf(ti + 1/2h, yi + 1/2k1)
k3 = hf(ti + 1/2h, yi + 1/2k2)
k4 = hf(ti + h, yi + k3)
1
y i+1 = y i + [ k +2 k 2 +2 k 3+ k 4 ]
6 1
Output ti , yi
Step 3. Apakah i = N?
Bila tidak naikkan counter looping satu poin, yaitu i =i +1 dan kebali ke Step 2
Bila, ya STOP dan keluar dari Algoritma.

Metoda Runge-Kutta orde ke-4 lainnya adalah metoda Runge-Kutta Simpson. Metoda ini didasarkan
atas aturan integrasi 3/8 Simpson dan ditulis sebagai

yi+1 = yi + (k1 + 3k2 + 3k3 + k4)/8 (59)


di mana
k1 = hf(ti, yi) (60)

k2 = hf(ti + 1/3h, yi + 1/3k1) (61)

k3 = hf(ti + 2/3h, yi + (k1 + k1)/3) (62)


dan
k4 = hf(ti + h, yi + k1 – k2 + k3) (62)

Metoda Runge-Kutta Orde yang lebih tinggi. Berdasarkan persamaan (17), dengan mengambil n =
5, kita dapat menulis persamaan-persamaan umum berikut untuk Metoda Runge-Kutta orde ke-5,

yi+1 = yi + (c1k1 + c2k2 + c3k2 + c4k4 + c5k5) (63)


di mana
k1 = hf(ti, yi) (64)

k2 = hf(ti + d1h, yi +p11k1) (65)

k3 = hf(ti + d2h, yi +p21k1 + p22k2 ) (66)


k4 = hf(ti + d3h, yi +p31k1 + p32k2 + p33k2) (67)
dan
k5 = hf(ti + d3h, yi +p41k1 + p42k2 + p43k3 + p44k4) (66)

Dengan cara penurunan yang sama dengan yang telah dilakukan metoda Runge-Kutta orde ke-4,
Butcher (1964) menurunkan metoda Runge-Kutta orde ke-5 ini dan ia memperoleh c2 = c5 = 32/90
sedangkan c1 = c6 = 7/90. Demikian juga dengan d1 = d2 = 1/4; d3 = 1/2; d4 = 3/4; d5 = 1;p11 = 1/4; p21 =
p22 =1/8; p31 = 1/2. p31 = 0; p32 = -1/2; p33 = 1; p41 = 1/4; p21 = p22 =1/8; p31 = 1/2. p31 = 0; p32 = -1/2; p33
= 1. Itu berarti persamaan (49) hingga persamaan (53) dapat ditulis kembali sebagai

yi+1 = yi + (7k1 + 32k3 + 12k4 + 32k5 + 7k6)/90 (69)


di mana
k1 = hf(ti, yi) (70)

k2 = hf(ti + 1/4h, yi + 1/4k1) (67)

k3 = hf(ti + 1/4h, yi + 1/8k1 + 1/8k2) (68)

k4 = hf(ti + 1/2h, yi - 1/2k2h + k3) (69)

k5 = hf(ti + 3/4h, yi + 3/16k1 + 9/16k4) (70)


dan
k6 = hf(ti + h, yi - 3/7k1 + 2/7k2 + 12/7k3 - 12/7k4 + 8/7k5) (71)

Kita dapat menyusun Algoritma untuk metoda Runge-Kutta-Butcher seperti yang ditunjukkan oleh
Algoritma 5 berikut ini.

Algoritma 5. (Metoda Runge-Kutta-Butcher)


Step 1 a. masukkan nilai awal y(a)=
b. tentukan interval penyelesaian t0 = a dan tn = b
c. tentukan jumlah sub interval N
t n −t 0 b−a
h= =
hitung N N

ambil counter awal looping i = 0


Step 2 Hitung ti = a + ih
Hitung k1, k2, k3, k4, k5 dan k6 dengan persamaan (66) hingga (71), yaitu
k1 = f(ti, yi)
k2 = f(ti + 1/4h, yi + 1/4k1h)
k3 = f(ti + 1/4h, yi + 1/8k1h + 1/8k2h)
k4 = f(ti + 1/2h, yi - 1/2k2h + k3h)
k5 = f(ti + 3/4h, yi + 3/16k1h + 9/16k4h)
k6 = f(ti + h, yi - 3/7k1h + 2/7k2h + 12/7k3h - 12/7k4h + 8/7k5h)
Hitung yi+1 = yi + h(7k1 + 32k3 + 12k4 + 32k5 + 7k6)/90
Output ti , yi
Step 3. Apakah i = N?
Bila tidak naikkan counter looping satu poin, yaitu i =i +1 dan kebali ke Step 2
Bila, ya STOP dan keluar dari Algoritma.

PENYELESAIAN DENGAN LANGKAH YANG DAPAT DIKENDALIKAN


Di bagian sebelumnya, kita telah menyelesaikan persamaan differensial dengan nilai awal secara
numerik menggunakan panjang langkah (step size) yang tetap. Dalam bagian ini kita akan melihat
beberapa metoda yang memanipulasi panjang langkah yang dapat dikendalikan. Alasan yang paling
mendasar dari penggunaan panjang langkah yang dapat dikendalikan (tidak tetap), yaitu untuk
menghindari solusi yang mempunyai profil yang ekstrim, turun atau naik secara tajam dalam suatu
rentang waktu tertentu. Untuk daerah seperti ini panjang langkah yang harus diambil lebih kecil.
Algoritma yang digunakan juga harus bersifat adaptif dengan trayek penyelesaian dan untuk itu.
Itulah sebabnya mengapa metoda-metoda ini disebut metoda kendali panjang langkah adaptif.

Metoda-metoda Runge-Kutta yang Adaptif


Ada dua pendekatan yang mendasar untuk mengikutkan kendali panjang langkah adaptif ke dalam
metoda-metoda langkah tunggal. Pada pendekatan pertama, galat pemendekan local diperkirakan
sebagai beda antara dua prediksi dengan menggunakan metoda-metoda Runge-Kutta yang berbeda
orde. Pada pendekatan kedua, galat diperkirakan sebagai beda antara dua prediksi yang menggunakan
Runge-Kutta dengan orde yang sama. Ada dua hal penting yang akan kita angkat yaitu langkah yang
digandakan dan ukuran langkah yang dikendalikan.
Penggandaan langkah melibatkan pengambilan setiap langkah yang digandakan, satu kali sebagai
suatu langkah penuh dan secara bebas dua langkah yang berukuran setengah langkah. Beda dari kedua
hasil ini menyatakan estimasi dari galat pemendekan local. Jika y1 menyatakan prediksi dari langkah
tunggal dan y2 menyatakan prediksi dengan menggunakan dua langkah setengah, maka galat Δ dapat
direpresentasikan sebagai
Δ = y2 - y1 (72)

Sebagai tambahan bagi untuk koreksi kendali langkah, persamaan (72) dapat digunakan untuk
mengoreksi nilai y2. Untuk koreksi metoda Runge-Kutta orde ke-empat, koreksi yang digunakan
adalah
y2 y2 + Δ/15 (73)

Alasan yang dipakai untuk menjelaskan mengapa ukuran langkah yang dikendalikan diperlukan
adalah karena adanya estimasi galat. Dengan galat yang diperkirakan ini kemudian kita dapat
mengatur panjang langkah yang paling baik. Secara umum, strategi yang diambil adalah memperbesar
ukuran langkah jika galat yang diperoleh terlalu kecil dan ukuran langkah diperkecil bila galat yang
diperoleh besar. Koreksi yang digunakan untuk hal ini adalah
α
Δ
hbaru =h sekarang| baru |
Δsekarang (74)
yang diusulkan pertama kali pada tahun 1986 oleh Press dan kawan-kawannya. Δ sekarang adalah akurasi
sekarang seperti yang dihitung oleh persamaan (72). Δ baru adalah akurasi yang dikehendaki. Sedangkan
α adalah konstanta yang besarnya adalah 0.2 bila ukuran langkah diperbesar dan 0.25 bila ukuran
langkah diperkecil. Dalam persamaan (74), yang menjadi parameter kunci yang digunakan sebagai
wahana untuk menentukan akurasi adalah Δbaru. Salah satu cara untuk melakukan hal ini adalah
mengaitkan Δbaru dengan tingkat galat relative. Walaupun usaha ini akan bekerja dengan baik apabila
nilai positif yang terjadi, ia dapat menyebabkan solusi akan melalui nol. Untuk menangani
kekurangan ini, ada cara umum yang dipakai, yaitu dengan menentukan Δ baru sebagai
Δbaru = εys (75)
dimana ε adalah tingkat toleransi secara keseluruhan. Pilihan kita pada ys akan menentukan seberapa
besar galat ditentukan. Press (1986) juga menemukan bahwa untuk mendapatkan galat relative yang
tetap terkecuali yang dekat dengan titik nol adalah
dy
y s =|y|+|h |
dt (76)
Sekarang kita dapat menyusun Algoritma untuk metoda langkah yang adaptif, seperti yang
ditunjukkan dalam Algoritma 6.

Metoda Runge-Kutta Fehlberg. Diluar dari apa yang kita bicarakan di atas, ada suatu pendekatan
alternative untuk mendapatkan perkiraan galat yang melibatkan penghitungan prediksi dari dua
metoda Runge-Kutta dengan orde yang berbeda. Hasil yang diperoleh dapat diperkurangkan untuk
mendapatkan perkiraan dari galat pembulatan local. Kelemahan dari meningkatnya beban komputasi.
Sebagai contoh, prediksi yang dilakukan, ada sebanyak sepuluh kali evaluasi terhadap fungsi setiap
langkahnya. Metoda Runge-Kutta Fehlberg adalah metoda yang secara cerdas memangkas jumlah
evaluasi perlangkah. Dengan demikian pendekatan Fehlberg ini menghasilkan satu perkiraan terhadap
galat untuk ketimbang metoda lain yang bergantung kepada enam evaluasi fungsi setiap langkahnya.
Untuk memulai analisis untuk menjelaskan metoda Runge-Kutta Fehlberg, kita akan memulai dengan
menentukan bagaimana penentuan galat pemendekan local dari suatu metoda beda hingga yang dapat
digunakan untuk mendapat keuntungan dari pendekatan ukuran langkah optimal untuk mengendalikan
galat global. Untuk itu anggap bahwa ada dua metoda beda hingga tersedia untuk appoksimasi dari
atas problema nilai awal dan salah satunya adalah
z 0= β
z i+1 = y i +hi φ ( hi , z i )
(77)
yang mempunyai kesalahatan pemendekan local τ i+1 dengan orde O(hn), dan metoda lain
z^ 0= β
^z i+1 =^z i+hi φ^ ( h i , ^z i )
(78)
yang mempunyai kesalahatan pemendekan local τ^ i+1 dengan orde O(hn+1)
Kalau kita ambil z i= y i =^z i , maka
y i+1 −z i+1 = y i+1 −z i −hi φ ( h i , z i )

≈ y i+1− y i −hi φ ( hi , y i )

=hτ
i +1

Dengan demikian,
1
τ i+1≈ [ y −z ]
h i+1 i+1
1 1
= [ y i+1 −^z i+1 ]+ [ ^zi+1 −zi+1 ]
h h
1
≈ τ^ i+1 + [ ^z i+1 −z i+1 ]
h (79)
Akan tetapi τ i+1 berasal dari orde O(hn) dan orde τ^i+1 dari orde O(hn+1) sehingga porsi terbesar
dari τ i+1 harus merupakan bagaian dari ( ^z i+1 −z i+1 ) /h , dengan demikian
1
τ i+1= [ z^ i+1 −zi+1 ]
h (80)
Karena τ i+1 berasal dari orde O(hn), jadi kita dapat mengambil suatu konstata c sedemikian
sehingga
τ i+1=chn (81)
Untuk memperkirakan τ i+1 kita menggunakan hubungan antara persamaan (80) dan (81), yaitu
1
chn = [ z^ i+1−z i+1 ]
h (82)
Rancangan dari prosedur adalah menggunakan perkiraan ini bagi suatu ukuran langkah yang pantas.
Untuk mengakomodasi hal ini, ambil kesalah pemendekan dengan h diganti oleh rh di mana r positif
dan terbatas di atas dan jauh dari nol, kita nyatakan galat pemenggalan ini oleh τ i+1 ( rh ) , maka
berdasarkan persamaan (81) dan (82), kita akan mempunyai
n
n r ^
τ i+1 ( rh )≈c ( rh ) =r n ( chn )= [ z −z ]
h i+1 i+1 (83)
Untuk membatasi τ i+1 ( rh ) oleh ε, kita harus memilih r sedemikian sehingga
n
r ^
[ z −z ]≈|τ i+1 ( rh )|≤ε
h i+1 i+1 (84)
Dengan demikian kita bisa menuliskan
1
εh
r≤
[
|z^ i+1−z i+1|
n
] (85)
Felhberg menggunakan ketidak persamaan yang dinyatakan oleh persamaan (85) untuk
mengendalikan galat dalam metoda yang diusulkannya pada tahun 1970 untuk suatu metoda variant
dari Runge-Kutta dan untuk menghargainya maka metoda yang diusulkannya disebut sebagai metoda
Runge-Kutta Fehlberg. Teknik ini melibatkan suatu metoda Runge-Kutta dengan galat pemenggalan
berasal dari orde ke-lima .
Persamaan yang digunakan adalah
25 1408 2197 1
y i+1 = y i + [ 216
k1+
2565
k 3+
4104 ]
k 4− k 5 h
5 (86)
Bersama-sama dengan formula orde ke-lima:
16 6656 28561 9 2
y i+1 = y i +
[ 135
k1+
12825
k 3+
56430
k 4− k5+ k 6 h
50 55 ] (87)
Dimana
k 1 =hf ( x i , y i )
1 1
(
k 2 =f x i + h , y i + k 1 h
4 4 )
3 3 9
(
k 3 =f x i + h , y i + k 1 h+ k 2 h
8 32 32 )
12 1932 7200 7296
(
k 4 =f xi + h , y i +
13 2197
k 1 h−
2197
k 2 h+ k h
2197 3 )
439 3680 854
(
k 5 =f x i +h , y i +
216
k 1 h−8 k 2 h+
513
k 3 h−
4104 4
k h )
1 8 3544 1859 11
(
k 6 =f x i + h , y i− k 1 h+2 k 2 h+
2 27 2565
k 3 h+
4104
k 4 h− k 5 h
40 )
Perkiraan galat diperoleh dari mengurangkan persamaan (85) dengani (84) yang menghasilkan
1 128 2197 1 2
Ea = [ 360
k1−
4275
k 3−
75240
k 4+ k 5+ k 6 h
50 55 ] (88)
Jadi persamaan differensial dapat diselesaikan dengan persamaan (86) dan galat dievaluasi dengna
persamaan (88). perlu kita catat di sini adalah bahwa setelah setiap langkah dilakukan, persamaan (88)
harus ditambahkan pada persamaan (86) untuk menghasilkan orde kelima, yaitu persamaan (87).
Informasi lebih lanjut mengenai hal ini dapat anda temukan di beberapa buku seperti dalam Maron
(1982), Gerald and Wheatley (1984), dan Rice (1983).
Dalam teori pengendalian galat, suatu nilai awal dari h dgunakan untuk mencari nilai zi+1 dan ^z i+1 ,
yang akan menuntun kita pada penentuan r untuk langkah tersebut dan setelah itu melakukan
kalkulasi seperti yang diinginkan. Prosedur ini membutuhkan dua kali efaluasi fungsional seperti yang
dilakukan pada metoda tanpa pengendalian galat. Dalam prakteknya, nilai r yang akan digunakan
agak berbeda agar kenaikan biaya komputasi akan menghasil komputasi yang lebih akurat juga atau
dengan perkataan keakurasian harus dijaga agar sebanding dengan biaya komputasi. Harga r
ditentukan pada langkah ke-I digunakan untuk dua tujuan, yaitu
a. Untuk menolak pemilihan h mula-mula pada langkah ke-i jika diperlukan dan mengulangi
kalkulasi menggunakan rh, dan
b. Untuk memprediksi suatu pemilihan awal h yang cocok untuk langkah ke-i+1.
Karena penalty yang harus dibayar jika banyak langkah diulang r karena ini berarti lebih banyak
evaluasi fungsional yang yang harus dilakukan sehingga r cenderung dipilih secara konservatif dan
pada kenyataannya, pilihan yang biasanya dilakukan untuk r dalam metoda Runge-Kutta Fehlberg ini
adalah
1 1
εh εh
r=
[
2|^z i+1 −z i+1|] [
4 =0.84
|^z i+1 −z i+1| ] 4

(89)
Dari uraian di atas, disusunlah Algoritma seperti yang diperlihatkan dalam Algoritma 7.

Algoritma Runge-Kutta Fehlberg


Step 1. Set toleransi galat eps = 0.00005
Set i = 0; Set ti = a; yi = alfa
Step 2. Selagi ti < b kerjakan Step 3 hingga Step10
Step 3. Hitung k1, k2, k3, k4, k5, dan k6 dengan persamaan-persamaan berikut
Hitung ti = a + ih
k 1 =hf ( t i , y i )
1 1
(
k 2 =hf t i + h , y i + k 1
4 4 )
3 3 9
(
k 3 =hf t i + h , y i+ k 1 + k 2
8 32 32 )
12 1932 7200 7296
(
k 4 =hf t i + h , y i +
13
k − k +
2197 1 2197 2 2197 3
k )
439 3680 854
(
k 5 =hf t i + h , y i +
216 1
k −8 k 2 + k−
513 3 4104 4
k )
1 8 3544 1859 11
(
k 6 =hf t i + h , y i − k 1 +2 k 2 +
2 27
k+
2565 3 4104 4 40 5
k− k )
1 128 2197 1 2
Step 4. Hitung
R=abs ([ 360
k1−
4275
k 3−
75240
k 4 + k 5 + k 6 /h
50 55 ])
Step 5. Hitung delta = 0.84(eps/R)1/4.
Step 6. Jika R ≤ eps kerjakan Step 7
Step 7. Set i = i + h
25 1408 2197 1
Hitung
y i+1 = y i +
[ 216
k1+
2565
k3+
4104
k 4− k 5
5 ]
Step 8. Jika delta ≤ 0.1 maka h = 0.1h
Jika yang lain yang terjadi:
Jika delta ≥ 4 maka h = 4h;
Jika yang lain yang terjadi h = delta×h
Step 9. Jika h > hmax maka h = hmax
Step 10. Jika h < hmin maka cetak ‘proses gagal, tidak bisa dilanjutkan); Stop
Step 11. Proses pengerjaan selesai. Stop
METODA-METODA BANYAK LANGKAH
Dalam metoda satu langkah yang telah panjang lebar diuraikan di atas menggunakan informasi dari
suatu titik tunggal ti untuk meramalkan nilai dari variabel dependent yi+1 pada suatu titik ti+1 seperti
yang diperlihatkan dalam Gambar 1. Pendekatan alternatif disebut sebagai metoda banyak langkah
(multi step) yang didasarkan atas wawasan bahwa sekali komputasi dimulai, informasi yang berharga
dari titik-titik sebelumnya sebagai patokan untuk langkah-langkah berikutnya. Dalam kesempatan ini
kita hanya akan melihat bagaimana formula-formula yang diturunkan untuk integrasi digunakan untuk
menyelesaikan persamaan differensial dengan nilai awal, kemudian disusul dengan membahas
Metoda Adam yang meliputi metoda Adam-Bashfort dan Adam-Moulton. Dan pada bagian
berikutnya akan dibahas metoda Milne.
Formula-Formula Integrasi
Kita sudah mempelajarinya di Bab yang membahas mengenai integrasi numerik bahwa orde-orde
yang lebih tinggi dari metoda Newton-Cotes akan memberikan hasil integrasi yang lebih teliti.
Teknik Newton-Cotes. Beberapa dari teknik Newton-Cotes terbuka dapat digunakan dalam langkah
ganda dalam menyelesaikan persamaan, yaitu
3h
y i+1 = y i−2 + ( f +f )
Untuk n = 2, 2 i i−2 (90)
4h
y i+1 = y i−3 + ( 2 f i −f i−1 +2 f i−2 )
Untuk n = 3, 3 (91)
5h
y i+1 = y i−4 + ( 11 f i +f i−1 +f i−1 +11 f i−3 )
Untuk n = 4, 24 (92)
Sedangkan untuk teknik Newton-Cotes tertutup dapat juga digunakan untuk langkah ganda
penyelesaian persamaan diferensial dengan nilai awal

h
y i+1 = y i + (f +f )
Untuk n = 1, 2 i i+1 (93)
h
y i+1 = y i−1 + ( f i−1 +4 f i +f i+1 )
Untuk n = 2, 3 (94)
3h
y i+1 = y i−2 + ( f i−2 +3 f i−1 +3 f i +f i+1 )
Untuk n = 3, 8 (95)
2h
y i+1 = y i−3 + ( 7 f i−3 +32 f i−2 +12 f i−1 +32 f i +7 f i+1 )
Untuk n = 4, 45 (96)
Teknik-Teknik Adam. Jenis lain dari teknik integrasi yang digunakan untuk menyelesaikan
persamaan diferensial orde pertama dengan nilai awal adalah metoda yang didasarkan kepada konsep
beda hingga yang disebut metoda Adam. Dan yang perlu kita catat di sini bahwa banyak program
computer populer untuk solusi langkah ganda bagi persamaan diferensial biasa orde pertama dengan
nilai awal di dasarkan atas metoda ini. Ada dua metoda yang menandai metoda ini, yakni metoda
Adam terbuka yang dikenal dengan nama Metoda Adam-Bashfort dan metoda Adam tertutup yang
dikenal dengan nama Metoda Adam-Moulton. Kita akan mulai dengan yang pertama: Metoda Adam
terbuka.
Metoda Adam terbuka (Metoda Adam-Bashfort). Formula Adam dapat diturunkan dengan
beberapa cara dan salah satunya adalah menuliskan deret Taylor maju di sekitar titik interior ti, yaitu:
, ( 2) ( 3) ( n−1 )
fi 2 fi 3 fi 4 fi
y i +1 = y i + f i h+ h + h + h +. ..+ h n +. ..
2 3! 4! n! (97)
Atau kita dapat menulisnya kembali dalam bentuk berikut ini.
( 2) ( 3)
f ,i
(n−1)
f i 2 fi 3 fi
[
y i +1 = y i +h f i + h+
2 3!
h+
4!
h + .. .+
n!
n−1
h + .. .
(98)
]
Kita juga sudah belajar dari Bab, beda hingga mundur dapat digunakan untuk menghampiri nilai dari
turunan, sehingga kita dapat menuliskan
( 2)
f −f i−1 fi
f i,= i + h+O ( h2 )
h 2 (99)
Yang kemudian di masukkan ke dalam persamaan (98) akan menghasilkan persamaan berikut ini.
( 2) ( 3) (n )
h f i −f i−1 f i fi fi
[
y i +1 = y i +h f i +
2( h
+ )
2!
( 2
h+O h + )
3!
2
h + .. .+
n!
n−1
h + .. .
(100)
]
Dengan mengumpulkan suku-suku yang sama kita dapat menuliskan kembali persamaan ini menjadi
persamaan:
3 f i−f i−1 5 3 ( 2)
y i +1 = y i +h ( 2 12 )
+ h f i +O ( h 4 )
(101)
Formula yang dinyatakan oleh persamaan terakhir ini () disebut sebagai formula Adam terbuka orde
kedua, yang disebut juga sebagai formula Adam-Bashfort orde kedua.
Untuk formula-formula Adam-Bashfort orde yang lebih tinggi dapat diperoleh dengan
mensubstitusikan orde beda hingga ke dalam persamaan (98). Dan secara umum, Formula Adam
terbuka dapat dinyatakan dalam persamaan berikut ini.
n−1
y i +1 = y i +h ∑ γ k f i −k +O ( hn+1 )
k =0 (102)
Nilai-nilai γk dalam persamaan terakhir ini disajikan dalam Tabel berikut ini.

Tabel. Nilai γk untuk formula-formula Adam-Basfort.


Galat pemendekan
Orde γ0 γ1 γ2 γ3 γ4 γ5
lokal
1 1 1 2d
h f (ξ )
2 dt
2
2 3 3 5 3 d
− h f (ξ )
2 2 12 dt 2
3 23 16 5 9 4 d3
− h f (ξ )
12 12 12 24 dt 3
4 55 59 37 9 251 5 d 4
− − h f (ξ )
24 24 24 24 720 dt 4
5 1901 2774 2616 1274 251 475 6 d 5
− − h f (ξ )
720 720 720 720 720 1440 dt 5
6
6 4277 7923 9982 7298 2877 475 10 , 087 7 d
− − − h f ( ξ)
720 720 720 720 720 720 60 , 480 dt 6

Formula-Formula Adam tertutup (Adam-Moulton). Kalau sekarang kita mengambil deret Taylor
mundur disekitar ti+1, maka kita dapat menuliskannya dalam persamaan berikut ini.
, ( 2) (3 ) ( n−1 )
f f f f
y i= yi+1 −f i+1 h+ i+1 h2− i+1 h3 + i+1 h 4 +. ..+ i+1 h n−.. .
2 3! 4! n! (103)
Persamaan () ini kemudian kita selesaikan untuk ti+1 dan memberikan hasil
( 2) ( 3)
f ,i+1
(n−1)
f i+1 2 f i+1 3 f i+1
2[
y i+1 = y i −h f i+1 +
h−
3!
h+
4!
h +. . .+
n!
n−1
h −. ..
(104)
]
Sekarang dengan mengambil definisi beda hingga maju untuk menghampiri nilai turunan sebagai
berikut.
f i +1 −f i f (i2+)
, 2
f i +1 =
+ h+O ( h )
h 2 (105)
Masukkan persamaan terakhir ini () ke dalam () sehingga diperoleh persamaan seperti berikut ini.
( 2)

[ ]
(3 ) (n )
h f i +1 −f i f i +1 fi fi
y i +1 = y i +h f i +1−
2 ( h
+
2!
h+ O ( h2 ) +
3!
h2−. . .+ )
n!
(106)
h n−1 −.. .

Sekarang, dengan mengumpulkan suku-suku yang sama ke dalam kelompok yang sama, kita akan
memperoleh
f i+1−f i 5
y i+1 = y i +h
2 ( 12
( 2)
)
− h3 f i+1 −O ( h4 )
(107)
Persamaan ini terkenal dengan sebutan formula adam tertutup orde kedua atau yang lebih dikenal
sebagai formula Adam-Moulton. Juga kita catat di sini bahwa persamaan ini tidak lain adalah aturan
trapesium seperti yang pernah kita pelajari dalam integrasi numerik.
Untuk formula-formula Adam-Moulton orde yang lebih tinggi dapat diperoleh dengan
mensubstitusikan orde beda hingga ke dalam persamaan (107). Dan secara umum, Formula Adam-
Moulton dapat dinyatakan dalam persamaan berikut ini.
n−1
y i+1 = y i +h ∑ γ k f i+1−k +O ( hn+1 )
k =0
(108)
Nilai-nilai γk dalam persamaan terakhir ini disajikan dalam Tabel berikut ini.
Tabel. Nilai γk untuk formula-formula Adam-Moulton.
Galat pemendekan
Orde γ0 γ1 γ2 γ3 γ4 γ5
Local
2
2 1 1 1 d
− h3 2 f ( ξ )
2 2 12 dt
3 5 8 1 1 d3
− − h4 3 f (ξ )
12 12 12 24 dt
4
4 9 19 5 1 19 5 d
− − − h 4 f (ξ )
24 24 24 24 720 dt
5
5 251 646 264 106 19 27 6 d
− − − h f (ξ )
720 720 720 720 720 1440 dt 5
6
6 475 1427 798 482 173 27 863 d
− − − h7 6 f ( ξ )
1440 1440 1440 1440 1440 1440 60 , 480 dt

Metoda-Metoda Langkah Ganda berorde Tinggi. Hingga saat ini kita telah secara formal
mengembangkan metoda Newton-Cotes dan metoda Adam yang nantinya dapat digunakan untuk
menurunkan metoda-metoda langkah ganda dengan orde-orde yang lebih tinggi. Jika metoda terbuka
dan metoda tertutup mempunyai galat pemendekan local dengan orde yang sama. Seperti halnya
dengan metoda Heun, metoda-metoda langkah ganda orde tinggi digunakan secara tandem sebagai
predictor bagi metoda predictor-corrector. Dalam sub bagian ini kita akan membahas mengenai dua
metoda yang paling umum dibahas dan digunakan dalam komputasi persamaan diferensial biasa.
Yang pertama adalah Metoda Milne dan Metoda Adam dari orde keempat.
Metoda Milne. Metoda Milne adalah metoda langkah ganda yang paling banyak digunakan yang
didasarkan atas Metoda integrasi Newton-Cotes. Metoda ini menggunakan formula tiga titik Newton-
Cotes terbuka sebagai predictor.
4h
y Pi+1 = y i−3 + ( 2 f i −f i−1 +2 f i−2 )
3
(109)
Dan bertindak sebagai corrector adalah
h P
y i+1 = y i−1 + ( 2 f +4 f i +f i−1 )
3 i+1 (110)
Dimana
P P
f i+1 =f ( t i+1 , y i+1 )
fi = f(xi, yi) dan
(111)
Yang perlu diingat disini, modifier dari predictor dan corrector diformulasi berdasarkan galat dari
setiap metoda yang diambil.
Sekarang berdasarkan persamaan (109) sampai dengan (111) kita dapat menyusun algoritma untuk
menyelesaikan persamaan diferensial biasa orde pertama dengan nilai batas, yaitu dengan memulai
langkah pertama dengan menghitung nilai-nilai yi untuk i = 1, 2, 3 dengan menggunakan algoritma
Runge-Kutta, sebagai contoh, kita dapat menggunakan metoda Runge-Kutta orde ke-empat. Dengan
demikian Algoritma Milne yang disusun akan mengambil bentuk seperti yang ditunjukkan oleh
Algoritma berikut ini.

Algoritma . Milne
Step 1. Gunakan Metoda Runge-Kutta Orde empat untuk menghitung nilai-nilai hampiran dari solusi
(yi) untuk i =1, 2, dan 3. Set i = 3 dan lanjut ke step 2
Step 2. Hitung Predictor dengan persamaan (109)
Step 3. Hitung Corrector dengan persamaan (110)
Step 4. Apakah i sudah mencapai N?
Jika belum, naikan counter loop sebesar satu point, yaitu i = i + 1 dan kembali ke Step 2
Jika Ya ke Step 5.
Step 5. Tulis atau simpan atau gunakan hasil yang diperoleh dan Stop.

Berdasarkan Algoritma ini kita dapat menyusun suatu fungsi yang dapat diakses oleh semua program
matlab yang melibatkan penggunaan algoritma untuk menghitung persamaan differensial orde
pertama dengan nilai awal seperti yang ditunjukkan oleh penggalan script Matlab berikut ini.

Algoritma Milne ini bisa diperbaiki dengan cara melakukan iterasi terhadap korektor dimana korektor
sekarang akan menjadi prediktor pada iterasi berikutnya, yaitu dengan mengubah persamaan (109)
dan (110) menjadi,
j) 4h
y (i+1 = y i−3 + ( 2 f i −f i−1 +2 f i−2 )
3
(109a)
dan
h ( j)
y ( j+1) = y i−1 + (2 f + 4 f i + f i−1)
i+1 3 i +1
(110a)
dengan
( j) ( j)
f i +1 =f ( t i +1 , y i+1 )
fi = f(xi, yi) dan
(111a)
iterasi dalam hitungan j dikatakan berhasil jika galat yang diakibatkannya menjadi cukup kecil dan
dihitung oleh persamaan berikut ini
( j +1 ) ( j)
y i+1 − y i+1
galat= ( j)
≤∈
y i+1 (111b)
Dimana ∈ adalah bilangan real positif yang kecil.
Dengan persaman-persamaan baru ini kita dapat meyusun algoritma Milne yang diperbaiki seperti
yang dinyatakan oleh Algoritma berikut ini

Algoritma . Milne
Step 1. Gunakan Metoda Runge-Kutta Orde empat untuk menghitung nilai-nilai hampiran dari solusi
(yi) untuk i =1, 2, dan 3. Set i = 3; j =0; eps = 0.000001; M = IterasiMax dan lanjut ke step 2
Step 2. Hitung Predictor dengan persamaan (109a)
Step 3. Hitung Corrector dengan persamaan (110a)
Step 4. Apakah jumlah iterasi sudah melebihi iterasi maksimum, yaitu j = IterasiMax?
Jika ya, set h yang baru dan ulangi proses komputasi ini.
Jika tidak, lanjutkan ke Step 5
Step 5. Hitung galat dengan persamaan (111b)
Apakah galat <= eps
Jika tidak, naikkan counter iterasi satu poin, yaitu j = j + 1 dan kembali Step 3
Jika ya, lanjutkan ke Step 6
Step 6. Apakah i sudah mencapai N?
Jika belum, naikan counter loop sebesar satu point, yaitu i = i + 1 dan kembali ke Step 2
Jika Ya ke Step 7.
Step 7. Tulis atau simpan atau gunakan hasil yang diperoleh dan Stop.

Dengan Algoritma ini kita dapat menyusun suatu program script Matlab yang berupa fungsi dengan
nama milnemodified.m, seperti yang terlihat dalam kode script berikut ini.
Berdasarkan pengalaman-pengalaman banyak orang yang menggunakan algoritma Milne dalam
komputasi yang persamaan differensial orde pertama dengan nilai awal bisa disimpulkan bahwa
metoda Milne ini memberikan hasil yang cukup baik akurasinya. Walaupun demikian untuk beberapa
kasus khusus seperti yang ditemukan oleh Raltson dan Rabinowitz metoda ini menunjukkan untuk
kerja yang kurang bagus. Dan ini akan kita elaborasi secara khusus di bagian akhir dari Bab ini.
Metoda Adam orde keempat. Metoda ini juga merupakan metoda yang popular di samping metoda
Milne yang baru kita bahas di atas. Untuk itu kita akan menggunakan Formula Adam-Bashfort orde
ke empat sebagai predictor, yaitu
h
y Pi+1 = y i + ( 55 f i −59 f i−1 +37 f i−2−9 f i−3 )
24
(112)
Seperti yang kita temui dalam Tabel.
Dan bertindak sebagai corrector adalah
h
y i+1 = y i + ( 9 f Pi+1 +19 f i−5 f i−1 +f i−2 )
24 (113)
Seperti yang dinyatakan oleh Tabel.
Dimana
P P
f i+1 =f ( t i+1 , y i+1 )
fi = f(xi, yi) dan
(111)
Sekarang, berdasarkan persamaan-persamaan (112), 113dan (111) kita dapat menyusun algoritma
untuk menyelesaikan persamaan diferensial biasa orde pertama dengan nilai batas, yaitu dengan
memulai langkah pertama dengan menghitung nilai-nilai yi untuk i = 1, 2, 3 dengan menggunakan
algoritma Runge-Kutta, sebagai contoh, kita dapat menggunakan metoda Runge-Kutta orde ke-empat.
Dengan demikian Algoritma Adam yang disusun akan mengambil bentuk seperti yang ditunjukkan
oleh Algoritma berikut ini.

Algoritma . Adam-Bashfort-Moulton
Step 1. Gunakan Metoda Runge-Kutta Orde empat untuk menghitung nilai-nilai hampiran dari solusi
(yi) untuk i =1, 2, dan 3. Set i = 3 dan lanjut ke step 2
Step 2. Hitung Predictor dengan persamaan (112)
Step 3. Hitung Corrector dengan persamaan (113)
Step 4. Apakah i sudah mencapai N?
Jika belum, naikan counter loop sebesar satu point, yaitu i = i + 1 dan kembali ke Step 2
Jika Ya ke Step 5.
Step 5. Tulis atau simpan atau gunakan hasil yang diperoleh dan Stop.

Berdasarkan Algoritma ini kita dapat menyusun suatu fungsi yang dapat diakses oleh semua program
matlab yang melibatkan penggunaan algoritma untuk menghitung persamaan differensial orde
pertama dengan nilai awal seperti yang ditunjukkan oleh penggalan script Matlab berikut ini.
Metoda ini akan memberikan hasil yang lebih baik apabila koreksi dibuat iterative,sebagai berikut.
Persamaan (112) ditulis kembali sebagai predictor ke-j, yaitu:
j) h
y (i+1 = yi+ ( 55 f i −59 f i−1 +37 f i−2−9 f i−3 )
24
(112a)
Sedangkan korektornya mejadi prediktor pada iterasi berikutnya, yaitu
h
y ( j+1) = y i + ( 9 f (i j+1) +19 f i −5 f i−1 +f i−2)
i+1 24 (113a)
Dimana
( j) ( j)
f i +1 =f ( t i +1 , y i+1 )
fi = f(xi, yi) dan
(111a)

Berdasarkan persamaan-persamaan (112a) dan (113a) dapat disusun suatu algoritma iteratif untuk
menghitung solusi dari persamaan diferensial orde pertama dengan nilai awal, seperti yang
ditunjukkan oleh Algoritma berikut ini.
Algoritma . Adam-Bashfort-Moulton
Step 1. Gunakan Metoda Runge-Kutta Orde empat untuk menghitung nilai-nilai hampiran dari solusi
(yi) untuk i =1, 2, dan 3. Set i = 3; j =0; eps = 0.000001; M = IterasiMax dan lanjut ke step 2
Step 2. Hitung Predictor dengan persamaan (112a)
Step 3. Hitung Corrector dengan persamaan (113a)
Step 4. Apakah jumlah iterasi sudah melebihi iterasi maksimum, yaitu j = IterasiMax?
Jika ya, set h yang baru dan ulangi proses komputasi ini.
Jika tidak, lanjutkan ke Step 5
Step 5. Hitung galat dengan persamaan (111b)
Apakah galat <= eps
Jika tidak, naikkan counter iterasi satu poin, yaitu j = j + 1 dan kembali Step 3
Jika ya, lanjutkan ke Step 6
Step 6. Apakah i sudah mencapai N?
Jika belum, naikan counter loop sebesar satu point, yaitu i = i + 1 dan kembali ke Step 2
Jika Ya ke Step 7.
Step 7. Tulis atau simpan atau gunakan hasil yang diperoleh dan Stop.
Metoda Hamming. Metoda ini pertama kali diusulkan oleh Hamming dalam bukunya “Numerical
Methods for Scientist and Engineers” pada tahun 1973. Metoda ini diusulkan karena ditemukannya
ketidak stabilan dari metoda Milne yang disebabkan oleh korektor. Usaha-usaha telah dilakukan
untuk mengembangkan korektor yang stabil yang dapat digunakan dengan metoda Milne dan salah
satunya adalah usaha yang dilakukan oleh Hamming tersebut. Dan untuk menghargai usahanya,
dikemudian hari orang menyebut usaha ini sebagai metoda Hamming. Metoda Hamming dianggap
sebagai satu kelas umum dari formula korektor dari bentuk
y i+1 =a i y i + ai−1 y i−1 + ai−2 y i−2 + h [ bi+1 y ,i+1 + bi y ,i +bi −1 yi,−1 +bi −2 yi−2
,
] +O ( h5 ) (114)
di mana
,
y j =f ( t j , y j ) untuk j = i + 1, i, i – 1, i – 2
(115)
Persamaan (114) ini mengikutkan baik formula-formula korektor Milne maupun Adam sebagai suatu
kasus khusus. Dengan mengambil ekspansi deret Taylor di sekitar ti, dengan mengikut sertakan suku-
d4 y
t , yi)
4 ( i
suku hingga ke turunan keempat, yaitu dt , maka kita akan memperoleh
dy h2 d 2 y h3 d 3 y h4 d 4 y
y i−1 = y i−h ( t , y ) + ( t , y )− t
( ), y + (t , y )
dt i i 2! dt 2 i i 3 ! dt 3 i i 4 ! dt 4 i i (116)
Persamaan (116) adalah ekspansi dari y, ukuran langkah adalah –h.
dy ( 2h )2 d 2 y ( 2 h ) 3 d3 y ( 2 h) 4 d 4 y
y i−2 = y i−( 2 h ) ( t i , y i ) + ( t , y )− ( t , y ) + t ,y
dt 2! dt 2 i i 3 ! dt 3 i i 4 ! dt 4 ( i i ) (117)
Persamaan (117) adalah ekspansi dari y, ukuran langkah adalah –2h.
dy dy d2 y h2 d 3 y h3 d 4 y
( t , y ) = ( t , y ) + h ( t , y ) + ( t , y ) + (t , y )
dt i+1 i +1 dt i i dt 2 i i 2 ! dt 3 i i 3 ! dt 4 i i
(118) Persamaan (118) adalah ekspansi dari y’, ukuran langkah adalah +h.
dy dy d2 y h2 d 3 y h3 d 4 y
( t i−1 , y i−1 ) = ( t i , y i )−h 2 ( t i , y i ) + ( t , y )− (t , y )
dt dt dt 2! dt 3 i i 3 ! dt 4 i i
(119) Persamaan (119) adalah ekspansi dari y’, ukuran langkah adalah –h.
2 3
dy dy d2 y ( 2h ) d 3 y ( 2 h) d4 y
( t , y ) = ( t , y )− ( 2 h ) 2 ( i
t , yi) + ( t , y ) 3 ! 4 ( ti , y i )

dt i−2 i−2 dt i i dt 2! dt 3 i i dt (120)
Persamaan (120) adalah ekspansi dari y’, ukuran langkah adalah –2h.
2 2 3 3 4 4
dy h d y h d y h d y
y i+1 = y i +h ( t i , y i ) + ( t , y ) + ( t , y ) + (t , y )
dt 2! dt 2 i i 3! dt 3 i i 4 ! dt 4 i i (121)
Persamaan (121) adalah ekspansi dari y, ukuran langkah adalah +h.
Sekarang, substitusikan persamaan bagian kanan persamaan (121) ke dalam bagian kiri persaman
(114) dan persamaan-persamaan (116) hingga (120) ke bagian kanan persamaan (114) dan kemudian
persamakan koefisien dari yi dan turunan-turunannya pada kedua sisi persamaan dan persaman yang
dihasilkan akan memberikan sistem persamaan linear baru berikut ini.
ai +ai−1 +ai−1 =1
−ai−1 −2 ai−2 +bi+1 +bi + b i−1 + bi−2 =1
1 1
ai−1 +2 ai−2 +bi+1 − bi−1 −2 bi−2 =
2 2
1 4 1 1 1
− ai−1 − ai−2 + b i+1+ bi−1+2 bi−2=
6 3 2 2 6
1 2 1 1 4 1
ai−1 + ai−2 + bi+1− bi−1 − bi−2=
24 3 6 6 3 6 (122)
Dari sistem persamaan yang diberikan oleh (122) terdapat tujuh anu dan lima persamaan, jelas
persaman ini akan memberikan jawaban yang banyak. Sedangkan yang dinginkan hanya satu jawaban
dan Hamming mengasumsikan bahwa ai−1 =b i−2=0, dan dengan nilai-nilai yang diketahui ini,
persamaan (122) dapat diselesaikan dan kita memperoleh
9 1 3 3 3
ai = , ai−2 =− , bi+1= , bi = , bi−1 =−
8 8 8 4 dan 8
(123)
Dengan memasukkan nilai-nilai yang diberikan dalam persamaan (123) ke dalam persamaan (114),
formula korektor dapat ditulis sebagai
9 1 3
y i+1 = y i − y i−2 + h [ y ,i+1 +2 y i,− y ,i−1 ]
8 8 8
(124)
Dan galat yang terjadi adalah:
14 5 d 4 y
E p= h (ξ )
45 dt 4 p (125)
Dimana xi-3 < ξp < xi+1. Dan galat untuk formula korektor (124) dapat diperlihatkan sebagai:
1 d4 y
Ec =− h5 4 ( ξ c )
40 dt
(126)
Dimana xi-3 < ξc < xi+1. Dengan menganggap bahwa turunan keempat yang diberikan baik dalam
persamaan (125) maupun (126) tidak berubah secara drastis dalam interval (xi -3, xi +1), kita
menggunakan hubungan
d4 y d4 y d4 y
( ξ ) = ( ξ ) = ( ξ)
dt 4 p dt 4 c dt 4 (127)
Juga bahwa galat dalam prediktor dan korektor diberikab oleh
112 (m +1 ) (1 )
E p= ( y − yi )
121 i
(128)
dan
9 ( m+1 ) (1 )
Ec =− ( y − y i+1)
121 i+1
(129)
Persamaan (124) dapat digunakan bersama-sama dengan formula predictor yang tersedia seperti
formula Milne yang diberikan dalam persamaan (). Ketimbang dengan hanya menggunakan
persamaan () dan (124) sebagai predictor dan korektor; Hamming mengusulkan suatu prosedur untuk
mengeliminasi iterasi yang terkait dengan formula-formula korektor yang biasa digunakan. Dan ini
melibatkan modifier untuk predictor maupun korektor. Prosedur yang diusulkan Hamming sekarang
bisa dituliskan secara lengkap sebagai:
4
^y i+1 = y i−3 + h [ 2 y i,− y ,i−1 +2 y ,i−2 ]
3
(130)
Persamaan (130) ini merupakan predictor. Sedangkan modifier untuk predictor dinyatakan oleh
persamaan berikut ini.
112
y (1 ) = ^y i+1 − ( ^y − ^ȳ )
i+1 121 i i (131)
Sedangkan korektor diberikan oleh:
^ȳ i+1 = 9 y i − 1 y i−2 + 3 h f ( t i+1 , y (i+1
[ 1)
)+2 y ,i − y ,i−1 ]
8 8 8
(132)
Sedangkan modifier dari korektornya adalah:
9
y i+1 = ^ȳ i+1 + ( y^ i+1 − ^ȳ i+1 )
121 (133)
Kita dapat melihat dengan jelas bahwa persamaan-persamaan (130) hingga (133) tidak melibatkan
proses iterative dan persamaan (133) memberikan nilai akhir dari yi+1. Kita bisa mencatat bahwa
metoda ini bukanlah metoda yang memulai proses sendiri (self starting) dan karenanya metoda ini
membutuhkan metoda lain seperti metoda Runge-Kutta orde ke-4 untuk memulai prosesnya. Dalam
^y − ^ȳ
langkah pertama, persamaan-persamaan (130) hingga (133) digunakan, harga ( i i ) diambil nol
dalam persamaan (131). Metoda Hamming orde ke-4 yang diberikan disini merupakan metoda
langkah ganda yang paling popular.
Berdasarkan uraian yang telah kita buat di atas, kita dapat menyusun algoritma yang membuat metoda
Hamming ini dapat digunakan dalam komputasi dan algoritma itu tertuang dalam Algoritma
Hamming berikut ini.
Algoritma . Algoritma Hamming.
Input
Step 1. Set i = 0
Step 2. Panggil Algoritma Runge-Kitta Orde-4
Step 3. Set i = 3; Set z=0
4
^y i+1 = y i−3 + h 2 f ( t i , y i )−f ( t i−1 , y i−1 ) y ,i−1 +2 f ( t i−2 , y i−2 )
[ ]
Step 4. Hitung 3
112
y (1 ) = ^y i+1 − z
Hitung i+1 121
^ȳ i+1 = 9 y i − 1 y i−2 + 3 h f ( t i+1 , y (i+1
[ 1)
) +2 y ,i − y ,i−1 ]
Hitung 8 8 8
z=( y^ i+1− ^ȳ i+1 )
Hitung
9
y i+1 = ^ȳ i+1 + z
Hitung 121 ;
Output (ti+1, yi+1)
Step 5. Apakah i = n?
Jika tidak, naikkan counter looping satu poin, yaitu i = i + 1 dan kembali ke Step 4.
Jika ya, komputasi selesai. STOP
Dengan Algoritma Hamming ini kita dapat membuat program script Matlab dalam bentuk fungsi
hamming.m

SISTEM PERSAMAAN DIFFERENSIAL DAN PERSAMAAN DIFFERENSIAL BERORDE


LEBIH BESAR DARI SATU.
Kenyataan memberikan kita petunjuk bahwa suatu persamaan differensial berorde ke-n dapat disusun
menjadi suatu system persamaan-persamaan diferensial orde pertama. Dan juga adalah kenyataan
bahwa komputasi numerik untuk problema nilai awal dapat dikembangkan untuk system persamaan
differensial orde pertama dengan nilai awal. Itulah sebabnya kita perlu membahas mengenai kedua hal
ini dalam bagian ini. Kita akan memulai dengan yang pertama, yaitu mengkonversi suatu persamaan
differensial biasa orde ke-n menjadi system n-persamaan differensial dengan nilai awal.
Penyusunan Sistem n-Persamaan Differensial Orde Pertama dari suatu Persamaan Differensial
berorde n. Marilah kita perhatikan suatu persamaan differensial berorde n yang dapat ditulis sebagai
berikut.
2 3 n
dx d x d x d x
a0 ( t ) x+ a1 ( t ) + a2 ( t ) 2 +a3 ( t ) 3 +.. .+a n ( t ) n =f ( t )
dt dt dt dt
(114)
Dengan nilai awal
ẋ ( t 0 )=b1 , x (2 ) ( t 0 ) =b 2 , x (3 ) ( t 0 ) =b 3 , (n−1 )
x (n ) ( t 0 )=b n
x(t0) = b0, …, x ( t 0 )=bn−1 ,
(115)
dimana bn ≠ 0, maka persamaan differensial (114) dan nilai awalnya (115) dapat direduksi menjadi
system persamaan differensial yang dapat ditulis dalam bentuk matriks dan vektor seperti berikut ini.
ẋ ( t )= A ( t ) x ( t ) +g ( t )
ẋ ( t 0 )=b (116)
Untuk mendapatkan persamaan (116), kita melakukan beberapa tahap.
Pertama: Kita rubah persamaan (114) menjadi
n 2 3 n−1
d x dx d x d x d x
=c 0 ( t ) x+ c 1 ( t ) +c ( t ) + c ( t ) + .. .+c ( t ) +f (t )
dt n dt 2 dt 2 3 dt 3 n−1
dt 3
(117)
Ini berarti bahwa konstanta-konstanta c0, c1, c2, …, cn harus dihitung berdasarkan persamaan berikut
ini.
a (t )
c i ( t ) =− i ,
an ( t ) untuk semua i = 1, 2, …, n – 1 (118)
dan
f (t)
g ( t )=
an ( t ) (119)
Kedua: Sekarang kita harus mendefinisikan variabel-variabel yang nantinya akan merupakan elemen
dari vektor x, yaitu x = [x1 x2 … xn]T. Dengan mengambil
2 2 n−1
dx ( t ) d x (t) d x (t) d x (t )
x 2 ( t )= , x3 ( t ) = , x 3 ( t ) = , x n ( t ) =
x1(t) = x(t), dt dt 2 dt 2 …, dt n−1
(120)
Variabel-variabel baru yang didefinisikan dalam persmaan (120) saling terhubung oleh persamaan-
persamaan
dn x dx d2 x d3 x
=c 0 ( t ) x+ c 1 ( t ) +c 2 ( t ) 2 + c3 ( t ) 3 + .. .+c n ( t )+ f ( t )
dt n dt dt dt (121)
dx 1 ( t )
=x 2 ( t )
dt
dx 2 ( t )
=x 3 ( t )
dt
dx 3 ( t )
=x 4 ( t )
dt
.. . .
.. . .
dx n−1 (t )
=x n ( t )
dt (122)
Ketiga: Menyatakan dxn/dt dalam bentuk variabel baru yang telah didefinisikan dalam tahap kedua.
Hal ini dapat dilakukan dengan cara mendiferensiasi persamaan terakhir dalam (121), yaitu
d d x ( t ) dx n ( t )
n−1

dt dt n−1
=
[ dt ] (123)

Dengan demikian, berdasarkan persamaan-persamaan (120) dan (121), kita dapat menulis persamaan
berikut ini.
dn x dx d2 x d3 x d n−1 x
=c 0 ( t ) x+ c 1 ( t ) +c 2 ( t ) + c3 ( t ) + .. .+c n−1 ( t ) + f (t )
dt n dt dt 2 dt 3 dt 3
=c 0 ( t ) x 1 ( t ) +c 1 ( t ) x 2 ( t )+ c 2 ( t ) x 3 ( t ) + c3 ( t ) x 4 ( t )+. . .+ c n−1 ( t ) x n ( t ) +f ( t )
(124)
Dengan menggabungkan persaman (118), (122) dan (124) maka kita akan menemukan persamaan
(116) dengan
x1 ( t )

[]
x2 ( t )
x ( t )= . .
..
xn ( t )
(125)

Dan
[]
g ( t )= ..
..
0

g (t)
(126)

0 1 0 0 0 0 .. ... . 0

[ ]
0 0 1 0 0 0 .. ... . 0
0 0 0 1 0 0 .. ... . 0
0 0 0 0 1 0 .. ... 0
A=
::: ::: ::: ::: ::: ::: :::::: :::
0 0 0 0 0 0 .. 0
0 0 0 0 0 0 .. ... 1
c 0 ( t ) c1 ( t ) c 2 ( t ) c 3 ( t ) .. .. .. ... c n ( t )
(127)
Dan vektor nilai awal adalah:
x1 ( t 0 ) b1

(128)
[ ] []
x2 ( t 0 )
x ( t 0 )= ..
..
x n ( t0 )
b2
=b= . .
..
bn

Persamaan differensial yang dinyatakan oleh persamaan (116) dapat diselesaikan secara analitis,
maupun secara numerik. Untuk penyelesaian secara numerik, kita dapat menyusun metoda komputasi
berbasis Runge-Kutta atau yang lain dengan modifikasi yang menghasilkan suatu prosedur yang
kemudian dapat digunakan dan ini akan dibahas dalam sub-bagian berikut ini

Penyelesaian Numerik terhadap Sistem m-Persamaan diffensial dengan Nilai Awal. Dalam sub-
bagian ini akan dibahas mengenai penyelesaian numerik dari system m-persamaan diferensial dengan
nilai awal dengan menggunakan metoda Runge-Kutta orde-4. Untuk itu, perhatikan system persamaan
differensial orde pertama berikut ini
dy 1
=f 1 ( t , y 1 , y 2 , .. . , y m)
dt
dy 2
=f 2 ( t , y 1 , y 2 , .. ., y m )
dt
.. .
.. .
dy m
=f m ( t , y 1 , y 2 , .. . , y m )
dt (129)
untuk a ≤ t ≤ b, dengan kondisi awal
y 1 ( a ) =β1
y 2 ( a ) =β 2
.. .
.. .
y m ( a )=β m (130)
Metoda secara sederhana merupakan generalisasi dari metoda untuk menyelesaikan persamaan
differensial orde pertama tunggal seperti yang telah dibahas dalam bagian-bagian sebelumnya. Itu
berarti semua metoda yang dibahas dalam bagian-bagian sebelumnya dapat digunakan untuk
mengembangkan algoritma komputasi untuk system persamaan differensial orde pertama dalam
persamaan (129) dengan kondisi awal dalam persamaan (130). Dalam kesempatan ini kita akan
menyusun algoritma penyelesaian system persamaan differensial orde pertama dengan nilai awal
berdasarkan metoda Runge-Kutta keempat.
Jadi objek dari penyelesaian system persamaan diferensial yang diberikan dalam persamaan (130),
adalah mencari m fungsi y1, y2, …, ym yang memenuhi system persamaan diferensial dan juga kondisi
awalnya.
Sekarang kita akam memulai pembahasan dengan membicarakan keunikan solusi dari system
persamaan, untuk itu, adalah perlu untuk memperluas definisi dari kondisi Lipschitz bagi fungsi
berpubah banyak dan kita akan memulai dengan Definisi berikut ini.
Definisi. Fungsi f(t, u1, u2, …, um) didefinisikan dalam himpunan
D = {(t, y1, y2, …, ym)|a ≤ t ≤ b, -∞ < μi < ∞, untuk i = 1, 2, …, m}
dikatakan memenuhi suatu kondisi Lipschitz di D dalam variabel-variabel y1, y2, …, ym jika ada suatu
konstanta L > 0 dengan sifat bahwa
m
∑ |y j −z j|
| f(t, y1, y2, …, ym) - f(t, z1, z2, …, zm) | ≤ L j=1 ()
Untuk semua (t, y1, y2, …, ym) dan (t, z1, z2, …, zm) dalam D.
Dengan menggunakan Teorema nilai rata-rata, dapat diperlihatkan bahwa jika f dan turunan-turunan
parsialnya kontinu di D dan jika
∂ ( t , y1 , y 2 ,..., y m )
| |≤L
∂ yi
untuk setiap i = 1, 2, …, m dan semua (t, y1, y2, …, ym) dalam D, maka f memenuhi kondisi Lipschitz
di D dengan konstanta Lipshitz L. Dari definisi ini kemudian akan mengikuti Teorema dasar
eksistensi dan keunikan penyelesaian system persamaan differensial seperti berikut ini.
Teorema . Anggaplah bahwa D = {(t, y1, y2, …, ym)|a ≤ t ≤ b, -∞ < μi < ∞, untuk i = 1, 2, …, m} dan
juga, ambil f(t, y1, y2, …, ym) untuk setiap i = 1, 2, …, m, kontinu di D dan memenuhi kondisi Lipschiz
di sana. Maka system persamaan diferensial (129) dengan kondisi awal (130) mempunyai solusi yang
unik, yaitu y1(t), y2(t), …, ym(t) dalam interval a ≤ t ≤ b.

Dimulai dari persamaan (130) dan menset keadaan awal dengan sebagai keadaan pada i = 0, kita
dapat membentuk langkah pertama komputasi sebagai berikut

b−a
h=
Set N
Untuk j = 1, 2, …, m (131)
i
Set y j =β j
Set i = 0
Sekarang kita dapat membentuk langkah selanjutnya dimulai dari langkah ke-3. Sekarang, jika kita
i
menganggap bahwa y j untuk setiap j = 1, 2, …, m telah dihitung, maka kita akan dapat
i+1
menghitung y j untuk setiap j = 1, 2, …, m. Dan itu berarti kita telah terlebih dahulu menghitung
h
( 2 )
k 1j =hf j ti + , y i1 , y i2 , y i3 , . .. y im
untuk setiap j = 1, 2, …, m (132)
h
k =hf ( t + , y + k , y + k , y + k ,. .. y + k )
j
2 j i
i
1
1 1
2 1
i
2
1
2
2
1
i
3
1 3
2 1
i
m
1
2
m
1
2
untuk setiap j = 1, 2, …, m (133)

h
( 1 1 1 1
k 3j =hf j t i + , yi1 + 2 k 12 , y i2 + 2 k 22 , y i3 + 2 k 32 ,. .. y im + 2 k m2
2 )
untuk setiap j = 1, 2, …, m (134)
k 4j =hf j ( t i +h , y i1 +k 13 , y i2 +k 23 , y i3 +k 33 ,. .. y im +k 3m )
untuk setiap j = 1, 2, …, m (135)
i+1
Setelah itu kita dapat menghitung y j untuk setiap j = 1, 2, …, m dengan persamaan
1 j
y ij+1 = y ij + ( k 1 +2 k 2j +2 k 3j + k 4j )
6 (135)
Dari hasil analisis di atas kita dapat menyusun algoritma untuk komputasi system persamaan
differensial orde pertama dengan nilai awal seperti yang ditunjukkan oleh Algoritma 7 berikut ini.

Algoritma 7.
b−a
h=
Step 1. Set N
Untuk j = 1, 2, …, m
i
Set y j =β j
Set i = 0
Step 2. Hitung ti = a + ih
Step 3. Untuk setiap j = 1, 2, …, m
h
Hitung
(
k 1j =hf j ti + , y i1 , y i2 , y i3 , . .. y im
2 )
Step 4. Untuk setiap j = 1, 2, …, m
h
Hitung
(
k 2j =hf j t i + , y i1 + 12 k 11 , y i2 + 12 k 21 , y i3 + 12 k 31 ,. .. y im + 12 k m1
2 )
Step 5. Untuk setiap j = 1, 2, …, m
h
Hitung
(
k 3j =hf j t i + , yi1 + 12 k 12 , y i2 + 12 k 22 , y i3 + 12 k 32 ,. .. y im + 12 k m2
2 )
Step 6. Untuk setiap j = 1, 2, …, m
j i 1 i 2 i 3 i m
Hitung k 4 =hf j ( t i +h , y 1 +k 3 , y 2 +k 3 , y 3 +k 3 ,. .. y m +k 3 )
Step 7. Untuk setiap j = 1, 2, …, m
1 j
y ij+1 = y ij + ( k 1 +2 k 2j +2 k 3j + k 4j )
Hitung 6
Step 7. Apakah i = n? Jika tidak naikkan counter I satu point, yaitu i = i + 1 dan kembali ke Step 2
Jika ya, perhitungan selesai dan keluar dari algoritma.

Dengan cara yang sama seperti yang digunakan untuk mendapatkan algoritma untuk metoda-metoda
Runge-Kutta dari orde-orde yang lain.
Dari Algoritma ini kita dapat membuat program script Matlab sebagai suatu fungsi buatan (user
defined function) yang digunakan untuk menyelesaikan sistem dengan tiga persamaan diferensial dan
sistem ini bisa dikembangkan untuk lebih dari tiga persamaan diferensial.

Problema Nilai Batas untuk Persamaan


Differensial Biasa
Problema fisika maupun problema fisko-khemikal yang bergantung kepada posisi ketimbang waktu
sering sekali dinyatakan dalam bentuk persamaan differensial dengan kondisi yang berada pada lebih
dari satu titik. Dalam Bab , kita telah mempelajari persamaan-persamaan diferensial biasa orde
pertaman dengan nilai awal yang banyak sekali penggunaan dalam bidang-bidang rekayasa dan sains
seperti rekayasa proses, elektrikal dan elektronik, fisika dan lain-lain. Dalam problema nilai awal dari
problema untuk turunan-turunan yang lebih rendah sampai satu orde kurang dari orde persamaan
diferensial tertinggi ditentukan pada waktu awal. Lain halnya dengan persamaan diferensial dengan
nilai batas, bukan hanya nilai batas awal yang diketahui tetapi nilai batas akhir interval juga diketahui.

Dalam Bab ini, untuk mendapat wawasan mengenai kemunculan problema nilai batas dalam peristiwa
perpindahan massa, perpindahan kalor dan defleksi dalam struktur.

Contoh pertama adalah peristiwa perpindahan massa, yaitu diffusi dan reaksi orde pertama dalam
lapisan katalis (lihat Gambar 1.)

Partikel Permukaan
Katalis exterior
porous
y=1

dy
=0
dx

y=1

profile
konsentrasi
x=0

Gambar 1. Diffusi dan reaksi dalam suatu slab katalis

Jika A adalah luas penampang dari katalis, J adalah fluks diffuse yang didefinisikan sebagai mol
persatuan luas total per satuan waktu dan kC adalah laju reaksi persatuan volume katalis, maka dengan
mengambil neraca massa pada suatu selubung tipis pada posisi r dengan ketebalan Δr, kita dapat
menuliskan

AJ|r - AJ|r+Δr – A(kC)Δr = 0 (1)

Dengan membagikan persamaan (1) dengan Δr serta membuat selubung menjadi setipis mungkin,
yaitu dengan mengambil limit dari Δr menuju nol, maka kita akan menemukan persamaan berikut ini.

dJ
− −kC=0
dr (2)

Tetapi menurut hokum Fick untuk diffuse, fluks ke dalam partikel katalis adalah sebanding dengan
gradient konsentrasi, yaitu:

dC
J =−D e
dr (3)
Maka dengan memasukkan persamaan (3) ke dalam persamaan (2), kita akan menemukan persamaan
berikut ini.
d2 C
D e 2 −kC=0
dr (4)
Ini merupakan persamaan differensial orde kedua dan nilai batas dari persamaan differensial (4) ini
adalah
dC
=0
r = 0; dr (4a)
dan
r = R; C = C0 (4b)

Contoh kedua dari problema nilai batas adalah perpindahan kalor untuk suatu kawat tipis yang
panjang sekali. Jika kawat tidak diisolasi sepanjang arah panjang dan system yangterjadi adalah
system tunak (lihat Gambar 2), maka persamaan yang dihasilkan adalah:
d2 T
+hr ( T a−T ) =0
dx 2 (5)
Di mana hr adalah koefisien kehilangan kalor karena radiasi (cm 2) yang menjadi parameter bagi
disipasi kalor ke udara sekeliling dan Ta adalah suhu udara sekeliling dalam 0C.
Persamaan (1) dapat diselesaikan jika ada kondisi batas yang memadai. Dalam kasus yang diberikan
dalam Gambar 2

Ta

T1 T2

Ta

. x=0 x=L

Gambar 2. Kawat uniform yang tidak berisolasi yang ditempatkan di antara dua objek dengan
suhu T1 dan T2. Temperatur disekeliling kawat adalah Ta.
Dari Gambar 2 ini kita dapat melihat bahwa kondisi batas untuk persamaan differensial (5) diberikan
oleh:
T(0) = T1 (5a)
dan
T(L) = T2 (5b)
Problema defleksi batang dengan penampang persegiempat yang mengalami pembebanan secara
uniform. Kedua ujung batang disangga sehingga di ujung-ujung batang tersebut tidak terjadi defleksi.
Untuk itu perhatikan Gambar 3.
Dalam Gambar 3 ini, defleksi pada jarak x dinyatakan oleh y ( x ) diukur dari ujung sebelah kiri
batang, y(x) dapat dihitung dengan persamaan diferensial berikut.
d2 y ( x ) S qx
2
= y ( x )+ ( x−l )
dx EI 2 EI (6)

S 0 l S

y (x )

Gambar 1. Defleksi yang terjadi pada batang dengan penampang segiempat

dengan l, q, E, S dan I masing-masing menyatakan banjang dari batang, intensitas dari beban uniform,
modulus elastisitas, regangan (stress) pada titik-titik ujung dan momen inersia sentral ada dua kondisi
batas yang terkait dengan persamaan diferensial ini yaitu asumsi yang menyatakan bahwa tidak ada
defleksi di kedua ujung batang, y(0) = y(l)=0.
Bila batang mempunyai ketebalan yang sama, hasil kali EI akan konstan, dan solusi eksak secara
analitis dengan mudah ditemukan. Dalam kebanyakan aplikasi, kenyataan seperti ini tidak terjadi
karena pada kenyataannya tebal dari batang tidak uniform sehingga momen inersia sentral tidak
konstan, melainkan merupakan fungsi dari x, jadi untuk ini diperlukan teknik hampiran perlu
dikembangkan.

Semua problema nilai batas yang kita temui di atas, seperti problema-problema nilai batas lainnya
dapat dinyatakan dalam bentuk persamaan umum berikut ini.
2
d y dy
dx 2 (
=f x , y ,
dx ) , a≤x≤b (7)
Dengan kondisi-kondisi batas
y(a )=α , dan y(b )=β. (8)
Teorema berikut ini, memberikan kondisi-kondisi umum yang menjamin jawaban dari suatu problema
nilai batas orde kedua ada dan unik.
Teorema 1. Katakanlah bahwa fungsi f dalam problema nilai batas orde kedua yang diberikan oleh
persamaan (7) dan (8) kontinu pada himpunan D dengan

dy dy
{(
D= x , y ,
dx )
|x≤x≤b ,−∞< y <∞ ,−∞< <∞
dx }
dy ∂f ∂f
dan bahwa turunan parsial pertamanya terhadap y dan dx , yaitu ∂y dan ∂ y' juga kontinu
dalam D. Jika

∂f ∂ dy
a. ∂y (
x, y ,
dx
>0 )
untuk semua
( x , y , dydx )∈ D dan
b. Ada suatu konstanta M dengan
∂f ∂ dy
|
∂y (
x, y ,
dx )
|≤M
untuk semua
( x , y , dydx )∈ D
Maka problema nilai batas ini mempunyai jawaban yang unik.

dy
Jika
(
f x, y ,
dx ) dapat dinyatakan dalam bentuk

dy dy
(
f x, y ,
dx )
= p ( x ) +q ( x ) y+r ( x )
dx

Maka persamaan differensial (7) dan (8) dapat ditulis kembali sebagai

d2 y dy
= p (t ) +q(t ) y+r (t ),
dt 2 dt a≤t≤b , y(a )=α , y(b)=β. (9)

Persamaan (9) ini disebut sebagai problema nilai batas yang linear. Tipe persamaan differensial ini
sangat sering ditemukan dalam penerapannya. Dan jika hal ini dijumpai maka Teorema 1 perlu
disederhanakan. Akibat dari Teorema 1 untuk problema linear dapat ditulis sebagai berikut.
Akibat 1. Jika problema nilai batas linear dinyatakan oleh persamaan (9) memenuhi:

a. p(x), q(x) dan r(x) kontinu di [a, b]


b. q(x) > 0 di [a, b]
maka problema yang dinyatakan oleh persamaan diferensial (9) mempunyai jawaban yang unik

Dalam Bab ini kita akan membicarakan solusi bagi problema nilai batas jenis ini dan juga untuk
problema nilai batas yang tidak linear. Dan kita akan mulai dengan yang pertama, yaitu problema nilai
batas linear.

PENYELESAIAN NUMERIK BAGI PROBLEMA NILAI BATAS LINEAR

Dalam bagian ini akan kita bahas dua cara yang yang digunakan untuk menyelesaikan problema nilai
batas, yaitu metoda pembidikan (“shooting” method) dan metoda beda hingga.

Metoda pembidikan (Shooting Method).

Untuk menghampiri penyelesaian unik yang dijamin oleh hipotesis yang diberikan dalam Akibat 1
dari Teorema 1 di atas, pertama-tama perhatikanlah problema nilai awal yang diberikan dalam
persamaan (9), yang digantikan oleh dua problema nilai batas ini.
2
d y dy
= p (t ) + q( x ) y +r ( x ) ,
dx 2 dt a≤x≤b , y(a )=α , y' (a)=0. (10)
dan
d2 y dy
= p (x ) +q( x ) y ,
dx 2 dx a≤x≤b , y(a )=0, y(b)=1. (11)
Problema yang dinyatakan oleh persamaan (10) dan (11), kedua-duanya masing-masing mempunyai
solusi yang unik. Jika y1(x) adalah solusi dari problema nilai batas yang diberikan dalam persamaan
(10) dan y2(x) adalah solusi dari problema nilai batas yang diberikan dalam persamaan (11), maka kita
akan dengan mudah memperoleh
β− y 1 ( b )
y ( x )= y 1 ( x ) + y2 ( x)
y2 ( b ) (12)
Merupakan solusi unik untuk problema nilai batas yang kita punyai, ini meyediakan bagi kita, bahwa
y2(b) ≠ 0 dan bahwa bila y2(b) = 0 akan berkonflik dengan hipotesis yang diberikan dalam Akibat 1.
Metoda pembidikan atau sooting method untuk problema nilai batas yang linear didasarkan atas
penggantian problema nilai batas yang diberikan dalam persamaan (9) dengan persamaan-persamaan
(10) dan (11). Banyak metoda yang telah disiapkan dalam Bab (Persamaan Diferensial dengan nilai
awal) untuk menghampiri solusi dari y1(x) dan y2(x). Ketika kita menggunakan salah satu dari metoda
yang disediakan di Bab, maka kita akan bisa memperoleh solusi dari problema nilai batas dengan
penghampiran menggunaan persamaan (12).

β
β− y 1 ( b )
y ( x )= y 1 ( x ) + y2 ( x)
y2(x) y2 ( b )

y2(x)
α

x
a b

Gambar 4.

Kita sekarang dapat menyusun algoritma pembidikan ini dengan menggunakan metoda Runge-Kutta
orde keempat sebagai dasar.

Algoritma 1. Metoda Pembidikan.


Untuk algoritman ini, yang menjadi input adalah titik-titik ujung interval, a dan b, kondisi batas α
dan β, jumlah sub interval yang diambil, N.
b−a
h=
Step 1. Hitung N
Tetapkan :
v 1,0=alpha ;
v 2,0=0;
w 1,0=0
w 2,0=1
Set i = 0
Step 2. Hitung x = a + ih;
Step 3. Hitung
v
k 1,1 =hv 2 ,i ;
k v =h [ p ( x ) v 2 ,i + q ( x ) v 1, i +r ( x ) ] ;
1,2

1
[
k v =h v 2 ,i + k 1,2 ;
2,1 2 ]
h 1 h 1 h
k v =h p x+
2,2 [ ( )(
2
v2 , i + k 1,2 +q x+
2 2 ) ( )(
v 1 ,i + k 1,1 +r x+
2 2 ) ( )]
;

1
[
k v =h v 2 ,i + k 2,2 ;
3,1 2 ]
h 1 h 1 h
v
k =h p x+
3,2 [ ( )( v + k +q x+
2 2 , i 2 2,2 2 ) ( )(
v 1 ,i + k 2,1 +r x +
2 2
; ) ( )]
1
[
k v =h v 2 ,i + k 3,2 ;
4,1 2 ]
k v =h p x +
4,2 [ ( h2 )( v 2 ,i
1
) ( )(
+ k 3,2 +q x+
2
h
2
1
) ( )]
v 1 , i + k 3,1 +r x +
2
h
2
;

1 v v v v
v 1 , i+1 =v i + k +2 k +2 k +k ;
( )
6 1,1 2,1 3,1 4,1

1 v v v v
v 2 , i+1 =v i + k + 2k 2,2 +2 k 3,2 +k 4,2 ;
( )
6 1,2

Step 4. Hitung:
w
k 1,1 =hw2 , i ;
k w =h [ p ( x ) w2 ,i +q ( x ) w1 ,i +r ( x ) ] ;
1,2

1
[
k w =h w2 , i + k 1,2 ;
2,1 2 ]
h 1 h 1 h
w
k 2,2
[ ( )(
=h p x +
2
w2 , i + k 1,2 +q x+
2 2 ) ( )(
w 1, i + k 1,1 +r x+
2 2
; ) ( )]
1
[
k w =h w2 , i + k 2,2 ;
3,1 2 ]
w
[
k 3,2 =h p x+ ( h2 )(w 2 ,i
1
) ( )(
+ k 2,2 +q x+
2
h
2
1
w 1 ,i + k 2,1 +r x+
2
h
2
;) ( )]
1
[
k w =h w 2, i + k 3,2 ;
4,1 2 ]
h 1 h 1 h
4,2 [ ( )(
k w =h p x +
2 2 ) ( )( w
w2 ,i + k 3,2 +q x +
2 1 ,i
2 ) ( )]
+ k 3,1 +r x+
2
;

1 w w w w
w 1, i+1 =w i + ( k +2 k +2 k +k ) ;
6 1,1 2,1 3,1 4,1

1 w w w w
w 2, i+1 =w i + ( k 1,2 +2 k 2,2 +2 k 3,2 +k 4,2 ) ;
6

Step 5. Apakah i = N – 1 ? Jika tidak naikkan counter looping satu poin dan kembali ke step 2
Beta−v 1, N
^y 1,0 =alpha ; ^y 2,0 =
Jika ya, Set w1 , N ; j = 1;
^y ^y
Keluaran (a, 1,0 , 2,0 )
Step 6. Hitung
y^ 1, j=v 1, j + ^y 2,0 w1 , j ;
^y 2, j=v 2 , j + ^y 2,0 w2 , j ;
x i=a+ih;
Keluaran ( x i , ^y 1, j , ^y 2 , j )
Step 7. Apakah j = N? Jika tidak, naikkan counter looping j satu poin dan kembali ke step 6.
Jika ya, computasi selesai. STOP dan keluar dari algoritma

Metoda Beda Hingga untuk Problema Nilai Batas Linear

Dalam bagian ini kita akan membicarakan mengenai metoda beda hingga dalam penyeleaian numerik
terhadap suatu persamaan diferensial biasa berorde dua dengan nilai batas. Metoda ini lebih stabil
ketimbang metoda tembakan (shooting method) yang akan dibicirakan dalam bagian ke-3 dan ke-4
dalam bab ini. Metoda-metoda yang diberikan dalam bagian ini mempunyai karakteristik stabilitas
yang baik tetapi secara umum membutuhkan lebih banyak usaha untuk mencapai akurasi tertentu.

Metoda beda hingga yang digunakan untuk menemukan solusi numerik dari problema nilai batas ini
adalah penghampiran beda hingga seperti yang diuraikan panjang lebar dalam Bab 2.
Suatu persamaan diferensial orde kedua linear yang merupakan problema nilai batas, dapat secara
umum ditulis sebagai berikut.

d2 y dy
= p (x ) +q( x ) y +r ( x ),
dx 2 dx a≤x≤b , y(a )=α , y(b)=β.
(1)

Karena kita akan menggunakan konsep beda hingga untuk mendapatkan bentuk jawaban numerik dari
persamaan (1), maka beda hingga pertama dan kedua yang akan digunakan dan untuk memungkinkan
hal itu maka kita perlu mengambil suatu bilangan bulat positif N dan kemudian membagi interval [a,
b] menjadi (N +1) s subinterval yang sama, yang setiap titik ujung dari tiap subinterval adalah
x i=a+ ih , untuk i = 0, 1, …, N + 1, dimana h = (b – a)/(N + 1). Dengan mengambil h yang
konstan dengan cara ini, akan memungkinkan kita menggunakan konsep matriks yang telah dibahas
dalam Bab , yang dibutuhkan untuk menyelesaikan system persamaan linear yang melibatkan matriks
yang berukuran N × N.

Kita mulai dengan mengambil titik interior mesh, x i , i = 1, 2, …, N, sehingga persamaan


diferensial (1) dapat dihampiri di titik interior mesh, yaitu

d2 y dy
2
( x i )=p ( xi ) ( x i )+q ( xi ) y ( xi )+r ( x i )
dx dx (2)

Dengan mengambil deret Taylor yang diperluas hingga orde ke-tiga sekitar titik interior mesh di
sekitar x i yang dievaluasi pada x i+1 dan x i−1 kita akan mempunyai persamaan berikut ini.

2 2 3 3 4 4
dy h d y h d y h d y
y ( x i+1 )= y ( x i +h )= y ( x i )+h (x i )+ 2
( xi )+ 3
( x i )+ (ξ )
dx 2 dx 6 dx 24 dx 4 i+ (3)

ξ+ ξ+
Untuk harga-harga i , xi < i < x i+1 , dan

dy h2 d 2 y h3 d 3 y h4 d 4 y
y ( x i−1 )= y ( xi −h )= y ( x i )−h ( x i )+ ( x )− ( x )+ (ξ ),
dx 2 dx 2 i 6 dx 3 i 24 dx 4 i− (4)

ξ− −
x i−1 <ξ i < x i , dengan menganggap bahwa
Untuk beberapa nilai i dalam interval
dy
4
y ∈ C [ x i−1 , xi+1 ]. Jika persamaan-persamaan ini dijumlahkan, suku-suku yang melibatkan dx
3
d y
dan dx 3 yang dieliminir, dan dengan suatu operasi aljabar sederhana akan memberikan

d2 y 1 h2 d 4 y d4 y
( x )= [ y ( x )−2 y ( x )+ y ( x )]− [ (ξ )+ (ξ )].
dt 2 i h2
i+1 i i−1
24 dx 4 i+ dx 4 i− (5)

Dengan menggunakan teorema nilai antara, akan menyederhanakan persamaan ini lagi. Dan kita
memperoleh
d2 y 1 h2 d 4 y
( x i )= [ y ( x i +1 )−2 y ( x i )+ y ( x i−1 )]− (ξ i ),
dt 2 h2 12 dx 4 (6)

ξi x i−1 <ξ i <x i+1 .


Untuk titik-titk , Persamaan (6) disebut formula beda hingga terpusat
d2 y
.
(centered-difference formula) untuk dx 2

dy
Suatu formula beda hingga terpusat (centered -difference formula) untuk bisa diperoleh dengan dx
cara yang sama seperti yang telah kita bicarakan dalam Bab , mengenai diferensiasi dan integrasi
numerik dan memberikan hasil
2 3
dy 1 h d y
( x i )= [ y (x i+1 )− y ( xi−1 )]− (η ),
dt 2h 6 dx 3 i (7)

Untuk beberapa nilai


ηi di mana x i−1 < ηi < x i+1 .

Dengan menerapkan formula beda hingga terpusat yang telah kita peroleh di persamaan-
persamaan (6) dan (7) pada persamaaa (2) akan membawa membawa kita kepada persamaan berikut
ini.

y ( x i+1 )−2 y ( xi )+ y ( x i−1 ) y ( x i+1 )− y ( x i−1 )


h2
= p( x i ) [ 2h ]
+q ( xi ) y ( xi )

h2 d3 y d4 y
+r ( x i )−
12
[ 2 p( x i )
dx 3 (
( η i )−
dx 4
( ξ i )]
) (8)

2
Suatu metoda berhingga dengan galat pemendekan dengan orde O( h ) dihasilkan dengan
menggunakan persamaan (8) bersama kondisi-kondisi batas y(a )=α dan y(b )=β untuk
mendefinisikan

^y 0 =α ^y N +1 =β

dan

2 ^y i − ^y i+1 − ^y i−1 ^y i +1 − ^y i−1


h 2
+ p( x i ) ( 2h ) +q( x i ) y^ i =−r ( x i )
(9)

Persamaan ini digunakan untuk setiap i = 1, 2, …, N.

Dalam bentuk yang lebih representative kita harus menyusun kembali persamaan (9) dalam
bentuki
h h
( ) ( )
− 1+ p (x i ) ^y i−1 +(2+h2 q ( xi )) ^y i− 1− p ( xi ) ^y i+1=−h2 r( x i )
2 2 (10)

Persamaan (10) ini akan menghasilkan system persamaan linear yang ditandai oleh matriks
tridiagonal seperti yang ditunjukkan oleh persamaan berikut ini

T ^y =d (11)

dengan

h
2+ h2 q ( x1 ) −1+ p x 0 0 0 .. .. 0
2 ( 1)

[ ]
h h
−1+ p x 2+h 2 q ( x 2 ) −1+ p x 0 0 .. .. 0
2 ( 2) 2 ( 2)
h h
0 −1+ p x 2+h2 q ( x3 ) −1+ p x 0 .. .. 0
T= 2 ( 3) 2 ( 3)

0
h
−1+ p ( x N −1 )
2
h 2
0 0 0 −1+ p ( x N ) 2+ h q ( x N )
2

(12)

h
−h2 r ( t 1 ) + 1+ ( p ( x 1 ) ^y 0 )

[] [ ]
2
y^ 1 −h2 r ( x 2 )
^y 2 −h2 r ( x 3 )
^y 3 d= .
^y = . .
. −h 2 r ( x N−1 )
^y N−1 h
y^ N
−h2 r ( x N ) + 1+( 2 )
p ( x N ) ^y N +1
dan (13)
Teorema berikut ini, membantu kita untuk melihat kondisi di mana system linear tridiagonal (11)
mempunyai solusi yang unik. Buktinya merupakan konsekwensi dari Teorema .
Teorema
Anggaplah bahwa p(x), q(x), and r(x) adalah fungsi-fungsi yang kontinu pada interval [a, b]. Jika q(x)
¿ 0 pada interval [a,b], maka system linear tridiagonal yang diberikan dalam persamaan (11)

mempunyai jawaban yang unik dengan h < 2/L dimana L=maxa≤x≤b|p( x)|
Yang perlu kita catat bahwa hipotesis yang diberikan dalam teorema ini menjamin suatu
solusi yang unik pada problema nilai batas dalam persamaan (1), tetapi tidak menjamin bahwa
4
d y
4
y∈C [a,b] . Kita perlu menemukan bahwa bahwa perlu untuk menentukan bahwa dx 4 kontinu
2
pada interval [a, b] agar dapat menjamin bahwa galat pemenggalan mempunyai orde O(h ) .

Algorithm 2.
Algoritma ini digunakan untuk menghampiri solusi dari problema kondisi batas
2
d y dy
= p (x ) +q( x ) y +r ( x ),
dx 2 dt a≤x≤b , y(a )=α , y(b)=β.
INPUT titik-titik ujung a, b; kondisi-kondisi awal α , β ; bilangan bulat N.
OUTPUT nilai hampiran dari ^y i atas
y ( ti )
untuk setiap i = 0, 1, …, N + 1.
Step 1 Hitung lebar subinterval h, elemen baris pertama dari matrix T dan elemen pertama d
h = (b - a)/(N + 1);
x = a + h;
2
a1 = 2 + h q(x);
c1 = -1 +(h/2)p(x);
2
d1 = - h r(t)+(1+(h/2)p(x)) α .
Set i = 2
Step 2 Hitung elemen baris ke-I dari matrix T dan elemen ke-I dari vektor d
x = a + ih
2
ai =2+h q ( x ) ;
bi =−1+(h /2) p (x );
c i=−1−(h /2) p (x );
d 1 =−h2 r ( x ) .
Step 3. Apakah i = N – 1?
Jika tidak, naikkan counter looping I satu point, yaitu I = I + 1 dan kembali ke step 2.
Jika ya, lanjutkan ke Step 4

Step 4. Hitung elemen terakhir dari matrix T dan vektor d


x = b - h;
2
a N =2+ h q (x );
b N =−1−(h /2) p (x );
2
d N =−h r( x )+(1−(h/2 ) p( x ))β .
Step 5 Panggil Algoritma Thomas untuk menghitung vektor jawaban dari persamaan (11)
set i = 1
Step 6. Ubah vektor jawaban dari hasil perhitungan yang dilakukan metoda Thomas, yaitu
^y i=x i
Step 7. Apakah i = N?
Jika tidak naikkan counter i satu poin, yaitu i = i + 1 dan kembali ke step 6
Jika ya, set i = 0 dan lanjutkan ke step 8
Step 8. set x = a+ih;
OUTPUT (x, i ). w
Step 9. Apakah i = N + 1?
Jika tidak, naikkan counter i satu poin, yaitu i = i + 1 dan kembali ke step 8
Jika ya, STOP. (Komputasi selesai)

PENYELESAIAN NUMERIK BAGI PROBLEMA NILAI BATAS TIDAK LINEAR

Pada kenyataannya problema-problema fisika dan fisiko-kemikal tidaklah selalu linear bahkan banyak
di antaranya yang tidak linear. Dalam Bagian ini kita akan membahas mengenai

Metoda Tembak untuk Problema Nilai Batas Tidak Linear


Perhatikan persamaan differensial orde kedua dengan nilai batas berikut ini.

d2 y dy
=f ( x , y , ),
dx 2 dx a≤x≤b , y (a )=α , y(b )=β (9)
Kelihatannya mirip dengan pada kasus linear tetapi dengan pengecualian bahwa penyelesaian untuk
kasus yang tidak linear tidak dapat diekspresikan secara sederhana seperti yang dilakukan untuk kasus
linear. Untuk problema yang tidak linear ini, penyelesaiannya tidak dapat dinyatakan sebagai suatu
kombinasi linear dari dua dari solusi untuk problema nilai awal. Dan untuk itu kita perlu mengambil
strategi lain, yaitu menggunakan penyelesaian-penyelesaian untuk suatu sekuens dari probleman nilai
awal dengan bentuk berikut.
d2 y dy
=f ( x , y , ),
dx 2 dx a≤x≤b , y (a )=α , y' (a )=γ , (10)
Yang melibatkan suatu parameter γ yang digunakan untuk menghampiri penyelesaian dari persamaan
differensial orde kedua dengan nilai batas yang kita tinjau. Untuk itu kita memilih parameter γ = γk
dengan cara sedemikian sehingga kita dapat menjamin bahwa limit

lim y ( b , γ k )= y ( b )= β ,
k →∞ (11)

dimana y (t , γ k ) adalah solusi dari problema nilai awal yang dinyatakan oleh persamaan (10)
dengan γ=γ k and y(t) menyatakan solusi dari problema nilai batas pada persamaan (9).

Metoda ini disebut metoda metoda “tembak” karena metoda ini menggunakan prosedur yang analog
dengan prosedur penembakan terhadap suatu objek yang diam. Gambar 4 mengilustrasikan hal ini.

Kita muai dengan parameter


t 0 yang menentukan elevasi awal dimana objek ditembak dari titik
(a,α ) dan sepanjang lengkungan yang digambarkan oleh solusi bagi problema nilai awal:

y n =f (x , y , y ' ), a≤x≤b , y (a )=α , y' (a)=t 0 . (12)

Jika y(b, t0 ) tidak cukup dekat dengan β , maka kita perlu berusaha untuk mengoreksi hampiran
yang diambil dengan menentukan elevasi yang lain, yaitu
t1 dan begitu seterusnya, hingga
y(b , t k ) cukup dekat untuk mengenai β .
Untuk menentukan bagaimana caranya menentukan parameter-parameter k dipilih, kita
t
mulai dengan menganggap suatu problema nilai batas seperti yang dinyatakan dalam bentuk seperti
yang ditunjukkan oleh persamaan (9) memenuhi hipotesis dari theorema 1 jika y(x,t) digunakan untuk
menyatakan solusi dari problema nilai awal yang dinyatakan oleh persamaan (10), maka problemanya
sekarang adalah untuk menentukan t sedemikian sehingga

y(b ,t )−β=0 (13)

Karena ini merupakan suatu persamaan tidak linear seperti yang kita bahas dalam Bab, maka ada
banyak metoda yang tersedia untuk menyelesaikannya. Kita akan menggunakan metoda sekan untuk
menyelesaikan problema yang dinyatakan oleh persamaan (10.13). Ini mengisyaratkan agar kita
t t
memilih nilai-nilai hampiran awal 0 dan 1 dan kemudian menyelesaikan suku-suku yang lain
secara berurutan dengan menggunakan persamaan:

( y (b , γ k −1 )− β )(γ k−1 −γ k −2 )
γ k =γ k −1 − ,
y (b , γ k−1 )− y (b , γ k −2 ) k = 2,3,…

Jika kita ingin menggunakan metoda Newton-Raphson yang lebih berdaya untuk
menghasilkan barisan {γ k } , hanya satu nilai awal yang diperlukan, yaitu γ 0 . Itu berarti
perhitungan atas dasar iterasi akan merujuk kepada persamaan berikut ini.

( y (b , γ k −1 )−β ) dy
θk =γ k −1 (dy/dγ )(b ,γ k−1 )≡ (b,γ k−1 ),
(dy /dγ )(b , γ k−1 ) dimana dγ (14)

Persamaan ini dapat dimulai dengan pengetahuan akan nilai (dy/dγ )(b , γ k −1 ) dan ini memberikan
kesulitan tersendiri karena representasi eksplisit untuk y(b,γ) tidak diketahui sebelumnya. Kita hanya
mengetahui harga-harga dari y(b ,γ 0 ) , y(b ,γ 1) , …, y(b, γ k −1 ) .

Sekarang, katakanlah bahwa kita menuliskan kembali problema nilai awal (10.10), dengan
menitikberatkan bahwa solusi bergantung kepada t dan γ:

d2 y dy dy
(t , γ )=f (t , y (t , γ ), (t , γ )), (a , γ)=γ ,
dt 2 dt a≤t≤b, y(a ,γ )=α , dt (15)

Dengan mempertahankan notasi prima untuk mengindikasikan differensiasi terhadap x. Karena kita
tertarik dalam menentukan (dy/dγ)(b,γ) ketika γ=γ k −1 , kita pertama-tama mengambil turunan
parsial dari (15) terhadap t. Yang mana ini mengimplikasikan bahwa

d2 y

( )
dt 2
(t , γ )
∂f
(t , y(t ,γ ), y '(t ,γ ))
∂γ = ∂γ
=

∂f dy ∂t ∂ f ∂y
(t , y (t , γ ), (t , γ )) + (t , y (t , γ )) (t , γ )+
∂f dy
(t , y (t , γ ), (t , γ ))
∂ ( dydt ) (t , γ)
∂t dt ∂γ ∂ y ∂γ dy dt ∂γ

dt ( )
Karena t dan γ tidak saling bergantungan, maka

∂ ( dydt ) (t , γ )
∂ ( dydt ) (t , γ) ∂f
∂γ
dy
dt
∂y
(t , y (t , γ ), (t , γ )) (t , γ )+
∂γ
∂f
dy
dy
(t , y (t , γ ), (t , γ ))
dt ∂γ
∂γ =

dt ( )
Untuk a≤t≤b . kondisi awal akan memberikan

∂y
( a, γ )=0
∂ ( dydt ) (a , γ )=1
∂γ dan ∂γ

Jika kita menyederhanakan notasi dengan menggunakan z(x,t) untuk menyatakan


(∂ y/∂ t )( x ,t )
dan menganggap bahwa orde differensiasi dari x dan t dapat dibalik Persamaan
(10.16) akan menjadi problema nilai awal.

d2 z ∂ f dy ∂f dy dz
2
= (t , y , ) z+ (t , y , ) ,
dt ∂ y dt dy dt dt

dt ( ) a≤t≤b , z(a) =0, z’(a) = 1 (17)

Dengan demikian metoda Newton-Raphson menghendaki dua problema nilai awal yang harus
diselesaikan untuk setiap iterasinya, yaitu method therefore requires that two initial-value problems
be solved o each iteration, Eqs. (10.10). Setelah itu dari persamaan (10.14),

y (b , γ k −1 )−β
γ k =γ k −1
z(b , γ k −1 ) (18)

Dalam prakteknya, tidak ada satupun dari problema-problema nilai awal ini diselesaikan secara eksak
dan sebagai gantinya solusi-solusi dihampiri dengan salah satu metoda yang telah dikembangkan
dalam Bab (Problema Nilai Awal). Dalam algoritma yang akan disusun, digunakan metoda Runge-
Kutta orde keempat untuk kedua solusi yang dibutuhkan oleh metoda Newton-Raphson.

Algorithm. Metoda Tembak untuk Problema Nilai Batas tidak Linear (Nonlinear Shooting)

Algoritma ini digunakan untuk menghampiri solusi dari problema nilai batas nonlinear

y n =f (x , y , y ' ), a≤x≤b , y (a )=α , y (b )=β .


(Catatan: Persamaan-persamaan (10.15), (10.17) ditulis sebagai sistem persamaan orde pertama dan
diselesaikan.)

INPUT titik-titik ujung interval solusi a, b; kondisi-kondisi batas α , β ; jumlah subintervals N;


toleransi yang diperbolehkan, TOL; dan jumlah iterasi maksimum yang diperbolehkan M.

OUTPUT Nilai-nilai hampiran 1,i untuk w i 2 ,i


untuk
y ( x ); w y' ( x i ) untuk setiap i = 0, 1, …,
N atau pesan bahwa jumlah iterasi maksimum telah dilewati.

Step 1 set h = (b-a)/N;


k = 1;
( β−α )/(b−a ) .
Teta =
Step 2 Selagi (k ≤M ) kerjakan step 3 hingga step10.
Step 3 set
w 1,0=α ;
w 2,0=Teta ;
u1 =0 ;
u2 =1.
Step 4 Untuk i = 1, 2…, N kerjakan step 5 dan step 6.
(Dalam step 5 dan step 6 digunakan metoda Runge-Kutta orde keempat)
Step 5 set x = a + (i - 1)h.
Step 6
k 1,1 =hw 2 ,i−1 ;
k 1,2 =hf ( x ,w1 ,i−1 ,w2 ,i−1 );
1
k 2,1 =h( w2 ,i−1 + 2 k 1,2 );
1 1
k 2,2 =hf ( x +h /2 , w1 , i−1 + 2 k 1,1 , w2 , i−1 + 2 k 1,2 );
1
k 3,1 =h( w 2 ,i −1 + 2 k 2,2 ) ;
1 1
k 3,2 =hf ( x +h/ 2 , w1 , i−1 + 2 k 2,1 , w2 , i−1 + 2 k 2,2 ) ;
k 4,1=h (w2 , i−1 +k 3,2 );
k 4,2=hf (x +h, w 1,i−1 +k 3,1 , w2 ,i−1 +k 3,2 );
w 1, i=w1 ,i−1 +(k 1,1 +2 k 2,1 +2 k 3,1 +k 4,1 )/6 ;
w 2, i=w2 , i−1 +( k 1,2 +2 k 2,2 +2k 3,2 +k 4,2 )/6 ;
k ' 1,1 =hu 2 ;
k ' 1,2 =h [ f y ( x , w1 , i−1 , w2 ,i−1 )u1 +f y ' ( x, w 1, i−1 , w 2, i−1 )u 2 ];
1
k ' 2,1 =h(u 2 + 2 k ' 1,2 );
1
k ' 2,2 =h [ f y ( x +h /2 , w 1, i−1 , w 2, i−1 )(u1 + 2 k ' 1,1 )
1
+ f y ' ( x +h /2 , w 1, i−1 , w 2, i−1 )( u1 + 2 k ' 1,2 ) ];
1
k ' 3,1 =h(u 2 + 2 k ' 2,2 ) ;
1
k ' 3,2 =h [ f y ( x +h /2 , w 1, i−1 , w2 , i−1 )(u 1 + 2 k ' 2,1 )
1
+
f y ' ( x +h/2 , w1 , i−1 , w2 , i−1 )(u 2 + 2 k ' 2,2 )];
k ' 4,1=h(u2 +k ' 3,2 );

k ' 4,2=h[ f y ( x+h ,w1,i−1 , w 2, i−1 )(u1 +k' 3,1 )


+
f y' ( x +h,w1 ,i−1 ,w2 ,i−1 )(u 2 +k ' 3,2 )];
1
u1 =u1 + 6 (k ' 1,1 +2 k ' 2,1 +2 k ' 3,1 + k ' 4,1 );

1
u2 =u2 + 6 ( k ' 1,2 +2 k ' 2,2 +2 k ' 3,2 +k ' 4,2 ) .

Step 7 if
|w 1, N −β|≤ TOL maka kerjakan step 8 dan 9.
Step 8 Untuk i = 0, 1, 2, …, N
Set x = a + ih;
OUTPUT
( x,w ,w ).
1,i 2 ,i
Step 9 ( Komputasi selesai.)
STOP.
w 1, N −β

Step 10 set
Teta=Teta−
u1
;
( )
(Metoda Newton-Raphson digunakan untuk mencari Teta.)
k = k + 1.
Step 11 OUTPUT (‘Jumlah maksimum iterasi dilewati’);
STOP.

Dalam step 7, penghampiran yang paling baik bagi β dapat kita harapkan untuk
n
w 1,N (tk ) adalah O(h ) jika metoda hampiran dipilih untuk step 6 memberikan laju konvergensi
n
sebesar O(h ) .

Nilai
t 0 yang dipilih dalam step 1 merupakan kemiringan dari garis lurus yang melalui
titik-titik (a,α ) dan (b, β) . Jika problema memenuhi hiptesis yang diberikan oleh teorema1,
t
setiap pilihan dari 0 akan memberikan konvergensi; tetapi secara umum prosedur akan bekerja
dengan baik untuk kebanakan problema dimana hipotesis ini tidak dipenuhi, namun demikian suatu

pilihan yang baik dari


t 0 perlu.

Walaupun demikian kita juga dapat menggunakan metoda Newton Raphson ketika teknik
penembakan (shooting technique) membutuhkan solusi dari suatu problema nilai awal tambahan,
metoda ini akan lebih cepat ketimbang metoda Secant. Kedua metoda ini hanya secara local
konvergen, karena metoda-metoda ini mensyaratkan hapiran awal yang baik ketika assumsi-assumsi
dari teorema 1 tidak berlaku.

Sebagai diskusi umum dari konvergensi teknik-teknik penembakan (shooting techniques)


untuk problema-problema nonlinear, setiap orang yang ingin memperdalamnya bisa merujuk pada
buku teks yang ditulis oleh Keller [Keller]. Dalam rujukan yang dibangun oleh Keller ini lebih banyak
kondisi-kondisi batas umum yang dibahas, dan dalam rujukan ini juga dicatat bahwa teknik-teknik
pembidikan untuk problema-problema nonlinear sensitif dengan galat-galat pembulatan, khususnya
jika solusi solusi y(x) dan z(x) adalah fungsi-fungsi yang meningkat secara cepat pada interval
tertutup [a,b].
Metoda Beda-Hingga untuk Problema-Problema Nonlinear
Bentuk umum dari suatu problema nilai batas nonlinear adalah

2
d y dy
=f ( x , y , ), a≤x≤b , y (a )=α , y (b)=β
dx 2 dx (14)

Untuk persamaan diferensial (14), metoda beda hingga seperti yang digunakan menyelesaikan
problema nilai batas yang linear. Tetapi bagaimanapun disini persamaan yang akan diturunkan tidak
linear sehingga dibutuhkan proses iterative untuk menyelesaikannya. Untuk maksud pengembangan
metoda komputasi, kita perlu mengambil anggapan bahwa fungsi f memenuhi kondisi-kondisi berikut
ini.

i) Fungsi f dan turunan-turunan parsial


f y ≡∂ f /∂ y dan
f y ≡∂f /∂ y ' semuanya kontinu
'

pada
' '
D={( x , y , y )|a≤x≤b ,−∞< y<∞ ,−∞< y <∞}

ii) Untuk beberapa  > 0 di D berlaku kenyataan 0 <   fy(x,y,y);


iii) Ada konstanta-konstanta k dan L, dengan
∂f
k= max | ( x , y , y ' )|, L= max |f y ( x, y , y ' )|,
'
'
( x, y , y )∈ D ∂y '
( x, y , y )∈ D

Ini menjamin, dengan Theorem 10.1, bahwa solusi Eq.(14) ada.

Seperti yang telah kita lakukan untuk kasus linear, kembali lagi kita membagi interval [a,b] ke dalam
(N + 1) subinterval yang sama yang setiap titik akhir dari subinterval berada pada ti = a + ih untuk i
= 0,1,, N + 1. Dengan menganggap bahwa solusi eksak mempunyai batas di turunan keempat yang
memungkinkan kita untuk menggantikan turunan ketiga dan turunan kedua di titik-titik ti pada setiap
persamaan yang dinyatakan oleh persamaan diferensial berikut ini.

(10.29) d2 y dy
2
( x i )=f ( x i , y ( xi ), ( xi ))
dx dx

Dengan mengambil beda hingga terpusat bagi persamaan (10.24) dan (10.25), kita akan
memperoleh, untuk setiap i = 0, 1, 2, …, N

y ( x i+1 )−2 y ( x i )+ y (x i −1 ) y (x i +1 )− y ( xi −1 ) h2 d 3 y h2 d4 y
(10.30)
h2 (
=f x i , y ( x i ),
2h

6 dx 3
(η)i ) + (ξ )
12 dx 4 i
,

Untuk beberapa nilai i dan i dalam interval (xi–1, xi+1).

Seperti yang kita alami dalam kasus linear, metoda beda hingga akan memberikan hasil ketika suku
yang terkait galat dihapus dan kondisi batas digunakan:

^y 0 =α , ^y N +1 =β

dan
^yi+1 −2 y^ i + ^y i−1 ^y i+1 − ^y i−1

h2 (
+ f t i , ^y i ,
2h )
=0

Untuk setiap i = 0, 1, 2, …,N.

Sistem nonlinear N  N yang diperoleh dari metoda ini:

y^ 2 −α
(
2 ^y 1 − ^y 2 +h2 f x1 , ^y 1 ,
2h
−α=0 , )
^y − ^y
(
− ^y 1 +2 ^y 2− ^y 3 +h2 f x 2 , ^y 2 , 3 1 =0 ,
2h )

^y − ^y
(
− ^y N −2 +2 ^y N−1 − ^y N +h2 f x N −1 , ^y N−1 , N N−2 =0 ,
2h )
(10.31) β− ^y N−1
(
− ^y N −1 +2 y^ N +h 2 f x N , ^y N ,
2h
−β=0 )
Akan mempunyai solusi yang unik untuk h h < 2/L, seperti yang telah dibuktikan dalam buku-buku
yang membahas secara khusus tentang problema nilai batas.

Agar kita dapat menghampiri solusi dari system ini, kita akan menggunakan metoda Newton untuk
menghitung system persamaan nonlinear seperti yang telah dibahas dalam Bab. Suatu barisan iterasi
{(w(1k ) , w(2k ) ,…, w(Nk ) )t } yang dihasilkan akan konvergen menuju solusi yang dari system

persamaan (10.31), dan berarti kita perlu menyediakan hampiran awal (w(10) , w(20) ,…, w(N0) )t yang
t
cukup dekat dengan solusi (w1 , w2 ,… , w N ) dan matriks Jacobian untuk system yang
didefinisikan dalam Eqs. (9.11), nonsingular. Perlu kita catat bagaimanapun, untuk system (10.31),
matriks Jacobian dalam (10.32) adalah matriks tridiagonal, dan asumsi yang diberikan pada awal
pembahasan ini menjamin bahwa J adalah suatu matrix nonsingular.

Metoda Newton untuk sistem nonlinear systems mensyaratkan bahwa pada setiap iterasi, system
linear N  N

y^ 2 −α
J ( ^y 1 ,…, ^y N )( v1 ,…, v N )t =(2 ^y1 − ^y 2 + h2 f x 1 , ^y 1 , ( 2h ),

^y 3 − ^y 1
− ^y 1 +2 ^y 2 − ^y 3 +h 2 f x 2 , ^y 2 ,( 2h
,…, )
− ^y N −2 +2 ^y N −1 − ^y N
^y − ^y N−2

(10.31)
(
+h2 f x N −1 , y^ N−1 , N
2h
, )
β− ^y N−1
− ^y N −1 +2 ^y N +h 2 f x N , ^y N ,(2h
−β )T )
Diselesaikan untuk mendapatkan
(v 1 , v 2 ,…,v N ) dari persamaan

w(i k )=w(i k −1)+v i , for each i = 0,1,2,…,N.

Karena J tridiagonal, algoritma Thomas dapat dengan mudah digunakan. Seluruh proses komputasi
diberikan secara ditil dalam algoritma berikut.

Algorithm 2.
Algoritma ini digunakan untuk menghampiri solusi dari problema kondisi batas
d2 y dy
= p (x ) +q( x ) y +r ( x ),
dx 2 dt a≤x≤b , y(a )=α , y(b)=β.
INPUT titik-titik ujung a, b; kondisi-kondisi awal α , β ; bilangan bulat N.
OUTPUT nilai hampiran dari ^y i atas
y ( ti )
untuk setiap i = 0, 1, …, N + 1.
Step 1. Hitung lebar subinterval h, dan masukkan nilai awal ke dalam hampiran awal dan nilai
akhir ke hampiran akhir
h = (b - a)/(N + 1);
y^ 0 =α
^y N +1 =β
Set i = 1
Step 2. Hitung
Step 3. Apakah i = N?
Jika tidak, naikkan counter I satu poin, yaitu I = I + 1 dan kembali ke Step 2.
Jika ya, lanjutkan ke Step 4.
Step 4.
x = a + h;
2
a1 = 2 + h q(x);
c1 = -1 +(h/2)p(x);
2
d1 = - h r(t)+(1+(h/2)p(x)) α .
Set i = 2
Step 2 Hitung elemen baris ke-I dari matrix T dan elemen ke-I dari vektor d
x = a + ih
ai =2+h2 q ( x ) ;
bi =−1+(h /2) p (x );
c i=−1−(h /2) p (x );
2
d 1 =−h r ( x ) .
Step 3. Apakah i = N – 1?
Jika tidak, naikkan counter looping I satu point, yaitu I = I + 1 dan kembali ke step 2.
Jika ya, lanjutkan ke Step 4
Step 4. Hitung elemen terakhir dari matrix T dan vektor d
x = b - h;
2
a N =2+ h q (x );
b N =−1−(h /2) p (x );
2
d N =−h r( x )+(1−(h/2 ) p( x ))β .

Step 5 Panggil Algoritma Thomas untuk menghitung vektor jawaban dari persamaan (11)
set i = 1
Step 6. Ubah vektor jawaban dari hasil perhitungan yang dilakukan metoda Thomas, yaitu
^y i=x i
Step 7. Apakah i = N?
Jika tidak naikkan counter i satu poin, yaitu i = i + 1 dan kembali ke step 6
Jika ya, set i = 0 dan lanjutkan ke step 8
Step 8. set x = a+ih;
OUTPUT (x, ^y i ).
Step 9. Apakah i = N + 1?
Jika tidak, naikkan counter i satu poin, yaitu i = i + 1 dan kembali ke step 8
Jika ya, STOP. (Komputasi selesai)

Penyelesaian Persamaan Differential


Partial Secara Numerik
Persamaan differensial parsial banyak ditemukan aplikasinya dalam bidang sains dan rekayasa.
Perpindahan panas secara konduksi dan perpindahan massa merupakan aplikasi real bidang rekayasa
proses dan mekanikal. Selain itu juga dalam fisika aplikasinya nyata sekali ketika kita memasuki
fisika kuantum. Persamaan differensial parsial adalah persamaan-persamaan yang suku-sukunya
terdiri atas turunan-turunan parsial dan fungsi yang tergabung menjadi satu. Dalam penyelesaian
persamaan differensial parsial secara numerik, konsep beda hingga yang diuraikan dalam Bab 1
digunakan selain itu juga konsep matriks dan sistem persamaan yang diberikan dalam Bab 4. Sebelum
kita masuk ke dalam metoda penyelesaian persamaan differensial secara numerik, kita akan
mengingat kembali definisi turunan parsial yang paling ringkas yang diberikan berikut ini.
Definisi. Jika F = f(x,y,z) adalah turunan dengan tiga variabel bebas yang terdefinisi dalam ruang tiga
dimensi, maka

∂F f ( x+ Δx , y , z )−f ( x , y , z )
= lim
∂ x Δx→ 0 Δx , (1)

∂F f ( x , y + Δy ,z)−f ( x , y , z)
= lim
∂ y Δy→ 0 Δy , (2)

dan
∂F f ( x , y , z+ Δz)−f ( x , y , z )
= lim
∂ z Δy→ 0 Δz (3)

Sekarang akan diperlihatkan bagaimana mendapatkan persamaan perpindahan panas dalam tiga
dimensi. Untuk itu akan digunakan Gambar 1 untuk menurunkan persamaan tersebut
z Q(z+Δz)

Q(x+Δx)
P(x, y,z)
z
Q(y)
Q(y+Δy)
Δz Q(x)
Δx Q(z)
y y
Δy
x (a) (b)

Gambar 1
Dari Gambar ini terlihat kubus kecil dengan sisi-sisi sebesar x dalam arah x, y dalam arah y dan z
dalam arah z dimulai dari titik P(x,y,z). Untuk mem permudah analisis, pertama-tama kita mengkopi
kubus yang berkuran x×y×z dari Gambar 1.(a) ke 1.(b). Dalam Gambar 1.(b) ini kita melihat ada
tiga penjalaran masing-masing dalam arah x, y, dan z tiga buah sumbu yang memperlihatkan arah
penjalaran kalor

y z
Q(y+y) Q(z+z)
y+y z+z

y Q(x) Q(x+x) z Q(x) Q(x+x)

y z
Q(y) Q(z)

x x+x x x+x

x x
x x
(a) (b)

Neraca Kalor elemen kubus dengan sisi-sisi masing-masing x, y, dan z, selama t

Jumlah panas masuk - Jumlah panas keluar =Jumlah panas terakumulasi

Dengan perincian sebagai berikut

Jumlah panas yang masuk selama t

= Q(x)yzt + Q(y)xzt + Q(z)xyt (3)

Jumlah panas yang keluar selama t

= Q(x+x)yzt + Q(y+y)xzt + Q(z+z)xyt (4)

Jumlah kalor yang terakumulasi selama t

= ρVT =ρcpxyzT (5)

[Q(x) – Q(x+x)]yzt + [Q(y) – Q(y+y)]xzt + [Q(z) – Q(z+z)]xyt = ρcpxyzT


(6)
Persamaan terakhir ini kemudian dibagi dengan xyzt dan kita akan memperoleh
Q( x )−Q( x+ Δx) Q ( y )−Q( y + Δy) Q( z)−Q( z+ Δz) ΔT
+ + =ρc p
Δx Δy Δz Δt (7)
Sekarang, untuk persamaan yang diperoleh ini dikenakan limit t 0, akan mengakibatkan juga
limit x 0, y 0, dan z 0, yaitu

Q(x)−Q(x+Δx) Q( y)−Q( y+Δy) Q(z)−Q(z+Δz) ΔT


lim¿ Δx→0 ¿ Δz→0 ¿¿ Δt→0 ¿¿¿ + + =ρc p ¿
Δy→0 ¿ Δx Δy Δz Δt (8)
Berdasarkan difinisi turunan parsil, kita akan memperoleh persamaan
∂Q ∂Q ∂Q ∂T
+ + =ρc p
∂x ∂ y ∂z ∂t (9)
Hukum Fourier I untuk konduksi dapat ditulis untuk arah x, sebagai
∂T
Q x=−k
∂x (10)
Untuk arah y sebagai
∂T
Q y =−k
∂y (11)
Untuk arah z, sebagai
∂T
Qz =−k
∂z (12)
Dengan mengambil turunan Q terhadap masing-masing arah, kita akan menemukan persamaan-
persamaan berikut ini.
Dalam arah x:
2
∂Q ∂ ∂T ∂T
= (Q )= ∂ k
∂x ∂x ∂x ∂ x
=k 2
∂x ( ) (13)
Dalam arah y:
∂Q ∂ ∂T ∂2 T
= (Q )= ∂ k
∂y ∂y ∂y ∂ y
=k 2
∂y ( ) (14)
Dan dalam arah z:

∂Q ∂ ∂T ∂2 T
= (Q )= ∂ k
∂z ∂z ∂z ∂z
=k 2
∂z ( ) (15)
Sekarang masukkan ketiga persamaan-persamaan terakhir ini, yaitu (13), (14) dan (15) ke dalam
persamaan (9), maka akan diperoleh
∂2 T ∂2 T ∂2 T ρc p ∂T
+ + =
∂ x2 ∂ y2 ∂ z2 k ∂ t (16)
Sekarang jika kita menganggap bahwa proses perpindahan kalor secara konduksi ini terjadi secara
steady state (tunak) , berarti jumlah kalor yang terakumulasi tidak ada, sehingga persamaan terakhir
ini kita tulis menjadi
∂2 T ∂2 T ∂2 T
+ + =0
∂ x2 ∂ y2 ∂ z2 (17)
Persamaan terakhir ini, yaitu persamaan (17) disebut persamaan Laplace. Jika temperatur dalam
daerah yang ditinjau ditentukan oleh distribusi temperatur pada batas dari daerah tersebut, maka
kendala (constraints) disebut sebagai kondisi batas Dirichlet dan diberikan oleh

T(x, y) = g(x, y) (18)

Untuk semua pasangan (x, y) pada S, batas dari daerah R, seperti yang diberikan dalam Gambar 2.
y Jika kita meninjau kalor yang menjalar dalam
satu batang logam dengan panjang l, seperti
diperlihatkan dalam Gambar 3. Untuk problema
ini, dianggap temperatur merata dalam setiap
elemen crosssectional dan ini berarti batang
logam tersebut harus diisolasi dengan sempurna
(x, y) Suhu dipertahankan pada arah lateral, sehingga
2
pada g(x, y) derajat ∂T k ∂ T
=
∂t ρc p ∂ x 2 (19)
x

Gambar 2. Daerah R dengan batas S

yang biasa dituliskan dalam bentuk berikut ini.


2
∂T ∂ T
=α 2 2
∂t ∂x (20)
Salah satu dari kendala untuk problema perpindahan kalor adalah distribusi awal dari kalor dalam
batang logam, yaitu
T(x, 0) = f(x) (21)

dan menggambarkan tabiat pada ujung dari batang logam. Sebagai contoh, jika temperatur di ujung-
ujung batang logam dibuat tetap pada T1 dan T2, maka kondisi batas akan mempunyai bentuk
T(0, t) = T1 dan T(l, t) = T2 (23)

Persamaan Poison orde ke-3, dinyatakan oleh persamaan:


∂3 T ∂2 T ∂ T
+2 + +C=0
∂ x2 ∂ y ∂ x ∂ y ∂ x (24)
Sekarang, perhatikan kubus yang sangat besar diberikan dalam Gambar 3 berikut ini.

Gambar 2.
Dalam aplikasinya, ada beberapa cara untuk mendapatkan persamaan (17) dalam bentuk dua dimensi,
yaitu
 Jika bagian atas dan bawah kubus (arah z) diisolasi :
∂2 T ∂2 T
+ =0
∂ x2 ∂ y2
 Jika bagian depan dan belakang kubus (arah y) diisolasi :
∂2 T ∂ 2 T
+ =0
∂ x2 ∂ z2
 Jika bagian kiri dan kanan kubus (arah x) diisolasi :
2 2
∂T ∂ T
+ =0
∂ y2 ∂ z2
Contoh lain, apabila kita mengisolasi kalor sedemikian rupa sehingga tidak ada arah perambatan kalor
dalam arah z, maka kita juga akan memperoleh
∂2 T ∂2 T
+ =0
∂ x2 ∂ y2
Selain itu juga untuk suatu lembar logam tipis, akan memberikan model matematika seperti
yang ditunjukkan oleh persamaan berikut ini.
2 2
∂T ∂ T
+ =0
∂ x2 ∂ y2 (25)

Ini adalah persamaan Poison orde ke-2. Persamaan ini dapat diselesaikan secara numerik dengan
konsep beda hingga yang telah kita pelajari di Bab 1 dan dalam hal ini akan digunakan konsep beda
hingga maju dan untuk itu kita akan membuat Gambar 4 yang menyatakan distribusi titik-titik yang
yang menyatakan distribusi temperatur dalam bidang x-y. Dengan gambar ini dapat dibuatkan tabel
beda hingga seperti yang ditunjukkan oleh Tabel 1 dan Tabel 2 berikut ini.

( i+1 , j )
( i-1 , j) ( i+1 , j )
(i, j)

( i , j-1 )

Gambar 4. Grid kotak-kotak yang menyatakan titik-titik yang menyatakan distribusi


Temperatur
Tabel 1. Arah y Tabel 2. Arah x :
POSIS POSIS
T T  2T T T 2T
I I

yi,j+1 Ti,j+1 xi,j+1 Ti,j+1

Ti,j+1 Ti,j+1

yi,j Ti,j 2Ti,j+1 xi,j Ti,j 2Ti,j+1

Ti,j Ti,j

yi,j-1 Ti,j-1 xi,j-1 Ti,j-1


2
∂T 2
∂T
Dari Tabel 1 dan Tabel 2 di atas, kita dapat menghampiri nilai-nilai ∂ y2 dan ∂ z2 dengan
persamaan-persamaan berikut ini.
2
∂2 T Δ T i+1 , j ΔT i , j −ΔT i+1, j (T i−1 , j −T i, j )−(T i , j −T i+1, j ) T i−1, j−2 T i, j +T i+1, j
2
≈ 2
= 2
= 2
= 2
∂x Δx Δx Δx Δx (26)

dan

2
∂2 T Δ T i+1 , j ΔT i , j −ΔT i+1, j (T i−1 , j −T i, j )−(T i , j −T i+1, j ) T i−1, j−2 T i, j +T i+1, j
2
≈ 2
= 2
= 2
= 2
∂y Δy Δy Δy Δy (27)

Tetapi kita akan dapat menuliskan juga


2 2 2 2
∂T ∂ T Δ T ΔT
+ ≈ + =0
∂ x 2 ∂ y 2 Δx 2 Δy 2 (28)

Kalau kita mengambil x = y, maka kita akan memperoleh


2 2
Δ T x+ Δ T y
=0
2 Δx 2 (29)

Dengan demikian,
2 2
Δ T x +Δ T y=0 (30)

dan

T i−1 , j −2T i , j +T i+1 , j +T i , j−1 −2T i , j +T i, j+1 =0 (31)

atau

T i−1 , j +T i+1, j +T i, j−1 +T i , j+1−4T i, j =0


(32)
Dengan persamaan (32), kita dapat menyusun algoritma untuk menghitung distribusi temperatur di
lempengan logam tipis. Tetapi sebelu kita menyusun algoritma tersebut, kita melihat contoh berikut
ini.
Contoh 1.
Jawab
(1,1)  75 + T2,1 + 0 + T1,2 – 4 T1,1 = 0
100 oC (1,2)  75 + T2,2 + T1,1 + T1,3 – 4 T1,2 = 0

(1,3)  75 + T2,3 + T1,2 + 100 – 4 T1,3 = 0

1,3 2,3 3,3


(2,1)  T1,1 + T3,1 + 0 + T2,2 – 4 T2,1 = 0
1,2 2,2 3,2
75 oC 50 oC (2,2)  T1,2 + T3,2 + T2,1 + T2,3 – 4 T2,2 = 0
1,1 2,1 3,1
(2,3)  T1,3 + T3,3 + T2,2 + 100 – 4 T2,3 = 0
(3,1)  T2,1 + 100 + 0 + T3,2 – 4 T3,1 = 0

(3,2)  T2,2 + 100 + T3,1 + T3,3 – 4 T3,2 = 0

0 oC (3,3)  T2,3 + 50 + T3,2 + 50 – 4 T3,3 = 0

Gambar 3. Mesh yang di

Dari persamaan-persamaan yang terbentuk untuk setiap titik, kita akan memperoleh sistem persamaan
berikut.
– 4T1,3 + T2,3 + T1,2 = -175
– 4T2,3 + T1,3 + T3,3 + T2,2 = 100
T2,3 + 50 + T3,2– 4 T3,3 = -150
+ T2,2 + T1,1 + T1,3 – 4 T1,2 = - 75
(2,2)T1,2 + T3,2 + T2,1 + T2,3 – 4 T2,2 = 0
(3,2)  T1,2 + T3,2 + T2,1 + T2,3 – 4 T2,2 = 0
(1,1)  75 + T2,1 + 0 + T1,2 – 4 T1,1 = 0
(2,1)  T1,1 + T3,1 + 0 + T2,2 – 4 T2,1 = 0
(3,1)  T1,1 + T3,1 + 0 + T2,2 – 4 T2,1 = 0

Sekarang kita melihat kembali ke persamaan (20). Persamaan ini adalah persamaan dari type
parabolik. Ini merupakan persamaan perpindahan kalor ataupun persamaan diffusi. Dan sekarang kita
akan menggantikan T dengan C untuk menyatakan konsentrasi

∂C ∂2 C
=α 2 2
∂t ∂x , 0 < x < l, t > 0 (20)

Dengan kondisi

C(0, t) = 0, C(l, t) = 0, t > 0

Dan

C(x, 0) = f(x), 0≤x≤l

Untuk menyelesaikan persamaan differensial ini akan digunakan metoda beda hingga dengan cara
memilih besar mesh masing-masing h untuk jarak dan k untuk waktu. Untuk jarak dibagi sebanyak m,
yaitu sehingga h = l/m. Posisi grid dalam keadaan seperti ini adalah (xi, tj), dimana xi = ih, untuk I=1,
2, …, m dan tj = jk untuk j = 1, 2, …

Dengan menggunakan deret Taylor kita menemukan beda hingga dalam t, yaitu

∂C C ( xi , t j + k ) −C ( x i , t j ) k ∂ 2
( x i ,t j )= − C x ,η
∂t k 2 ∂ t2 ( i j ) (21)

Untuk beberapa ηj ∈ (tj, tj+1), dan

∂2 C C ( x i +h , t j ) −2 C ( x i , t j ) +C ( x i−h , t j ) k ∂ 2
x ,t =
2 ( i j)
− C ξ ,t
∂x h
2 2 ∂t 2 ( i j ) (22)

Untuk beberapa ξi ∈ (xi-1, xi+1)


Sekarang kita menuliskan kembali persamaan (21) dan (22) dalam bentuk tik alas, yaitu
∂Ci , j C i, j+1 −Ci , j k ∂2 Δ C^ i , j C^ i , j+1− C^ i , j
= − C ( x ,
i jη )≈ =
∂t k 2 ∂ t2 k k (23)
Untuk beberapa ηj ∈ (tj, tj+1), dan

∂2 C i, j C i+1 , j −2 Ci , j +C i−1 , j k ∂2 Δ 2 C^ i , j C^ i+1, j−2 C^ i, j + C^ i−1 , j


= − C ξ ,t ≈ 2 =
∂x
2
h
2 2 ∂ x2 ( i j) h h
2
(24)
2
Δ C^ i , j Δ C^ i, j ∂Ci , j
2
Dimana k dan h adalah nilai-nilai penghampiran masing-masing terhadap ∂t
2
∂ C i, j
2
dan ∂ x .
Persamaan differensial (20) memberikan penjelasan kepada kita bahwa titik interior dari grid yang
terbentuk adalah (xi, tj) untuk setiap i = 1, 2, …, m – 1 dan j = 1, 2, …

Dengan demikian kita akan dapat menuliskan


2
∂ C x , t −α 2 ∂ C x , t =0
∂t ( i j ) ∂ x2
( i j)
(25)

Dengan kesalahan pemendekan lokal adalah


2
k ∂2 h ∂4
ρi+1 = 2
C ( x i , η j )−α 2 C ( ξi , t j )
2 ∂t 12 ∂t 4 (26)

Dengan memasukkan persamaan (23) dan (24) ke dalam persamaan (25), kita akan memperoleh

C^ i, j+1 −C^ i, j C^ i+1 , j −2 C^ i, j + C^ i−1, j


−α2 =0
k h2 (27)

Setelah penyusunan kembali kita akan menemukan

2 α2 k k
(h h )
C^ i , j+1= 1− 2 C^ i , j +α 2 2 ( C^ i+1 , j −C^ i−1 , j )
(28)

Persamaan (28) digunakan untuk menghitung untuk semua i , j i = 1, 2, …, m – 1 dan j= 1, 2, … C^


Juga karena kondisi awal adalah C(x, 0)= f(x) untuk semua 0 ≤ xi ≤ l, maka ini mengimplikasikan
C^ i , 0=f ( x i )
bahwa untuk i = 1, 2, …, m – 1, . Harga-harga ini dapat digunakan pada persamaan

(28) untuk menghitung


C^ i ,1 , selain itu juga kondisi C(0, t) = 0 dan C(l, t) = 0 memberikan harga-

harga dari
C^ 0,1 =C^ 0 ,m =0. Dengan demikian semua entri C^ i ,1 dapat ditentukan.

Persamaan beda hingga yang dperlihatkan dalam persamaan (28) memberikan kenyataan bahwa ada
( j−1 ) ( j)
matriks A vektor c dan vektor c sedemikian sehingga

c ( j )=Ac( j−1 ) untuk setiap j = 1, 2, …, m (29)


dengan
T
c ( 0 )=[ f ( x 1 ) , f ( x 2 ) ,. .. , f ( x m ) ]
(30)

( j) T
c =[ C^ 1 , j , C^ 2, j ,..., C^ m−1 , j ]
untuk j = 1, 2, … (31)

dan

( 1−2 λ ) λ 0 0 .. . 0

A=

[ 0
0
0
λ
0

0
( 1−2 λ )

0
0
0
λ

. .. .. .
λ
( 1−2 λ )
. . .. ..
. . .. ..
. . .. ..
0
0
λ
.. . .
.. . ..
.. . .
λ
.. . 0
.. . 0
.. . 0
.. .. . .
λ
( 1−2 λ )
] (32)

Berdasarkan persamaan-persamaan (29) hingga (32) kita dapat menyusun algoritma komputasi untuk
problema diffusi ini seperti yang ditunjukkan oleh Algoritma.

Dalam persamaan (32), kita telah mengambil λ = α2k/h2.

Algoritma untuk Komputasi persamaan diffusi dengan menggunakan metoda beda hingga maju.
Step 1. Masukkan persamaan differensial dan kondisi-kondisi batasnya, jumlah partisi yang diambil
untuk arah x dan t. Menghitung c(ii,0) = f(x(ii)). Untuk ii = 1, 2, …, m -1; sebagai berikut:
Step 1a. Set ii = 1
Step 1b. Set c(ii,0) = f(x(ii));
Step 1c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 1b. Jika sudah ke Step 2.
Step 2. Menghitung elemen-elemen matriks A. Pertama Hitung lambda = sqr(alfa)*k/sqr(h);
kemudian hitung elemen diagonal yaitu diag = 1 – 2*lamda, dengan prosedur berikut.
Step 2a. Set ii = 1
Step 2b. Set A(ii,ii) = diag; A(ii+1, ii) = lambda; A(ii, ii+1) =lambda;
Step 2c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 2b. Jika sudah ke Step 3.
Step 3. Persiapan awal untuk menghitung cc(ii) = A*cc(ii-1) dengan menggunakan persamaan (29)
dan ini dilakukan dengan mengkonversikan cc(0) = c(ii,0), yaitu dengan langkah-langkah
berikut ini:
Step 3a. Set ii = 1
Step 3b. Set cc(ii) = c(ii,0);
Step 3c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 3b. Jika sudah ke Step 4.
Step 4. Hitung c(ii) = Ac(ii-1) dengan cara menghitungnya berdasarkan nilai sebelumnya, yaitu:
Step 4a. Set ii = 1
Step 4b. Set cc(ii) = c(ii,0);
Step 4c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 4b. Jika sudah ke Step 5.
Step 5. Menghitung cc(ii) = Acc(ii-1) dengan cara sebagai berikut:
Step 5a. Set ii = 1;
Step 5b. Set jj = 1;
Step 5c. Set ca(ii) = 0;
Step 5b. Set ca(ii) = ca(ii) +cc(ii)*A(ii,jj);
Step 5c. Apakah jj = n – 1, jika belum naikkan counter ii satu poin, yaitu jj = jj + 1 dan
Kembali ke Step 5c. Jika sudah ke Step 5d.
Step 5d. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 5b. Jika sudah ke Step 5e.
Step 5e. Set ii = 1;
Step 5f. Set ca(ii) = ca(ii) +cc(ii)*A(ii,jj);
Step 5g. Apakah ii = n – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 5c. Jika sudah ke Step 5d.

Dalam uraian di atas kita telah menggunakan teknik beda hingga maju. Sekarang kita akan
menggunakan metoda beda hingga mundur, yaitu

∂C C ( xi , t j )−C ( xi ,t j −k ) k ∂2
( x i ,t j )= − C x ,η
∂t k 2 ∂t 2 ( i j ) (33)

Untuk beberapa ηj ∈ (tj, tj+1), dan

∂2 C C ( x i +h , t j ) −2 C ( x i , t j ) +C ( x i−h , t j ) k ∂ 2
x ,t =
2 ( i j)
− C ξ ,t
∂x h
2 2 ∂ t 2 ( i j) (34)

Untuk beberapa ξi ∈ (xi-1, xi+1)

Sekarang kita menuliskan kembali persamaan (33) dan (34) dalam bentuk tik alas, yaitu

∂Ci , j C i, j −C i, j−1 k ∂2 Δ C^ i, j C^ i , j− C^ i , j−1


= − C ( x ,
i jη )≈ =
∂t k 2 ∂t 2 k k (35)

Untuk beberapa ηj ∈ (tj, tj+1), dan

∂2 C i, j C i+1 , j −2 Ci , j +C i−1 , j k ∂2 Δ 2 C^ i , j C^ i+1, j−2 C^ i, j + C^ i−1 , j


= − C ξ ,t ≈ 2 =
∂ x2 h2 2 ∂ x2 ( i j) h h2 (36)

Δ C^ i , j Δ2 C^ i, j ∂Ci , j
2
Dimana k dan h adalah nilai-nilai penghampiran masing-masing terhadap ∂t
∂2 C i, j
2
dan ∂x .

Persamaan differensial (20) memberikan penjelasan kepada kita bahwa titik interior dari grid yang
terbentuk adalah (xi, tj) untuk setiap i = 1, 2, …, m – 1 dan j = 1, 2, …

Dengan demikian kita akan dapat menuliskan


2
∂ C x , t −α 2 ∂ C x , t =0
∂t ( i j ) ∂ x2
( i j)
(37)
Dengan kesalahan pemendekan lokal adalah
2
k ∂2 2 h ∂
4
ρi+1 = 2
C ( x i , η j)−α C ( ξi , t j )
2 ∂t 12 ∂t 4 (38)

Dengan memasukkan persamaan (35) dan (36) ke dalam persamaan (25), kita akan memperoleh

C^ i, j−C^ i, j−1 C^ i+1, j−2 C^ i , j + C^ i−1 , j


−α 2 =0
k h2 (39)

Untuk setiap I =1, 2, …, m -1 dan j = 1, 2, …

Setelah penyusunan kembali kita akan menemukan

2α2k k
( h )
C^ i , j−1 = 1+ 2 C^ i , j −α 2 2 ( C^ i+1, j + C^ i−1, j )
h (40)

Seperti yang telah kita lakukan sebelumnya, berdasarkan persamaan (40) ini, kita dapat menyusun
sistem persamaan yang dinyatakan dalam matriks dan vektor seperti berikut ini.

( 1+2 λ ) 0 0 . .. 0 C^ 1 , j C^ 1 , j−1

[ ][ ] [ ]
−λ
C^ 2 , j C^ 2 , j−1
−λ ( 1+2 λ ) −λ 0 . .. 0
C^ 3 , j C^ 3 , j−1
0 −λ ( 1+2 λ ) −λ . .. 0 .. . . ..
= . ..
0 0 . .. . .. . .. . . .. . 0 .. .
0 0 . .. . .. . .. . . . .. . .. .. . . ..
0 0 . .. . .. . .. .
−λ .. . . ..
0 . .. . .. 0 −λ ( 1+2 λ ) C^
m−1 , j C^ m−1, j−1
(41)

Sama seperti yang kita sudah lakukan untuk matriks yang dinyatakan oleh persamaan (32), kita telah
mengambil λ = α2k/h2.

Karena persamaan (41) ini melibatkan matriks tridiagonal, maka kita dapat menggunakan metoda
Thomas untuk menyelesaikan sistem persamaan (41) ini. Dengan demikian kita dalpat menyusun
Algoritma untuk penyelesaian problema diffusi yang diberikan dalam persamaan (20) di atas seperti
yang ditunjukkan oleh Algoritma.

Algoritma untuk Komputasi persamaan diffusi dengan menggunakan metoda beda hingga maju.
Step 1. Masukkan persamaan differensial dan kondisi-kondisi batasnya, jumlah partisi yang diambil
untuk arah x dan t. Menghitung c(ii,0) = f(x(ii)). Untuk ii = 1, 2, …, m -1; sebagai berikut:
Step 1a. Set ii = 1
Step 1b. Set c(ii,0) = f(x(ii));
Step 1c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 1b. Jika sudah ke Step 2.
Step 2. Menghitung elemen-elemen matriks A. Pertama Hitung lambda = sqr(alfa)*k/sqr(h);
kemudian hitung elemen diagonal yaitu diag = 1 – 2*lamda, dengan prosedur berikut.
Step 2a. Set ii = 1
Step 2b. Set A(ii,ii) = diag; A(ii+1, ii) = lambda; A(ii, ii+1) =lambda;
Step 2c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 2b. Jika sudah ke Step 3.
Step 3. Persiapan awal untuk menghitung cc(ii) = A*cc(ii-1) dengan menggunakan persamaan (29)
dan ini dilakukan dengan mengkonversikan cc(0) = c(ii,0), yaitu dengan langkah-langkah
berikut ini:
Step 3a. Set ii = 1
Step 3b. Set cc(ii) = c(ii,0);
Step 3c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 3b. Jika sudah ke Step 4.
Step 4. Hitung c(ii) = Ac(ii-1) dengan cara menghitungnya berdasarkan nilai sebelumnya, yaitu:
Step 4a. Set ii = 1
Step 4b. Set cc(ii) = c(ii,0);
Step 4c. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 4b. Jika sudah ke Step 5.

Step 5. Menghitung cc(ii) = Acc(ii-1) dengan cara sebagai berikut:


Step 5a. Set ii = 1;
Step 5b. Set jj = 1;
Step 5c. Set ca(ii) = 0;
Step 5b. Set ca(ii) = ca(ii) +cc(ii)*A(ii,jj);
Step 5c. Apakah jj = n – 1, jika belum naikkan counter ii satu poin, yaitu jj = jj + 1 dan
Kembali ke Step 5c. Jika sudah ke Step 5d.
Step 5d. Apakah ii = m – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 5b. Jika sudah ke Step 5e.
Step 5e. Set ii = 1;
Step 5f. Set ca(ii) = ca(ii) +cc(ii)*A(ii,jj);
Step 5g. Apakah ii = n – 1, jika belum naikkan counter ii satu poin, yaitu ii = ii + 1 dan
Kembali ke Step 5c. Jika sudah ke Step 5d.

Metoda beda hingga mundur ini tidak memiliki persoalan stabilitas seperti pada metoda beda hingga
maju dan hal ini dapat dianalisis berdasarkan nilai-nilai eigen dari matriks A.

Kelemahan dari metoda beda hingga mundur ini datang dari kenyataan bahwa kesalahan pemendekan
lokal untuk metoda ini mempunyai porsi dari orde O(k) yang mengharuskan interval waktu harus jauh
lebih kecil dari interval spatial. Dan jelas ini akan membawa kita untuk memperlengkapi prosedur
perhitungan dengan galat pemendekan dari orde O(k2 + h2). Langkah pertama yang harus kita ambil
dalam arah ini adalah menggunakan persamaan beda hingga yang mempunyai galat adalah O(k2)
∂C
untuk ∂t ketimbang apa yang telah kita punyai sebelumnya, yaitu galat O(k) dan hal ini dapat
dilakukan dengan cara menggunakan deret Taylor dalam t untuk fungsi C(x, t) di titik (xi, tj) dan
dengan mengevaluasinya pada (xi, tj+1) dan (xi, tj-1) untuk mendapatkan formula beda hingga sentral
berikut ini.

∂Ci , j C i, j+1 −Ci , j−1 k ∂2 C^ i , j+1−C^ i, j−1


= − C x , η
( i j) ≈
∂t 2k 2 ∂t 2 2k (42)

Dengan memasukkan persamaan (42) dan persamaan (36) ke dalam persamaan (20) kita akan
memperoleh
C^ i, j+1 −C^ i, j−1 C^ i+1 , j −2 C^ i , j + C^ i−1, j
−α 2 =0
2k h2 (43)

Persamaan (43) adalah formula Richardson dan metoda ini mempunyai galat pemenggalan dari orde
O(k2+h2) tapi mempunyai problema stabilitas yang serius.

Suatu metoda yang lebih menjanjikan dapat diturunkan, yaitu dengan cara merata-ratakan beda hingga
maju pada langkah ke-j untuk waktu t. Metoda ini dinyatakan dalam persamaan:

C^ i, j+1 −C^ i, j C^ i+1 , j −2 C^ i, j + C^ i−1, j


−α2 =0
k h2 (44)

yang mempunyai galat pemenggalan lokal sebesar

k ∂2
ρ F= C x , η +O ( h2 )
2 ∂t 2 ( i j ) (45)

Dan beda hingga mundur pada langkah t yang ke-(j+1), yaitu

C^ i, j+1 −C^ i, j C^ i+1 , j+1−2 C^ i , j+1 + C^ i−1, j+1


−α 2 =0
k h2 (46)

yang mempunyai galat pemenggalan lokal sebesar

k ∂2
ρB =− C x , η^ +O ( h2 )
2 ∂t 2 ( i j ) (47)

Jadi kalau kita sekarang mengambil nilai


η j yang besarnya dekat sekali dengan nilai η^ j , yaitu
η j≈ η^ j , maka metoda beda hingga yang dirata-ratakan akan menjadi:

C^ i, j+1 −C^ i, j α 2 C^ i+1 , j −2 C^ i , j + C^ i−1 , j C^ i+1 , j+1 −2 C^ i, j+1+ C^ i−1 , j+1


k

2 [ h2
+
h2 ] =0
(48)

Metoda ini dikenal dengan nama metoda Crank-Nicolson dengan galat pemenggalan sebesar
O(k2+h2). Kemudian berdasarkan persamaan (48) ini kemudian kita memperoleh sistem persamaan
linear

A c^ ( j+1 )=c^ ( j ) B (49)

Persamaan (49) ini berlaku untuk j = 0, 1, 2, dimana


λ
( 1+ λ ) − 0 0 .. . 0

[ ]
2
λ λ
− ( 1+ λ ) − 0 .. . 0
2 2
λ λ
0 − ( 1+ λ ) − .. . 0
2 2
A=
0 0 . .. . .. .. .. .. .. 0
0 0 . .. . .. .. .. . .. .. .. . 0
0 0 . .. . .. .. .. λ

2
λ
0 . .. .. . 0 − (1+ λ )
2
, (50)

λ
( 1− λ ) 0 0 ... 0

[ ]
2
λ λ
( 1−λ ) 0 ... 0
2 2
λ λ
0 ( 1−λ ) ... 0
2 2
B=
0 0 .. .. . . . . .. . . .. 0
0 0 .. .. . . . . .. . . . .. ..
0 0 .. .. . . . . .. λ
2
λ
0 . .. .. . 0 ( 1−λ )
2
(51)

dan

T
c^ ( j )=[ C^ 1 , j , C^ 2, j ,..., C^ m−1 , j ]
(52)

Karena matriks A adalah suatu matriks tridiagona yang positif definit, simetris, dominan secara
diagonal dan tidak singulir, maka metoda Thomas atau metoda Gauss-Seidel yang dimodifikasi
(SOR), maka vektor c^ ( j+1 ) pada iterasi j+1 dapat hitung dari vektor c^ ( j ) pada perhitungan iterasi
ke-j sebelumnya.

Berdasarkan persamaan-persamaan (49) hingga (52) kita dapat menyusun Algoritma komputasi untuk
metoda Crank-Nicolson seperti yang ditunjukkan oleh Algoritma berikut ini.

Sekarang kita akan meninjau persamaan differensial dan dalam bagian ini akan kita carikan
penyelesaian dari suatu persamaan gelombang, yang dinyatakan oleh persamaan berikut ini.

∂2 v 2 ∂ 2 v
−α =0
∂t 2 ∂ x2 , 0 < x < l, t > 0 (53)

Dengan kondisi

v(0, t) = 0, v(l, t) = 0, t > 0;


v(x, 0) = f(x), 0 ≤ x ≤ l;

dan

∂v
( x , 0 )=g ( x )
∂t

dimana α adalah konstanta.

Sekarang, kita akan menyusun suatu prosedur komputasi berdasarkan metoda beda hingga dan untuk
itu kita akan memilih suatu bilangan bulat positif m dan panjang langkah waktu sebesar k. Sama
seperti pada penyelesaian persamaan differensial parsial parabolik, kita akan mengambil suatu harga
h sedemikian hingga h = l/m. Dengan demikian, titik-titik (xi, tj) dapat didefinisikan oleh

xi = ih, untuk i = 1, 2, …, m

dan

tj = jk, untuk j = 1, 2, …

Pada setiap titik interior, persamaan (53) dapat ditulis kembali sebagai

∂2 v 2
2∂ v
( x , t ) −α ( x , t ) =0
∂t 2 i j ∂ x2 i j , untuk i =1, 2, …, m dan j = 1, 2, … (54)

Berdasarkan beda hingga terpusat kita dapat menuliskan

∂2 v i, j v i+1 , j −2 v i, j +v i−1 , j h 2 ∂4 Δ 2 v^ i, j v^ i+1 , j − ^vi , j + v^ i−1 , j


= − v x , η ≈ =
∂x
2
h
2 12 ∂ x 4 ( i j ) h
2
h
2
(55)

dan

∂2 v i , j v i, j+1 −v i , j +v i, j−1 k 2 ∂4 Δ2 v^ i, j v^ i , j+1 −v^ i , j + v^ i , j−1


= − v ξ ,t ≈ 2 =
∂t
2
k
2 12 ∂ x 4 ( i j ) k k
2
(56)

Sekarang, dengan memasukkan persamaan (55) dan (56), ke dalam persamaan (54), akan diperoleh
persamaan berikut ini.

v^ i, j+1 −^v i , j + v^ i, j−1 v^ i+1 , j −^v i , j + v^ i−1 , j 1 2 ∂4 2 ∂


4

k2
−α 2
h2
=
12
k
(
∂ x4
v ( ξ ,
i jt ) +h
∂ x4
v ( xi , η j)
) (57)

atau

v^ i, j+1 −^v i , j + v^ i, j−1 v^ i+1 , j −^v i , j + v^ i−1 , j


−α 2 =0
k2 h2 (58)
Dengan mengambil λ = αk/h, kita dapat menuliskan kembali persamaan (58) sebagai persamaan beda
hingga berikut ini.
2
v^ i , j+1− v^ i, j +^v i , j−1 −λ ( v^ i+1 , j− v^ i , j + v^ i−1, j ) =0 (59)

Atau setelah penyusunan ulang, diperoleh:


2
v^ i , j+1=2 ( 1− λ2 ) v^ i, j + v^ i, j−1 +λ ( v^ i+1, j +^v i−1, j ) −^v i , j−1 (60)

Dan persamaan (60) ini berlaku untuk setiap i = 1, 2, …, m -1 dan j = 1, 2, 3, …

Selain itu juga dari kondisi batas kita dapat menyimpulkan bahwa

v^ 0 , j = v^ m, j =0, untuk setiap j = 1, 2, 3, … (61)

Sedangkan kondisi awal mengisyaratkan bahwa

v^ i ,0 =f ( x i )
, untuk setiap i = 1, 2, …, m – 1 (62)

Sebelum kita beranjak ke komputasi yang dapat dilakukan dengan persamaan (60) ini, sekarang
perhatikan Gambar 6 berikut ini

( i , j+1 )
( i-1 , j) ( i+1 , j )
(i, j)

( i , j-1 )

Gambar 6. Grid kotak-kotak yang menyatakan titik-titik yang menyatakan distribusi

Dari Gambar 6 ini, kita dapat menentukan turunan pertama dari dengan penghampiran beda hingga
maju, yaitu:
∂v v −v k 2 v^ − v^
( x i ,0 )= i ,1 i, 0 − ∂ 2 v ( x i , η j )≈ i, 1 i, 0
∂t k 2 ∂t k (63)
Dengan menyelesaikan persamaan (63) untuk mendapatkan
v i ,1 , kita dapat menuliskan:
∂v k 2
v i ,1 =v i, 0 +k ( x i , 0 ) + ∂ 2 v ( x i , η^ j )
∂t 2 ∂t
k 2
=v i , 0 +kg ( xi ) + ∂ 2 v ( xi , η^ j )
2 ∂t (64)
Jadi secara konsekwen kita harus menerima

v^ i ,1 = v^ i, 0 +kg ( x i )
, untuk setiap i =1, 2, …m - 1 (65)

Persamaan (60) dapat disusun dalam bentuk yang kompak sebagai berikut

v^ 1 , j+1 2 ( 1− λ2 ) λ2 0 0 .. . 0 v^ 1, j v^ 1, j−1

[ ][ ][ ] [ ]
v^ 2 , j+1 v^ 2, j v^ 2, j−1
λ2 2 ( 1−λ2 ) λ2 0 .. . 0
v^ 3 , j+1 v^ 3, j v^ 3, j−1
... 0 λ2 2 ( 1−λ2 ) λ2 .. . 0 .. . .. .
... = .. . − .. .
0 0 .. .. . . .. . . .. . . 0
... 0 0 .. .. . . .. . .. .. . .. .0 .. . .. .
0 0 .. .. . . .. . .
... λ2 .. . .. .
v^ m−1, j+1 0 . . .. .. 0 λ2 2 ( 1−λ 2 ) v^ m−1, j v^ m−1 , j−1
(66)

Jadi penyelesaian numerik dari persamaan (20) dapat dimulai dengan j = 1 dimana
v^ i ,0 dihitung

dengan menggunakan persamaan (62) kemudian disusul oleh perhitungan


v^ i ,1 dengan menggunakan
v^
persamaan (65). Selanjutnya untuk j = 2 dan seterusnya i , j dapat dihitung dengan mengggunakan
persamaan (66). Dan itu berarti kita sekarang dapat menyusun algoritma untuk menemukan solusi
numerik dari persamaan (20) seperti yang ditunjukkan oleh Algoritma berikut ini.

Algoritma.
Step 1. Masukkan kondisi-kondisi batas. Tentukan jumlah partisi pada x, yaitu m, jumlah partisi
dalam t, yaitu n. Set ma = m + 1 dan na = n +1
Step 2. Hitung h=l/m; k=t/n; lambda = alfa*k/h h=l/m
Step 3. Hitung elemen-elemen matriks: Hitung kwadrat = sqr(lambda); diag = 2*(1 – kwadrat);
Elemen-elemen diagonal dan elemen di atas dan di bawah diagonal
Step 3a. ii = 1
Step 3b. Set A(ii,ii) = diag; A(ii,ii+1) = lambda; A(ii +1,ii) = lambda;
Step 3c. Apakah ii = n? Jika tidak naikkan counter ii satu point yaitu ii = ii +1 dan kembali ke
Step 3b, jika ya ke Step 4
Step 4. Menghitung v(ii,0) = f(x(ii)) dengan persamaan , yaitu:
Step 4a. ii = 1
Step 4b. Set v(ii,0) = f(x(ii));
Step 4c. Apakah ii = n? Jika tidak naikkan counter ii satu point yaitu ii = ii +1 dan kembali ke
Step 4b, jika ya ke Step 5
v^ i ,1 = v^ i, 0 +kg ( x i )
Step 5. Menghitung , untuk setiap i = 1, 2, …m – 1 dengan persamaan
(65), yaitu:
Step 5a. ii = 1
Step 5b. Set v(ii,i) = v(ii,0)+ k*g(x(ii));
Step 5c. Apakah ii = n? Jika tidak naikkan counter ii satu point yaitu ii = ii +1 dan kembali ke
Step 5b, jika ya ke Step 6
Step 6. Menghitung v(ii, jj+1) untuk ii = 1 hingga m dengan persamaan (66)
Step 6a

Program Matlab:
na = n +1;
ma = m +1;
h = l/m;
fr = t/n
x(1) = 0;
for ii = 2: na
x(ii) = x(1) + (ii-1)*h
end
t(1) = 0;
for ii = 2: ma
t(ii) = t(1) + (ii-1)*fr
end
for ii = 1: na
y(ii,1) = feval(‘f1’,x(ii));
dy(ii,1) = 0;
end
y(1, 1:ma) = 0;
y(na, 1:ma) = 0;

Dari persamaan (63) kita dapat melihat bahwa (65) memberikan suatu penghampiran yang
mempunyai galat pemenggalan lokal hanya O(k). Suatu penghampiran yang paling baik untuk
menghitung vi,0 dapat diperoleh dengan mudah, khususnya bila turunan kedua dari f di xi dapat
ditentukan. Sekarang perhatikan

v i , 1 −v i ,0 ∂v k 2 k 2 ∂3 v
= ( x i ,0 ) + ∂ 2 v ( xi , 0 ) + x , η^
k ∂t 2 ∂t 6 ∂t 3 ( i i ) (67)

Untuk 0 < η^ i < t1 dan anggap bahwa persamaan gelombang juga berlaku untuk garis awal, yaitu

∂2 v 2
2∂ v
( x , 0 ) −α ( x , 0 )=0
∂t 2 i ∂ x2 i , untuk i =1, 2, …, m (68)

Jika y’’ ada, maka

∂2 v 2
2∂ v
2
2d f
x
2 ( i
, 0 ) =α x
2( i
, 0 )=α x =α 2 f '' ( x i )
2 ( i)
∂t ∂x ∂x (69)

Dengan mensubstitusika persamaan ini ke dalam persamaan (67) dan selanjutnya diselesaikan untuk
vi,1 akan memberikan

α2 k 2 k 2 ∂3 v
v i ,1 =v i, 0 + kg ( x i ) + f '' ( xi ) + ( x , η^ )
2 6 ∂t 3 i i (70)

Dan itu berarti


2 2
α k
v^ i ,1 = v^ i, 0 + kg ( x i ) + f '' ( xi )
2 (71)

Ini merupakan suatu penghampiran dengan galat pemenggalan lokal O(k2) untuk i = 1, 2, …, m – 1.
Jika f ∈ C4[0, 1] tetapi f’’(xi) tidak segera tersedia kita dapat menggunakan Teorema nilai antara
untuk menuliskan

f ( x i+1 ) −2 f ( x i ) + f ( x i−1 ) h 2 ( 4)
f '' ( x i ) = 2
− f (ξ i )
h 12 (72)

Untuk xi-1 < ξ i < xi, dan ini mengimplikasikan bahwa penghampiran dapat ditulis sebagai

v i, 1 −v i ,0 kα 2
=g ( x i ) + f x −2 f ( x i ) +f ( x i−1 ) ] +O ( k 2 + h2 k )
2 [ ( i+1 )
k 2h (73)

αk
λ= ,
Sekarang, dengan mengambil h kita akan memperoleh persamaan berikut ini.

λ2
v i ,1 =v i, 0 + kg ( x i ) +f ( x ) −2 f ( x i ) + f ( x i−1 ) ] +O ( k 3 +h 2 k 2 )
2 [ i+1
λ2 λ2
= (1−λ ) f ( x i ) + f ( x i+1 ) + f ( x i−1 ) + kg ( x i ) +O ( k 3 +h2 k 2 )
2 2 (74)

Sehingga untuk menenemukan


v^ i ,1 kita dapat menggunakan persamaan berikut ini.

2 2
λ λ
v^ i ,1 =( 1− λ ) f ( x i ) + f ( xi+1 ) + f ( xi−1 ) +kg ( xi )
2 2 (75)

Persamaan (75) berlaku untuk i = 1, 2, …, m – 1.

Dalam Algoritma berikut ini, digunakan persamaan (75) untuk menghitung


v^ i ,1 walaupun
sebenarnya persamaan (65) dapat juga digunakan.

Anda mungkin juga menyukai