<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Scilabers</p>
<p>A friend (Lars Risbo) published some MATLAB code in LinkedIn for
simulating the infection with a company lockdown after some time.
I figured I'd try to convert it to Scilab.</p>
<p>The code uses ODE45 and I'm not sure that I understand how to
convert this MATLAB code to Scilab. I hope you can explain what I
need to do to make the code work. Some of the original MATLAB code
is found in the comments.<br>
</p>
<pre style="font-family:Monospaced;font-style:normal;font-size:12.0;"><span style="color:rgb(92,92,92);"></span><span style="color:rgb(100,174,100);font-style:italic;">// covid19risbo.sce</span>
<span style="color:rgb(100,174,100);font-style:italic;">//</span>
<span style="color:rgb(100,174,100);font-style:italic;">// SEIRsim1</span>
<span style="color:rgb(100,174,100);font-style:italic;">// Susceptible-Exposed-Infectious-Recovered (SEIR)</span>
<span style="color:rgb(176,24,19);">function</span> <span style="color:rgb(131,67,16);font-weight:bold;">dydt</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);text-decoration:underline;">odefun</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(131,67,16);font-weight:bold;">t</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(160,32,240);">if</span> <span style="color:rgb(131,67,16);font-weight:bold;">t</span><span style="color:rgb(92,92,92);"><</span><span style="color:rgb(0,0,0);">days</span>
<span style="color:rgb(0,0,0);">R</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);">R0</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">else</span>
<span style="color:rgb(0,0,0);">R</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(188,143,143);">0.6</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// Change reproductive rate after lockdown</span>
<span style="color:rgb(160,32,240);">end</span>
<span style="color:rgb(0,0,0);">A</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(74,85,219);">[</span><span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">R</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">Npop</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(255,170,0);">...</span>
<span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">gam</span> <span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">R</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">Npop</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(255,170,0);">...</span>
<span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(0,0,0);">gam</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">delta</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(255,170,0);">...</span>
<span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">Fhosp</span><span style="color:rgb(74,85,219);">)</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(255,170,0);">...</span>
<span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">Fhosp</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(92,92,92);">-</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">Thosp</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(255,170,0);">...</span>
<span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(0,0,0);">R</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(0,0,0);">Npop</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(131,67,16);font-weight:bold;">dydt</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);">A</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">end</span>
<span style="color:rgb(0,0,0);">Begin</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);">datenum</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2020</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">02</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">20</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// begin date</span>
<span style="color:rgb(0,0,0);">Dlock</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);">datenum</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">2020</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">03</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">12</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// date of lockdown</span>
<span style="color:rgb(0,0,0);">days</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);">Dlock</span><span style="color:rgb(92,92,92);">-</span><span style="color:rgb(0,0,0);">Begin</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">R0</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(188,143,143);">2.6</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// inital R value</span>
<span style="color:rgb(0,0,0);">gam</span><span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(188,143,143);">3</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// gamma, the inverse of average latent time</span>
<span style="color:rgb(0,0,0);">delta</span><span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">1</span><span style="color:rgb(92,92,92);">/</span><span style="color:rgb(188,143,143);">5</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// inv time constant which infectious people either recover or enter hospital</span>
<span style="color:rgb(0,0,0);">Fhosp</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(188,143,143);">0.16</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// fraction of recovering people going to hospital</span>
<span style="color:rgb(0,0,0);">Thosp</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(188,143,143);">14</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// average time of hospitalisation</span>
<span style="color:rgb(0,0,0);">Npop</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(188,143,143);">6e6</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// total initial population of sensitive</span>
<span style="color:rgb(0,0,0);">y0</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(74,85,219);">[</span><span style="color:rgb(0,0,0);">Npop</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(188,143,143);">50</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(188,143,143);">50</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(188,143,143);">0</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(100,174,100);font-style:italic;">// [S E I R Hosp ] intial cond.</span>
<span style="color:rgb(0,0,0);">t1</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">60</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">y1</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">ode</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">y0</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(188,143,143);">60</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(0,0,0);text-decoration:underline;">odefun</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// [t1,y1] = ode45(@odefun,[0 60],y0); // run 1st scernario</span>
<span style="color:rgb(0,0,0);">idx</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(74,85,219);">[</span><span style="color:rgb(188,143,143);">3</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">6</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">scf</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">a</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">gca</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">plot</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">Begin</span><span style="color:rgb(92,92,92);">+</span><span style="color:rgb(0,0,0);">t1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">y1</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">idx</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">-</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span> <span style="color:rgb(100,174,100);font-style:italic;">// semilogy(Begin+t1,y1(:,idx),</span><span style="color:rgb(100,174,100);font-style:italic;">'</span><span style="color:rgb(100,174,100);font-style:italic;">-</span><span style="color:rgb(100,174,100);font-style:italic;">'</span><span style="color:rgb(100,174,100);font-style:italic;">,</span><span style="color:rgb(100,174,100);font-style:italic;">'</span><span style="color:rgb(100,174,100);font-style:italic;">LineWidth</span><span style="color:rgb(100,174,100);font-style:italic;">'</span><span style="color:rgb(100,174,100);font-style:italic;">,3)</span>
<span style="color:rgb(0,0,0);">a</span><span style="color:rgb(92,92,92);">.</span><span style="color:rgb(170,170,170);">log_flags</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">nln</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">xlabel</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Date</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(0,0,0);">ylabel</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Number of cases</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(50,185,185);">xgrid</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(100,174,100);font-style:italic;">// ax=gca;</span>
<span style="color:rgb(100,174,100);font-style:italic;">// ax.YLim=[10 max(max(y2(:,idx)))];</span>
<span style="color:rgb(50,185,185);">xtitle</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">{</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Danish Corona lock down on 20.03.12, vs 14 days later</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">R goes from 2.6 to 0.6 at lockdown</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(74,85,219);">}</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">legend</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Infected</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Recovered</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Hospitalised</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(188,143,143);">Total Cases</span><span style="color:rgb(188,143,143);">'</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span><span style="color:rgb(0,0,0);"></span></pre>
<p>P.S. Attached a simple graph of what the output should look like
(file covid19risbo.jpg < 50 kb), at least partially - because I
deleted an alternative case with a later lockdown date = dashed
lines.<br>
</p>
<p>Best regards,</p>
<p>Claus<br>
</p>
<div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br />
<table style="border-top: 1px solid #D3D4DE;">
<tr>
<td style="width: 55px; padding-top: 13px;"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><img src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif" alt="" width="46" height="29" style="width: 46px; height: 29px;" /></a></td>
<td style="width: 470px; padding-top: 12px; color: #41424e; font-size: 13px; font-family: Arial, Helvetica, sans-serif; line-height: 18px;">Virus-free. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank" style="color: #4453ea;">www.avast.com</a>
</td>
</tr>
</table><a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"> </a></div></body>
</html>