Anda di halaman 1dari 8

MAKALAH PERSAMAAN DIFERENSIAL NUMERIK

METODE SHOOTING

Dosen Pengampu:

Prof. Dr. Agus Suryanto, M.Sc.

Disusun oleh kelompok 7 :

1.

PROGRAM STUDI MATEMATIKA


JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS BRAWIJAYA
MALANG
2019

BAB I
PENDAHULUAN

A. Latar Belakang

Persamaan diferensial adalah suatu persamaan yang mengandung turunan dari satu
atau beberapa variabel tak bebas terhadap satu atau beberapa variabel bebas. Teori persamaan
diferensial sudah cukup berkembang, dan metode yang digunakan bervariasi sesuai dengan
jenis persamaan.

Terdapat dua macam cara dalam menyelesaikan persamaan diferensial. Pertama


secara analitis. Cara ini biasanya digunakan untuk menyelesaikan persamaan diferensial yang
mempunyai bentuk sederhana. Kedua, secara numeric. Cara ini hanya digunakan dalam
menyelesaikan persamaan diferensial yang sulit dikerjakan secara analitis.

Metode numeric merupakan suatu bagian ilmu matematika. Khususnya matematika


rekayasa yang menggunakan bilangan untuk menirukan proses matematika, proses
matematika ini selanjutnya dirumuskan untuk menggambarkan keadaan sebenarnya.
Penyelesaian masalah matematika secara umum dapat diklarifikasikan atas analisis yaitu
penyelesaian yang dihasilkan akan memenuhi persamaan semula secara eksak, numeric yaitu
penyelesaian yang dihasilkan berupa hampiran, dan secara simulasi,

Solusi-solusi yang diberikan dalam metode numeric merupakan nilai yang mendekati
nilai eksak, sehingga nilai-nilai tersebut disebut sebagai nilai hampiran/pendekatan. Dalam
penyelesaiannya, nilai kesalahan (Analisis Error) harus cukup kecil terhadap tingkat
kesalahan yang ditetapkan.

BAB II
PEMBAHASAN
A. Dasar teori

Salah satu masalah kondisi batas sederhana adalah persamaan diferensial orde dua
dengan kondisi batas Dirichlet.

𝑦 ′′ (𝑥) = 𝑓 (𝑥, 𝑦(𝑥), 𝑦 ′ (𝑥)) , 𝑎<𝑥<𝑏


(2.1)
𝑦(𝑎) = 𝛼, 𝑦(𝑏) = 𝛽

Persamaan diferensial orde dua dapat dinyatakan sebagai system persamaan


diferensial orde satu. System persamaan diferensial orde satu merupakan masalah nilai awal
jika dua kondisi diberikan pada nilai 𝑥 yang sama, misalnya 𝑢(𝑎) = 𝑢𝑎 dan 𝑢′ (𝑎) = 𝑢′𝑎 .
Persamaan diferensial orde dua (2.1) juga dapat dinyatakan dalam bentuk system
persamaan diferensial orde satu, tetapi kondisi yang diberikan berada pada 𝑥 yang berbeda,
yaitu pada 𝑥 = 𝑎 dan 𝑥 = 𝑏. Oleh karena itu, masalah kondisi batas (2.1) tidak dapat
diselesaikan secara langasung dengan metode penyelesaian masalah nilai awal. Pada materi
ini akan dibahas mengenai metode tembakan untuk menyelesaikan (2.1). metode tembakan
merupakan metode yang di dalamnya memanfaatkan metode penyelesaian masalah nilai awal.

A.1 Pengantar Metode Tembakan

Persamaan (A.1) dapat ditulis dalam bentuk system persamaan diferensial orde satu

𝑦′ = 𝑧
𝑧 ′ = 𝑓(𝑥, 𝑦, 𝑧) (2.2)
𝑦(𝑎) = 𝑎, 𝑦(𝑏) = 𝛽

Ide dasar metode tembakan adalah dengan menyatakan masalah kondisi batas
menjadi masalah nilai awal. Tetapi tentu saja nilai turunan 𝑦 ′ (𝑎) = 𝑧(𝑎) tidak diketahui.
Dalam metode tembakan nilai 𝑦 ′ (𝑎) ditebak dan selanjutnya tebakan tersebut diperbaiki
dengan cara iterasi. Sebagai contoh, jika diberikan tebakan 𝑦 ′ (𝑎) = 𝑠 maka persamaan (2.2)
dapat ditulis dalam bentuk masalah nilai awal

𝑢′ = 𝑓(𝑥, 𝑢), 𝑢(𝑎) = 𝑎 (2.3)

Dengan = (𝑦, 𝑧)𝑇 , 𝑎 = (𝑎, 𝑠)𝑇 . Masalah nilai awal (2.3) dapat diselesaikan dengan
metode yang telah dijelaskan sebelumnya, misalnya dengan metode Runge-Kutta orde empat.
Dengan cara ini, solusi 𝑦(𝑥𝑖 ) untuk semua 𝑖, dapat ditemukan termasuk 𝑦(𝑏). jika 𝑦(𝑏) = 𝛽
maka masalah kondisi batas sudah terselesaikan. Tetapi, secara umum tebakan nilai awal 𝑠
memberikan solusi dengan 𝑦(𝑏) ≠ 𝛽, sehingga perlu dipilih nilai 𝑠 yang lain, dan masalah
nilai awal dengan tebakan baru perlu diselesaikan kembali. Proses tersebut perlu

diulang-ulang hingga diperoleh 𝑦(𝑏) = 𝛽. Terdapat strategi bagaimana memilih nilai


𝑠. Salah satunya adalah strategi pemilihan 𝑠 untuk masalah kondisi batas nonlinear.

A.2 Metode Tembakan untuk Masalah Kondisi Batas Nonlinear


Masalah kondisi batas (2.1) dengan fungsi 𝑓(𝑥, 𝑦(𝑥), 𝑦 ′ (𝑥)) dapat berupa fungsi
nonlinear. Telah disebutkan sebelumnya bahwa jika diberikan tembakan 𝑦 ′ (𝑎) = 𝑠, maka persamaan
(2.1) dapat dinyatakan dalam bentuk masalah nilai awal (6.3). permasalahan yang timbul dalam
metode tembakan adalah bagaimana menentukan nilai 𝑠 agar solusi masalah nilai awal yang diperoleh
memenuhi kondisi batas pada 𝑥 = 𝑏, yaitu 𝑦(𝑏) = 𝛽. Secara matematika, permasalahan tersebut
dapat diformulasikan sebagai berikut. Misalkan bahwa solusi masalah nilai awal (2.3) dengan nilai
tebakan 𝑦 ′ (𝑎) = 𝑠 adalah 𝑢(𝑥; 𝑠) = (𝑦(𝑥; 𝑠), 𝑧(𝑥; 𝑠))𝑇 = (𝑦(𝑥; 𝑠), 𝑦′(𝑥; 𝑠)). Hal yang harus
dilakukan adalah menemukan 𝑠̂ sedemikian sehingga berlaku

𝑦(𝑏; 𝑠̂ ) = 𝛽 (2.4)
Hal tersebut analog dengan bagaimana menentukan akar persamaan nonlinear

𝑔(𝑠) = 𝑦(𝑏; 𝑠) − 𝛽 = 0 (2.5)

Pencarian akar tersebut dapat dilakukan dengan menggunakan metode-metode numeric untuk
menyelesaikan persamaan nonlinear, misalnya metode bagi dua atau metode secant yang memerlukan
dua tebakan awal, metode Newton maupun metode lainnya. Berikut ini dijelaskan implementasi
metode tembakan dengan metode bagi dua.

A.3 Metode Bagi Dua


Salah satu metode sederhana untuk mencari akar persamaan nonlinear adalah metode bagi
dua. Untuk menjamin keberadaan solusi, metode ini membutuhkan dua tebakan awal misalnya 𝑠1 dan
𝑠2, sedemikian hingga 𝑔(𝑠1 )𝑔(𝑠2 ) < 0. Selanjutnya akar persamaan ditentukan dengan membagi
interval menjadi dua bagian secara berturut-turut. Secara ringkas, implementasi metode tembakan
dengan metode bagi dua dapat dijelas sebagai berikut
1. Berikan tebakan 𝑠1 dan 𝑠2.
2. Selesaikan masalah nilai awal (2.3) dengan metode Runge Kutta orde empat
menggunakan nilai awal dan tebakan 𝑠1 dan 𝑠2 untuk mendapatkan 𝑦(𝑥𝑖 ; 𝑠1 ) dan
𝑦(𝑥𝑖 ; 𝑠2 ), 𝑖 = 0,1,2, … , 𝑁.
3. Dari langkah (2) hitung 𝑔(𝑠1 ) = 𝑦(𝑥𝑁 = 𝑏; 𝑠1 ) − 𝛽 dan 𝑔(𝑠2 ) = 𝑦(𝑥𝑁 = 𝑏; 𝑠2 ) − 𝛽.
4. Jika 𝑔(𝑠1 )𝑔(𝑠2 ) > 0, ulangi langkah (1), jika tidak, lanjutkan ke langkah 5.
5. Jika 𝑔(𝑠1 )𝑔(𝑠2 ) > 0 :
a. Jika 𝑔(𝑠1 ) = 0, maka 𝑠̂ = 𝑠1. Lanjutkan ke langkah 7.
b. Jika 𝑔(𝑠1 ) ≠ 0, maka 𝑠̂ = 𝑠2. Lanjutkan ke langkah 7.
6. Jika 𝑔(𝑠1 )𝑔(𝑠2 ) < 0 :
a. Pasang 𝑒𝑟𝑟𝑜𝑟 = 1 dan 𝑡𝑜𝑙𝑒𝑟𝑎𝑛𝑠𝑖 = 10−6
b. Lakukan proses berikut selama 𝑒𝑟𝑟𝑜𝑟 > 𝑡𝑜𝑙𝑒𝑟𝑎𝑛𝑠𝑖
1
(1) 𝑠̂ = 2 (𝑠1 + 𝑠2 )
(2) Selesaikan masalah nilai awal (2.3) dengan tebakan 𝑠̂
(3) Jika 𝑔(𝑠1 )𝑔(𝑠̂ ) < 0, pasang 𝑠2 = 𝑠̂ , tetapi jika 𝑔(𝑠1 )𝑔(𝑠) < 0, pasang 𝑠1 =
𝑠̂
(4) 𝑒𝑟𝑟𝑜𝑟 = 𝑔(𝑠̂ )
7. Solusi 𝑦(𝑥𝑖 ) = 𝑦(𝑥𝑖 ; 𝑠̂ ).
8. selesai

B. Soal
Tentukan skema Metode Beda Hingga dan Shooting untuk menyelesaikan masalah
kondisi batas Dirichlet PDB berikut :
3
𝑦 ′′ = 2𝑦 3 − 6𝑦 − 2𝑥 3 , 𝑦(1) = 2 , 𝑦 ′ (2) =
4

Dengan solusi eksak

1
𝑦(𝑥) = 𝑥 +
𝑥

C. Penyelesaian

Ubah masalah kondisi batas

3
𝑦 ′′ = 2𝑦 3 − 6𝑦 − 2𝑥 3 dengan 𝑦(1) = 2 , 𝑦 ′ (2) = 4

menjadi nilai awal sistem persamaan diferensial orde satu.

Misalkan:

𝑢1 = 𝑦

𝑢2 = 𝑦 ′

𝑢1′ = 𝑦 ′ = 𝑢2

𝑢2′ = 𝑦 ′′ = 2𝑢13 − 6𝑢1 − 2𝑥 3

𝑢 ′ 𝑢2
𝑧′ = [ 1 ] = [ 3 ]
𝑢2 ′ 2𝑢1 − 6𝑢1 − 2𝑥 3

𝑦(1) 2
𝑧(1) = [ ]=[ ]
𝑦′(1) 𝑠

Kemudiaan lakukan :

1. Berikan tebakan 𝑠 = 𝑠1 dan 𝑠 = 𝑠2


2. Selsaikan nilai awal dengan 𝑠 = 𝑠1 dan 𝑠 = 𝑠2 (Pilih sembarang metode)
3. Untuk mencari 𝑠 yang tepat, digunakan metode pencarian akar. Dalam algoritma ini
digunakan Metode Bagi Dua.
Jika𝑔(𝑠1 ) ∙ 𝑔(𝑠2 ) < 0
𝑠1 +𝑠2
a. Hitung 2

b. Selesaikan masalah nilai awal dengan 𝑠.


c. Cari 𝑔(𝑠) = 𝑦(𝑁 + 1; 𝑠) − 𝑦𝑁+1 .

d. Jika𝑔(𝑠1 ) ∙ 𝑔(𝑠) < 0


𝑠1 = 𝑠

Selain itu

𝑠2 = 𝑠

e. Ulangi langkah 4a sampai dengan |𝑠2 − 𝑠1 | < 𝜀, dengan 𝜀 adalah toleransi error
𝑠1 𝑑𝑎𝑛 𝑠2 adalah nilai tebakan
BAB III
SOURCE CODE

FUNCTION
function dyvek=shooting(x,yvek)
y1=yvek(1);
y2=yvek(2);
dy1=y2;
dy2=2*y1^3-6*y1-2*x^3;
dyvek=[dy1 dy2];

FUNCTION SHOOTING RK-4


function yvek=shootrk4(h,s,x)
n=length(x);
yvek(1,:)=[s 0];
for i=1:n-1
k1=h*shooting(x(i),yvek(i,:));
k2=h*shooting(x(i)+0.5*h,yvek(i,:)+0.5*k1);
k3=h*shooting(x(i)+0.5*h,yvek(i,:)+0.5*k2);
k4=h*shooting(x(i)+h,yvek(i,:)+k3);
yvek(i+1,:)=yvek(i,:)+(1/6)*(k1+2*k2+2*k3+k4);
end %mengakhiri perulangan for

Program :
clear all; %Menghapus seluruh data pada running program sebelumnya
clc; %Menghapus semua output di command window
N=100; %Banyaknya sub interval
a=1; %Inisialisasi nilai di x0
b=2; %Inisialisasi nilai di x1
h=(b-a)/N; %Menentukan nilai agar h=(b-a)/N
fprintf(&#39;METODE TEMBAKAN\n\n&#39;); %Output judul
x=a:h:b; %Menempatkan titik-titik numeric
n=length(x); %Banyaknya titik
s1=1.9; %Bebas menebak nilai tebakan s1
s2=2.11; %Bebas menebak nilai tebakan s2
sol1=shootrk4(h,s1,x); %Membentuk matriks
sol2=shootrk4(h,s2,x); %Membentuk matriks
yb=5/2; %%Deklarasi nilai eksak di x1
gs1=sol1(n,1)-yb; %Menentukan nilai agar g(s1)=y(b,s1)-yb
gs2=sol2(n,1)-yb; %Menentukan nilai agar g(s2)=y(b,s2)-yb
if gs1*gs2&lt;0 %Melakukan perulangan selama g1*g2&lt;0
errbagi2=abs(s2-s1); %Menentukan jarak dari kedua tebakan
eps=1e-5; %Deklarasi nilai batas error

while errbagi2&gt;eps %melakukan perulangan selama jarak tebakan


lebih besar daripada error
s=(s1+s2)/2; %metode bagi dua
sol=shootrk4(h,s,x); %Membentuk matriks
gs=sol(n,1)-yb; %Menentukan nilai agar g(s1)=y(b,s1)-yb
if gs1*gs&lt;0 %Melakukan perulangan selama g1*g2&lt;0
s2=s; %Mengganti nilai s2=s atau
else %kondisi dikerjakan jika g1*g2&lt;0
s1=s; %Jika perulangan sa;ah, maka mengganti nilai s1=s
end %mengakhiri perulangan if
errbagi2=abs(s2-s1); %Menentukan jarak dari kedua
tebakan
end %mengakhiri perulangan while
else %kondisi dikerjakan jika jarak tebakan lebih kecil daripada error
error(&#39;Tentukan tebakan s1 dan s2 yang baru!&#39;);
end %mengakhiri perulangan if
fprintf(&#39; i xi y1 yeks_i
error_1\n&#39;); %Menampilkan data yang sudah dikerjakan
for i=1:length(x) %Melakukan perulangan selama i=1:length(x)
yeks(i)=x(i)+(1/x(i)); %Persamaan nilai eksak
error(i)=abs(sol(i,1)-yeks(i)); %Selisih solusi numerik dan
eksak
fprintf(&#39;%3d %5.2f %8.5f %8.5f
%8.5f\n&#39;,i,x(i),sol(i,1),yeks(i),error(i)); %Menampilkan data yang
sudah dikerjakan
end %Mengakhiri perulangan for
subplot(2,1,1); %Menampilkan grafik pertama
plot(x,sol(:,1),&#39;d&#39;,&#39;color&#39;,&#39;r&#39;,&#39;markerfacecolor&#39;,&
#39;y&#39;);
%Menampilkan grafik solusi numerik
hold on; %Mempertahankan grafik agar tidak hilang
plot(x,yeks,&#39;color&#39;,&#39;k&#39;,&#39;linewidth&#39;,1); %Menampilkan grafik
solusi
eksak
legend(&#39;Solusi Numerik&#39;,&#39;solusi eksak&#39;); %Memberi info tentang
setiap garis yang terbentuk
xlabel(&#39;x&#39;); %Memberikan nama pada sumbu x
ylabel(&#39;y1&#39;); %Memberikan nama pada sumbu y
grid on; %Membuat garis-garis pada grafik
title(&#39;Solusi Numerik dan eksak y_1&#39;); %Menampilkan judul &quot;Solusi
Numerik dan Eksak y_1&quot;
subplot(2,1,2); %menampilkan grafik kedua
plot(x,error,&#39;-&#39;,&#39;color&#39;,&#39;b&#39;); %menampilkan grafik error
title(&#39;grafik error1&#39;); %Menampilkan judul “Grafik Error1”
xlabel(&#39;x&#39;); %Memberikan nama pada sumbu x

ylabel(&#39;error1&#39;); %Memberikan nama pada sumbu y


grid on;%Membuat garis-garis pada grafik

Anda mungkin juga menyukai