0% found this document useful (0 votes)
79 views8 pages

Function: Codding For Numerical Analysis Using Control

This document contains the code for numerically analyzing a control model of disease spread using control variables u1, u2, and u3. It initializes parameters and state variables, then enters a loop to: 1. Calculate the rates of change of state variables S, Q, I, H, R using control variables and Euler's method. 2. Calculate the adjoint variables lamS, lamQ, etc. in reverse time order. 3. Update control variables u1, u2, u3 based on the state and adjoint variables. 4. Check for convergence by comparing changes in variables against a threshold. The code iteratively updates the state, adjoint, and control variables until

Uploaded by

Tahera Parvin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views8 pages

Function: Codding For Numerical Analysis Using Control

This document contains the code for numerically analyzing a control model of disease spread using control variables u1, u2, and u3. It initializes parameters and state variables, then enters a loop to: 1. Calculate the rates of change of state variables S, Q, I, H, R using control variables and Euler's method. 2. Calculate the adjoint variables lamS, lamQ, etc. in reverse time order. 3. Update control variables u1, u2, u3 based on the state and adjoint variables. 4. Check for convergence by comparing changes in variables against a threshold. The code iteratively updates the state, adjoint, and control variables until

Uploaded by

Tahera Parvin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Codding for Numerical Analysis using control

function y = code9(shy,beta,alpha,epsilon,gama,mu,rI,rH,c,d,S0,Q0,I0,H0,R0,,u1,u2,u3,A,B,C,T)
shy=.0000000032;
beta=.03;
alpha=.1;
epsilon=.01;
d=.005;
gama=.6;
rI=.001;
c=0.4;
mu=.1;
rH=.7;

S0 = 10000;
Q0 = 6000;
I0 = 70;
H0 = 30;
R0 = 20;
A = 60;
B = 80;
C=20
T = 10;
test = -1;
delta = 0.001;
N = 1000;
t=linspace(0,T,N+1);
h=T/N;
h2 = h/2;

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

Q=zeros(1,N+1);
Q(1)=Q0;
lamQ=zeros(1,N+1);

I=zeros(1,N+1);
I(1)=I0;
lamI=zeros(1,N+1);

H=zeros(1,N+1);
H(1)=H0;
lamH=zeros(1,N+1);

R=zeros(1,N+1);
R(1)=R0;
lamR=zeros(1,N+1);
u1=zeros(1,N+1);
u2=zeros(1,N+1);
u3=zeros(1,N+1);

while(test < 0)

oldu1 = u1;
oldu2 = u2;
oldu3 = u3;
oldS = S;
oldQ = Q;
oldI = I;
oldH = H;
oldR = R;

oldlamS = lamS;
oldlamQ = lamQ;
oldlamI = lamI;
oldlamH = lamH;
oldlamR = lamR;

for i=1:N
k11 = shy-beta*S(i)*I(i)-gama*S(i)*Q(i)—u1(i)*S(i)+(1-alpha)*u2(i)*Q(i)+epsilon*R(i)-d*S(i);

k21 = beta*S(i)*I(i)+ gama*S(i)*Q(i)-alpha*u2(i)*Q(i)-( 1-alpha)*u2(i)*Q(i)-d*Q(i);

k31 = alpha*u2(i)*Q(i)-rI*I(i)-c*I(i)-mu*I(i)-d*I(i);

k41 = c*I(i)-(rH+mu+d)*H(i)-u3(i)*H(i);

k51 = rH*H(i)+rI*I(i)-epsilon*R(i)-d*R(i)+u1(i)*S(i)+u3(i)*H(i);
k12=shy-beta*(S(i)+h2*k11)*(I(i)+h2*k31)-gama*(S(i)+h2*k11)*(Q(i)+h2*k21)-.5*(u1(i)
+u1(i+1))*(S(i)+h2*k11)+(1-alpha)*(0.5*(u2(i)+u2(i+1))*(Q(i)+h2*k21)+epsilon*(R(i)+h2*k51)-d*(S(i)
+h2*k11);

k22=beta*(S(i)+h2*k11)*(I(i)+h2*k31)+gama*(S(i)+h2*k11)*(Q(i)+h2*k21)-alpha*(0.5*(u2(i)
+u2(i+1))*(Q(i)+h2*k21)-(1-alpha)*(0.5*(u2(i)+u2(i+1))*(Q(i)+h2*k21)-d*(Q(i)+h2*k21);
k32=alpha*0.5(u2(i)+u2(i+1))*(Q(i)+h2*k21)-rI*(I(i)+h2*k31)-c*(I(i)+h2*k31)-mu*(I(i)+h2*k31)-
d*(I(i)+h2*k31);
k42= c*(I(i)+h2*k31)-(rH+mu+d)*(H(i)+h2*k41)-0.5*(u3(i)+u3(i+1))*(H(i)+h2*k41);

k52=rH*(H(i)+h2*k41)+rI*(I(i)+h2*k31)-epsilon*(R(i)+h2*k51)-d*(R(i)+h2*k51)+0.5*(u1(i)
+u1(i+1))*(S(i)+h2*k11)+0.5*(u3(i)+u3(i+1))*(H(i)+h2*k41);
k13=shy-beta*(S(i)+h2*k12)*(I(i)+h2*k32)-gama*(S(i)+h2*k12)*(Q(i)+h2*k22)-.5*(u1(i)
+u1(i+1))*(S(i)+h2*k12)+(1-alpha)*(0.5*(u2(i)+u2(i+1))*(Q(i)+h2*k22)+epsilon*(R(i)+h2*k52)-d*(S(i)
+h2*k12);
k23=beta*(S(i)+h2*k12)*(I(i)+h2*k32)+gama*(S(i)+h2*k12)*(Q(i)+h2*k22)-alpha*(0.5*(u2(i)
+u2(i+1))*(Q(i)+h2*k22)-(1-alpha)*(0.5*(u2(i)+u2(i+1))*(Q(i)+h2*k22)-d*(Q(i)+h2*k22);

k33=alpha*0.5(u2(i)+u2(i+1))*(Q(i)+h2*k22)-rI*(I(i)+h2*k32)-c*(I(i)+h2*k32)-mu*(I(i)+h2*k32)-
d*(I(i)+h2*k32);

k43= c*(I(i)+h2*k32)-(rH+mu+d)*(H(i)+h2*k42)-0.5*(u3(i)+u3(i+1))*(H(i)+h2*k42);

k53=rH*(H(i)+h2*k42)+rI*(I(i)+h2*k32)-epsilon*(R(i)+h2*k52)-d*(R(i)+h2*k52)+0.5*(u1(i)
+u1(i+1))*(S(i)+h2*k12)+0.5*(u3(i)+u3(i+1))*(H(i)+h2*k42);
k14=shy-beta*(S(i)+h2*k13)*(I(i)+h2*k33)-gama*(S(i)+h2*k13)*(Q(i)+h2*k23)-u1(i+1))*(S(i)
+h2*k13)+(1-alpha)*u2(i+1)*(Q(i)+h2*k23)+epsilon*(R(i)+h2*k53)-d*(S(i)+h2*k13);

k24=beta*(S(i)+h2*k13)*(I(i)+h2*k33)+gama*(S(i)+h2*k13)*(Q(i)+h2*k23)-alpha*(u2(i+1))*(Q(i)
+h2*k23)-(1- alpha)*(u2(i+1))*(Q(i)+h2*k23)-d*(Q(i)+h2*k23);

k34=alpha*u2(i+1)*(Q(i)+h2*k23)-rI*(I(i)+h2*k33)-c*(I(i)+h2*k33)-mu*(I(i)+h2*k33)-d*(I(i)
+h2*k33);

k44= c*(I(i)+h2*k33)-(rH+mu+d)*(H(i)+h2*k43)-u3(i+1)*(H(i)+h2*k43);

k54=rH*(H(i)+h2*k43)+rI*(I(i)+h2*k33)-epsilon*(R(i)+h2*k53)-d*(R(i)+h2*k53)+u1(i+1)*(S(i)
+h2*k13)+u3(i+1)*(H(i)+h2*k43);

S(i+1) = S(i) + (h/6)*(k11 + 2*k12 + 2*k13 + k14);


Q(i+1) = Q(i) + (h/6)*(k21 + 2*k22 + 2*k23 + k24);
I(i+1) = I(i) + (h/6)*(k31 + 2*k32 + 2*k33 + k34);
H(i+1) = H(i) + (h/6)*(k41 + 2*k42 + 2*k43 + k44);
R(i+1) = R(i) + (h/6)*(k51 + 2*k52 + 2*k53 + k54);

end

for i = 1:N
j = N + 2 - i;
k11 = (beta*I(j)+u1(j)+d+gama*Q(j))*lamS(j)-(beta*I(j)-gama*Q(j))*lamQ(j)-
u1(j)*lamR(j);
k21=(-(1-alpha)*u2(j)+gama*S(j))*lamS(j)-(-alpha+gama*S(j)-(1-
alpha)*u2(j)-d)*lamQ(j)-alpha*u2(j)*lamI(j);
k31=1+beta*S(j)*lamS(j)-beta*S(j)*lamQ(j)+(rI+c+mu+d)*lamI(j)-
c*lamH(j)-rI*lamR(j);
k41=(rH+mu+d+u3(j))*lamH(j)-(rH+u3(j))*lamR(j);
k51=-epsilon*lamS(j)+(epsilon+d)*lamR(j);
k12=(beta*0.5(I(j)+I(j-1))+0.5*(u1(j)+u1(j-1))+d+gama*0.5(Q(j)+Q(j-
1)))*(lamS(j)-h2*k11)-(beta*0.5*(I(j)+I(j-1))-gama*0.5*(Q(j)+Q(j-1))*(lamQ(j)-
h2*k21)-0.5*(u1(j)+u1(j-1))*(lamR(j)-h2*k51);
k22 = (-(1-alpha)*0.5*(u2(j)+u2(j-1))+gama*0.5*(S(j)+S(j-1))*(lamS(j)-
h2*k11)-(-alpha+gama*0.5*(S(j)+S(j-1))-(1-alpha)*0.5*(u2(j)+u2(j-1))-
d)*(lamQ(j)-h2*k21)-alpha*0.5*(u2(j)+u2(j-1))*(lamI(j)-h2*k31);
k32=1+beta*0.5*(S(j)+S(j-1))*(lamS(j)-h2*k11)-beta*0.5*(S(j)+S(j-
1))*(lamQ(j)-h2*k21)+(rI+c+mu+d)*(lamI(j)-h2*k31)-c*(lamH(j)-h2*k41)-
rI*(lamR(j)-h2*k51);
k42=(rH+mu+d+0.5*(u3(j)+u3(j-1)))*(lamH(j)-h2*k41)-(rH+0.5*(u3(j)
+u3(j-1)))*(lamR(j)-h2*k51);
k52=- epsilon*(lamS(j)-h2*k11)+(epsilon+d)*(lamR(j)-h2*k51);
k13==(beta*0.5(I(j)+I(j-1))+0.5*(u1(j)+u1(j-1))+d+gama*0.5(Q(j)+Q(j-
1)))*(lamS(j)-h2*k12)-(beta*0.5*(I(j)+I(j-1))-gama*0.5*(Q(j)+Q(j-1))*(lamQ(j)-
h2*k22)-0.5*(u1(j)+u1(j-1))*(lamR(j)-h2*k52);

k23 =(-(1-alpha)*0.5*(u2(j)+u2(j-1))+gama*0.5*(S(j)+S(j-1))*(lamS(j)-
h2*k12)-(-alpha+gama*0.5*(S(j)+S(j-1))-(1-alpha)*0.5*(u2(j)+u2(j-1))-
d)*(lamQ(j)-h2*k22)-alpha*0.5*(u2(j)+u2(j-1))*(lamI(j)-h2*k32);
k33=1+beta*0.5*(S(j)+S(j-1))*(lamS(j)-h2*k12)-beta*0.5*(S(j)+S(j-
1))*(lamQ(j)-h2*k22)+(rI+c+mu+d)*(lamI(j)-h2*k32)-c*(lamH(j)-h2*k42)-
rI*(lamR(j)-h2*k52);

k43=(rH+mu+d+0.5*(u3(j)+u3(j-1)))*(lamH(j)-h2*k42)-(rH+0.5*(u3(j)
+u3(j-1)))*(lamR(j)-h2*k52);

k53=- epsilon*(lamS(j)-h2*k12)+(epsilon+d)*(lamR(j)-h2*k52);

k14==(beta*I(j-1)+u1(j-1)+d+gama*Q(j-1))*(lamS(j)-h2*k13)-(beta*I(j-
1)-gama*Q(j-1)*(lamQ(j)-h2*k23)-u1(j-1)*(lamR(j)-h2*k5);

k24 = (-(1-alpha)*u2(j-1)+gama*S(j-1)*(lamS(j)-h2*k13)-(-
alpha+gama*S(j-1)-(1-alpha)*u2(j-1)-d)*(lamQ(j)-h2*k23)-alpha*u2(j-
1)*(lamI(j)-h2*k33);
k34=1+beta*S(j-1)*(lamS(j)-h2*k13)-beta*S(j-1)*(lamQ(j)-h2*k23)+
(rI+c+mu+d)*(lamI(j)-h2*k33)-c*(lamH(j)-h2*k43)-rI*(lamR(j)-h2*k53);
k44=(rH+mu+d+u3(j-1))*(lamH(j)-h2*k43)-(rH+u3(j-1))*(lamR(j)-h2*k53);

k54=- epsilon*(lamS(j)-h2*k13)+(epsilon+d)*(lamR(j)-h2*k53);

lamS(j-1) = lamS(j) - (h/6)*(k11 + 2*k12 + 2*k13 + k14);


lamQ(j-1) = lamQ(j) - (h/6)*(k21 + 2*k22 + 2*k23 + k24);
lamI(j-1) = lamI(j) - (h/6)*(k31 + 2*k32 + 2*k33 + k34);
lamH(j-1) = lamH(j) - (h/6)*(k41 + 2*k42 + 2*k43 + k44);
lamR(j-1) = lamR(j) - (h/6)*(k51 + 2*k52 + 2*k53 + k54);

end

tempp = (lamS-lamR)./(2*A);
u11 = max(0, min(1,tempp));
u1 = (u11 + oldu1)/2;
tempf = (alpha*Q(lamS-lamI)+Q(lamQ-lamS))/(2*beta)
u21 = max(0, min(1,tempf));
u2 = (u21 + oldu2)/2;
tempq = (H*(lamH-lamR).)/(2*C);
u31 = max(0, min(1,tempq));
u3 = (u31 + oldu3)/2;

temp1 = delta*sum(abs(u1)) - sum(abs(oldu1- u1));


temp2 = delta*sum(abs(u2)) - sum(abs(oldu2 – u2));
temp3 = delta*sum(abs(u3)) - sum(abs(oldu3 – u3));
temp4 = delta*sum(abs(S)) - sum(abs(oldS - S));
temp5 = delta*sum(abs(Q)) - sum(abs(oldQ - Q));
temp6 = delta*sum(abs(I)) - sum(abs(oldI - I));
temp7 = delta*sum(abs(H)) - sum(abs(oldH - H));
temp8 = delta*sum(abs(R)) - sum(abs(oldR - R));
temp9 = delta*sum(abs(lamS)) - sum(abs(oldlamS - lamS));
temp10 = delta*sum(abs(lamQ)) - sum(abs(oldlamQ - lamQ));
temp11 = delta*sum(abs(lamI)) - sum(abs(oldlamI - lamI));
temp12 = delta*sum(abs(lamH)) - sum(abs(oldlamH - lamH));
temp13 = delta*sum(abs(lamR)) - sum(abs(oldlamR - lamR));

test = min(temp1, min(temp2, min(temp3, min(temp4, min(temp5, min(temp6,


min(temp7,min(temp8,min(temp9,min(temp10,min(temp11,min(temp12,temp13))))))))))));
end

y(1,:) = t;
y(2,:) = S;
y(3,:) = Q;
y(4,:) = I;
y(5,:) = H;
y(6,:) = R;
y(7,:) = up;
y(8,:) = uf;
subplot(3,2,1);plot(y(1,:),y(2,:),'c-','LineWidth',1.2)
subplot(3,2,1);xlabel('Time(Days)')
subplot(3,2,1);ylabel('Susceptible(S)')
subplot(3,2,2);plot(y(1,:),y(3,:),'m','LineWidth',1.2)
subplot(3,2,2);xlabel('Time(Days)')
subplot(3,2,2);ylabel('Quaraintained (Q)')
subplot(3,2,3);plot(y(1,:),y(4,:),'g-','LineWidth',1.2)
subplot(3,2,3);xlabel('Time(Days)')
subplot(3,2,3);ylabel('Infected (I)')
subplot(3,2,4);plot(y(1,:),y(5,:),'y','LineWidth',2)
subplot(3,2,4);xlabel('Time(Days)')
subplot(3,2,4);ylabel('Hospitalized (Is)')
subplot(3,2,5);plot(y(1,:),y(6,:),'b','LineWidth',1.2)
subplot(3,2,5);xlabel('Time(Days)')
subplot(3,2,5);ylabel('Recovered (R)')
Codding for Numerical Analysis without control

clear all;clc;

%Number of Iterations 'iterations' multiplication of 6


iterations=1152;
loop=100;

% value of parameters
shy=32000;beta=.011;alpha=.5;epsylon=.04;d=.5;gama=.0000005;rI=.1;c=0.32;m=.99
;rH=.6;

%make the value of h


% upper limit 'b1' and lower limit 'a1'
up1=20;
low1=0;
h=(up1-low1)/iterations;
fS=@(t,S,Q,I,H,R) shy-beta*S*I-gama*S*Q-d*S+epsylon*R+(1-alpha)*Q;
fQ=@(t,S,Q,I,H,R) gama*S*Q+beta*S*I-alpha*Q-(1-alpha)*Q-d*Q;
fI=@(t,S,Q,I,H,R) alpha*Q-rI*I-c*I-m*I-d*I;
fH=@(t,S,Q,I,H,R) c*I-rH*H-m*H-d*H;
fR=@(t,S,Q,I,H,R) rI*I+rH*H-epsylon*R-d*R;

for i1=1:loop
% initial value
t(1)=0;
S(1)=10000;% at t=0
Q(1)=6000;% at t=0
I(1)=3000;% at t=0
H(1)=200;% at t=0
R(1)=20;% at t=0

%code using runge kutta method for state


for i=1:iterations
k11=fS(t(i),S(i),Q(i),I(i),H(i),R(i));
k21=fQ(t(i),S(i),Q(i),I(i),H(i),R(i));
k31=fI(t(i),S(i),Q(i),I(i),H(i),R(i));
k41=fH(t(i),S(i),Q(i),I(i),H(i),R(i));
k51=fR(t(i),S(i),Q(i),I(i),H(i),R(i));

k12=fS(t(i)+h/2,S(i)+h*k11/2,Q(i)+h*k21/2,I(i)+h*k31/2,H(i)
+h*k41/2,R(i)+h*k51/2);
k22=fQ(t(i)+h/2,S(i)+h*k11/2,Q(i)+h*k21/2,I(i)+h*k31/2,H(i)
+h*k41/2,R(i)+h*k51/2);
k32=fI(t(i)+h/2,I(i)+h*k11/2,Q(i)+h*k21/2,I(i)+h*k31/2,H(i)
+h*k41/2,R(i)+h*k51/2);
k42=fH(t(i)+h/2,S(i)+h*k11/2,Q(i)+h*k21/2,I(i)
+h*k31/2,H(i)+h*k41/2,R(i)+h*k51/2);
k52=fR(t(i)+h/2,S(i)+h*k11/2,Q(i)+h*k21/2,I(i)
+h*k31/2,H(i)+h*k41/2,R(i)+h*k51/2);
k13=fS(t(i)+h/2,S(i)+h*k12/2,Q(i)+h*k22/2,I(i)+h*k32/2,H(i)
+h*k42/2,R(i)+h*k52/2);
k23=fQ(t(i)+h/2,S(i)+h*k12/2,Q(i)+h*k22/2,I(i)+h*k32/2,H(i)
+h*k42/2,R(i)+h*k52/2);
k33=fI(t(i)+h/2,S(i)+h*k12/2,Q(i)+h*k22/2,I(i)+h*k32/2,H(i)
+h*k42/2,R(i)+h*k52/2);
k43=fH(t(i)+h/2,S(i)+h*k12/2,Q(i)+h*k22/2,I(i)
+h*k32/2,H(i)+h*k42/2,R(i)+h*k52/2);
k53=fR(t(i)+h/2,S(i)+h*k12/2,Q(i)+h*k22/2,I(i)
+h*k32/2,H(i)+h*k42/2,R(i)+h*k52/2);

k14=fS(t(i)+h/2,S(i)+h*k13/2,Q(i)+h*k23/2,I(i)+h*k33/2,H(i)
+h*k43/2,R(i)+h*k53/2);
k24=fQ(t(i)+h/2,S(i)+h*k13/2,Q(i)+h*k23/2,I(i)+h*k33/2,H(i)
+h*k43/2,R(i)+h*k53/2);
k34=fI(t(i)+h/2,S(i)+h*k13/2,Q(i)+h*k23/2,I(i)+h*k33/2,H(i)
+h*k43/2,R(i)+h*k53/2);
k44=fH(t(i)+h/2,S(i)+h*k13/2,Q(i)+h*k23/2,I(i)
+h*k33/2,H(i)+h*k43/2,R(i)+h*k53/2);
k54=fR(t(i)+h/2,S(i)+h*k13/2,Q(i)+h*k23/2,I(i)
+h*k33/2,H(i)+h*k43/2,R(i)+h*k53/2);

delS1=h*(k11+2*k12+2*k13+k14)/6;
delQ1=h*(k21+2*k22+2*k23+k24)/6;
delI1=h*(k31+2*k32+2*k33+k34)/6;
delH1=h*(k41+2*k42+2*k43+k44)/6;
delR1=h*(k51+2*k52+2*k53+k54)/6;

t(i+1)=t(i)+h;
S(i+1)=S(i)+delS1;
Q(i+1)=Q(i)+delQ1;
I(i+1)=I(i)+delI1;
H(i+1)=H(i)+delH1;
R(i+1)=R(i)+delR1;

end

end
%

%
S(iterations+1)
Q(iterations+1)
I(iterations+1)
H(iterations+1)
R(iterations+1)
%

%time spacing for graph display function, control by "con1"


con1=h;
t1=0;
for i=1:iterations+1
t(i)=t1;
t1=t1+con1;
end
%t=[0,0.05,.1,.15,.2,.25,.3,.35,.4,.45,.5,.55,.6,.65,.7,.75,.8,.85,.9,.95,1];

figure
plot(t,S,'b',t,Q,'y',t,I,'r',t,H,'m',t,R,'g','linewidth',3);
xlabel('Time (days)','FontSize',10), ylabel('Population ');

You might also like