예제 #1
0
 public decimal GetdNdt(
     C19M.M.C.A.Gumel2006.Interfaces.Parameters.DiseaseInducedMortalityRate.Id d,
     Iμ μ,
     IΠ Π,
     double I,
     double N)
 {
     return
         (Π.Value.Value.Value
          -
          μ.Value.Value.Value * (decimal)N
          -
          d.Value.Value.Value * (decimal)I);
 }
예제 #2
0
 public decimal GetdNdt(
     C19M.M.C.A.Safi2010.Interfaces.Parameters.DiseaseInducedDeathRateInfectiousIndividuals.Iδ δ_1,
     C19M.M.C.A.Safi2010.Interfaces.Parameters.DiseaseInducedDeathRateHospitalizedIndividuals.Iδ δ_2,
     Iμ μ,
     IΠ Π,
     double H,
     double I,
     double N)
 {
     return
         (Π.Value.Value.Value
          -
          μ.Value.Value.Value * (decimal)N
          -
          (δ_1.Value.Value.Value * (decimal)I
           +
           δ_2.Value.Value.Value * (decimal)H));
 }
예제 #3
0
 public decimal GetdSdt(
     FhirDateTime t_IndexElement,
     Iβ β,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorAsymptomaticIndividuals.Iε ε_E,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorIsolatedIndividuals.Iε ε_J,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorQuarantinedIndividuals.Iε ε_Q,
     Iμ μ,
     IΠ Π,
     double E,
     double I,
     double J,
     double N,
     double Q,
     double S)
 {
     return
         (Π.Value.Value.Value
          -
          (decimal)(S / N) * (β.Value.Value.Value) * ((decimal)I + ε_E.Value.Value.Value * (decimal)E + ε_Q.Value.Invoke(t_IndexElement).Value.Value *(decimal)Q + ε_J.Value.Invoke(t_IndexElement).Value.Value *(decimal)J)
          -
          μ.Value.Value.Value * (decimal)S);
 }
 // https://stackoverflow.com/a/55004295
 private Func <double, MathNet.Numerics.LinearAlgebra.Vector <double>, MathNet.Numerics.LinearAlgebra.Vector <double> > f(
     It t,
     Interfaces.Parameters.DiseaseInducedDeathRateSymptomaticIndividuals.Id d_1,
     Interfaces.Parameters.DiseaseInducedDeathRateIsolatedIndividuals.Id d_2,
     Ip p,
     Iβ β,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.QuarantineRateAsymptomaticIndividuals.Iγ γ_1,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.IsolationRateSymptomaticIndividuals.Iγ γ_2,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorAsymptomaticIndividuals.Iε ε_E,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorIsolatedIndividuals.Iε ε_J,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.TransmissionCoefficientModificationFactorQuarantinedIndividuals.Iε ε_Q,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.DevelopmentClinicalSymptomsRateAsymptomaticIndividuals.Iκ κ_1,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.DevelopmentClinicalSymptomsRateQuarantinedIndividuals.Iκ κ_2,
     Iμ μ,
     IΠ Π,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.RecoveryRateSymptomaticIndividuals.Iσ σ_1,
     C19M.M.C.A.Gumel2004.Interfaces.Parameters.RecoveryRateIsolatedIndividuals.Iσ σ_2,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.AsymptomaticIndividuals.IE E,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.SymptomaticIndividuals.II I,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.IsolatedIndividuals.IJ J,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.QuarantinedIndividuals.IQ Q,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.RecoveredIndividuals.IR R,
     C19M.M.C.A.Gumel2004.Interfaces.Variables.SusceptibleIndividuals.IS S)
 {
     return((T, x) =>
     {
         return MathNet.Numerics.LinearAlgebra.Vector <double> .Build.Dense(new[] {
             (double)E.GetdEdt(
                 new FhirDateTime(
                     new DateTimeOffset(
                         t.StartDate.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.Date.AddDays(T))),
                 p,
                 β,
                 γ_1,
                 γ_2,
                 ε_E,
                 ε_J,
                 ε_Q,
                 κ_1,
                 μ,
                 E: x[0],
                 I: x[1],
                 J: x[2],
                 N: x.Sum(),
                 Q: x[3],
                 S: x[5]),
             (double)I.GetdIdt(
                 new FhirDateTime(
                     new DateTimeOffset(
                         t.StartDate.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.Date.AddDays(T))),
                 d_1,
                 γ_2,
                 κ_1,
                 μ,
                 σ_1,
                 E: x[0],
                 I: x[1]),
             (double)J.GetdJdt(
                 new FhirDateTime(
                     new DateTimeOffset(
                         t.StartDate.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.Date.AddDays(T))),
                 d_2,
                 γ_2,
                 κ_2,
                 μ,
                 σ_2,
                 I: x[1],
                 J: x[2],
                 Q: x[3]),
             (double)Q.GetdQdt(
                 new FhirDateTime(
                     new DateTimeOffset(
                         t.StartDate.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.Date.AddDays(T))),
                 γ_1,
                 κ_2,
                 μ,
                 E: x[0],
                 Q: x[3]),
             (double)R.GetdRdt(
                 μ,
                 σ_1,
                 σ_2,
                 I: x[1],
                 J: x[2],
                 R: x[4]),
             (double)S.GetdSdt(
                 new FhirDateTime(
                     new DateTimeOffset(
                         t.StartDate.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.Date.AddDays(T))),
                 β,
                 ε_E,
                 ε_J,
                 ε_Q,
                 μ,
                 Π,
                 E: x[0],
                 I: x[1],
                 J: x[2],
                 N: x.Sum(),
                 Q: x[3],
                 S: x[5])
         });
     });
 }