• Tidak ada hasil yang ditemukan

BAB VII PENUTUP

B. Saran

Penulis sadar bahwa penyusunan tulisan ini masih banyak

kekurangan. Dalam tulisan ini baru menyelesaikan permasalahan apabila

kontrolnya dapat ditemukan secara analitik. Dengan demikian, disarankan agar

pembaca dapat menyelesaikan permasalahan penyebaran penyakit apabila

kontrolnya tidak dapat ditemukan secara analitik, sehingga harus ditemukan

secara numerik. Selain itu, pembaca juga bisa mengembangkan permasalahan

penyebaran penyakit dalam model SEIR tanpa kontrol. Model tersebut dapat

dikembangkan dengan masalah bahwa individu yang sembuh dari penyakit dapat

kembali menjadi individu yang rentan penyakit karena tidak adanya pemberian

i

DAFTAR PUSTAKA

Boyce, William E. & Richard C. Diprima (2008). Elementary Differential Equations and Boundary Value Problems. New York: Wiley Plus

Burghes, D. & Alexander Graham (2004). Control And Optimal Control

Theories With Applications. England : Horwood

Chong, Edwin K. P. & Stanislaw H, ZAK (1995). An Introduction to

Optimization. New York: A Wiley – Interscience Publication

Fitzhugh, R. (1961). Impulses And Physiological States In Theoretical Models of Nerve membrane. Biophysical Journal.Volume 1. Halaman 445-466.

Greenbaum, Anne & Timothy P (2012). Numerical Methods. New Jersey:

Princeton University Press

Lenhart, S. & John T. Workman (2007). Optimal Control Applied To

133 LAMPIRAN

1. Program Metode Sweep Maju - Mundur

function y = SEIR(b,d,c,e,g,a,S0,E0,I0,R0,A,T)%fungsi keluaran

test = -1; %variabel uji konvergensi

delta = 0.001; %nilai toleransi M = 1000;

t=linspace(0,T,M+1); %waktu ke-0 sampai ke-T sebanyak M+1 h=T/M; %panjang langkah

h2 = h/2; %panjang langkah yang digunakan dalam RK-4

S=zeros(1,M+1); E=zeros(1,M+1);

I=zeros(1,M+1); %inisial awal R=zeros(1,M+1);

N=zeros(1,M+1); S(1)=S0;

E(1)=E0;

I(1)=I0; %nilai awal keadaan R(1)=R0;

N(1)=S0+E0+I0+R0; %banyaknya populasi pada keadaan awal lambda1=zeros(1,M+1);

lambda2=zeros(1,M+1);

lambda3=zeros(1,M+1); %inisial awal lambda4=zeros(1,M+1);

u=zeros(1,M+1); %inisial awal while(test < 0) ulama = u; Slama = S; Elama = E; Ilama = I;

Nlama = N; %nilai awal dari iterasi while lambda1lama = lambda1;

lambda2lama = lambda2; lambda3lama = lambda3; lambda4lama = lambda4;

%RK-4 Secara Maju Untuk Mencari X for i = 1:M

m11 = b*N(i) - d*S(i) - c*S(i)*I(i) - u(i)*S(i); m12 = c*S(i)*I(i) - (e+d)*E(i); m13 = e*E(i) - (g+a+d)*I(i); m14 = (b-d)*N(i) - a*I(i); m21 = b*(N(i)+h2*m14) - d*(S(i)+h2*m11) - c*(S(i)+h2*m11)*(I(i)+h2*m13) - 0.5*(u(i)+u(i+1))*(S(i)+h2*m11); m22 = c*(S(i)+h2*m11)*(I(i)+h2*m13) - (e+d)*(E(i)+h2*m12); m23 = e*(E(i)+h2*m12) - (g+a+d)*(I(i)+h2*m13); m24 = (b-d)*(N(i)+h2*m14) - a*(I(i)+h2*m13); m31 = b*(N(i)+h2*m24) - d*(S(i)+h2*m21) - c*(S(i)+h2*m21)*(I(i)+h2*m23) - 0.5*(u(i)+u(i+1))*(S(i)+h2*m21);

m32 = c*(S(i)+h2*m21)*(I(i)+h2*m23) - (e+d)*(E(i)+h2*m22); m33 = e*(E(i)+h2*m22) - (g+a+d)*(I(i)+h2*m23); m34 = (b-d)*(N(i)+h2*m24) - a*(I(i)+h2*m23); m41 = b*(N(i)+h*m34) - d*(S(i)+h*m31) - c*(S(i)+h*m31)*(I(i)+h*m33) - u(i+1)*(S(i)+h*m31); m42 = c*(S(i)+h*m31)*(I(i)+h*m33) - (e+d)*(E(i)+h*m32); m43 = e*(E(i)+h*m32) - (g+a+d)*(I(i)+h*m33); m44 = (b-d)*(N(i)+h*m34) - a*(I(i)+h*m33); S(i+1) = S(i) + (h/6)*(m11 + 2*m21 + 2*m31 + m41); E(i+1) = E(i) + (h/6)*(m12 + 2*m22 + 2*m32 + m42); I(i+1) = I(i) + (h/6)*(m13 + 2*m23 + 2*m33 + m43); N(i+1) = N(i) + (h/6)*(m14 + 2*m24 + 2*m34 + m44); end

%RK-4 Secara Mundur Untuk Mencari Lambda for i = 1:M

j = M + 2 - i;

m11 = lambda1(j)*(d + c*I(j) + u(j)) - c*lambda2(j)*I(j); m12 = lambda2(j)*(e + d) - lambda3(j)*e; m13 = -A + (lambda1(j) - lambda2(j))*c*S(j) + lambda3(j)*(g+a+d) + lambda4(j)*a; m14 = -lambda1(j)*b - lambda4(j)*(b-d);

m21 = (lambda1(j)-h2*m11)*(d + c*0.5*(I(j) + I(j-1)) + 0.5*(u(j) + u(j-1))) - c*(lambda2(j)-h2*m12)*0.5*(I(j) + I(j-1));

m22 = (lambda2(j)-h2*m12)*(e + d) - (lambda3(j)-h2*m13)*e;

m23 = -A + ((lambda1(j)-h2*m11) - (lambda2(j)-h2*m12))*c*0.5*(S(j) + S(j-1)) + (lambda3(j)-h2*m13)*(g+a+d) + (lambda4(j)-h2*m14)*a; m24 = -(lambda1(j)-h2*m11)*b - (lambda4(j)-h2*m14)*(b-d);

m31 = (lambda1(j)-h2*m21)*(d + c*0.5*(I(j) + I(j-1)) + 0.5*(u(j) + u(j-1))) - c*(lambda2(j)-h2*m22)*0.5*(I(j) + I(j-1)); m32 = (lambda2(j)-h2*m22)*(e + d) - (lambda3(j)-h2*m23)*e; m33 = -A + ((lambda1(j)-h2*m21) - (lambda2(j)-h2*m22))*c*0.5*(S(j) + S(j-1)) + (lambda3(j)-h2*m23)*(g+a+d) + (lambda4(j)-h2*m24)*a; m34 = -(lambda1(j)-h2*m21)*b - (lambda4(j)-h2*m24)*(b-d);

m41 = (lambda1(j)-h*m31)*(d + c*I(j-1) + u(j-1)) - c*(lambda2(j)-h*m32)*I(j-1); m42 = (lambda2(j)-h*m32)*(e + d) - (lambda3(j)-h*m33)*e; m43 = -A + ((lambda1(j)-h*m31) - (lambda2(j)-h*m32))*c*S(j-1) + (lambda3(j)-h*m33)*(g+a+d) + (lambda4(j)-h*m34)*a; m44 = -(lambda1(j)-h*m31)*b - (lambda4(j)-h*m34)*(b-d); lambda1(j-1) = lambda1(j) - (h/6)*(m11 + 2*m21 + 2*m31 + m41); lambda2(j-1) = lambda2(j) - (h/6)*(m12 + 2*m22 + 2*m32 + m42); lambda3(j-1) = lambda3(j) - (h/6)*(m13 + 2*m23 + 2*m33 + m43); lambda4(j-1) = lambda4(j) - (h/6)*(m14 + 2*m24 + 2*m34 + m44); end

%Mencari Nilai u yang Maksimal temp=(S.*lambda1)./2;

u1 = min(0.9,max(0,temp)); u = 0.5*(u1 + ulama);

%Uji Konvergensi

temp1 = delta*sum(abs(u)) - sum(abs(ulama - u)); temp2 = delta*sum(abs(S)) - sum(abs(Slama - S)); temp3 = delta*sum(abs(E)) - sum(abs(Elama - E)); temp4 = delta*sum(abs(I)) - sum(abs(Ilama - I)); temp5 = delta*sum(abs(N)) - sum(abs(Nlama - N));

temp6 = delta*sum(abs(lambda1)) - sum(abs(lambda1lama - lambda1));

temp7 = delta*sum(abs(lambda2)) - sum(abs(lambda2lama - lambda2));

temp8 = delta*sum(abs(lambda3)) - sum(abs(lambda3lama - lambda3));

temp9 = delta*sum(abs(lambda4)) - sum(abs(lambda4lama - lambda4));

test = min(temp1, min(temp2, min(temp3, min(temp4, min(temp5, min(temp6, min(temp7, min(temp8, temp9)))))))); end

%RK-4 Untuk Banyaknya Individu Yang Sembuh for i=1:M

m1 = g*I(i) - d*R(i) + u(i)*S(i);

m2 = g*0.5*(I(i)+I(i+1)) - d*(R(i)+h2*m1) + 0.5*(u(i)+u(i+1))*0.5*(S(i)+S(i+1));

m3 = g*0.5*(I(i)+I(i+1)) - d*(R(i)+h2*m2) + 0.5*(u(i)+u(i+1))*0.5*(S(i)+S(i+1));

m4 = g*I(i+1) - d*(R(i)+h*m3) + u(i+1)*S(i+1); R(i+1) = R(i) + (h/6)*(m1 + 2*m2 + 2*m3 + m4); end

y(2,:) = S; y(3,:) = E; y(4,:) = I; y(5,:) = R; y(6,:) = N; y(7,:) = u;

2. Program Masukkan Nilai – Nilai Parameter close flag1=0; flag2=0; flag3=0; flag4=0; while(flag1==0)

var1 = input('Masukkan nilai laju untuk kelahiran b: '); if(var1 > 0)

b = var1; flag1=1; else

disp(' ')

disp('ERROR: b positif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai untuk laju kematian alami d: '); if(var1 > 0) d = var1; flag1=1; else disp(' ')

disp('ERROR: d positif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai untuk laju individu dalam masa inkubasi c: '); if(var1 > 0) c = var1; flag1=1; else disp(' ')

disp('ERROR: c positif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai untuk laju individu yang masuk masa infeksi dari masa inkubasi e: ');

if(var1 > 0) e = var1;

flag1=1; else

disp(' ')

disp('ERROR: e positif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai untuk laju individu yang sembuh g: '); if(var1 >= 0) g = var1; flag1=1; else disp(' ')

disp('ERROR: g tidak negatif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai untuk laju individu yang mengalami kematian akibat terinfeksi a: ');

if(var1 > 0) a = var1; flag1=1; else

disp('ERROR: a positif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai awal untuk populasi individu yang rentan (S_0): '); if(var1 >= 0) S0 = var1; flag1=1; else disp(' ')

disp('ERROR: S_0 tidak negatif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai awal untuk populasi individu yang masuk masa inkubasi (E_0): ');

if(var1 >= 0) E0 = var1; flag1=1; else

disp(' ')

disp('ERROR: E_0 tidak negatif.') disp(' ')

end flag1=0;

disp(' ') while(flag1==0)

var1 = input('Masukkan nilai awal untuk populasi individu yang terinfeksi (I_0): ');

if(var1 >= 0) I0 = var1; flag1=1; else

disp(' ')

disp('ERROR: I_0 tidak negatif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Masukkan nilai awal untuk populasi individu yang sembuh (R_0): '); if(var1 >= 0) R0 = var1; flag1=1; else disp(' ')

disp('ERROR: R_0 tidak negatif.') disp(' ')

end end flag1=0;

while(flag1==0)

var1 = input('Masukkan nilai laju individu terinfeksi berpengaruh meminimalkan banyaknya individu terinfeksi A: '); if(var1>=0)

A = var1; flag1=1; else

disp(' ')

disp('ERROR: A tidak negatif.') disp(' ') end end flag1=0; disp(' ') while(flag1==0)

var1 = input('Berapa tahun lamanya untuk menjalankan sistem ini: '); if(var1>0) T=var1; flag1=1; else disp(' ')

disp('ERROR: T positif.') disp(' ')

end end flag1=0;

disp(' ')

disp('Harap tunggu beberapa saat...') y1=SEIR(b,d,c,e,g,a,S0,E0,I0,R0,A,T); disp(' ')

while(flag2==0)

disp('Akankah ingin mencoba untuk parameter yang lain?') disp('1. Ya')

disp('2. Tidak')

var2=input('Jawaban 1 atau 2: ');

if(var2==1)

disp(' ') flag2=1;

while(flag3==0)

disp('Parameter manakah yang akan diubah?') disp('1. b') disp('2. d') disp('3. c') disp('4. e') disp('5. g') disp('6. a') disp('7. S0') disp('8. E0') disp('9. I0') disp('10. R0') disp('11. A') disp('12. T')

var3 = input('Jawaban 1 - 12: '); if(var3==1)

disp(' ') while(flag4==0)

var4 = input('Masukkan nilai b yang kedua: ');

b2 = var4; flag4 = 1; else

disp(' ') disp('ERROR: b positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b2,d,c,e,g,a,S0,E0,I0,R0,A,T); flag3=1;

elseif(var3==2) disp(' ') while(flag4==0)

var4=input('Masukkan nilai d yang kedua: '); if(var4 > 0) d2 = var4; flag4 = 1; else disp(' ')

disp('ERROR: d positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d2,c,e,g,a,S0,E0,I0,R0,A,T); flag3=1;

disp(' ') while(flag4==0)

var4 = input('Masukkan nilai c yang kedua: '); if(var4 > 0) c2 = var4; flag4 = 1; else disp(' ')

disp('ERROR: c positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c2,e,g,a,S0,E0,I0,R0,A,T); flag3=1;

elseif(var3==4) disp(' ') while(flag4==0)

var4=input('Masukkan nilai e yang kedua: '); if(var4 > 0) e2 = var4; flag4 = 1; else disp(' ')

disp('ERROR: e positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e2,g,a,S0,E0,I0,R0,A,T); flag3=1;

elseif(var3==5) disp(' ') while(flag4==0)

var4=input('Masukkan nilai g yang kedua: '); if(var4 >= 0) g2 = var4; flag4 = 1; else disp(' ')

disp('ERROR: g tidak negatif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g2,a,S0,E0,I0,R0,A,T); flag3=1;

elseif(var3==6) disp(' ') while(flag4==0)

var4=input('Masukkan nilai a yang kedua: ');

if(var4 > 0) a2 = var4; flag4 = 1; else

disp(' ')

disp('ERROR: a positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a2,S0,E0,I0,R0,A,T); flag3=1;

elseif(var3==7) disp(' ') while(flag4==0)

var4=input('Masukkan nilai S_0 yang kedua: '); if(var4 >= 0) S02 = var4; flag4 = 1; else disp(' ')

disp('ERROR: S_0 tidak negatif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a,S02,E0,I0,R0,A,T); flag3=1;

elseif(var3==8) disp(' ') while(flag4==0)

var4=input('Masukkan nilai E_0 yang kedua: '); if(var4 >= 0) E02 = var4; flag4 = 1; else disp(' ')

disp('ERROR: E_0 tidak negatif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a,S0,E02,I0,R0,A,T); flag3=1;

elseif(var3==9) disp(' ') while(flag4==0)

var4=input('Masukkan nilai I_0 yang kedua: '); if(var4 >= 0) I02 = var4; flag4 = 1; else disp(' ')

disp('ERROR: I_0 tidak negatif.') disp(' ')

end end

disp(' ')

y2=SEIR(b,d,c,e,g,a,S0,E0,I02,R0,A,T); flag3=1;

elseif(var3==10) disp(' ') while(flag4==0)

var4=input('Masukkan nilai R_0 yang kedua: '); if(var4 >= 0) R02 = var4; flag4 = 1; else disp(' ')

disp('ERROR: R_0 tidak negatif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a,S0,E0,I0,R02,A,T); flag3=1;

elseif(var3==11)

disp(' ') while(flag4==0)

var4=input('Masukkan nilai A yang kedua: '); if(var4 >= 0) A2 = var4; flag4 = 1; else disp(' ')

disp(' ') end

end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a,S0,E0,I0,R0,A2,T); flag3=1;

elseif(var3==12)

disp(' ') while(flag4==0)

var4=input('Masukkan nilai T yang kedua: '); if(var4 > 0) T2 = var4; flag4 = 1; else disp(' ')

disp('ERROR: T positif.') disp(' ')

end end

disp(' ')

disp('Harap tunggu beberapa saat...') y2=SEIR(b,d,c,e,g,a,S0,E0,I0,R0,A,T2); flag3=1; else disp(' ') disp('Pardon?') disp(' ') end end

elseif(var2==2) disp(' ') flag2=1; subplot(3,2,1);plot(y1(1,:),y1(2,:)) subplot(3,2,1);xlabel('Waktu') subplot(3,2,1);ylabel('Rentan') subplot(3,2,2);plot(y1(1,:),y1(3,:)) subplot(3,2,2);xlabel('Waktu') subplot(3,2,2);ylabel('Inkubasi') subplot(3,2,3);plot(y1(1,:),y1(4,:)) subplot(3,2,3);xlabel('Waktu') subplot(3,2,3);ylabel('Infeksi') subplot(3,2,4);plot(y1(1,:),y1(5,:)) subplot(3,2,4);xlabel('Waktu') subplot(3,2,4);ylabel('Sembuh') subplot(3,2,5);plot(y1(1,:),y1(6,:)) subplot(3,2,5);xlabel('Waktu')

subplot(3,2,5);ylabel('Total Populasi') subplot(3,2,6);plot(y1(1,:),y1(7,:)) subplot(3,2,6);xlabel('Waktu')

subplot(3,2,6);ylabel('Laju Vaksinasi') subplot(3,2,6);axis([0 T -0.1 1]) else disp(' ') disp('Pardon?') disp(' ') end end

if(var2==1)

subplot(3,2,1);plot(y1(1,:),y1(2,:),'b',y2(1,:),y2(2,:),'g') subplot(3,2,1);xlabel('Waktu')

subplot(3,2,1);ylabel('Rentan')

subplot(3,2,1);legend('Nilai Pertama','Nilai Kedua',0)

subplot(3,2,2);plot(y1(1,:),y1(3,:),'b',y2(1,:),y2(3,:),'g') subplot(3,2,2);xlabel('Waktu')

subplot(3,2,2);ylabel('Inkubasi')

subplot(3,2,2);legend('Nilai Pertama','Nilai Kedua',0)

subplot(3,2,3);plot(y1(1,:),y1(4,:),'b',y2(1,:),y2(4,:),'g') subplot(3,2,3);xlabel('Waktu')

subplot(3,2,3);ylabel('Infeksi')

subplot(3,2,3);legend('Nilai Pertama','Nilai Kedua',0)

subplot(3,2,4);plot(y1(1,:),y1(5,:),'b',y2(1,:),y2(5,:),'g') subplot(3,2,4);xlabel('Waktu')

subplot(3,2,4);ylabel('Sembuh')

subplot(3,2,4);legend('Nilai Pertama','Nilai Kedua',0)

subplot(3,2,5);plot(y1(1,:),y1(6,:),'b',y2(1,:),y2(6,:),'g') subplot(3,2,5);xlabel('Waktu')

subplot(3,2,5);ylabel('Total Populasi')

subplot(3,2,5);legend('Nilai Pertama','Nilai Kedua',0)

subplot(3,2,6);plot(y1(1,:),y1(7,:),'b',y2(1,:),y2(7,:),'g') subplot(3,2,6);xlabel('Waktu')

subplot(3,2,6);ylabel('Laju Vaksinasi')

subplot(3,2,6);legend('Nilai Pertama','Nilai Kedua',0) if(var3==10)

else

subplot(3,2,6);axis([0 T -0.1 1]) end

Dokumen terkait