fork download
  1.  
  2. ticks=100::Double
  3.  
  4. daysForRecv=20
  5. reprNum=2.5
  6.  
  7. from = 0
  8. to = 700
  9. step = 10
  10.  
  11.  
  12. s0=120000000 - i0
  13. i0=100
  14. r0=0
  15.  
  16. beta = reprNum * gamma / s0
  17. gamma = 1/daysForRecv
  18. ns [s,i,r] = s - beta * s * i / ticks
  19. ni [s,i,r] = i + (beta * s* i - gamma * i) / ticks
  20. nr [s,i,r] = r + gamma * i / ticks
  21. nsir = zipWith ($) [ns,ni,nr] . repeat
  22. sirs = iterate nsir [s0,i0,r0]
  23.  
  24. iticks=truncate ticks
  25. newPats n = (sirs!!((n)*iticks)!!0) - (sirs!!((n+1)*iticks)!!0)
  26.  
  27.  
  28. rec n = (
  29. n,
  30. round $ newPats n, round $sirs!! (n*iticks)!!1,
  31. round $ s0+i0-sirs!! (n*iticks)!!0)
  32.  
  33. main = do
  34. mapM_ print $ [rec n | n<-[from,step..to]]
  35. putStr $ "(最大新規罹患者数,日付)\n"
  36. print $ maximum [(newPats n,n)| n<-[0..500]]
  37. putStr $"総感染者数\n"
  38. print $ ((sirs!!(1000*iticks)!!1)+(sirs!!(1000*iticks)!!2))
  39. putStr $ "(最大瞬間罹患者数,日付)"
  40. print $ maximum [(sirs!! n!!1,div n iticks)| n<-[0..500*iticks]]
  41.  
Success #stdin #stdout 3.18s 43552KB
stdin
Standard input is empty
stdout
(0,13,100,100)
(10,27,212,286)
(20,58,448,680)
(30,123,948,1513)
(40,260,2006,3277)
(50,551,4246,7010)
(60,1166,8985,14909)
(70,2466,19011,31621)
(80,5215,40215,66972)
(90,11018,85024,141696)
(100,23234,179551,299434)
(110,48795,378247,631457)
(120,101614,792761,1326121)
(130,207916,1643957,2761364)
(140,410501,3335937,5651396)
(150,756162,6487123,11182209)
(160,1230376,11671503,20815775)
(170,1651825,18527497,35181498)
(180,1744450,24873826,52462281)
(190,1467542,27925427,68888297)
(200,1052412,26886835,81704949)
(210,695075,23137096,90534698)
(220,446479,18471796,96280777)
(230,286951,14050943,99967240)
(240,186585,10360990,102346926)
(250,123031,7487397,103903292)
(260,82158,5339373,104935134)
(270,55428,3774003,105627268)
(280,37687,2651686,106095828)
(290,25773,1855585,106415236)
(300,17699,1294900,106634073)
(310,12190,901915,106784552)
(320,8414,627374,106888292)
(330,5816,436008,106959941)
(340,4024,302825,107009489)
(350,2786,210233,107043784)
(360,1930,145908,107067536)
(370,1338,101244,107083993)
(380,927,70242,107095400)
(390,643,48728,107103307)
(400,446,33801,107108790)
(410,309,23446,107112591)
(420,214,16262,107115227)
(430,149,11280,107117056)
(440,103,7823,107118323)
(450,72,5426,107119203)
(460,50,3763,107119812)
(470,34,2610,107120235)
(480,24,1810,107120529)
(490,17,1256,107120732)
(500,11,871,107120873)
(510,8,604,107120971)
(520,6,419,107121039)
(530,4,291,107121086)
(540,3,202,107121119)
(550,2,140,107121141)
(560,1,97,107121157)
(570,1,67,107121168)
(580,1,47,107121176)
(590,0,32,107121181)
(600,0,22,107121184)
(610,0,16,107121187)
(620,0,11,107121189)
(630,0,7,107121190)
(640,0,5,107121191)
(650,0,4,107121191)
(660,0,2,107121192)
(670,0,2,107121192)
(680,0,1,107121192)
(690,0,1,107121192)
(700,0,1,107121192)
(最大新規罹患者数,日付)
(1761016.0888039917,177)
総感染者数
1.0712119264567786e8
(最大瞬間罹患者数,日付)(2.8022573280532733e7,192)