построение нескольких линий для моделей заболеваний SIR - PullRequest
0 голосов
/ 09 января 2020

Мне нужна помощь в построении нескольких линий для разных параметров, скажем, \ beta для разных значений (\beta= 0.1, 0.2, 0.4 etc), график будет для dy_2/dt, что означает, что только plot(T, y_2( :,2) или plot(T,y_2(:,3)) тогда график будет временем против Заражены для разных значений \ бета. Я пробовал следующий код:

function EulerSIRTenga()
  clear all; clc;
  rho = 0.7; Lambda = 0.4; beta = 0.9;theta1 = 0.1; 
  theta2 = 0.2;theta3 = 0.1;alpha = 0.33;omega = 0.4;psi = 0.3;
  R0 = rho * beta/(theta1+ Lambda)

  options =odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4 1e-4 1e-4]);
  [T,Y] = ode45(@SIRmodel,[0 365],[0.9,0.7,0.5,0.15,0.35],options);

  plot(T, Y(:,1),'g',T,Y(:,2),'r',T,Y(:,3),'k',T,Y(:,4),'b',T,Y(:,5),'m', 'Linewidth',2);
  xlabel('Time','FontSize',14);
  ylabel('Proportion of population','FontSize',14)
  legend('Susceptibles','Infected', 'AIDS on ART','Detectable VL','Undetectable VL')
  title('Deterministic solution for the proportion of population vs time','FontSize',14);
  grid on
  box on


  function dy=SIRmodel(t,y)
    dy=zeros(5,1);
    dy(1)= rho*Lambda - (beta*y(2)+Lambda-alpha*(y(3)+y(4)+y(5)))*y(1);
    dy(2)=(1-rho)*Lambda+(beta*y(1)-theta1-Lambda+alpha*(y(3)+y(4)+y(5)))*y(2);
    dy(3)= theta1*y(2)+ theta2*y(4)+theta3*y(5)-(alpha+omega+Lambda-alpha*(y(3)+y(4)+y(5)))*y(3);
    dy(4)= psi*omega*y(3)-(alpha+theta2+Lambda-alpha*(y(3)+y(4)+y(5)))*y(4);
    dy(5)=(1-psi)*omega*y(3)-(alpha-theta3+Lambda-alpha*(y(3)+y(4)+y(5)))*y(5);
  end
end

Я хочу, чтобы график выглядел как на рисунке ниже:

I need values of \beta to vary at different rates

Мне нужно чтобы варьировать значения \ beta для разных скоростей.

Это цифра, которую производят мои коды введите описание изображения здесь

...