Modul Praktikum Metode Numerik [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Modul Praktikum Metode Numerik



1



DAFTAR ISI Daftar Isi ............................................................................................................ 2 Pengenalan Matlab......................................................................................... 3 Pemrograman Sederhana dengan Matlab................................ 6 Chapter 1. Error Perhitungan Numerik.................................................. 19 Chapter 2. Penyelesaian Persamaan Non Linear ............................... Metode Grafik dan Tabulasi ........................................................... Metode Biseksi .................................................................................... Metode Newton Rhapson ............................................................... Metode Secant .................................................................................... Metode Regula Falsi .........................................................................



24 24 31 38 40 44



Chapter 3. Penyelesaian Persamaan Differensial Biasa .................. 50 Metode Euler ....................................................................................... 50 Metode Runge Kutta ........................................................................ 53 Chapter 4. Penyelesaian Sistem Persamaan Linear ......................... 56 Metode Iterasi Jacobi ...................................................................... 58 Metode Gauss Seidel ....................................................................... 66 Chapter 5. Pendekatan Fungsi ................................................................. 71 Metode Devide Difference ............................................................ 71



2



Pengenalan Matlab SEKILAS MATLAB Fasilitas-fasilitas pada MATLAB : 1. Current Directory Path Browser memungkinkan Anda melihat dan mengubah alamat Pencarian MATLAB (alamat tempat MATLAB mencari file-file yang diperlukan )



2. Workspace (Pencari tempat kerja) Workspace browser memungkinkan Anda melihat isi dari tempat kerja Matlab yang sedang aktif atau Workspace browser juga menyediakan keluaran dari perintah whos,



3. M-File editor/Debuger



3



Digunakan untuk menuliskan program berupa fungsi-fungsi dan disimpan sesuai dengan nama fungsinya dan dapat dilakukan eksekusi program. M-File dapat diaktifkan dengan mengklik File – New – M-File .



4. Command Windows Command windows dapat digunakan seperti kalkulator dan juga dapat untuk menuliskan operasi-operasi matematika, seperti operasi-operasi matriks, polinomial, dan yang berhubungan dengan image prosessing.



 Matematika Sederhana Seperti sebuah kalkulator, MATLAB mengerjakan matematika sederhana. Contoh : 5 + 4 = 9 Pi = 3.14



4



4 x 25 + 6 x 52 + 2 x 99 = 610 Apabila dikerjakan dengan Matlab :



 Operasi-operasi Aritmetik Dasar : Operasi Penambahan, a + b



Simbol +



Contoh 5+3



Pengurangan, a – b







23 – 12



Perkalian, a x b



*



3.14 * 5



Pembagian, a : b



/ atau \



6/3 = 3\6



Pemangkatan, ab



^



5^2



 Variabel MATLAB mempunyai aturan penamaan variabel yaitu : Aturan Penamaan Variabel  Nama variabel dibedakan antara huruf



Catatan & Contoh Items, items, itEms, dan ITEMS semuanya



kecil dan huruf kapital



adalah variabel yang berbeda



 Nama variabel harus diawali dengan



How_about, X123, a_b_c



huruf, diikuti dengan bilangan,huruf atau garis bawah. Karakter tanda baca tidak diperbolehkan.



PENDAHULUAN Variabel



5



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. Contoh berikut ini menampilkan program perhitungan sederhana dimanalangkah memasukkan data dilakukan dengan menggunakan kedua cara: tersebut. Kedua contoh tersebut dijalankan pada layar utama Matlab yang disebut command window. Contoh : Perhitungan luas segitiga L = 0.5 x a x t dengan cara inisialisasi data



>> topik='segi tiga' topik = segi tiga >> alas = 5 alas =



6



Contoh Perhitungan luas Segi Tiga A = 0.5 x a x t dengan cara input data.



>> topik = input('masukkan bangun geometri yang akan dicari luasnya: ') masukkan bangun geometri yang akan dicari luasnya: 'segi tiga' topik = segi tiga >> alas = input(' masukkan alas segi tiga: ') masukkan alas segi tiga: 5 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 :



7



>> A = 30 A = 30 >> disp(A) 30 Bila ingin menampilkan teks atau string4hasil yang ditampilkan adalah apa yang tertulis di antara tanda petik. Contoh :



>> disp('angkatan 45') 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 >> disp ([ 'Nilai sudut salah satu segitiga adalah =',num2str(x) ,'disebut segitiga siku-siku']) Nilai sudut salah satu segitiga adalah = 45 disebut segitiga siku-siku



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



8



Pemberian Komentar Pemberian komentar diawali dengan tanda persen ‘%’ merupakan pernyataan atau komentar atau keterangan atau catatan. Tujuannya adalah untuk memberi keterangan agar lebih mudah memahami maksud suatu bagian program. 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



% menghitung luas segi tiga siku-siku % masukkan a = alas dan t = tinggi % Luas = L = 0.5 * a * t 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.



9



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) 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. Contoh : Vektor dan Operasinya (i) Bentuk deret sederhana Bentuk umum penulisan data dengan pola tertentu atau deret yang sederhana: variabel = n : m dimana n = nilai awal, m = nilai akhir



>> a = 1:5 a = 1 2



3



4



5 10



>> a = [1:5] a = 1 2



3



4



5



(ii) Penggunaan increment Bentuk umum penulisan data dengan pola tertentu atau deret: variabel = n : i : m dimana n = nilai awal, m = nilai akhir, dan i = increment/langkah; bila I tidak didefinisikan, maka Matlab akan menggunakan default-nya yaitu 1.



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.



>> a = [1 2 3] % vector baris a a = 1



2



3



11



>> b = [2 1 0] % vector baris b b =



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



Contoh : Matriks dan Operasinya >> A=[1 2 3;2 1 3] % Operasi penambahan dan pengurangan matriks. Dimensi matriks harus sama A = 12 1 2 3 2 1 3 >> B=[3 3 3;2 2 2]



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



13



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 end Loopvariable merpakan nama variabel yang diberikan, sedangkan loopexpression biasanya memiliki bentuk n:m atau n:i:m. Perintah perintah di antara baris for dan end dikerjakan berulang-ulang dari nilai awal n sampai nilai akhir m, dengan increment (langkah) sebesar i. Contoh : Perhitungan pangkat 3 dari himpunan bilangan bulatdari 1 sampai 4 >> for n = 1:4 x(n) = n^3 end x =



1



x = x =



1



8



1



8



27



1



8



27



x = 64



Contoh : Operasi perkalian 2 buah vector



>> x = [1 2 3]; y = [4 5 6]; sum = 0; for i = 1:3 sum = sum + x(i)*y(i) end sum = 4



14



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



15



Harga = input('Harga 1 toples kue ='); Cacah_Kue = input('Berapa toples kue yang dibeli??? ='); if Cacah_Kue >= 4 bayar = ((Cacah_Kue*Harga)-(Cacah_Kue*Harga*0.01)) else bayar =Cacah_Kue*Harga end Program ditulis dalam m.file, disimpan dengan nama kue.m Apabila di_run hasilnya adalah: Harga 1 toples kue =25000 Berapa toples kue yang dibeli??? =3 bayar = 75000 Harga 1 toples kue =25000 Berapa toples kue yang dibeli??? =4 bayar = 99000 Jika terdapat 3 atau lebih pilihan, konstruksi if-else-end mengambil bentuk: if if_ekspresi1 perintah dikerjakan jika if_ekspresi1 benar elseif if_ekspresi2 perintah dikerjakan jika if_ekspresi2 benar elseif if_ekspresi3 perintah dikerjakan jika if_ekspresi3 benar elseif if_ekspresi4 perintah dikerjakan jika if_ekspresi4 benar elseif else perintah dikerjakan jika tidak ada if_ekspresi yang benar end



Contoh:



16



Untuk menentukan nilai akhir mahasiswa, untuk setiap mata kuliah diadakan ujian



KD 1+ KD 2+ K 3+ D 4 4 , Jika 70≤ Nilai Akhir 80 memperoleh A, jika



60≤ Nilai Akhir = 80 ket = 'A' else if 70 > x=1; >> e=1; >> while e > 0.00001, y=x; x=(y+2/y)/2 e=abs(x-y); end x= 1.5000 x= 1.4167 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. Definisi Kesalahan (Galat) Yaitu



kesalahan yang ditimbulkan karena proses pengukuran atau penggunaan



hampiran (aproksimasi). Berikut ini merupakan sumber galat (error) pada suatu hampiran penyelesaian yang diperoleh dengan menggunakan suatu metode komputasi numerik (Volkof,1990:8, dalam buku Komputasi Numerik dengan Matlab, 2005 oleh Sahid :3) adalah :



20



1. Model matematika untuk suatu fenomena alam 2. Galat bawaan dari masukan (parameter masukan) 3. Metode Penyelesaian 4. Adanya pembulatan dalam melakukan operasi-operasi aritmetika. Contoh : Galat Penjumlahan dan Pengurangan Teori : Dari hubungan nilai eksak diperoleh :



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 :



e ¯x + ¯y =e ¯x +e ¯y Galat relatif penjumlahan adalah :



r ¯x+ ¯y=



e ¯x + ¯y e¯x +e ¯y = ¯x + ¯y ¯x + ¯y



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 :



e x¯ −¯y =e x¯ −e ¯y Galat relatif pengurangan adalah :



r ¯x− ¯y =



e ¯x −¯y e¯x−e ¯y = ¯x − ¯y ¯x − ¯y



Dari persamaan terakhir dapat dipahami bahwa, apabila



¯x ≈ ¯y



maka galat relatif



pengurangan kedua hampiran akan semakin besar.



Misalkan



x 1 ,x 2 ,....,x n



digunakan sebagai hampiran untuk



X 1 , X 2 ,...., X n



dengan



maksimum galat yang mungkin untuk masing-masing hampiran adalah E. Dengan kata lain :



x i−E≤X i ≤x i + E ,



untuk



i=1,2,....,n



Dengan menjumlahkan nilai-nilai tersebut diperoleh :



21



n



n



n



∑ x i−nE≤∑ X i≤∑ xi + nE i =1



i=1



n



i=1



n



|∑ X i−∑ x i|≤nE



Atau



i=1



i=1



Jadi, galat jumlah n nilai hampiran tersebut adalah jumlah maksimum galat masingmasing hampiran. Contoh Kasus : Hitunglah jumlah



√ 1+ √2+. ..+ √100



dengan menggunakan pembulatan sampai dua



angka desimal (di belakang koma). Berapakah maksimum galat penjumlahan tersebut? Berapakah galat yang sesungguhnya? Penyelesaian : Kita dapat menggunakan Matlab untuk menghitung jumlahan tersebut. Dalam menggunakan Matlab perhitungan (menggunakan 16 angka signifikan). Untuk menghitung sampai dua angka desimal, masing-masing akar dikalikan 100 dan dibulatkan. Hasilnya sama dengan 100 kali jumlah tersebut. Implementasi dengan Matlab: a. Bukalah program Matlab b. Buatlah program berikut pada command windows > s=0; for k=1:100, s=s+round(100*sqrt(k)); end;s=s/100 s= 671.4800 > s=fprintf('%5.2f',s); 671.48 c. Jadi, perhitungan menggunakan dua angka desimal menghasilkan jumlah 671.48.



22



Oleh karena setiap akar dihitung sampai dua angka desimal, maka galat maksium masing-masig suku adalah jumlah tersebut adalah



−2



0.5×10 .



Oleh karena itu, maksimum galat hampiran



−2



100×0 . 5×10 =0. 5 .



d. Nilai yang sebenarnya dapat dihitung dengan menggunakan Matlab berikut, tulis program pada command windows : >> 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. Apabila dikerjakan dengan Matlab tanpa adalanya looping adalah sebagai berikut : >> format long g barisan=1:100; >> s1=sum(round(100*sqrt(barisan))/100); >> s2=sum(sqrt(barisan)); >> s1=s1 s1 = 671.48 >> s2=s2 s2 = 671.462947103148



23



Chapter 2 PENYELESAIAN PERSAMAAN NON LINEAR METODE GRAFIK DAN TABULASI A. Tujuan d. Memahami Metode Grafik dan Tabulasi e. Mampu Menentukan nilai akar persamaan dengan Metode Grafik dan Tabulasi f.



Mampu membuat program untuk menentukan nilai akar dengan Metode Grafik dan Tabulasi dengan Matlab



B. Perangkat dan Materi 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 tersebut memotong sumbu-x di x = x0. Persamaan atau fungsi f dapat berbentuk sebagai berikut: a. Persamaan aljabar atau polinomial



f(x) = pn(x) = anxn + an-1xn-1 + … + a1x + a0 b. Persamaan transenden Yaitu persamaan yang mengandung fungsi antara lain trigonometri, logaritma, atau eksponen Contoh: (i) ex + cos(x) = 0 (ii) ln(x) + log(x2) = 0 c. Persamaan campuran Contoh: (i) x3 sin(x) + x = 0 (ii) x2 + log(x) = 0



24



Untuk polinomial derajat dua, persamaan dapat diselesaikan dengan rumus akar persamaan kuadrat. Misalkan bentuk persamaan kuadrat adalah: ax2 + bx + c = 0 dapat dicari akar-akarnya secara analitis dengan rumus berikut.



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 untuk menyelesaikannya. Metode Numerik memberikan cara-cara untuk menyelesaikan bentuk tersebut, yaitu metode hampiran. Penyelesaian numerik dilakukan dengan 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 benar) dengan toleransi kesalahan yang diijinkan.Metode iterasi mempunyai keuntungan bahwa umumnya tidak sangat terpengaruh oleh merambatnya error pembulatan. a. LOKALISASI AKAR Lokasi akar persamaan tak linear diselidiki untuk memperoleh tebakan awal, yaitu: (a) Cara grafik Cara grafik ini dibedakan menjadi dua macam yaitu: (i) Cara grafik tunggal Misalkan f(x) = exp(-x) – x



25



Gambar-1 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'); axis([-0.2 1.5 -0.2 1.5]); 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.



26



(ii) Cara grafik ganda Misalkan f(x) = exp(-x) – x dan f1(x) = exp(x), f2(x) = x, maka f(x) = f1(x) - f2(x)



Gambar-2 Gambar-2 bisa dibuat dengan Matlab sbb. 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'); axis([-0.2 2.5 -0.2 1.5]);



27



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. (b) Cara tabulasi 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(' x f(x) tanda\n'); 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 if sign(f)> 0 tanda(i)='+'; fprintf(' %s\n',tanda(i)); else



28



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' fprintf('Akarnya adalah = %6.4f\n',x); else if i >1 if tanda(i)~= tanda(i-1) a=x-beda; b=x; fprintf('Akar ada di interval [%3.1f, %3.1f]\n', a,b); end; end; end; i=i+1; end; maka hasil tabulasinya adalah sbb. x f(x) tanda ------------------



29



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 Akar ada di interval [0.5, 0.6] Latihan. Cari akar persamaan tak linier dengan metode garfik dan tabulasi : 1.



f (x )=2 x3



3



2. f (x )=(2 x+1) coba dikembangkan dengan mencari sendiri persamaan tak linier yang dapatdiselesaikan dengan metode grafik dan tabulasi.



30



METODE BISEKSI A. Tujuan a. Memahami Metode Biseksi b. Mampu Menentukan nilai akar persamaan dengan Metode Biseksi c. Mampu membuat program untuk menentukan nilai akar dengan Metode Biseksi dengan Matlab B. Perangkat dan Materi d. Software Matlab e. Metode Biseksi C. Dasar Teori Metode Bisection (Setengah Interval) 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 potong dengan sumbu horisontal. Di dalam aplikasinya, langkah awal yang dilakukan adalah menetapkan nilai sembarang a dan b sebagai batas bawah dan batas atas interval nilai fungsi yang dicari. Titik a dan b memberikan harga bagi fungsi f(x) untuk x = a dan x = b. Selanjutnya adalah memeriksa apakah f(a).f(b) iterasi maksimum, akhiri program. 7. Jika f(a).f(m) 0.000001 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



32



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 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 Seterusnya sampai didapatkan f(m) 0.0 % jika nilai f(a) dan f(b) sama tanda error('pesan kesalahan:sama tanda') end for i=1:n m=(a+b)/2; y=f(m); disp([m y]) % menampilkan m dan f(m) ke layar if abs(y) >f=inline(‘x^x-5’) % mendefinisikan fungsi f (x )=x −5 >>x=TengahInterval(f,-1,3,15) % memanggil file tengahint.m a=-1,b=3, iterasi=15 dari dua perintah di atas MATLAB akan memberikan jawaban: my 1 -4 2 -1 2.50000000000000 4.88211768802618 2.25000000000000 1.20027091141992 2.12500000000000 -0.03821735673994 2.18750000000000 0.54161544380854 2.15625000000000 0.24250328354650 2.14062500000000 0.09992110005946 2.13281250000000 0.03030574169645 2.12890625000000 -0.00409119118124 2.13085937500000 0.01307328653945 2.12988281250000 0.00448256839976 2.12939453125000 0.00019357102259 2.12915039062500 -0.00194933919712 2.12927246093750 -0.00087801640156 x= 2.12927246093750



35



Metode Newton Raphson A. Tujuan g. Memahami Metode Newton Raphson h. Mampu Menentukan nilai akar persamaan dengan Metode Newton Raphson i.



Mampu membuat program untuk menentukan nilai akar dengan Metode Newton Raphson dengan Matlab



B. Perangkat dan Materi f.



Software Matlab



g. Metode Newton Raphson C. Dasar Teori Metode Newton Raphson 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 pada gambar berikut.



Garis singgung f(xi) memotong di x i+1. Dari diagram di atas terlihat garis singgung terhadap f(x) adalah:



f ' ( x i )=



f ( x i )−0 xi −x i+1



atau



36



f ' ( x i )=



f ( xi ) xi −x i+1



Sehingga



x i+1 =xi −



f ( xi ) '



f ( xi )



dimana i = 0, 1,2,....



Metode ini dikenal dengan Metode Newton-Raphson dan merupakan salah satu cara yang paling dikenal dalam metode penyelesaian fungsi f(x)=0. Keuntungan cara ini adalah sifat konvergensi kuadratik dalam proses iterasi. Contoh: Carilah akar dari fungsi



f (x )=x 3−3 x−20



maka



f ' ( x )=3 x 2−3



Dengan demikian rumus untuk menentukan akarnya adalah : 3



( x −3 x −20) x i+1 =xi − ( x 2−3)



Perkiraan Awal



x 0=5



Langkah 1:



f (5 )=5 3−3 (5)−20=90 f ' (5 )=3 (5 )2 −3=72 90 x 1=5− =3 .75 72 Langkah 2:



f (3 . 75)=3 .753 −3(3 . 75)−20=21 .84844 f ' (3 .75)=3(3 .75 )2 −3=39 . 1875 21 . 4844 x 2=3 .75− =3 . 201754 39 . 1875 Dan seterusnya Algoritma program untuk metode Newton-Raphson 1. Tentukan fungsi, x0, toleransi, dan jumlah iterasi maksimum. 2. Hitung xbaru = x – f’(x0)/f(x0). 3. Jika nilai mutlak fxbaru < toleransi, diperoleh xbaru sebagai hasil perhitungan; 4. jika tidak, lanjutkan ke langkah berikutnya. 5. Jika jumlah iterasi > iterasi maksimum, akhiri program. 6. x = xbaru, dan kembali ke langkah (2).



37



Flow Chart Metode Newton Raphson



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 = 38 f(x); 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



1.0000 -8.3806 -21.2455 2.0000 -5.5715 -583.4706 3.0000 -3.6161 -176.2331 4.0000 -2.0583 -56.4347 5.0000



0.2637 -22.5450



6.0000 -7.1781 -20.7728 7.0000 -4.7482 -368.3180 8.0000 -3.0029 -112.8032 9.0000 -1.4202 -38.0705 10.0000



4.6785 -18.6037



11.0000



3.5875 68.3674



12.0000



3.1548 15.4078



13.0000



3.0828



1.9339



14.0000



3.0809



0.0487



15.0000



3.0809



0.0000



16.0000



3.0809



0.0000



x= 3.0809



39



METODE SECANT A. Tujuan j.



Memahami Metode Newton Raphson



k. Mampu Menentukan nilai akar persamaan dengan Metode Secant l.



Mampu membuat program untuk menentukan nilai akar dengan Metode Secant dengan Matlab



B. Perangkat dan Materi h. Software Matlab i.



Metode Secant



C. Dasar Teori Metode Secant Merupakan perbaikan dari kekurangan yang dimiliki oleh metode newton, yaitu nilai turunan f’(x) didekati dengan beda hingga ( Δ ).



Penentuan nilai turunan fungsi dengan metode Secant. Dimana :



Δf ' ( x i ) f ( x i )−f ( xi −1 ) f ( x i )= → f ' ( xi )= Δx i x i−x i−1 '



Sehingga bila dimasukkan ke dalam persamaan Newton-Raphson :



x i+1 =xi −f ( xi )



x i−x i−1 f ( x i )−f ( x i−1 )



40



Contoh :



f (x )=x 3−3 x−20 x 1=6 →f (6 )=178 x 2=2→ f (2)=18 Untuk perkiraan awal Algoritma program untuk metode Secant adalah sebagai berikut: 1. Tentukan x0, x1 , toleransi, dan jumlah iterasi maksimum. 2. Hitung xbaru = x1 – f(x1)( x 1- x0)/f(x1) –f(x0). 3. Jika nilai mutlak (xbaru – x1) < toleransi, diperoleh tulisan xbaru sebagai hasil perhitungan; 4. jika tidak, lanjutkan ke langkah berikutnya. 5. Jika jumlah iterasi > iterasi maksimum, akhiri program. 6. x = xbaru, dan kembali ke langkah (2). Flow Chart Metode Secant :



41



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 Simpan fungsi di atas dengan naman MetodeSecant. Apabila di run lewat command windows hasilnya adalah : >> f=’x^3-3*x-20’



(diketikkan dahulu fungsinya)



f= x^3-3*x-20 >> f=inline(char(f)) (membuat fungsi x) f= Inline function: f(x) = x^3-3*x-20 >> x=MetodeSecant(f,6,2,15,0.000001) 0



2.3673 178.0000



1.0000



3.5874 -18.0000



2.0000



2.9446 -13.8346



3.0000



3.0581 15.4070



4.0000



3.0820 -3.3024



5.0000



3.0808 -0.5761



6.0000



3.0809



0.0299



42



7.0000



3.0809 -0.0002



x= 3.0809 Soal Tugas di rumah : Dikumpulkan (Buat LAPORAN PRAKTIKUM)



1.



f (x )=x 3 +x 2 −3 x −3=0 Carilah akar x dengan tebakan awal x 0=1 dan x 1=2



dengan program Melab dengan Metode :



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



: : : : :



43



44



METODE REGULA FALSI A. Tujuan a. Memahami Metode Regula Falsi b. Mampu Menentukan nilai akar persamaan dengan Metode Regula Falsi c. Mampu membuat program untuk menentukan nilai akar dengan Metode Regula Falsi dengan Matlab B. Perangkat dan Materi d. Software Matlab j.



Metode Regula Falsi



C. Dasar Teori Metode Regula Falsi atau Interpolasi Linier Metode ini sangat mirip dengan metode bisection, perbedaannya hanya dalam menentukan nilai m-nya.



m=b−



f (b )(b−a ) f (b )−f (a)



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.



45



4. Hitung nilai



m=b−



f (b )(b−a ) 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. 000001 Langkah 2: karena f(a).f(m)= (-1)( -1.1250000) > 0, maka a = m, sehingga: a=0.5, b=2



f (0. 5 )=0 .5 3−0 .52 −1=−1. 1250000 f (2 )=23 −22 −1=3 m=2−



3(2−0. 5 ) =0. 909091 3−(−1. 125 ) 3



2



f (0.909091 )=(0. 909091) −( 0. 909091) −1=|−1. 07513141|>0 .000001 Langkah 3: karena f(a).f(m)= (-1.1250000)( -1.07513141) > 0, maka a=m, sehingga: a=0.909091, b=2



f (0. 909091 )=(0 . 909091)3 −( 0. 909091)2−1=−1. 07513141 f (2 )=23 −22 −1=3 m=2−



3(2−0. 909091 ) =1 .196903 3−(−1. 07513141) 46



3



2



f (1. 196903)=(1. 196903) −(1. 196903) −1=|−0.717921331|>0 .000001 Langkah 4: karena f(a).f(m)= (-1.07513141)(-0.717921332) > 0, maka a=m, sehingga: a=1.196903, b=2



f (1 . 196903)=(1. 196903)3 −(1 . 196903)2 −1=−0 .717921332 3



2



f (2 )=2 −2 −1=3 m=2−



3(2−1. 196903) =1. 351979027 3−(−0 .717921332 ) 3



2



f (1 . 351979)=(1.351979) −(1 .351979) −1=|−0. 35663608|>0. 000001 Langkah 5: karena f(a).f(m)= (-0.717921332)( -0.35663608) > 0, maka a=m, sehingga: a=1.351979, b=2



f (1 . 351979)=(1. 351979)3 −(1 . 351979)2 −1=−0 . 35663608 f (2 )=23 −22 −1=3 m=2−



3 (2−1. 351979 ) =1. 420829976 3−(−0 .35663608 ) 3



2



f (1. 420829976 )=(1.420829976) −(1.420829976 ) −1=|−0. 1. 5044619|>0 .000001 Seterusnya sampai toleransi yang disyaratkan tercapai. Perhitungan dapat dilihat dalam tabel berikut : Langkah-langkah penyelesaian persamaan falsi



f (x )=x 3−x 2 −1 dengan metode regula



6



Dengan toleransi sebesar 10 , pada langkah ke 25 iterasi berhenti dengan hasil x=1.46557119092277. Di bawah ini gambar diagram alir untuk proses perhitungan dengan menggunakan metode regula falsi.



47



Diagram alir metode regula falsi.



48



Implementasi dalam MATLAB Berikut ini, kode dalam MATLAB untuk menyelesaikan persamaan non linier dengan metode regula falsi.



function m=regfalsi(f,a,b,n) %f=fungsi,a=nilai awal,b=nilai akhir,n=jumlah iterasi format long % format angka yang dipakai 15 digit di belakang koma fa = f(a); fb = f(b); if fa*fb > 0.0 error('pesan kesalahan:sama tanda') end disp(' m y ') for i=1:n m=b-((b-a)*fb/(fb-fa)); y=f(m); disp([m y]) if abs(y) >f=inline(‘x^3-x^2-1’) % mendefinisikan fungsi f(x)=x3-x2 -1 >>m=regfalsi(f,1,2,20) % memanggil file regfalsi.m a=1,b=2, iterasi=20 my 1.25000000000000 -0.60937500000000 1.43750000000000 -0.09594726562500 1.57812500000000 0.43980789184570 1.47265625000000 0.02505737543106 1.44628906250000 -0.06647393759340 1.45782470703125 -0.02700672448077 1.46153259277344 -0.01413060394978 1.46431350708008 -0.00441245589910 1.46639919281006 0.00291058710115 1.46483492851257 -0.00258446469666 1.46522599458694 -0.00121226003640



49



1.46551929414272 -0.00018242496629 1.46573926880956 0.00059033482427 1.46557428780943 0.00001073416219 1.46553304255940 -0.00013413711025 1.46554335387191 -0.00009792037557 1.46555108735629 -0.00007075735056 1.46555688746957 -0.00005038481518 1.46556123755454 -0.00003510526367 x= 1.46556123755454 Soal Tugas di rumah: Dikumpulkan (Buat LAPORAN PRAKTIKUM) 1.



f (x )=e x −4 x



dengan titik awal a = 0 dan b = 1, carilah nilai x dengan program Matlab dengan Metode : a. Biseksi b. Regula Falsi



Praktikum 2 LAPORAN SEMENTARA Hari/Tanggal : Nama: Nim: Kelas: TTD Dosen/Asisten:



Latihan di kelas : 1.



−x



f (x )=e −x



dengan titik awal a = 0 dan b = 1, carilah nilai x dengan program Matlab dengan Metode : a. Biseksi b. Regula Falsi



50



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 Misalkan . Apabila diketahui, maka kita dapat menghitung nilai . 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



.



Algoritma (Metode Euler) CONTOH : Misalkan akn menghitung hampiran penyelesaian masalah nilai awal :



51



Masalah nilai awal ini mempunyai penyelesaian eksak Berikut perintah-perintah dalam matlab dengan metode euler.



function [t,y]=euler4pdb(f,n,a,b,y0) %fungsi euler4pdb.m (metode euler); %menghitung hampiran penyelesaian masalah niai awal %y'=f(t,y), y(0) = y0 pada [a,b] %menggunakan n langkah dengan lebar langkah (b-a)/n h = (b-a)/n; t = [a]; y = [y0]; for k = 2:n+1, t = [t;a+(k-1)*h]; y = [y;y(k-1)+h*f(t(k-1),y(k-1))]; end Dalam command windows kita coba running f=inline('(t-y)/2') % fungsi ditulis di command windows dulu f= Inline function: f(t,y) = (t-y)/2 >> [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) Hasil Running program di atas dapat diperoleh grafik berikut :



52



Gambar 1 : solusi ekasakdan 3 hampiran penyelesaian PD



.



Berikut ini adalah perintah untuk menampilkan tabel perbandingan ketiga hampiran. Kolom pertama adalah nilai



kolom kedua nilai hampiran



lebar langkah h = 0.3, kolom ketiga nilai hampiran 0.15, kolom keempat nilai hampiran kolom terakhir adalah nilai eksaknya.



dengan dengan lebar langkah



dengan lebar langkah h = 0.06, dan



tabel=[t1 y1 y2(1:2:21) y3(1:5:51),ye3(1:5:51)] tabel = 0 1.0000 1.0000 1.0000 4.0000 0.3000 0.8500 0.8669 0.8762 3.5821 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 :



53



Dengan lebar langkah h = 0.05. 2. Gunakan metode Euler untuk mendapatkan hampiran penyelesaian masalah nilai awal di bawah ini di sepuluh titk dengan lebar langkah (a). h = 0.1, (b). h = 0.01, (c). h = 0.001



Jelaskan bahwa solusi eksak PD adalah :



Gambar grafik solusi eksak tersebut bersama titik-titik hampiran yang Anda peroleh di a,b, dan c.



Metode Runge – Kutta Pada Metode Euler nilai



y k+1



dihitung dengan menggunakan



y k memakai



rumus :



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 untuk mendapatkan keakuratan yang diinginkan. Galat di dalam metode Runge – Kutta jauh lebih kecil daripada galat Metode Euler. 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 interval



(t k , tk +h )



dan mengombinasikan nilai-nlai ini sedemikian



sehingga diperoleh keakuratan yang baik pada hampiran berikutnya, a. Metode Runge-Kutta orde-dua (RK2) : Metode Heun Algoritma (Metode Heun)



54



y k+1 .



y'=f (t , y)



Menghitung hampiran penyelesaian masalah nilai awal



dengan



y (t 0 )= y 0 pada [t 0 ,b] .



t 0 ,b, y 0 ,h, dan fungsi f Output : (t k , y k ),k=1,2,. ...... ,n Input :



Langkah-langkah : 1. hitung n=(b−t 0 )/h 2. for k = 1,2,3,….., n Hitung



t k=t k −1 +h



Hitung



S 1 =f (t k −1 , y k−1 ),



S 2 =f (t k , y k −1 +h∗S1 ), h y k = y k −1 + ( S1 +S 2 ) 2 Hitung Hitung



3. Selesai . Pada metode ini berikut:



y k+1 dihitung dengan menggunakan langkah – langkah sebagai



S 1 =f (t k , y k )



(1)



S 2 =f (t k + h , y k +hS 1 )



(2)



y k +1= y k +h



( S1 + S 2 ) 2



(3)



untuk k = 0, 1, 2, …., dengan



(t0 , y 0 ) diktehui.



Pada perhitungan-perhitungan di atas,



S2



(t k +h , y k + hS1 )



gardien di titik



S1



adalah gradient di titik



dan rata-rata



y k+1 . untuk menghitung hampiran selanjutnya



S1



dan



S2



(t k , y k ) , digunakan



Aturan di atas diperoleh sebagai berikut: Misalkan kita akan menyelesaikan masalah nilai awal :



y' (t )=f (t , y(t )) pada [a,b] dengan y (t 0 )= y 0 t ,y Jika titik (t k , y k ) diketahui, maka titik solusi ( k +1 k +1 ) dapat diperoleh dengan [t k ,t k+1 ] , mengintegralkan y' (t ) pada t k +1



t k +1



∫ f (t , y (t ))dt=∫t tk



k



y '(t )dt= y (t k +1 )− y (t k )



atau t



y(t k +1 )= y(t k )+∫tk +1 y '(t )dt k



55



dengan menggunakan aturan trapezium dengan lebar langkah menghitung hampiran suku integral, diperoleh hampiran :



h=tk +1 −t k untuk



h [ f (t k , y k )+f (tk +1 , y k +1 )] 2 y k+1 . suku kedua pada ruas kanan memuat nilai ruas kiri , y (t k +1 )≈ y(tk )+



Kita dapat menggunakan Metode Euler untuk menaksir sehingga diperoleh Metode Heun :



y (t k +1 )= y(t k )+



y k+1



pada ruas kanan,



h f (t , y )+f (t k +1 , y k +hf (tk , y k )) ] 2[ k k



Galat pada setiap langkah dalam Metode Heun (Atau Metode RK2) sama dengan galat aturan trapezium, yakni



y n( εk )



h3 12



oleh karena itu, galat setelah n langkah pada Metode Heun menjadi : n







k =1



y n (ε k )



h 3 t n−t 0 n ≈ y (ε )h3 =O (h 2 ) 12 12 h



Dengan demikian kita peroleh bahwa galat pada setiap langkah (iterasi) dalam



O(h3 ) . Sedangakan galat yang terakumulasi pada 2 akhir setiap lankah adalah O(h ) . Metode Heun (RK2) adalah



Contoh : Gunakan Metode Heun (RK2) untuk menyelesaikan masalah nilai awal :



y '=(t− y )/2 pada [0, 3] dengan y(0) = 1, dengan menggunakan lebar langkah 1 1 1 h=1, , , dan 2 4 8 Penyelesaian : Rumus Iterasi Heun untuk hampiran solusi PD tersebut adalah :



y k +1= y k +



h t k − y k t k +1− y k −h(t k − y k )/2 3 + , k=0,1,2 , .. .. . .. .. , dengan t 0 =0 , y 0 =1 2 2 2 h



(



)



Penyelesaian eksak masalah nilai awal di atas adalah : −t /2



y=e



+t−2



.



Kode Matlab berikut ini akan menghasilkan nilai- nilai langkah yang ditentukan :



56



y k untuk lebar-lebar



Chapter 4 PENYELESAIAN SISTEM PERSAMAAN LINEAR 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. Metode-metode solusi numerik yang banyak dipakai, dapat diklasifikasikan sebagai: 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 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. 2. MetodeTak-Langsung (Metode Iteratif) a. Metode Jacobi, prinsipnya: merupakan metode iteratif yang melakuakn perbaharuan nilai x yang diperoleh tiap iterasi (mirip metode substitusi berurutan, successive substitution),



57



b. Metode Gauss-Seidel, prinsipnya: mirip metode Jacobi, namun melibatkan perhitungan implisit, c. Metode Successive Over Relaxation (SOR), prinsipnya: merupakan perbaikan secara langsung dari Metode Gauss- Seidel dengan cara menggunakan faktor relaksasi (faktor pembobot) pada setiap tahap/proses iterasi. 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 yang lebih baik dan waktu komputasi yang lebih cepat dari metode Eliminasi Gauss dan metode Dekomposisi LU. Penggunaan pendekatan dengan pemrograman MATLAB, salah satu software komputer yang dapat digunakan untuk memberikan solusi komputasi numerik. Karena metode – metode numerik dengan bahasa pemrograman yang sederhana, namun dapat menyelesaikan permasalahan yang dihadapi oleh mereka yang bergerak dalam bidang matematika maupun aplikasi matematika. 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.



58



E.



Manfaat Dapat diambil manfaatnya sebagia berikut. 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 Metode ini merupakan suatu teknik penyelesaian SPL berukuran n x n, AX = b, secara iteratif. Proses penyelesaian dimulai dengan suatu hampiran awal terhadap penyelesaian, X0, kemudian membentuk suatu serangkaian vector X1, X2, … yang konvergen ke X. 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). B.



Algoritma Iterasi Jacobi Untuk menyelesaikan system persamaan linier AX = b dengan A adalah matriks koefisien n x n, b vector konstan n x 1, dan X vektor n x 1 yang perlu dicari. INPUT : n, A, b, dan Himpunan awal Y = (y1 y2 y3…yn)T, batas toleransi T, dan maksimum iterasi N. OUTPUT: X = (x1 x2 x3 ..xn)T, atau pesan “ gagal “. LANGKAH – LANGKAH : 1. set penghitung iterasi ke =1 2. WHILE k ≤ n DO



(a) FOR i = 1, 2, 3, ..., n, hitung (b) Set X = (x1 x2 x3 ..xn)T



x i=



bi −∑ j≠i aij y j aii



‖X−Y‖



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



59



C.



Flow Chart Iterasi Jacobi



START



AX = b



Input A, b, X0, T, N



[X, g, H]= jacobi(A,b,X0,T,N)



xi = ( x1 x2 x3 …xn)



STOP



D. Iterasi Jacobi dengan Menggunaan Matlab 7 Jika x(k)menyatakan hampiran ke k penyelesaian SPL , AX = b, dengan x(0)adalah hampiran awal, maka metode iterasi Jacobi dapat dinyatakan sebagai berikut :



x (k )= i



1 b −∑ a x aii i j≠i ij j( k−1)



(



)



, i = 1, 2, 3, ..., n ; k = 1, 2, 3, ..



Dalam bentuk matriks, rumus iterasi dapat dinyatakan sebagai X(k) = D-1(b-(L+U)X(k-1)), Dengan A = L + D + U ( L matriks segitiga bawah, D matriks diagonal, U Matriks segitiga atas). Berikut adalah gambaran bagaimana penggunaan metode iterasi Jacobi dengan sebuah contoh. Misalkan kita ingin menyelesaikan SPL. 10x1 – x2 +2 x3 = 6 -x1 + 11x2 – x3 + 3x4 = 25 2x1 – x2 + 10x3 – x4 = - 11



60



3x2 – x3 + 8x4 = 15 Mula – mulakita nyatakan setiap variabel dalam ketiga variabel yang lainnya 1. Nyatakan x1 dari persamaan (P1) dalam x2, x3, dan x4, 2. Nyatakan x2 dari persamaan (P2) dalam x1, x3, dan x4, 3. Nyatakan x3 dari persamaan (P3) dalam x1, x3, dan x4, 4. Nyatakan x4 dari persamaan (P4) dalam x1, x2, dan x3. Hasilnya adalah SPL



x3 3 + 10 5 5 x x 3 x 25 x 2= 1 + 3 − 4 + 11 11 11 11 −x x x 11 x 3= 1 + 2 + 4 − 5 10 10 10 −3 x 2 x 3 15 x4= + + 8 8 8 x 1=



x2







Misalkan kita pilih hapiran penyelesaian awal (0 0 0 0) T, maka hampiran pertama terhadap penyelesaian SPL tersebut adalah



3 x 1= =0 . 6 5 =1 25 x 2= =2 .2727 11 =2 11 x 3= =−1 .1 10 = -1 15 x 4 = =1. 8750 8 =2



Sekarang dengan menggunakan nilai – nilai ini pada ruas kanan persamaan (P5) – (P8), kita dapat menghitung hampiran kedua. Proses ini dapat diulangulang 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 Setelah iterasi ke-8 diperoleh hampiran penyelesaian x = (1.00063 1.99867 -0.999036 0.998888) T bandingkan dengan penyelesaian eksaknya, yakni x = (1 2 -1 1)T.



61



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



E.



Penulisan Logaritma dalam Layar Editor MATLAB 7 function [X1,g,H]= jacobi(A,b,X0,T,N) H = X0'; n = length(b); X1 = X0; for k=1:N, for i = 1:n, S = b(i)-A(i,[1:i-1,i+1:n])*X0([1:i-1,i+1:n]); X1(i)=S/A(i,i); end g = abs(X1-X0); err = norm(g); relerr = err/(norm(X1)+ eps); X0 = X1; H = [H;X0']; if (err 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 0 >> T=.00001 T= 1.0000e-005 >> N=25 N= 25 >> [X,g,H]=jacobi(A,b,X0,T,N) X= 1.0e+017*



63



-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 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 Apakah metode jacobi tidak dapat menghasilkan penyelesaian tersebut? Dengan mengubah susunan SPL, yakni persamaan pertama dan kedua dipindah



64



menjadi persamaan ketiga dan keempat, metode Jacobi ternyata berhasil memberikan penyelesaian tersebut, sebagaimana terlihat pada hasil keluaran MATLAB berikut. >> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 0;0 3 -1 8] A= 10 -1 2 0 -1 11 -1 3 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 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



65



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 elemenelemen aiimerupakan elemen-elemen terbesar pada setiap baris. Dengan kata lain, apabila matriks koefisien A merupakan matriks dominan secara diagonal, maka metode iterasi Jacobi akan konvergen. Suatu matrik A berukuran n x n dikatakan dominansecaradiagonal apabila



|aii|>|ai, 1|+. . .+|ai, i−1|+|ai, i+1|+...+|a i,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.



66



2. Menggunakan program MATLAB 7 for Windows dalam membantu pengolahan metode iterasi Jacobi.



67



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 B. Perangkat dan Materi a. Software Matlab b. Metode Iterasi Gauss Seidel C. Dasar Teori Metode iterasi Gauss-Seidel untuk menyelesaikan sistem persamaan linear 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, …,



Algoritma Iterasi Gauss-Seidel Untuk menyelesaikan sistem persamaan linier AX = b dengan A adalah matriks koefisien n × n , b vektor konstanta n × 1 , dan X vektor n × 1 yang perlu di cari. INPUT : n, A, b dan hampiran awal Y = (y1 y2 y3 ...yn)T, batas toleransi T dan maksimum iterasi N. OUTPUT : X = (x1 x2 x3 ...xn)T atau pesan "gagal". LANGKAH-LANGKAH : 1. Set penghitung iterasi k = 1 2. WHILE k> b=[6;25;-11;15] b= 6 25 -11 15



>> X0=[0;0;0;0] X0 = 0 0 0 0 >> T=0.0001;N=25; >> [X,g,H]=seidel(A,b,X0,T,N) X= 1.0000



70



2.0000 -1.0000 1.0000 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 -0.9873



0.8789



1.0302



2.0369 -1.0145



0.9843



0.9984



2.0003



Columns 13 through 18 1.0066



2.0036 -1.0025



1.0009



Columns 19 through 24 -1.0003



0.9998



1.0001



2.0000 -1.0000



1.0000



Columns 25 through 28 1.0000



2.0000 -1.0000



1.0000



Proses iterasi dapat diulangi sampai tingkat keakuratan yang diinginkan tercapai, penyelesaian eksak contoh di atas adalah (1, 2, -1, 1).



71



Soal tugas di rumah: Dikumpulkan (Buat LAPORAN PRAKTIKUM) Carilah akar-akar persamaan berikut dengan Metode Gauss-Seidel dengan Matlab :



3 x1 −0. 1x 2 −0 .2 x 3 =7 .85 0 .1 x 1 +7 x 2−0. 3 x 3=−19. 3 0 .3 x 1 −0.2 x 2 +10 x 3=71 . 4



Latihan di kelas : Carilah akar-akar persamaan berikut dengan Metode Gauss-Seidel dengan Matlab:



x+ y+2z=9 2x+4 y−3 z=1 3 x+6 y−5 z=0 Praktikum 1 LAPORAN SEMENTARA Hari/Tanggal Nama Nim Kelas TTD Dosen/Asisten



: : : : :



72



Chapter 5 PENDEKATAN FUNGSI DEVIDE DIFFERENCE (SELISIH TERBAGI) A. Tujuan a. Memahami Polinomial Newton (Selisih Terbagi) b. Mampu menentukan koefisien-koefisien Polinomial Newton c. Mampu menentukan koefisien-koefisien Polinomial Newton dengan Matlab B. Perangkat dan Materi a. Software Matlab b. Metode Selisih Terbagi C. Dasar Teori Misalkan akan mencari pollinomial interpolasi



P n ( x) untuk menghampiri suatu fungsi



f (x ) . Untuk ini data yang diberikan ( x1 , f ( x 1 )),( x 2 , f ( x2 )), . .. .. .. . . ,(x n+1 , f (x n+1 )) .



adalah



(n



+



1)



titik



,



Misalkan polynomial interpolasinya kita tulis :



Pn ( x )=a1 +a2 (x −x1 )+a3 ( x−x 1 )( x−x 2 )+. .. .. .+a n+1 ( x−x1 )( x−x 2 ). .. . .( x−x n ) (1)



a1 ,a 2 ,........,a n ,an+1 . Pn ( x k )=f ( x k ) untuk 1≤k ≤( n+1)



dan kit a ingin mencari nilai-nilai koefisien Perhatikan bahwa di sini berlaku :



x=x



1 Jika disubstitusikan ke dalam persamaan 1 di atas, maka semua suku pada sisi kanan kecuali suku pertama bernilai nol, sehingga diperoleh :



f (x 1 )=Pn ( x 1 )=a1



(2)



x=x



2 jika disubstitusikan ke dalam persamaan (1) , maka semua suku pada sisi kanan kecuali dua suku pertama bernilai nol, sehingga diperoleh :



73



f (x 2 )=Pn ( x 2 )=a1 + a2 ( x 2 −x 1 )



(3)



atau



a2 =



f ( x 2 )−a 1 f ( x 2 )−f ( x1 ) = x 2 −x 1 x 2 −x 1



(4)



P n ( x) dihitung pada x=x 3 , maka akan dperoleh persamaan



Jika



f (x 3 )=P n ( x 3 )=



a1 + a2 (x− x1 )+a3 ( x 3−x 1 )+a3 ( x 3−x 1 )( x3 −x 2 ).



(5) sehingga diperoleh :



a3 =



f ( x 3 )−a1−a2 ( x 3 −x 1 ) ( x 3 −x 1 )( x 3 −x 2 ) f ( x 2 )−f ( x 1 ) f ( x 3 )−f ( x1 )−( )( x3 −x 1 ) x 2 −x 1 ( x3 −x 1 )( x3 −x 2 )



=



[ =



f ( x 3 )−f ( x 1 ) f ( x 2 )−f ( x1 ) − x 3 −x 1 x 2 −x 1 ( x 3 −x 2 )



6



dengan cara menyamakan penyebut terakhir menjadi :



a3 =



[



]



f ( x 3 )−f ( x1 ) f ( x 2 −f ( x 1 ) − x 3 −x 1 x2 −x 1



( x3 −x 2 )( x3 −x 1 )( x3 −x 1 ) , sehingga persamaan



]



(x 3 −x 1 )



(6)



Berikut diperkenalkan pengertian selisih-selisih terbagi dari suatu fungsi : 1. Selisih terbagi ke nol terhadap



xk



f |x k|=f (x k ) 2. Selisih terbagi pertma terhadap



k=1,2,3,....(n+1) x k dan x k+1 74



(7)



f |x k , x k +1|=



f |x k +1|−f |x k| x k +1 −x k



3. Selisih terbagi kedua terhadap



f |x k , x k +1 , x k +2|=



k=1,2,3,....n



x k , x k+1 dan x k+2



f|x k+1 , x k +2|−f |x k , x k +1| x k +2 −x k



k=1,2,3,....(n−1)



4. …………….. 5. Selisih terbagi ke-j terhadap rekursif.



f [ x k , x k+1 , .. .. .. , x k+ j ]=



xk ,



x k+1



……



x k+ j



(9)



didefinisikan secara



f [ x k +1 , x k+2 , . .. .. , x k+ j ]−f [ x k , x k+1 , .. . .. . , x k+ j−1 ] x k+ j −x k



(10) untuk



(8)



k=1,2,3,....,n+1− j; j=1,2,3,....,n



.



Teorema POLINOMIAL NEWTON Misalkan fungsi dan



x n+1



f (x )



terdefinisi pada interval [a, b], dan misalkan



x 1 ,x 2 ,....,x n+1



bilangan yang berlainan pada interval [a,b], maka terdapat sebuah



P n ( x) berderajat paling tinggi n yang memenuhi : f (x k )=P n ( x k ) untuk k = 1, 2, 3, , (n+1)



polynomial tunggal



Polinomial Newton adalah :



Pn ( x )=a1 +a2 (x −x1 )+a3 ( x−x 1 )( x−x 2 )+. ..+a n+1 ( x−x 1 )( x−x 2 ).. .. .( x−x n ) (11) dengan



a k=f [ x1 , x 2 , .. . .. , x k ]



untuk



k=1,2,3,.....,( n+1)



Koefisien polynomial Newton merupakan selisih terbagi fungsi yang dihampiri. AKIBAT HAMPIRAN NEWTON



75



P n ( x) adalah polynomial Newton yang diberikan oleh teorema Polinomial Newton di atas, dan digunakan untuk menghampiri fungsi f (x ) , yaitu : Misalkan



f (x )=Pn (x )+E n ( x) (12)



f x∈[ a,b]



Jika



mempunyai turunan ke (n+1) pada interval [a,b], maka untuk setiap



c=c( x)∈[ a,b]



, terdapat bilangan



, sedemikian sehingga fungsi galat



En ( x ) berbentuk : ( x−x 1 )(x −x2 ).. . .(x −xn+1 )f ( n+1 ) (c ) En ( x )= (n+1)!



(13)



Cara menghitung selisih-selisih terbagi Newton dengan menggunakan tabel: Tabel 1 : Cara menghitung selisih terbagi Newton



x3



x1



x2



f [ x1 ] f [ x 1 , x2 ]



f [ x3 ] f [ x 2 , x3 ] f [ x3 , x4 ] … f [ x 2 , x3 , x 4 ] f [ x 3 , x 4 , x 5 ] …



…… . …



f [ x2 ]



f [ x 1 , x2 , x 3 ] …….



f [ x 1 , x2 ,....., x n+1



… ]…



… …



x n−1



xn



x n+1



f [ x n−1 ] f [ xn ] f [ x n+1 ] f [ x n−1 , x n ] f [ x n , x n+1 ] f [ x n−1 ,x n , x n+1 ]



… …



Untuk keperluan komputasi nilai-nilai selisih terbagi Newton pada tabel 1 perlu disimpan ke dalam matriks (array), misalkan D(j,k). Jadi koefisien-koefisien persamaan 11 menjadi :



D( j ,k )=f [ x k , x k+1 ,...,(x k+ j ], untuk



1≤ j≤(n+1)



dengan demikian



dan



j = 1,2, …, (n+1)



Algoritma SELISIH TERBAGI NEWTON INPUT



:



pada



(14)



1≤k ≤[( n+1)− j+1]



a j =D( j ,1)



ak



(( x 1 ,f ( x 1 )),( x 2 ,f ( x 2 )),. .. ,( x n+1 ,f ( x n+1 )) 76



a ,a ,a ,....,a n+1



OUTPUT : 1 2 3 LANGKAH-LANGKAH : 1. for k = 1,2,…., (n+1) D(1,k) =



f (x k )



a1 =D(1,1) 2. 3. For j = 1, 2, …, (n+1) a. For k = 1, 2, …, ((n+1) – j + 1) b.



D( j ,k )=( D( j−1, k+1)−D ( j−1 ,k ))/( x k+ j−1−x k ) a j =D( j ,1)



4. STOP



Implementasi dalam MATLAB:



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 f (x k )



0



1



2



4



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



77



f (x k ) D(1, k) D(2, k) D(3, k) D(4, k)



1



1



2



5



1 0 1/2 -1/12



1 1 1/6 0



2 3/2 0 0



5 0 0 0



Polinomial Newton yang dicari adalah :



1 1 P3 ( x)=1+ x( x−1 )− x( x−1 )( x−2) 2 12



Contoh Cara Mencari Koefisien :



D(2,1)= Misal untuk D(2,1), berarti j = 2 , k =1



D(1,2)−D(1,1) 1−1 = =0 x 2 −x 1 1−0



D(2,2)= Misal untuk D(2,2), berarti j = 2 , k = 2 …dst



D(1,3 )−D(1,2) 2−1 = =1 x 3 −x 2 2−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= 1



1



2



5



>> D=selisihN(x,y) D= 1.0000 1.0000 2.0000 5.0000 0 1.0000 1.5000 0 0.5000 0.1667 0 0 -0.0833 0 0 0 yang angka (hijau adalah koefisien-koefisien Newton)



Contoh 2:



78



f (x )=x 3−4 x . Buatlah tabel selisih terbagi untuk fungsi f tersebut dengan x 1=1 , x 2=2 , . x 3 =3 , x 4 =4 , x 5 =5 , x6 =6 menggunakan titik-titik Misalkan



Tentukan Polinomial Newton



x4



P3 ( x) dengan menggunakan notasi x 1 , x 2 , x 3 dan



Penyelesaian: Tabel contoh 2



xk f (x k )



x 1=1



D(1,k) D(2,k) D(3,k) D(4,k) D(5,k) D(6,k)



x 2=2



x 3=3



x 4 =4



0



15



48



105



192



-3 3 6 1 0 0



0 15 9 1 0 0



15 33 12 1 0 0



48 57 15 0 0 0



105 87 0 0 0 0



192 0 0 0 0 0



P3 ( x) adalah pada kolom kedua pada tabel



P3 ( x)=−3+3( x−1 )+6( x−1)( x−2)+1( x−1)( x−2 )(x−3) Penyelesaian dengan implementasi Matlab: >> x=[1 2 3 4 5 6] x= 2



3



4



5



6



>> y=[-3 0 15 48 105 192] y= -3



0



x 6 =6



-3



Selanjutnya, diperoleh koefisien-koefisien contoh 2 di atas :



1



x 5=5



15



48 105 192



>> D=selisihN(x,y) D= -3 0 15 3 15 33 6 9 12 1 1 1 0 0 0 0 0 0



48 57 15 0 0 0



105 192 87 0 0 0 0 0 0 0 0 0



79



TUGAS: Buatlah tabel selisih terbagi untuk fungsi :



f (x )=cos(x )



dengan menggunakan 5 titik



x 1=0 , x 2 =1, x 3 =2 , x 4 =3 , x 4 =4 , x5 =5 . Tentukan Polinomial Newton Pk (x ) ,



untuk k= 1,2,3,4.



80