Metode Numerik
1
DAFTAR ISI
Pengenalan Matlab.........................................................................................
3
Pemrograman Sederhana dengan Matlab................................ 6
2
Metode Iterasi Jacobi ...................................................................... 58
Metode Gauss Seidel ....................................................................... 66
3
Pengenalan Matlab
SEKILAS MATLAB
1. Current Directory
Path Browser memungkinkan Anda melihat dan mengubah alamat Pencarian MATLAB
Workspace browser memungkinkan Anda melihat isi dari tempat kerja Matlab yang
sedang aktif atau Workspace browser juga menyediakan keluaran dari perintah whos,
4
3. M-File editor/Debuger
Digunakan untuk menuliskan program berupa fungsi-fungsi dan disimpan sesuai dengan
nama fungsinya dan dapat dilakukan eksekusi program. M-File dapat diaktifkan dengan
4. Command Windows
Command windows dapat digunakan seperti kalkulator dan juga dapat untuk menuliskan
5
Matematika Sederhana
Contoh : 5 + 4 = 9
Pi = 3.14
4 x 25 + 6 x 52 + 2 x 99 = 610
6
Operasi-operasi Aritmetik Dasar :
Penambahan, a + b + 5+3
Pengurangan, a b 23 12
Perkalian, a x b * 3.14 * 5
Pemangkatan, ab ^ 5^2
Variabel
Nama variabel dibedakan antara huruf Items, items, itEms, dan ITEMS semuanya
tidak diperbolehkan.
PENDAHULUAN
Variabel
7
Nama yang diberikan untuk mewakili suatu data, baik berupa masukan data atau
merupakan hasil perhitungan aturan penulisan variabel:
1. harus diawali dengan huruf
2. tidak boleh mengandung spasi dan tanda baca (karakter khusus)
3. tidak boleh menggunakan key words
4. dibedakan antara huruf besar dan huruf kecil, misalnya: Nama, NAMA, NamA, NaMa,
dsb. merupakan variabel yang berbeda.
Input Data
Terdapat dua cara untuk memasukkan data yaitu:
a. inisialisasi data, dimana data diberikan secara langsung pada saat pembuatan program
Bentuk umum:
variabel = ekspresi
b. menggunakan perintah input, dimana data diberikan pada saat program di-running.
Bentuk umum:
variabel = input(text) numerik dan string
atau
variabel = input(text, s) string
pada layar akan tampil apa yang tertulis di antara tanda petik (text),menanti masukan
data yang diikuti dengan menekan enter melalui keyboard.
8
>> topik='segi tiga'
topik =
segi tiga
>> alas = 5
alas =
>> tinggi=10
tinggi =
10
luas_segitiga =
25
9
Contoh Perhitungan luas Segi Tiga A = 0.5 x a x t dengan cara input data.
topik =
segi tiga
alas =
5
>> tinggi = input('masukkan tinggi segi tiga : ')
masukkan tinggi segi tiga : 10
tinggi =
10
>> luas_segitiga = 0.5 * alas * tinggi
luas_segitiga =
25
Bila ingin menampilkan nilai dari suatu variable disp(A) dimana A adalah variabel; hasil
yang ditampilkan adalah nilai yang tersimpan dalam variabel A tersebut.
Contoh :
>> A = 30
A =
30 10
>> disp(A)
30
Bila ingin menampilkan teks atau string4hasil yang ditampilkan adalah apa yang tertulis di
antara tanda petik.
Contoh :
angkatan 45
Bila ingin menampilkan gabungan teks dan nilai dari suatu variabel, gunakan tanda
kurung siku dimana nilai numerik harus dikonversi ke bentuk string terlebih dahulu
dengan menggunakan fungsi num2str (number to string).
Contoh :
>> x = 45
x =
45
11
Penggabungan Input Data
Beberapa data yang dimasukkan yang ditulis dalam beberapa baris program dapat
digabungkan dengan memberikan tanda koma (,) atau titik koma (;) sebagai pemisah,
tanda ; membuat data menjadi tersembunyi.
Contoh : Input data x, y, dan z pada contoh di atas yang ditulis dalam 3 baris program
dapat digabungkan menjadi 1 baris program dengan salah satu cara berikut:
>> x = 1, y = 2, z = 3
x =
y =
z =
>> x = 1; y = 2; z = 3
z =
>> x = 1; y = 2; z = 3;
>>
12
Pemberian Komentar
Sejauh ini, semua pekerjaan dilakukan melalui sebuah layar yang disebut command
window dimana perintah dapat dieksekusi secara langsung satu per satu. Ada pula layar
lain yang dapat menyimpan semua perintah yang dibuat untuk kemudian dieksekusi
secara keseluruhan. Layar tersebut adalah layar M-File.
Contoh :
Perhitungan Luas persegi panjang :
L = p x l, L = Luas persegi panjang, l = lebar , p = panjang
function L=luassegitigasiku(a,t);
L=0.5*a*t;
Fungsi di atas diketik dalam layer m.file, harus disimpan sesuai nama fungsinya yaitu
luassegitigasiku dalam direktori.
Bila akan menjalankan fungsi tersebut m.file buka nama fungsi luassegitigasiku
kemudian klik menu debug > run, kemudian dalam command windows kita masukkan
nilai alas dan tingginya. Misalnya palas a = 10 dan tinggi t = 20, maka penulisan & hasil
dalam command windows adalah :
>> luassegitigasiku(10,20)
13
ans =
100
VEKTOR DAN MATRIKS VEKTOR MATRIKS
Vektor dan matriks merupakan konsep dasar perhitungan dalam Matlab. Berbagai
perhitungan dapat diselesaikan dengan lebih mudah, ringkas, dan cepat bila bentuknya
dikonversi ke dalam bentuk vektor/matriks. Untuk itu, harus dipahami benar dasar operasi
dengan menggunakan vektor/matriks.
1. Skalar
Di dalam Matlab, skalar adalah sebuah data dengan satu baris dan satu
kolom. Variabel-variabel yang memuat data skalar tersebut dapat mengalami operasi
penjumlahan, pengurangan, perkalian, dan pembagian.
2. Vektor
Di dalam Matlab, vektor adalah sekumpulan data yang membentuk hanya satu
baris atau satu kolom.
Penulisan elemen dilakukan di dalam kurung siku [ ] yang diantarai dengan spasi atau titik
koma. Pengecualian berlaku hanya untuk penulisan data yang berbentuk deret dengan
pola tertentu.
Vektor dapat mengalami operasi dengan skalar atau dengan vektor lain asalkan
mempunyai dimensi yang sama.
14
>> a = 1:5
a =
1 2 3 4 5
>> a = [1:5]
a =
1 2 3 4 5
>> a = [1 2 3 4 5]
a =
1 2 3 4 5
>> 1:10
(ii) Penggunaan increment
ans =umum penulisan data dengan pola tertentu atau deret:
Bentuk
variabel 1= n : i : m
2 dimana3n = nilai4awal, m 5= nilai akhir,
6 dan i7= increment/langkah;
8 9 bila10I
tidak didefinisikan, maka Matlab akan
>> 1:2:10 default-nya yaitu 1.
menggunakan
ans =
1 3 5 7 9
>> 0:2:10
ans =
0 2 4 6 8 10
15
Vektor dapat mengalami operasi penjumlahan, pengurangan, perkalian, dan pembagian.
Operasi penjumlahan dan pengurangan dapat dilakukan bila vektor-vektor yang akan
dijumlahkan atau dikurangkan mempunyai orde (dimensi) yang sama. Perkalian 2 buah
vektor x dan y mempunyai bentuk:
xi * yi dimana kedua vektor juga harus berde sama, tetapi 1 vektor kolom dan yang
lainnya vektor baris.
1 2 3
2 1 0
3 3 3
16
>> a b % pengurangan vector baris a dengan vector baris
b
ans =
3. Matriks
Matriks merupakan himpunan data yang membentuk beberapa baris dan kolom.
Aturan operasi penjumlahan dan pengurangan yang berlaku pada vektor juga berlaku
untuk matriks apabila matriks mempunyai dimensi yang sama.
17
Perkalian antara 2 buah matriks misalkan matriks A dan matriks B. Perkalian
matriks A x B, harus memenuhi aturan bahwabanyaknya kolom pada matriks A harus
sama dengan benyaknya baris pada matriks B.
>> C=A+B
C =
4 5 6
4 3 5
>> D=A-B
D =
-2 -1 0
0 -1 1
18
4. Pengalamatan
Merupakan cara penulisan yang digunakan untuk menampilkan atau mendefinisikan
ulang suatu data atau sekumpulan data pada vector atau matriks, ditulis dalam bentuk
umum: variabel(i,j), dimana i menunjukkan baris dan j menunjukkan kolom Vektor dan
Matriks
Contoh : Pengalamatan Vektor atau Matriks
x(2) menunjukkan elemen kedua vektor x
z(3) menunjukkan elemen ketiga vektor z12
r(2,1) menunjukkan elemen matriks r pada baris kedua kolom
pertama
t(3,2) menunjukkan elemen matriks t pada baris ketiga kolom kedua
s(:,2) menunjukkan semua elemen matriks s pada kolom kedua
u(1,:) menunjukkan semua elemen matriks u pada baris pertama
PENGATURAN ALUR PROGRAM
Pengaturan alur program memungkinkan pengguna untuk mengulangi perhitungan
secara berulang-ulang ataupun memilih serta memutuskan kondisi-kondisi yang
sesuai/diinginkan. Matlab menyediakan empat bentuk pengaturan alur program yang
akan dibahas berikut ini.
1. Loop for
Loop for memungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap.
Bentuk umum:
for loopvariable = loopexpression
perintah-perintah
19
end
x =
1
x =
1 8
x =
1 8 27
x =
1 8 27 64
20
>> x = [1 2 3];
y = [4 5 6];
sum = 0;
for i = 1:3
sum = sum + x(i)*y(i)
end
sum =
4
sum =
14
sum =
32
2. Loop while
Bentuk umum:
while while_expression
perintah-perintah
end
Operator relasi yang didefinisikan sebagai berikut:
> lebih besar >= lebih besar atau sama dengan
< lebih kecil <= lebih kecil atau sama dengan
== sama -= tidak sama
contoh :
21
n = 1;
x = 0;
while x <15
x(n) = n^2;
n = n+1;
end
>> x
x =
1 4 9 16
3. If-Statement
Bentuk umum:
if if_ekspresi
perintah-perintah
end
Contoh :
Di sebuah toko kue, harga kue per toples adalah Rp. 25.000
Apabila membeli minimal 4 toples akan mendapatkan potongan 10%
22
Program ditulis dalam m.file, disimpan dengan nama kue.m
Apabila di_run hasilnya adalah:
bayar =
75000
bayar =
99000
23
Contoh:
Untuk menentukan nilai akhir mahasiswa, untuk setiap mata kuliah diadakan ujian
KD1 KD2 K 3 D 4
kompetensi dasar (KD) sebanyak 4 kali. Nilai _ Akhir , Jika Nilai
4
akhir >80 memperoleh A, jika 70 Nilai _ Akhir 80 , nilai B, Jika
60 Nilai _ Akhir 70 nilai C, jika Nilai_Akhir < 60 nilai D
NA = (KD1+KD2+KD3+KD4)/4
if NA >= 80
ket = 'A'
else if 70 <= NA & NA < 80
ket = 'B'
else if 60 <= NA & NA < 70
ket = 'C'
else if 50 <= NA & NA < 60
ket = 'D'
else
ket = 'E'
end
end
end
end
end
24
Program di atas disimpan dalam format m.file dengan nama nilai.m. apabila di run
hasilnya adalah:
NA =
79
ket =
4. Switch-case-otherwise
Bentuk umum:
switch ekspresi
case ekspresi1
perintah-perintah
case ekspresi2
perintah-perintah
case
.
.
otherwise
perintah-perintah
end
disp('1. Newton')
disp('2. Regula Falsi')
disp('3. Newton Raphson')
n = input('Metoda yang dipilih (masukkan
25 nomor urutnya saja) =
');
switch n
case (1), disp('Metode Newton')
case (2), disp('Metode Regula Falsi')
Program tersebut ditulis dalam m.file dan diberi nama pilihan.m, apabila di run hasilnya
adalah :
>> 1. Newton
2. Regula Falsi
3. Newton Raphson
Metoda yang dipilih (masukkan nomor urutnya saja) = 2
Metode Regula Falsi
26
Chapter 1
ERROR PERHITUNGAN NUMERIK
A. Tujuan
dengan Matlab
a. Software Matlab
C. Dasar Teori
(Hampiran)
Penyelesaian :
1 2
x1 1, xn xn1 , untuk n = 2,3,4,...
2 xn1
27
3 17 1 17 24 577 1 577 816 665857
x2 , x3 , x4 , x5 ,
2 12 2 12 17 408 2 408 577 470832
>> x=1;
>> e=1;
y=x;
x=(y+2/y)/2
e=abs(x-y);
end
x=
1.5000
x=
1.4167
28
x=
1.4142
x=
1.4142
>> fprintf('%5.7f',x);
1.4142136
c. Anda dapat mengubah batas nilai e untuk mendapatkan tingkat keakuratan yang
diinginkan.
Yaitu kesalahan yang ditimbulkan karena proses pengukuran atau penggunaan hampiran
(aproksimasi).
Berikut ini merupakan sumber galat (error) pada suatu hampiran penyelesaian yang
buku Komputasi Numerik dengan Matlab, 2005 oleh Sahid :3) adalah :
3. Metode Penyelesaian
Teori :
29
x y x e x y e y ( x y ) (e x e y )
Jadi galat penjumlahan sama dengan jumlah galat suku-suku yang dijumlahkan, atau
dapat ditulis :
ex y ex e y
ex y ex e y
rx y
xy xy
Untuk pengurangan
x y x e x y e y ( x y ) (e x e y )
Jadi, analog dengan penjumlahan, galat pengurangan sama dengan selisih galat, atau
dapat dituliskan :
ex y ex e y
ex y ex e y
rx y
xy xy
Dari persamaan terakhir dapat dipahami bahwa, apabila x y maka galat relatif
maksimum galat yang mungkin untuk masing-masing hampiran adalah E. Dengan kata
lain :
xi E X i xi E , untuk i 1,2,...., n
30
n n n
xi nE X i xi nE
i 1 i 1 i 1
n n
Atau X i xi nE
i 1 i 1
Jadi, galat jumlah n nilai hampiran tersebut adalah jumlah maksimum galat masing-
masing hampiran.
Contoh Kasus :
angka desimal (di belakang koma). Berapakah maksimum galat penjumlahan tersebut?
Penyelesaian :
menghitung sampai dua angka desimal, masing-masing akar dikalikan 100 dan
> s=0;
for k=1:100,
31
s=s+round(100*sqrt(k));
end;s=s/100
s=
671.4800
> s=fprintf('%5.2f',s);
671.48
Oleh karena setiap akar dihitung sampai dua angka desimal, maka galat maksium
2
masing-masig suku adalah 0.5 10 . Oleh karena itu, maksimum galat hampiran jumlah
2
tersebut adalah 100 0.5 10 0.5 .
d. Nilai yang sebenarnya dapat dihitung dengan menggunakan Matlab berikut, tulis
>> s=0;
for k=1:100,
s=s+sqrt(k);
end;s=s
s=
671.4629
>> s=fprintf('%5.16f',s);
671.4629471031477100
Jadi, galat yang sesungguhnya adalah sekitar 0.071, lebih kecil daripada maksimum
galatnya.
32
Apabila dikerjakan dengan Matlab tanpa adalanya looping adalah sebagai berikut :
barisan=1:100;
>> s1=sum(round(100*sqrt(barisan))/100);
>> s2=sum(sqrt(barisan));
>> s1=s1
s1 =
671.48
>> s2=s2
s2 =
671.462947103148
33
Chapter 2
PENYELESAIAN
PERSAMAAN NON LINEAR
A. Tujuan
e. Mampu Menentukan nilai akar persamaan dengan Metode Grafik dan Tabulasi
f. Mampu membuat program untuk menentukan nilai akar dengan Metode Grafik
c. Software Matlab
d. Metode Grafik
C. Dasar Teori
Fungsi f di sini adalah fungsi atau persamaan tak linear. Nilai x = x 0 yang memenuhi (1)
disebut akar persamaan atau fungsi tersebut. Sehingga x0 di sini menggambarkan fungsi
34
a. Persamaan aljabar atau polinomial
b. Persamaan transenden
atau eksponen
c. Persamaan campuran
Untuk polinomial derajat dua, persamaan dapat diselesaikan dengan rumus akar
x12 =
Untuk polinomial derajat tiga atau empat, rumus-rumus yang ada sangat kompleks dan
jarang digunakan. Sedangkan untuk menyelesaikan polinomial dengan derajat yang lebih
tinggi atau persamaan tak linear selain polinomial, tidak ada rumus yang dapat digunakan
hampiran yang berurutan (metode iterasi), sedemikian sehingga setiap hasil adalah lebih
teliti dari perkiraan sebelumnya. Dengan melakukan sejumlah proisedur iterasi yang
dianggap cukup, akhirnya didapat hasil perkiraan yang mendekati hasil eksak (hasil yang
35
benar) dengan toleransi kesalahan yang diijinkan.Metode iterasi mempunyai keuntungan
a. LOKALISASI AKAR
Lokasi akar persamaan tak linear diselidiki untuk memperoleh tebakan awal, yaitu:
Gambar-1
36
Gambar-1 bisa dibuat dengan Matlab sbb.
x=-0.1:0.01:0.67;
f=exp(-x) - x;
x1=-0.2:0.01:1.5;
y1=0.*x1;
y2=-0.2:0.01:1.5;x2=0.*y2;
plot(x,f,x1,y1,'r',x2,y2,'r');
gtext('f(x)=exp(-x)-x');
gtext('akar');
Dari Gambar-1, terlihat bahwa fungsi f(x) = exp(-x) x memotong sumbu-x, yaitu (x0,0).
Titik perpotongan tersebut, absisnya (nilai x0) merupakan akar dari f(x0) = exp(-x0) x0 =
0.
37
Gambar-2
x=-0.1:0.01:2.5;
f1=exp(-x);
f2=x;
x1=-0.2:0.01:2.5;
y1=0.*x1;
y2=-0.2:0.01:1.5;x2=0.*y2;
plot(x,f1,x,f2,x1,y1,'r',x2,y2,'r');
38
gtext('f1(x)=exp(-x)');
gtext('f2(x)=x');
gtext('akar');
Dari Gambar-2, terlihat bahwa fungsi f1 dan f2 saling berpotongan, yaitu (x0, y0). Titik
perpotongan tersebut, absisnya (nilai x0) merupakan akar dari
f(x0) = exp(-x0) x0 = 0.
Nilai-nilai fungsi pada interval yang diminati dihitung dengan membagi interval tersebut
menjadi sub interval sub interval, dan nilai-nilai tersebut ditulis dalam bentuk tabulasi.
Jika pada suatu interval nilai fungsi berubah tanda, maka pada interval tersebut ada akar.
Misalkan f(x) = exp(-x) x, kemudian dibuat tabulasi dengan bantuan Matlab, yaitu:
fprintf('------------------\n');
i=1;beda=0.1;
for x=0:beda:1;
f=exp(-x) - x;
fprintf('%3.1f %6.3f',x,f);
if sign(f)< 0
tanda(i)='-';
fprintf(' %s\n',tanda(i));
else
39
if sign(f)> 0
tanda(i)='+';
fprintf(' %s\n',tanda(i));
else
tanda(i)='0';
fprintf(' %s\n',tanda(i));
end;
end;
i=i+1;
end;
i=1;
for x=0:0.1:1;
if tanda(i)=='0'
else
if i >1
if tanda(i)~= tanda(i-1)
a=x-beda;
b=x;
40
end;
end;
end;
i=i+1;
end;
x f(x) tanda
------------------
0.0 1.000 +
0.1 0.805 +
0.2 0.619 +
0.3 0.441 +
0.4 0.270 +
0.5 0.107 +
0.6 -0.051 -
0.7 0.203 -
0.8 -0.351 -
0.9 -0.493 -
1.0 -0.632 -
41
Latihan.
Cari akar persamaan tak linier dengan metode garfik dan tabulasi :
1. f ( x) 2 x 3
2. f ( x) (2 x 1) 3
coba dikembangkan dengan mencari sendiri persamaan tak linier yang dapatdiselesaikan
dengan metode grafik dan tabulasi.
42
METODE BISEKSI
A. Tujuan
c. Mampu membuat program untuk menentukan nilai akar dengan Metode Biseksi
dengan Matlab
d. Software Matlab
e. Metode Biseksi
C. Dasar Teori
Landasan utama dari metode ini adalah menentukan suatu interval dalam suatu
fungsi dimananilai fungsi dari ujung-ujungnya(batas bawah dan batas atas) harus
berbeda tanda untuk menunjukkan bahwa fungsi tersebut memotong sumbu horisontal,
kemudian interval tersebut dipecah menjadi dua bagian yang sama untuk mendekati titik
sembarang a dan b sebagai batas bawah dan batas atas interval nilai fungsi yang dicari.
43
Selanjutnya adalah memeriksa apakah f(a).f(b)<0, jika demikian maka terdapat
akar fungsi dalam interval yang ditinjau. Jika tidak, maka nilai a dan b ditetapkan lagi
sedemikian rupa sehingga terpenuhi ketentuan perkalian f(a).f(b)<0, yaitu nilai f(a) dan
Langkah selanjutnya adalah mencari nilai tengah interval a dan b dengan rumus
6
m=(a+b)/2, lalu diperiksa apakah nilai mutlak f(m)< toleransi(misal 10 ).
Jika benar, nilai x = m adalah solusi yang dicari (akar dari persamaan tersebut).
Jika tidak terpenuhi, ditetapkan batasan baru dengan mengganti nilai b=m
apabila f(a).f(m)<0, dan mengganti a=m bila f(a).f(m)>0 seperti terlihat pada Gambar 3.1
Secara sederhana dari langkah-langkah yang dijelaskan di atas dapat disusun suatu
algoritma program sebagai berikut:
1. Tentukan fungsi f(x), batas bawah a, batas atas b, toleransi, dan jumlah iterasi
maksimum.
2. Hitung f(a) dan f(b).
3. Periksa apakah f(a).f(b)> 0; jika ya, keluar dari progam karena pada interval yang
diberikan tidak terdapat akar persamaan.
4. Hitung nilai m = (a+b)/2.
44
5. Jika nilai mutlak f(m) < toleransi, tuliskan m sebagai hasil perhitungan, dan akhiri
program; jika tidak, lanjutkan ke langkah berikutnya.
6. Jika jumlah iterasi > iterasi maksimum, akhiri program.
7. Jika f(a).f(m)<0, maka b=m, jika tidak, a = m.
8. Kembali ke langkah (2).
Contoh:
Langkah 2:
karena f(a).f(m)= (-1)(4.8821) < 0, maka b=m, sehingga:
a=2 _ f(2)=22-5= -1
b=2.5 _ f(2.5)=(2.5)2.5-5=4.8821
m=(2+2.5)/2=2.25
f(2.25)=(2.25)2.25-5=|1.2003|> 0.000001
Langkah 3:
karena f(a).f(m)= (-1)(1.2003) < 0, maka b=m, sehingga:
a=2 _ f(2)=22-5= -1
b=2.25 _ f(2.25)=(2.25)2.25-5=1.2003
m=(2+2.25)/2=2.125
f(2.125)=(2.125)2.125-5=|-0.0382|> 0.000001
Langkah 4:
karena f(a).f(m)= (-1)(-0.0382) > 0, maka a=m, sehingga:
a=2.125 _ f(2.125)=22.125-5= -0.0382
b=2.25 _ f(2.25)=(2.25)2.25-5=1.2003
m=(2.125+2.25)/2=2.1875
45
f(2.1875)=(2.1875)2.1875-5=|0.5416|> 0.000001
Langkah 5:
karena f(a).f(m)= (-0.0382)(0.5416) < 0, maka b=m,sehingga:
a=2.125 _ f(2.125)=22.125-5= -0.0382
b=2.1875 _ f(2.1875)=(2.1875)2.1875-5=0.5416
m=(2.125+2.1875)/2=2.1563
f(2.1563)=(2.1563)2.1563-5=|0.2430|> 0.000001
Dengan toleransi sebesar 10-6, pada langkah ke 23 iterasi berhenti dengan hasil
x = 2.12937256693840. Contoh di atas bisa memberikan gambaran bahwa metode
bisection cukup mudah untuk dipergunakan. Di bawah ini gambar diagram alir untuk
proses perhitungan dengan menggunakan metode bisection.
46
Implementasi dengan MATLAB:
function m= TengahInterval(f,a,b,n)
47
Cara menggunakan program di atas untuk menyelesaikan persoalan f ( x) x x 5
dalam
MATLAB, di command window ketikkan perintah:
x=
2.12927246093750
48
Metode Newton Raphson
A. Tujuan
i. Mampu membuat program untuk menentukan nilai akar dengan Metode Newton
f. Software Matlab
C. Dasar Teori
Metode yang lebih baik dalam memilih g(x) adalah dengan membuat garis singgung dari
f(x) untuk nilai x yang dipilih, dan dengan menggunakan besaran x dari perpotongan
garis singgung terhadap absis sehingga diperoleh nilai xbaru. Metode ini diperlihatkan
49
Garis singgung f(xi) memotong di x i+1.
Dari diagram di atas terlihat garis singgung terhadap f(x) adalah:
f ( xi ) 0 f ( xi )
f ' ( xi ) atau f ' ( xi )
xi xi 1 xi xi 1
Sehingga
f ( xi )
xi 1 xi dimana i = 0, 1,2,....
f ' ( xi )
Metode ini dikenal dengan Metode Newton-Raphson dan merupakan salah satu cara
yang paling dikenal dalam metode penyelesaian fungsi f(x)=0. Keuntungan cara ini adalah
Contoh:
Carilah akar dari fungsi f ( x) x 3 3x 20 maka f ' ( x) 3x 2 3
( x 3 3x 20)
xi 1 xi Perkiraan Awal x0 5
( x 2 3)
Langkah 1:
50
f (5) 53 3(5) 20 90
f ' (5) 3(5) 2 3 72
90
x1 5 3.75
72
Langkah 2:
Dan seterusnya
3. Jika nilai mutlak fxbaru < toleransi, diperoleh xbaru sebagai hasil perhitungan;
51
Implementasi dengan MATLAB
function x = MetodeNewton(f,x0,n,tol)
int i;
f0=inline(char(f)); % menyelesaikan persoalan f(x) = 0
dengan Metode Newton
g=inline(char(diff(f))); % dengan g sebagai fungsi
turunannya.
x = x0;
i=0; % perkiraan awal x dengan nilai x0
fa=f0(x);
while abs(fa) > tol % lakukan sampai toleransi tercapai
fa=f0(x);
fb=g(x);
if fa == 0 or i=n
return % program berhenti jika f(x) = 0
end
x = x - fa./fb; % rumus Newton
disp([i x fa]) % fa = f(x);
52
i=i+1;
end
Apabila di run dengan Command Window :
f =x^3-3*x-20
>> f0=inline(char(f))
f0 =
Inline function:
f0(x) = x^3-3*x-20
>> g=inline(char(diff(f)))
g=
Inline function:h
g(x) = 3*x^2-3
>> x=MetodeNewton(f,-2,20,0.000001)
0 0.4444 -22.0000
53
9.0000 -1.4202 -38.0705
x=
3.0809
54
METODE SECANT
A. Tujuan
l. Mampu membuat program untuk menentukan nilai akar dengan Metode Secant
dengan Matlab
h. Software Matlab
i. Metode Secant
C. Dasar Teori
Metode Secant
Merupakan perbaikan dari kekurangan yang dimiliki oleh metode newton, yaitu
55
Dimana :
f ' ( xi ) f ( xi ) f ( xi 1 )
f ' ( xi ) f ' ( xi )
xi xi xi 1
Sehingga bila dimasukkan ke dalam persamaan Newton-Raphson :
xi xi 1
xi 1 xi f ( xi )
f ( xi ) f ( xi 1 )
Contoh :
f ( x) x 3 3x 20
x1 6 f (6) 178
Untuk perkiraan awal
x 2 2 f (2) 18
3. Jika nilai mutlak (xbaru x1) < toleransi, diperoleh tulisan xbaru sebagai hasil
perhitungan;
56
Impementasi Metode Secant dengan MATLAB :
function x = MetodeSecant(f,x0,x1,n,tol)
int i; % menyelesaikan persoalan f(x) = 0 dengan Metode
Secant
fa=f(x0); % f=fungsi yang akan dicari akarnya, x0=nilai
awal,x1=nilai akhir
fb=f(x1); % n=jumlah iterasi, tol=nilai toleransi
i=0;
while abs(x0-x1) > tol % lakukan sampai toleransi
tercapai
fa=f(x0);
fb=f(x1);
if fa == 0 or i=n
return % stops the program if f(x) = 0
end
x = x1 - fb.*(x1-x0)./(fb-fa); % rumus Newton
disp([i x fa]) % menampilkan hasil hitungan
x0=x1;
x1=x;
i=i+1;
end 57
Simpan fungsi di atas dengan naman MetodeSecant.
f=
x^3-3*x-20
f=
Inline function:
f(x) = x^3-3*x-20
>> x=MetodeSecant(f,6,2,15,0.000001)
0 2.3673 178.0000
58
7.0000 3.0809 -0.0002
x=
3.0809
a. Newton Raphson
b. Secant
Latihan di kelas :
1. f ( x) e x x dengan titik awal X0/ a = 0 dan x1/b = 1, carilah nilai x dengan program
Matlab dengan Metode :
a. Newton Raphson
b. Secant
Praktikum 3
LAPORAN SEMENTARA
Hari/Tanggal :
Nama :
Nim :
Kelas :
TTD Dosen/Asisten :
59
60
METODE REGULA FALSI
A. Tujuan
c. Mampu membuat program untuk menentukan nilai akar dengan Metode Regula
d. Software Matlab
C. Dasar Teori
f (b)(b a)
mb
f (b) f (a)
61
Penentuan nilai m dari perpotongan garis lurus melalui dua titik.
Proses dengan cara ini memberikan perhitungan yang lebih cepat dibandingkan dengan
metode bisection. Algoritma untuk metode ini sama dengan metode bisection, hanya
pada bagian menentukan nilai m disesuaikan dengan rumus yang ada.Algoritma tersebut
adalah:
1. Tentukan fungsi f(x), batas bawah a, batas atas b, toleransi, dan jumlah iterasi
maksimum.
2. Hitung f(a) dan f(b).
3. Periksa apakah f(a).f(b)> 0; jika ya, keluar dari progam karena pada interval yang
diberikan tidak terdapat akar persamaan.
4. Hitung nilai
f (b)(b a)
mb
f (b) f (a)
5. Jika nilai mutlak f(m) < toleransi, tuliskan m sebagai hasil perhitungan, dan akhiri
program; jika tidak, lanjutkan ke langkah berikutnya.
6. Jika jumlah iterasi > iterasi maksimum, akhiri program.
7. Jika f(a).f(m)<0, maka b = m, jika tidak, a = m.
8. Kembali ke langkah (2).
6
Contoh : cari akar persamaan f ( x) x 3 x 2 1 dengan toleransi: 10
Langkah 1:
f (0) 03 0 2 1 1
f (2) 23 2 2 1 3
3(2 0)
m 2 0.5
3 (1)
Langkah 2:
62
karena f(a).f(m)= (-1)( -1.1250000) > 0, maka a = m, sehingga:
a=0.5, b=2
f (2) 23 2 2 1 3
3(2 0.5)
m 2 0.909091
3 (1.125)
Langkah 3:
a=0.909091, b=2
f (2) 23 2 2 1 3
3(2 0.909091)
m 2 1.196903
3 (1.07513141)
Langkah 4:
a=1.196903, b=2
f (2) 23 2 2 1 3
3(2 1.196903)
m 2 1.351979027
3 (0.717921332)
63
Langkah 5:
a=1.351979, b=2
f (2) 23 2 2 1 3
3(2 1.351979)
m 2 1.420829976
3 (0.35663608)
x=1.46557119092277. Di bawah ini gambar diagram alir untuk proses perhitungan dengan
menggunakan metode regula falsi.
64
Diagram alir metode regula falsi.
65
Implementasi dalam MATLAB
Berikut ini, kode dalam MATLAB untuk menyelesaikan persamaan non linier dengan
metode regula falsi.
66
Cara mengunakan program di atas untuk menyelesaikan persoalan f ( x) x 3 x 2 1
dalam command window MATLAB, ketikkan perintah:
x=
1.46556123755454
67
Soal Tugas di rumah:
Praktikum 2
LAPORAN SEMENTARA
Hari/Tanggal :
Nama :
Nim :
Kelas :
TTD Dosen/Asisten :
Latihan di kelas :
68
69
Chapter 3
PENYELESAIAN
PERSAMAAN DIFFERENSIAL BIASA
Metode Euler
Metode Euler adalah Metode hampiran paling sederhana untuk menyelesaikan masalah
nilai awal:
..(1)
Biasanya diasumsikan bahwa penyelesaian y(t) dicari pada interval terbatas yang diketahui
.
Kita tidak akan secara eksplisit menari fungsi dapat dideferensialkan (diturunkan) yang
memenuhi persamaan (1) melainkan menghitung sejumlah pasangan nilai
sebagai pendekatan fungsi penyelesaian tersebut yakni .
Pada metode ini interval yang deberikan dibagi menjadi n interval, masing-masing
sepanjang h.
Misalkan kita hendak mencari penyelesaian numeric untuk persamaan (1) pada interval
[a,b].
Misalkan adalah suatu posisi pada [a,b]
sedemikian sehingga :
untuk k = 1,2, , n
70
Persamaan garis ini adalah . Garis ini merupakan garis singgung
kurva penyelesaian pada .
Selanjutnya, tentukan titik pada garis ini yang memiliki absis . Ordinat ini adalah
.
Sekarang merupakan hampiran penyelesaian .
CONTOH :
Misalkan akn menghitung hampiran penyelesaian masalah nilai awal :
71
>> [t1,y1]=euler4pdb(f,10,0,3,1);
>> ye1=3*exp(-t1/2)-2+t1;
>> [t2,y2]=euler4pdb(f,20,0,3,1);
>> ye2=3*exp(-t2/2)-2+t2;
>> [t3,y3]=euler4pdb(f,50,0,3,1);
>> ye3=3*exp(-t3/3)-2+t3;
>> plot(t1,y1,'o',t2,y2,'+',t3,y3,'*',t3,ye3)
72
0.6000 0.7675 0.7963 0.8123 3.2225
0.9000 0.7424 0.7792 0.7998 2.9129
1.2000 0.7660 0.8079 0.8314 2.6464
1.5000 0.8311 0.8757 0.9009 2.4171
1.8000 0.9314 0.9771 1.0030 2.2197
2.1000 1.0617 1.1072 1.1331 2.0498
2.4000 1.2175 1.2618 1.2871 1.9036
2.7000 1.3949 1.4373 1.4618 1.7777
3.0000 1.5906 1.6309 1.6542 1.6694
Tugas :
1. Gunakan metode Euler untuk mendapatkan hampiran penyelesaian masalah nilai
awal :
Gambar grafik solusi eksak tersebut bersama titik-titik hampiran yang Anda
peroleh di a,b, dan c.
73
Metode Runge Kutta
y k 1 y k hf (t k , y k )
Metode ini disebut metode satu langkah karena informasi dari satu langkah
sebelumnya digunakan untuk menghitung hampiran sekarang. Oleh karena itu galat
di dalam metode Euler adalah O(h), kita perlu memilih lebar langkah yang sangat kecil
Ide belakang Metode Runge - Kutta adalah menghitung nilai f (t , y ) pada beberapa
titik di dekat kurva penyelesaian yang dipilih dengan metode tertentu di dalam
y (t 0 ) y 0 pada [t 0 , b] .
Output : (t k , y k ), k 1,2,......., n
Langkah-langkah :
1. hitung n (b t 0 ) / h
74
2. for k = 1,2,3,.., n
Hitung t k t k 1 h
Hitung S1 f (t k 1 , y k 1 ),
Hitung S 2 f (t k , y k 1 h * S1 ),
h
Hitung y k y k 1 ( S1 S 2 )
2
3. Selesai .
S1 f (t k , y k ) (1)
S 2 f (t k h, y k hS1 ) (2)
(S1 S 2 )
y k 1 y k h (3)
2
untuk k = 0, 1, 2, ., dengan (t 0 , y0 ) diktehui.
atau
t k 1
y (t k 1 ) y (t k ) y ' (t )dt
tk
75
dengan menggunakan aturan trapezium dengan lebar langkah h t k 1 t k untuk
menghitung hampiran suku integral, diperoleh hampiran :
y (t k 1 ) y (t k )
h
f (t k , y k ) f (t k 1 , y k 1 )
2
suku kedua pada ruas kanan memuat nilai ruas kiri , y k 1 .
Kita dapat menggunakan Metode Euler untuk menaksir y k 1 pada ruas kanan,
sehingga diperoleh Metode Heun :
y (t k 1 ) y (t k )
h
f (t k , y k ) f (t k 1 , y k hf (t k , y k ))
2
Galat pada setiap langkah dalam Metode Heun (Atau Metode RK2) sama dengan
galat aturan trapezium, yakni
h3
y ( k )
n
12
oleh karena itu, galat setelah n langkah pada Metode Heun menjadi :
n
h3 tn t0 n
k 1
y ( k )
n
12
12h
y ( )h 3 O(h 2 )
Dengan demikian kita peroleh bahwa galat pada setiap langkah (iterasi) dalam
Metode Heun (RK2) adalah O(h 3 ) . Sedangakan galat yang terakumulasi pada akhir
setiap lankah adalah O(h 2 ) .
Contoh :
h t y k t k 1 y k h(t k y k ) / 2 3
y k 1 y k k , k 0,1,2,........., dengan t 0 0, y 0 1
2 2 2 h
76
Penyelesaian eksak masalah nilai awal di atas adalah :
y e t / 2 t 2 .
Kode Matlab berikut ini akan menghasilkan nilai- nilai y k untuk lebar-lebar langkah
yang ditentukan :
77
Chapter 4
A. Latar Belakang
Persoalan yang melibatkan model matematika banyak muncul dalam berbagai
disiplin ilmu pengetahuan, seperti dalam bidang fisika, kimia, ekonomi, atau pada
persoalan rekayasa. Seringkali model matematika tersebut muncul dalam bentuk yang
rumit yang terkadang tidak dapat diselesaikan dengan rumus-rumus aljabar yang sudah
baku.
Solusi SPL secara numeris umumnya selalu (harus) lebih efisien dan cepat
dibandingkan dengan metode-metode analitis, seperti metode Cramer. Namun demikian,
solusi numerik ini secara teknis adakalanya juga berkendala, karena:
(1) ada beberapa persamaan yang mendekati kombinasi linier, akibat adanya round off
error dari mesin penghitung pada,
(2) suatu tahap perhitungan adanya akumulasi round off error pada proses komputasi
akan berakibat domain bilangan nyata (fixed point) dalam perhitungan akan
terlampaui (overflow), biasanya akibat dari jumlah persamaan yang terlalu besar.
1. Metode Langsung
a. Metode Langsung Eliminasi Gauss (EGAUSS), prinsipnya: merupakan operasi
eliminasi dan substitusi variabel-variabelnya sedemikian rupa sehingga dapat
terbentuk matriks segitiga atas, dan akhirnya solusinya diselesaikan menggunakan
teknik substitusi balik (backsubstitution),
b. Metode Eliminasi Gauss ini. Eliminasi Gauss-Jordan (EGJ), prinsipnya: mirip sekali
dengan metode EG, namun dalam metode ini jumlah operasi numerik yang
78
dilakukan jauh lebih besar, karena matriks A mengalami inversi terlebih dahulu
untuk mendapatkan matriks identitas (I). Karena kendala tersebut, maka metode ini
sangat jarang dipakai, namun sangat bermanfaat untuk menginversikan matriks,
c. Dekomposisi LU (DECOLU), prinsipnya: melakukan dekomposisi matriks A terlebih
dahulu sehingga dapat terbentuk matriks-matrik segitiga atas dan bawah,
kemudian secara mudah dapat melakukan substitusi balik (backsubstitution) untuk
berbagai vektor VRK (vektor ruas kanan).
d. Solusi sistem TRIDIAGONAL (S3DIAG), prinsipnya merupakan solusi SPL dengan
bentuk matrik pita (satu diagonal bawah, satu diagonal utama, dan satu diagonal
atas) pada matriks A.
Metode-metode tak-langsung seperti di atas pada umunya sangat tidak efisien dan time
consuming (memerlukan CPU- time) yang jauh lebih besar dari metode langsung.
Metode Eliminasi Gauss, metode Dekomposisi LU dan Metode Iterasi Jacobi merupakan
metode yang dapat dijadikan sebagai alternatif untuk menyelesaikan model matematika.
Metode Eliminasi Gauss mereduksi matriks koefisien A ke dalam bentuk matriks segitiga,
dan nilai-nilai variabel diperoleh dengan teknik substitusi. Pada metode Dekomposisi LU,
matriks A difaktorkan menjadi matriks L dan matriks U, dimana dimensi atau ukuran
matriks L dan U harus sama dengan dimensi matriks A.
Pada metode iterasi Jacobi, penyelesaian dilakukan secara iterasi, dimana proses iterasi
dilakukan sampai dicapai suatu nilai yang konvergen dengan toleransi yang diberikan.
Dari hasil pengujian dapat diketahui bahwa metode Iterasi Jacobi memiliki hasil ketelitian
79
yang lebih baik dan waktu komputasi yang lebih cepat dari metode Eliminasi Gauss dan
metode Dekomposisi LU.
B. Rumusan Masalah
Dari uraian di atas, dapat dirumuskan permasalahannya.
1. Apakah urutan persamaan di dalam suatu SPL berpengaruh terhadap
penampilan metode iterasi Jacobi?
2. Apakah program MATLAB 7 dapat digunakan sebagai solusi pemrograman
dalam metode numerik khususnya metode iterasiJacobi?
C. Batasan Masalah
Dalam makalah ini akan membahas tentang penggunaan metode iterasi Jacobi
dalam penyelesaian Sistem Persamaan Linear (SPL) berukuran besar dengan persentase
elemen nol pada matriks koefisien besar dengan pemrograman MATLAB 7 for Windows.
D. Tujuan
Tujuan penulisan makalah sebagai berikut.
1. Memberikan solusi dalam memperoleh urutan persamaan di dalam suatu SPL
dengan menggunakan metode iterasi Jacobi.
2. Penggunaan MATLAB 7 untuk membantu menyelesaikan pemrograman dalam
penyelesaian Sistem Persamaan Linear (SPL) dengan metode iterasi Jacobi.
E. Manfaat
Dapat diambil manfaatnya sebagia berikut.
80
1. Dapat digunakan sebagai solusi dalam memperoleh urutan persamaan di dalam
suatu SPL berukuran besar dengan menggunakan metode iterasi Jacobi.
2. Memberi kemudahan dalam menyelesaikan Sistem Persamaan Linear (SPL)
berukuran besar dengan metode iterasi Jacobi dengan pemrograman MATLAB 7
for Windows.
PEMBAHASAN
A. Iterasi Jacobi
Teknik iteratif jarang digunakan untuk menyelesaikan SPL berukuran kecil karena
metode-metode langsung seperti metode eliminasi Gauss lebih efisien dari pada metode
iteratif. Akan tetapi, untuk SPL berukuran besar dengan persentase elemen nol pada
matriks koefisien besar, teknik iteratif lebih efisien daripada metode langsung dalam hal
penggunaan memori komputer maupun waktu komputasi. Metode iterasi Jacobi,
prinsipnya: merupakan metode iteratif yang melakuakn perbaharuan nilai x yang
diperoleh tiap iterasi (mirip metode substitusi berurutan, successive substitution).
INPUT : n, A, b, dan Himpunan awal Y = (y1 y2 y3yn)T, batas toleransi T, dan maksimum
iterasi N.
LANGKAH LANGKAH :
81
1. set penghitung iterasi ke =1
2. WHILE k n DO
bi j i aij y j
(a) FOR i = 1, 2, 3, ..., n, hitung xi
aii
(b) Set X = (x1 x2 x3 ..xn)T
(c) IF X Y < T THEN STOP
(d) Tambahan penghitung iterasi, k = k + 1
(e) FOR i = 1, 2, 3, ..., n, Set yi = xi
(f) set Y = (y1 y2 y3 ..yn)T
3. STOP
START
AX = b
Input A, b, X0, T, N
[X, g, H]=
jacobi(A,b,X0,T,N)
bi j i aij y j
xi
aii
xi = ( x1 x2 x3 xn)
STOP
82
D. Iterasi Jacobi dengan Menggunaan Matlab 7
83
x 2 x3 3
x1
10 5 5
x x 3x 25
x2 1 3 4
11 11 11 11
x1 x2 x4 11
x3
5 10 10 10
3x2 x3 15
x4
8 8 8
Misalkan kita pilih hapiran penyelesaian awal (0 0 0 0)T, maka hampiran
pertama terhadap penyelesaian SPL tersebut adalah
3
x1 0 .6 = 1
5
25
x2 2.2727 = 2
11
11
x3 1.1 = -1
10
15
x4 1.8750 = 2
8
Sekarang dengan menggunakan nilai nilai ini pada ruas kanan persamaan
(P5) (P8), kita dapat menghitung hampiran kedua. Proses ini dapat diulang-
ulang sampai keakuratan hampiran yang diinginkan tercapai. Berikut adalah hasil
proses iterasi dengan menggunakan komputer.
No x1 x2 x3 x4
1 0.6 2.27273 -1.1 1.875
2 1.04727 1.71591 -0.805227 0.885227
3 0.932636 2.05331 -1.04934 1.13088
4 1.0152 1.9537 -0.968109 0.973843
5 0.988991 2.01141 -1.01029 1.02135
6 1.0032 1.99224 -0.994522 0.994434
7 0.998128 2.00231 -1.00197 1.00359
8 1.00063 1.99867 -0.999036 0.998888
84
Menyelesaikan contoh SPL berikut ini dengan menggunakan metode iterasi
Jacobi.
2x1 x2 + 10x3 = -11
3x2 x3 + 8x4 = -11
10x1 x2 + 2x3 =6
-x1 + 11x2 x3+ 3x4 = 25
85
F. Hasil Output fungsi MATLAB 7
Berikut adalah contoh pemakaian fungsi MATLAB 7 jacobi dan hasil keluaran
dari yang diperoleh:
>> A=[2 -1 10 0;0 3 -1 8;10 -1 2 0;-1 11 -1 3]
A=
2 -1 10 0
0 3 -1 8
10 -1 2 0
-1 11 -1 3
>> b=[-11;-11;6;25]
b=
-11
-11
6
25
>> X0=[0;0;0;0]
X0 =
0
0
0
86
0
>> T=.00001
T=
1.0000e-005
>> N=25
N=
25
>> [X,g,H]=jacobi(A,b,X0,T,N)
X=
1.0e+017*
-4.1950
0.5698
2.1380
0.0451
g=
1.0e+017*
3.7699
0.5442
1.2965
0.1535
H=
1.0e+017*
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
87
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
0 . 0000 0 . 0000 0 . 0000 0 . 0000
-0 . 0007 0 . 0000 0 . 0013 -0 . 0002
-0 . 0066 0 . 0009 0 . 0036 0 . 0000
-0 . 0173 0 . 0011 0 . 0333 -0 . 0042
-0 . 1661 0 . 0224 0 . 0873 0 . 0013
-0 . 4251 0 . 0256 0 . 8415 -0 . 1085
-4 . 0000 0 . 5698 2 . 1380 0 . 0451
Dari hasil diatas, metode Jacobi belum konvergen setelah melakukan iterasi.
Untuk mengetahui penyelesaian SPL kita, selanjutnya gunakan metode langsung
dengan menggunakan invers matriks A. MATLAB memberikan penyelesaian
sebagai berikut.
>> X=inv(A)*b
X=
1.1039
2.9965
-1.0211
-2.6263
88
2 -1 10 0
0 3 -1 8
>> b=[6;25;-11;-11]
b=
6
25
-11
-11
>> X0=[-2;1;3;-1]
X0 =
-2
1
3
-1
>> [X,g,H]=jacobi(A,b,X0,T,N)
X=
1.1039
2.9965
-1.0211
-2.6263
g=
0.0795
0.2004
0.0797
0.1511
H=
-2 . 0000 1 . 0000 3 . 0000 -1 . 0000
1 . 1000 2 . 6364 -1 . 6000 -2 . 3750
1 . 9836 2 . 6023 -1 . 8564 -2 . 4386
1 . 0315 2 . 9494 -1 . 0365 -2 . 4579
1 . 1022 2 . 9426 -1 . 0114 -2 . 6106
1 . 1065 2 . 9930 -1 . 0262 -2 . 6049
1 . 1045 2 . 9895 -1 . 0200 -2 . 6256
1 . 1030 2 . 9965 -1 . 0220 -2 . 6236
89
1 . 1040 2 . 9856 -1 . 0209 -2 . 6264
1 . 1037 2 . 9966 -1 . 0212 -2 . 6260
1 . 1039 2 . 9964 -1 . 0211 -2 . 6264
1 . 1039 2 . 9965 -1 . 0211 -2 . 6263
1 . 1039 2 . 9965 -1 . 0211 -2 . 6263
1 . 1039 2 . 9965 -1 . 0211 -2 . 6263
Iterasi Jacobi konvergen (dengan menggunakan batas toleransi 0.0001) setelah
iterasi ke-13. Penyelesaian yang diberikan persis sama dengan yang dihasilkan
dengan metode langsung. Hampiran penyelesaian SPL kita adalah X = (1.1039
2.9965 -1.0211 -2.6263)T.
Layar MATLAB 7 (command window)
Dari contoh di atas bahwa urutan persamaan di dalam suatu SPL sangat
berpengaruh terhadap penampilan metode iterasi Jacobi. Kalau kita amati lebih
lanjut contoh di atas, kekonvergenan iterasi Jacobi pada strategi kedua
dikarenakan kita telah mengubah susunan SPL sedemikian hingga elemen-elemen
aiimerupakan elemen-elemen terbesar pada setiap baris. Dengan kata lain, apabila
matriks koefisien A merupakan matriks dominan secara diagonal, maka metode
90
iterasi Jacobi akan konvergen. Suatu matrik A berukuran n x n dikatakan
dominansecaradiagonal apabila
| aii || ai ,1 | ... | ai ,i 1 | | ai ,i 1 | ... | ai ,n | untuk i = 1, 2, 3, ..., n.
SIMPULAN
A. Simpulan
Dari pembahasan di atas kita dapat mengambil kesimpulan bahwa.
1. Urutan persamaan di dalam suatu SPL sangat berpengaruh terhadap
penampilan metode iterasi Jacobi.
2. Dengan menggunakan pemrograman MATLAB 7 dapat membantu
pemrograman dalam dalam metode numeric khususnya metode iterasiJacobi
B. Saran
Dari hasil pembahasan disarankan untuk.
1. Menggunakan metode iterasi Jacobi lebih efektif untuk memecahkan masalah
numerik dalam SPL berukuran besar.
2. Menggunakan program MATLAB 7 for Windows dalam membantu
pengolahan metode iterasi Jacobi.
91
PERSAMAAN GAUSS SEIDEL
A. Tujuan
a. Memahami Persamaan Gauss Seidel
b. Mampu Menentukan nilai akar persamaan dengan Gauss Seidel
c. Mampu membuat program untuk menentukan nilai akar dengan Metode Gauss
Seidel dengan Matlab
C. Dasar Teori
Suatu sistem persamaan linier terdiri atas sejumlah berhingga persamaan linear dalam
sejumlah berhingga variabel. Menyelesaikan suatu sistem persamaan linier adalah
mencari nilai-nilai variabel yang belum diketahui yang memenuhi semua persamaan linier
yang diberikan.
Rumus iterasi untuk hampiran ke-k pada metode iterasi Gauss-Seidel adalah sebagai
berikut. Untuk i = 1, 2, , n dan k = 1, 2, 3, ,
INPUT : n, A, b dan hampiran awal Y = (y1 y2 y3 ...yn)T, batas toleransi T dan maksimum
iterasi N.
92
OUTPUT : X = (x1 x2 x3 ...xn)T atau pesan "gagal".
LANGKAH-LANGKAH :
H = X0';
n = length(b);
X1 = X0 ;
for k=1:N,
for i=1:n,
S=b(i)-A(i,1:i-1)*X1(1:i-1)-A(i,i+1:n)*X0(i+1:n);
X1(i)=S/A(i,i);
end
g=abs(X1-X0);
err=norm(g);
93
relerr=err/(norm(X1)+eps);
X0=X1;
H=[H,X0'];
if(err<T)|(relerr<T),break,end
end
Contoh
10x1 - x2 +2x3=6
-x1+11x2-x3+3x4=25
2x1-x2+10x3-x4=-11
3x2-x3+8x4=15
Berikut pemakaian fungsi MATLAB seidel untuk penyelesaian soal di atas dan keluaran
yang diperoleh :
A=
10 -1 2 0
-1 11 -1 3
2 -1 10 -1
0 3 -1 8
94
>> b=[6;25;-11;15]
b=
25
-11
15
>> X0=[0;0;0;0]
X0 =
>> T=0.0001;N=25;
>> [X,g,H]=seidel(A,b,X0,T,N)
X=
1.0000
2.0000
-1.0000
1.0000
95
g=
1.0e-004 *
0.8292
0.2017
0.2840
0.1111
H=
Columns 1 through 6
0 0 0 0 0.6000 2.3273
Columns 7 through 12
Columns 13 through 18
Columns 19 through 24
Columns 25 through 28
Proses iterasi dapat diulangi sampai tingkat keakuratan yang diinginkan tercapai,
penyelesaian eksak contoh di atas adalah (1, 2, -1, 1).
96
Soal tugas di rumah:
Latihan di kelas :
x y 2z 9
2 x 4 y 3z 1
3x 6 y 5 z 0
Praktikum 1
LAPORAN SEMENTARA
Hari/Tanggal :
Nama :
Nim :
Kelas :
TTD Dosen/Asisten :
97
98
Chapter 5
PENDEKATAN FUNGSI
A. Tujuan
a. Software Matlab
C. Dasar Teori
Misalkan akan mencari pollinomial interpolasi P n (x) untuk menghampiri suatu fungsi
f (x) . Untuk ini data yang diberikan adalah (n + 1) titik ,
( x1 , f ( x1 )), ( x2 , f ( x2 )),........., ( xn1 , f ( xn1 )) .
99
Jika x x1 disubstitusikan ke dalam persamaan 1 di atas, maka semua suku pada
sisi kanan kecuali suku pertama bernilai nol, sehingga diperoleh :
f ( x1 ) Pn ( x1 ) a1 (2)
jika x x2 disubstitusikan ke dalam persamaan (1) , maka semua suku pada sisi kanan
kecuali dua suku pertama bernilai nol, sehingga diperoleh :
f ( x2 ) Pn ( x2 ) a1 a2 ( x2 x1 ) (3)
atau
f ( x2 ) a1 f ( x2 ) f ( x1 )
a2 (4)
x2 x1 x2 x1
f ( x3 ) Pn ( x3 ) a1 a2 ( x x1 ) a3 ( x3 x1 ) a3 ( x3 x1 )( x3 x2 ).
(5)
sehingga diperoleh :
f ( x3 ) a1 a2 ( x3 x1 )
a3
( x3 x1 )( x3 x2 )
f ( x 2 ) f ( x1 )
f ( x3 ) f ( x1 ) ( )( x3 x1 )
x 2 x1
=
( x3 x1 )( x3 x 2 )
f ( x3 ) f ( x1 ) f ( x 2 ) f ( x1 )
x3 x1 x 2 x1
= 6
( x3 x 2 )
100
dengan cara menyamakan penyebut ( x3 x2 )( x3 x1 )( x3 x1 ) , sehingga persamaan
terakhir menjadi :
f ( x3 ) f ( x1 ) f ( x 2 f ( x1 )
(6)
x x x 2 x1
a3 3 1
( x3 x1 )
f | x k | f ( x k ) k 1,2,3,....(n 1) (7)
f x k 1 , x k 2 f x k , x k 1
f x k , x k 1 , x k 2 k 1,2,3,....(n 1) (9)
xk 2 xk
4. ..
5. Selisih terbagi ke-j terhadap x k , x k 1 x k j didefinisikan secara rekursif.
f x k , x k 1 ,......, x k j
f x k 1 , x k 2 ,....., x k j f x k , x k 1 ,......, x k j 1
(10)
xk j xk
untuk k 1,2,3,...., n 1 j; j 1,2,3,...., n .
101
Misalkan fungsi f (x ) terdefinisi pada interval [a, b], dan misalkan x1 , x2 ,...., xn1 dan x n 1
bilangan yang berlainan pada interval [a,b], maka terdapat sebuah polynomial tunggal
P n (x) berderajat paling tinggi n yang memenuhi :
f ( xk ) Pn ( xk ) untuk k = 1, 2, 3, , (n+1)
dengan
Misalkan P n (x) adalah polynomial Newton yang diberikan oleh teorema Polinomial
Newton di atas, dan digunakan untuk menghampiri fungsi f (x ) , yaitu :
f ( x) Pn ( x) E n ( x) (12)
Jika f mempunyai turunan ke (n+1) pada interval [a,b], maka untuk setiap x [a, b] ,
terdapat bilangan c c( x) [a, b] , sedemikian sehingga fungsi galat E n (x) berbentuk :
102
x1 x2 x3 x n 1 xn x n 1
.
f [ x1 ] f [ x2 ] f [ x3 ] f [ x n 1 ] f [ xn ] f [ x n 1 ]
f [ x1 , x2 ] f [ x 2 , x3 ] f [ x3 , x 4 ] f [ xn1 , xn ] f [ xn , xn1 ]
f [ x1 , x2 , x3 ] f [ x 2 , x3 , x 4 ] f [ x3 , x 4 , x5 ] f [ xn1 , xn , xn1 ]
.
f [ x1 , x2 ,....., xn1 ]
Untuk keperluan komputasi nilai-nilai selisih terbagi Newton pada tabel 1 perlu disimpan
ke dalam matriks (array), misalkan D(j,k). Jadi koefisien-koefisien a k pada persamaan 11
menjadi :
D( j , k ) f [ x k , x k 1 ,..., ( x k j ], (14)
untuk 1 j (n 1) dan 1 k [( n 1) j 1]
103
D( j , k ) ( D( j 1, k 1) D( j 1, k )) /( x k j 1 x k )
b. a j D ( j ,1)
4. STOP
function D=selisihN(x,y)
n=length(x);
D(1,1:n)=y;
for j=2:n,
for k=1:n-j+1,
D(j,k)=(D(j-1,k+1)-D(j-1,k))/(x(k+j-1)-x(k));
end
end
Contoh 1:
Hitunglah selisih-selisih terbagi fungsi f sampai tingkat tiga, jika diketahui data titik-titik
sebagai berikut:
Selanjutnya, tentukan polynomial Newton yang menginterpolasikan titik-titik tersebut.
Tabel contoh 1:
xk 0 1 2 4
f ( xk ) 1 1 2 5
Penyelesaian :
Dari data pada tabel contoh 1 dapat disusun tabel selisih terbagi Newton untuk fungsi f
sebagai berikut. Nilai-nilai selisih terbagi Newton membentuk transpose matriks segitiga
104
atas. Dari hasil perhitungan tersebut, elemen-elemen pada kolom pertama matriks D
merupakan koefisien-koefisien polynomial Newton yang menginterpolasikan data
tersebut.
xk 0 1 2 4
f ( xk ) 1 1 2 5
D(1, k) 1 1 2 5
D(2, k) 0 1 3/2 0
D(3, k) 1/2 1/6 0 0
D(4, k) -1/12 0 0 0
Bila Contoh 1 di atas dikerjakan dengan implementasi program Matlab di atas, dan
dirunning dalam command windows, diproleh:
>> x=[0 1 2 4]
x=
0 1 2 4
>> y=[1 1 2 5]
y=
105
1 1 2 5
>> D=selisihN(x,y)
D=
Contoh 2:
Misalkan f ( x) x 3 4 x . Buatlah tabel selisih terbagi untuk fungsi f tersebut dengan
menggunakan titik-titik x1 1, x2 2,.x3 3, x4 4, x5 5, x6 6
Tentukan Polinomial Newton P3 ( x) dengan menggunakan notasi x1 , x 2 , x3 dan x 4
Penyelesaian:
Tabel contoh 2
xk x1 1 x2 2 x3 3 x4 4 x5 5 x6 6
f ( xk ) -3 0 15 48 105 192
D(1,k) -3 0 15 48 105 192
D(2,k) 3 15 33 57 87 0
D(3,k) 6 9 12 15 0 0
D(4,k) 1 1 1 0 0 0
D(5,k) 0 0 0 0 0 0
D(6,k) 0 0 0 0 0 0
106
Selanjutnya, diperoleh koefisien-koefisien P3 ( x) adalah pada kolom kedua pada tabel
contoh 2 di atas :
x=
1 2 3 4 5 6
y=
-3 0 15 48 105 192
>> D=selisihN(x,y)
D=
-3 0 15 48 105 192
3 15 33 57 87 0
6 9 12 15 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
TUGAS:
Buatlah tabel selisih terbagi untuk fungsi : f ( x) cos( x) dengan menggunakan 5 titik
x1 0, x2 1, x3 2, x4 3, x4 4, x5 5 . Tentukan Polinomial Newton Pk (x) , untuk k=
1,2,3,4.
107
108