数学・物理通信
10 巻 5 号

編集

2020 年 6 月

新関章三・世戸憲治・矢野

2020 年 6 月 13 日

忠

1

目次 (Contents)
1. 生物個体集団から見た新型コロナウイルス
紺野公明

2

矢野

忠

27

谷村省吾

28

世戸憲治，谷村省吾，植田洋平，編集者

29

2. 『ピタゴラスからオイラーまで』を読む

3. 千葉逸人さんとのエピソード

4. 読者の声

5. 編集後記矢野忠

30

Kimiaki KONNO

2

Tadashi YANO

27

Shogo TANIMURA

28

Kenji SETO, Shogo TANIMURA, Yohei UEDA and The Editor29

1. Computer-Simulation for Coronavirus Patients

2. Reading “From Pythagoras to Euler”

3. Episode on Dr. Hayato Chiba

4. Mails from Readers

4. Editorial Comments
Tadashi YANO

30

生物個体集団から見た新型コロナウイルス

Computer-Simulation for Coronavirus Patients
公明 ∗

紺野

Kimiaki KONNO
2020 年 6 月 15 日

1 はじめに
1.1 感染症のモデルの歴史とこのレポートの目的
世界的感染病は, マラリア, スペイン風邪, エイズ, SARS, エボラ, 結核, マラリア, 鳥インフルエンザなどがあり，今，新型コロナウイルス感染症 (COVD-19) が世界的流行（パンデミックと言う）を起こしている.
この小論では, 感染症のモデルとして既存の生態系モデルを含め再構成してみた．そのモデルを逐次述べる.
ニューヨークの知事が，「三日早く手を打っていればこんなことにはならなかった」とニューヨークのコロ
ナウイルスの惨事を回顧していた. そのあとの対応はめざかしかったが，遅れは取り返しがつかないものであった.
一方, 東京では PCR 検査も「４日間発熱が続いて・・・」など毎日洋服に合わせたマスクを着用した知事
が, 選挙戦を意識して英語交じりの日本語で記者会見．PCR 検査を強化するするでなし, しないでもなし, ちんたらちんたらと選挙活動の一環としてのコロナ対策を行っていた. 有名人が亡くなる度に世論が嘆き悲しん
でいたが，政策には一向に反映されなかった.
他方, 大阪では知事が率先して事の重大さを認識し PCR 検査を希望者全員に行い, 病人を隔離する政策を行ってきた.
コロナ患者は, 増え始めると指数関数的に増大する. その事実に気づいたときは手遅れであったことは現在,
世界で共通に認識されている.
では, どうすればいいのかを色々な既存の人口, 生態系モデルなどを使い数値計算した，このレポートから考えてほしい.
結論を先に書くと, 希望者全員に PCR 検査を実施し陽性者を隔離することである. 白鴎大学の岡田先生は,TV で初期であれば薬「アビガン」が有効であるので投与しなさいと言われている. 「隔離」は病院でなくてもホテル，大きな体育館を改修してもよいと.
そうすれば小田垣のいうコロナウイルスと日常生活が両立する社会が実現するのではないかと思う.
各モデルには, フリーソフト「十進 BASIC」によるプログラムがつけておいたのでパラメータを変える, 考
え方を変えるなどして自分に合った解析ができるので試みて下さい.

∗ 元日本大学理工学部

2

1. マルサス人口統計の法則
ここでは感染病による感染者の数を問題にしているので感染を抑える抑制が働かないと人口のすべてが感染するまでブレーキがかからない. どのように感染者が増えるかを問題にする. 患者数の増加を見てもらいたい.
実際, 今回のコロナウイルスでどのように患者が増えていったのか東京と大阪を例に示す.

2. ロジスチックモデル
人口増大に制限が加わるとある一定値で人口が抑えられる. ここではウイルスによる感染症を問題とする.
感染者が増えていくとある値のところで免疫を持った人口が増えそれが感染の抑制につながっていくと思える. その効果を勘案したモデルがロジステックモデルと言われる. 東京と大阪の患者数ではこのモデルが当てはまることが分かった.

3. ロトカ・ヴォルテラ方程式
健常者と感染者との相互依存モデルである. 健常者と患者を区別することで両者の間のダイナミックスを見ることができる.

4. Kermack-McKendrick SIQ モデル
このモデルは, 実際の感染症のモデルとして健常者, 患者と患者の隔離者の数をモデルに入れたもので隔離がいかに大切かを示したモデルである.
病人を市中に置いておくことの危険性を指摘したものと思われる.
専門家でないのでその点は強く言えない.

5. 小田垣 SIQR モデル
このモデルでは, 隔離者を隔離感染者と免疫を持った回復者と死亡者に分けたものである. 隔離を徹底することで感染者がいても普段の生活が送れるという結論を与え， TV で世間の注目を浴びたものである.

PCR 検査と患者の隔離をウイルス対策では重要であることを強調したモデルとなっている.
コンピュータが発達したことで，いろいろなケースがシュミレーションが出来るようになり実際の社会の状態に応じた提言が出来るようになってきた.
このモデルを実際に使おうとすると専門知識が必須になってくる. でも, 隔離の必要性は理解できる.

6. エージェントモデル
変数を多くとるとることにより詳細な分析ができる反面, 現象がシンプルに見えなくなってしまう. この論文ではこのモデルをとりあげない.

1.2 マルサスの人口の法則
人口の問題を生物集団の個体数の変化としてはじめてとらえたマルサス (Malthus) のモデルである.
マルサスのモデルでは, 個体数の増減は, その個体数に比例するとされている. すなわち, ある時点 t での個
体数 I(t) の変化は, その個体数に比例するとし，比例定数を K とすると

dI(t)= KI(t)dt(1)

I(t) = I(0)eKt(2)で与えられる. 解は, 初期値を I(0) とするとで与えられる.
この式は, 世界の人口数の変化, 縄文時代からの日本人の人口の変化を説明することができる.

3

K が負のときは, 放射性物質の崩壊現象を説明することができる.
コロナウイルスに当てはめると患者数 I は, その患者数 I に比例して増えるので, 患者は指数関数的に増大し，人口の全てが患者にならない限り感染は収まらない.
東京と大阪の初期の段階では患者数が指数関数的に増大していたことが分かる.

1.3 ロジスチック方程式
マルサスの比例係数を個体数の関数として感染者 I が増えると感染係数は少なくなるとしてK(1 − βI(t))

(3)

dI(t)
= K(1 − βI(t))I(t)dt(4)

として考えられたのがロジステック方程式

である.
患者は, 初め増加するが増加率は, 感染係数が患者数とともに小さくなり, あるとき, 1 − βI(t) = 0 となる.
そこで患者数がある一定値

I0 =

1
β

(5)

で流行はおさまる.
このモデルは, 東京と大阪の患者数の統計によく当てはまっている

1.4 ロトカ・ヴォルテラ方程式
健常者 S(t) と病人 I(t) をそれぞれ変数にとり，それぞれについての時間的変化を考える.
健常者は病気にかかり減少する. その病気にかかる割合は病人に比例する. 病人が増えると健常者は少なくなる.
他方, 感染者は, 健常者に比例して増加する. 健常者が多いと病人も多くなり, 健常者が少なくなると病人も少なくなる.
健常者と病人の和S(t) + I(t)は一定であるので健常者数と患者数は増減を繰り返すことになる.

(6)
すなわち，(7) と (8) を辺々加えれば，右*1

辺 = 0 となるから ．

S(t) と I(t) の詳細な定義:
S(t) : 感受性人口, ある時刻 t での健常者
I(t) : 感染人口: 感染していてかつ感染させる能力のある人口
健常者と感染人口を結びつけるロジステック方程式に類似して連立方程式

dS(t)= −γI(t)S(t),dtdI(t)= γS(t)I(t)dt*1 以下のモデルでも同じように考える．

4

(7)
(8)

を考える.
この式は, 健常者の数と感染者の数の和 S(t) + I(t) が一定であることを保証している. すなわち，(7) と(8) とを辺々加えれば，右辺 = 0 となる*2 ．
このモデルでは, 健常者が全てコロナウイルスに罹るモデルである.

1.5 Kermack-McKendrick SIQ モデル
最終的に病人をなくすために感染者のうち隔離者 Q(t) をモデルの中に入れた.
隔離された人口Q(t) : 病気からの回復による免疫保持者ないし隔離者及び死亡者を導入する.

方程式

dS(t)
= −γI(t)S(t),dtdI(t)= γS(t)I(t) − δI(t),dtdQ(t)= δI(t)
dt

(9)
(10)
(11)

を導入する. Q(t) = 0 とすれば，ロトカ・ヴォルテラ方程式に帰着する．
この式からは, 健常者, 感染者と隔離者の数の和S(t) + I(t) + Q(t)(12)

が一定であること示している. 隔離者が増えれば感染者人口が減少して感染者爆発は起こりにくい. どのくらい隔離すれば，感染者がどのように変わっていくかに関心がある.
ロトカ・ボルテラモデルのように最後には，健常者がいなくなるのかどうかに関心がもたれる.
この初めの予想は誤りであることが分かる. この後の数値計算で隔離の重要性が認識される.

1.6 小田垣 SIQR モデル
小田垣は, 隔離された人口を再分類した. 隔離感染者 Q と免疫を持った回復者と死亡者 R に分けて，隔離の効果を詳細に調べようとした.
方程式は

dS(t)
= −βI(t)S(t),dtdI(t)= (1 − q)βS(t)I(t) − pI(t) − γI(t),dtdQ(t)= qβS(t)I(t) + pI(t) − γQ(t),dtdR(t)= γI(t) + γQ(t)dtとなる.
この式からは, 健常者, 感染者と隔離者の数の和が一定

S(t) + I(t) + Q(t) + R(t)*2 以下のモデルでも同じように考える．

5

であること示している.
変数が増えることで，より細密な解析ができるが，増やした変数の役割を見ていきたい. しかし，専門的知識がないのでパラメータをどのように選べばいいのか分からなかった.
コロナウイルと PCR 検査で日常生活の共存まで話を進められなかった.

1.7 エージェントモデル
河野が解析したモデルである. 変数が 6 変数と多く詳細な議論はできるが，感染の実態を把握するのは簡単
ではない.
以下, エージェントモデルを除いた各モデルの解析を行う.

2 東京と大阪の患者数の変遷
東京都と大阪府の累計患者数.
注意するのは指数関数的に増加する患者の割合を決めるパラメータ K が東京都でも大阪府でも同じ

K = 0.15(13)で与えられることである. コロナウイルスの感染の強さを決めるパラメータとして注目したい.

1. 東京都の累計患者数 2020.05.24 一部訂正
東京都の累計患者数は 4 月 11 日を基準として EXCELS の表示で=5160/(1+(5160/1900-1)*EXP(-0.15*(VALUE($A91)-VALUE($A$80))))
書き換えると

5160)
1 + 1900 − 1 e−0.15∗(A1−A2)(14)

K = 0.15(15)( 5160で与えられる.
パラメータ K はをとる.
ここで, A2 は累計患者数をデータにフィットさせるための基準日で4 月 11 日までの累計患者数

1900 名に取った. A1 はその基準日からのずれの日数を表す. 前の日 4 月 10 日であれば (A1 − A2) は −1 となり,次の日 4 月 12 日では A1 − A2 は +1 となる.
最終的には, 東京都の患者総数 5,160 名が予想される.
途中の振る舞いを見てみる.
基準日 4 月 11 日

A2 = 79

基準日以前 3 月 1 日 A1 = 38, A1 - A2 = -41
基準日以降 6 月 1 日 A1 = 130, A1 - A2 = +51
基準日以前の振る舞い: 指数関数的に減少する

6

(5160 ×)5160− 1 e0.15∗(A1−79)
1900∼ 8000 × e0.15∗(A1−79)

(16)
(17)

基準日以後の振る舞い: 一定値 5160 に近づく)(
3100 −0.15∗(A1−79)e5160 1 −1900∼ 5160

図1

(18)
(19)

東京都コロナ感染者

1. 大阪府の患者数 2020.05.23 一部訂正
大阪府も累計患者数を 4 月 11 日を基準として EXCELS の表示で=1790/(1+(1790/766-1)*EXP(-0.15*(VALUE($A81)-VALUE($A$75))))
累計患者総数

1790 名

1+

1790
)
−
1
e−0.15∗(A1−A2)766( 1790で与えられる.

7(20)

ここで, A2 は患者数をデータにフィットさせるための基準日で4 月 11 日までの患者総数766 名に取った. A1 はその基準日からのずれで 前の日 4 月 10 日であれば (A1 − A2) は −1 となり, 4 月 11 日のつぎの日の 4 月 12 日では A1 − A2 は +1 となる.
パラメータ K は

K = 0.15

(21)

をとる.
最終的には, 大阪府の患者総数 1,790 名が予想される.
途中の振舞を見てみる.
基準日 4 月 11 日

A2 = 74

基準日以前 3 月 14 日 A1 = 46, A1 - A2 = -28
基準日以降 5 月 6 日 A1 = 99, A1 - A2 = +25
基準日以前の振る舞い: 指数関数的に減少する(
1750 ×)1750− 1 e0.15∗(A1−74)
766∼ 2300 × e0.15∗(A1−74)

(22)
(23)

基準日以後の振る舞い: 一定値 1750 に近づく(

980 −0.15∗(A1−74)
1790 1 −e770∼ 1790

)
(24)
(25)

3 各モデルの数値計算
3.1 マルサスの法則
マルサスのモデルでは, 人口の増加についてのモデルである.
個体数の増減は, その個体数に比例するとされある時点 t での個体数 N (t) の変化は, 比例定数を K とす
ると

dN (t)= KN (t)dt(26)

で与えられる. これは解析的に解け，初期値を N (0) とすると

N (t) = N (0)eKt(27)で与えられる.
これを数値的に 「十進 BASIC」を使い，付録に示した精度の良い Runge-Kutta-Gill 法を使い数値的に
解く.

8

図2

大阪府コロナ感染者

K の値を東京都と大阪のウイルス感染者数のデータに合わせてみる.
目測でデータと合わせるのは難しい. いい方法があるはずであるが分からない.
東京は K = 0.15 ぐらい. 大阪は K = 0.14 − 0.15 ぐらい少し幅がある.
初期値 t = 0 : 初期患者数 N (0) = 1 名 : 係数 K = 0.15 にとり数値計算をしてみた.
日にちを単位に出力する. 厳密解が分かっているので数値計算値と比較して出力する.

REM File Name: Malthus_RKG2.bas
REM Method: Runge-Kutter-Gill method
REM Equation: dN/dt = f(a,N)
REM SET bitmap SIZE 400 , 640
SET POINT COLOR 4
SET Axis COLOR 1
REM 関数の設定
DEF f(a,N) = K*N
REM パラメータと初期値の設定
LET K = 0.15
LET N0 = 1
REM Initial Values
LET t = 0

9LET dt= 0.1
LET NN = 550
REM Final ValueLET N = N0
PRINT t, N
REM Picture
SET WINDOW -5,60,-80,3000
DRAW GRID(5,100) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(5,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
FOR i = 1 TO NN
LET k1 = dt*f(a, N)
LET k2 = dt*f(a, N+k1/2)
LET k3 = dt*f(a, N+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2)
LET k4 = dt*f(a, N-k2*SQR(2)/2+k3*(2+SQR(2))/2)
LET N = N + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET t = t + dt
IF INT(t) = t THEN
PRINT t, N, N0*EXP(K*t)
PLOT POINTS: t, N
END IF
NEXT iEND
図 3 で 50 日目で患者数 1808 名, 55 日で 3827 名と急激に増えていくことが分かる.

3.2 Logistic モデル
Logistic モデルを使い，コロナ感染数を考える.
(
dy
y)
y
=K 1−
dt
L
ここで

y: 感染者数
t: 時間
K: 感染者増加率
L: 最終感染者数
解は

10

(28)

図 3 Malthus Model N (0) = 1, K = 0.15

y(t) =y0 L
y0 + (L − y0 )e−kt

ここで, y0 は初期の患者数とする.
東京と大阪のデータを使い数値解析をしてみる.
東京: K = 0.15, L = 5000
大阪: K = 0.15, L = 1750

REM File Name: Logistic_RKG.bas
REM Method: Runge-Kutter-Gill method
REM Equation: dN/dt = f(a,N)
REM SET bitmap SIZE 600 , 640
SET POINT COLOR 4
SET Axis COLOR 1
REM 関数の設定
DEF f(K,L,N) = K*(1-N/L)*N
REM パラメータと初期値の設定
LET K = 0.15
REM Tokyo
LET L = 5000
LET N0 = 1
REM Initial Values
LET t = 0

11

(29)

LET dt= 0.1
LET NN = 1200
REM Final ValueLET N = N0
PRINT t, N
REM Picture
SET WINDOW -10,120,-200,5500
DRAW GRID(30,1000) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(5,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
FOR i = 1 TO NN
LET k1 = dt*f(K, L, N)
LET k2 = dt*f(K, L, N+k1/2)
LET k3 = dt*f(K, L, N+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2)
LET k4 = dt*f(K, L, N-k2*SQR(2)/2+k3*(2+SQR(2))/2)
LET N = N + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET t = t + dt
IF INT(t) = t THEN
PRINT t, N
PLOT POINTS: t, N
END IF
NEXT iEND
図 4 に同じスケールで東京都と大阪のシミュレーションの結果を図示する. 感染が始めると東京は急激に患者数が増えていることが分かる.

K が同じ値をとっているので初めの増え方は同じである. 最大患者総数が違ってくる. これは人口が東京と大阪で違うのか, 又は, 政策の違いによるものなのか見極める必要がある.

3.3 Lotka-Volterra モデル
健常者 S(t) と病人 I(t) をそれぞれ変数にとり，それぞれについての時間的変化を考える.
健常者は病気にかかり減少する. その病気にかかる割合は病人に比例するとする. 病人が増えると健常者は少なくなる. 健常者と病人の和S(t) + I(t)は一定である. 数式を使って解析してみる.

S(t) と I(t) の定義:
S(t) : 感受性人口, ある時刻 t での健常者

12

(30)

図 4 Logistic Model in Tokyo N (0) = 1, K = 0.15, L = 5000

I(t) : 感染人口: 感染していてかつ感染させる能力のある人口
健常者と感染人口を結びつける連立方程式 Lotka-Volterra 方程式

dS(t)= −βI(t)S(t),dtdI(t)= βS(t)I(t)
dt

(31)
(32)

で表す. この二つに式の和をとると健常者と患者の和は一定であることが分かる.
この式を数値解析してみる.
単に RKG 法を用いて二つの方程式を連立させると患者数が一定値に収まらず発散してしまう. 数値的不安定性が存在するのかどうかは今は議論しない.
そこで, 健常者と患者数の和が S + I が一定であることを使い, 健常者について計算し, その結果から保存則を使い患者数を計算する方法をとる. この手法を以下の解析でも使う.
健常者数が指数関数的に減少し, 感染人口が急激に増えていくことが分かる（図 6 参照）.

REM File Name: Lotka-Volterra2.bas
REM Method: Runge-Kutter-Gill method
REM Equation: dS/dt = f(a,S,I)
REM Equation: dI/dt = g(a,S,I)
REM SET bitmap SIZE 600 , 640
SET POINT COLOR 4
SET Axis COLOR 1
REM 関数の設定
REM S : Ordinary person13図 5 Logistic Model in Osaka N (0) = 1, K = 0.15, L = 1750

REM I : Patient
DEF f(K,S,I) = -K*S*I
REM パラメータと初期値の設定
LET K = 0.0005
REM Initial Values
LET t = 0
LET dt= 0.01
LET S0 = 1000
LET S = S0
LET I = S0 - S
PRINT t, S, I
REM Picture
SET WINDOW -5,30,-50,1200
DRAW GRID(30,1000) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(5,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
LET NN = 1000
FOR i = 1 TO NN
LET k1 = dt*f(K, S, I)
LET k2 = dt*f(K, S+k1/2, I)

14

LET k3 = dt*f(K, S+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2, I)
LET k4 = dt*f(K, S-k2*SQR(2)/2+k3*(2+SQR(2))/2, I)
LET S = S + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET t = t + dt
LET I = S0 - S!

IF INT(t) = t THEN

PRINT t, S, I
SET POINT COLOR 2
PLOT POINTS: t, S
SET POINT COLOR 4
PLOT POINTS: t, I!

END IF

NEXT i
END

図 6 Lotka-Volterra Model

3.4 Kermack-McKendrick モデル
変数を定義する：

S(t) : 感受性人口 (感染する可能性のある人口, 健常者)
I(t) : 感染人口 (感染してかつ感染させる能力のある人口, 患者)
Q(t) : 隔離された人口 (病気から回復による免疫保持者ないし隔離者・死亡者)

15

dS(t)= −βS(t)I(t),dtdI(t)= βS(t)I(t) − γI(t)dtdQ(t)= γI(t)dt
ここで,

β : 感染率γ : 隔離率βI(t) : 感染力 : 単位時間あたり単位人口当たりの感受性人口感染率を表す. 感染しても免疫ができない場
合, 潜伏期間が長い場合などは式を変形する必要がある.
感染の初期に, 少数の患者が発生した場合 S(t) ∼ S(0) と近似できるから

dI(t)= (βS(0) − γ)I(t)
dt

(33)

I(t) = e(βS(0)−γ)t I(0)(34)

と近似できる. 解はとなる. この指数関数に従って患者数が増加することがマルサス法則と呼ばれている.
もし, 指数部分 βS(0) − γ が負であれば患者は自然消滅する. すなわち, 隔離をすばやく行えば感染は広がらない. これがこの方程式の解析から分かる一つの結論である.
極言すれば, ウイルスの遺伝子がすぐに解析できるので初期にウイルス検査を全員に行い, 隔離すれば感染の流行は抑えられる.

[重要]

このウイルス検査が早急にできるのか？．

これができるということが分かってきた. 今, 病気の「風邪」が, ウイルスによるものかどうか検査ができる. その装置ではウイルスの DNA 情報を使っている. 新型コロナウイルスでも遺伝子配列が分かれば同じ装置で新型コロナウイルス検査ができる. 多くの大学病院でその検査を実際行っている. 当然民間病院でも検査は行える. でも, 厚生労働省が認めないので広く検査が行えない状態が続いている. 裏の話もあるらしい. 政治家には「国民の健康はどうでもいい？」 専門家会議の議事録も出せない国で「国民」はほうっておかれている？． 少なくとも政策の想定外としか思えない. 10 万円の給付金で国民の憤慨が鎮まる国なのだから.
先ず, １０進 BASIC によるプログラムを示す。
計算は, I + S + Q の和が一定であるので S と Q を計算して S を求めることにしました. 三変数をすべてを求めようとすると丸め誤差による解の数値不安定性が存在するのかうまくいかなかった。
若いときであればいろいろ考えたのだが，もう若くはないので，とにかく結果を示す.

REM File Name: Coronavirus4.bas
REM Method: Runge-Kutter-Gill method
REM S : Ordinary person 健常者
REM I : Infected person 感染者
REM Q : Quarantine or Recovered person 隔離患者 抗体を持った回復者を含む
REM 保存則 S + I + Q = 一定
16

REM Equation: dS/dt = f(K,S,I)
REM Equation: dI/dt = g(K,M,S,I)
REM Equation: dQ/dt = h(M,I)
REM SET bitmap SIZE 600 , 640
REM 関数の設定
DEF f(K,S,I) = -K*I*S
REM DEF g(K,M,S,I) = K*S*I -M*I
REM I = S0+I0-S-Q
DEF h(M,I) = M*I
SET Axis COLOR 1
REM パラメータと初期値の設定
REM 感染率LET K = 0.01
REM 隔離の割合
LET M = 6
REM 計算パラメータ
LET t = 0
LET dt= 0.001
LET NN = 200
REM 初期値
LET S0 = 600! 初期健常者数LET I0 = 1! 初期患者数

LET Q0 = 0! 初期隔離者数

REM Setting of Initial Values
LET S = S0
LET I = I0
LET Q = Q0
PRINT t, S, I, Q
REM Picture
SET WINDOW -20,250,-20,600
DRAW GRID(50,100) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(25,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1000
PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
FOR i = 1 TO NN
LET k1 = dt*f(K, S, I)
LET m1 = dt*h(M, I)
LET k2 = dt*f(K, S+k1/2, I)
17

LET m2 = dt*h(M, I)
LET k3 = dt*f(K, S+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2, I)
LET m3 = dt*h(M, I)
LET k4 = dt*f(K,S-k2*SQR(2)/2+k3*(2+SQR(2))/2, I)

LET m4 = dt*h(M, I)
LET S = S + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET Q = Q + (m1 + (2-SQR(2))*m2 + (2+SQR(2))*m3 + m4)/6
LET I = S0+I0-S-Q
LET t = t + dt!

PRINT t, S, I, Q!

IF INT(t) = t THEN

PRINT t, S, I, Q
SET POINT COLOR 4 ! RED
PLOT POINTS: 50*t, S
SET POINT COLOR 3 ! GREEN
PLOT POINTS: 50*t, Q!

SET POINT COLOR 5 ! BLUE!

PLOT POINTS: 50*t, Q

SET POINT COLOR 8 ! BLACK
PLOT POINTS: 50*t, I!’

END IF

NEXT i
END
プログラム上の β と γ は, それぞれ, K, M に対応している.

\beta = K
\gamma = M
健常者の感染率を K = 0.01 に固定して隔離の度合いを示すパラメータを変えた.

β = 2.0, 4.0, 6.0
グラフを示す.
隔離をすることは病人を減らすことに大きく寄与する. 隔離が進めば病人も少なく社会活動が普段の状態でできることを示している。重要な点は、全病人数も少くなるのではないかと思われる.
極論すると最後の図では, 病人はいなくて隔離者のみが存在する状態も実現することになるのではと思われる.
これからは隔離の重要性が見えてくる.

18

図 7 SIQ model K = 0.01, M = 2.0

図 8 SIQ model K = 0.01, M = 4.0

3.5 小田垣 SIQR モデル
小田垣は, 感染者を感染が確認され隔離された者と感染がされていない感染者の二種類に分類する新しいモデルを提案した.

19

図 9 SIQ model K = 0.01, M = 6.0

図 10 Odagaki Model K = 0.01, M = 0.2, P = 0.1, Z = 0.2

健常者 S が感染する. 感染者全体を PCR 検査で感染が確認され，隔離された者 Q と内在する未確認の感染者 I と回復者と死亡者 R に分け, 隔離の効果を詳細に調べようとした.

20

方程式は

dS(t)
= −βI(t)S(t),dtdI(t)= (1 − q)βS(t)I(t) − pI(t) − γI(t),dtdQ(t)= qβS(t)I(t) + pI(t) − γQ(t),dtdR(t)= γI(t) + γQ(t)dtとなる.
式を見てみる. 第 1 番目の式は, 割合係数 β で健常者 S が市中にいる潜在的なコロナ患者 I により感染することを意味する.

このモデルでは隔離された感染者からは新たな感染者はでないと仮定されている．実際には隔離された感染者からも新たな感染者がでることはあるのだろうが，それは無視されている*3 ．
第 2 番目の式は, コロナ患者の総数を 1 としたときの割合 q が隔離される. この式は 潜在的な感染者数を増減を表す式である。
この式には，全未確認感染者 I の内 pI が検査で陽性になっていることが見つかり隔離される. 隔離患者は,はじめから検査で感染者としてわかって隔離される場合と，しばらくは潜在感染者でいるが，そのうちに検査されて感染者と確認されて隔離されるという二つのルートがある. 隔離されていない市中感染者が治る割合がγI で患者数に比例する.
第 3 番目の式は隔離者数 Q の変化を表す式である．これには, いま述べた二つのルートでの隔離者の増加と回復者による隔離者の減少から成り立っている.
第 4 番目の式は, 回復者は, 隔離感染者と市中感染者とから成ることを意味している.
隔離感染者については何か無理があるモデルである. しかし, 実際の現場を知らないので実態は分からない.
小田垣は, 式に含まれるパラメータを現状のデータに合わせて求めて，解説をしている.
この式からは, 健常者, 感染者と隔離者 (回復者と死亡者) の数の和が一定

S(t) + I(t) + Q(t) + R(t)であることを示すことができる.

4 つの連立微分方程式を辺々加えれば，右辺は 0 となるから．

ここで, 私は, 変数を適当に与えて定数それぞれを与え，変数の変化からその役割を見た.
数値計算をすると結果は出るが，その医学的内容は分からない.
前のモデルと同様にプログラムを示し, 結果を図示する. 患者の隔離が進めば感染者の数は少くなることは分かる. でも, 「社会生活を正常に動かしながらウイルス患者と共存するには？」に対する答えは出てこない.

REM File Name: Odagaki.bas
REM Method: Runge-Kutter-Gill method
REM S : Ordinary person 健常者
REM I : Infected person 感染者
REM Q : Quarantine person 隔離患者
REM R : Recovered person

抗体を持った回復者を含む*3 そんな現実にありえないことを仮定してはいけないという人もいるだろうが，本質を抉り出すためにはこういう大胆な仮定が必要

である．

21

REM 保存則 S + I + Q + R = 一定
REM Equation: dS/dt = f(K,S,I)
REM Equation: dI/dt = v(K,M,P,Z,S,I)
REM Equation: dQ/dt = h(M,K,P,Z,Q,I,S)
REM Equation: dR/dt = y(G,Q,I)
REM SET bitmap SIZE 600 , 640
REM 関数の設定
REM beta = K, q = M, p = P,gamma = Z
DEF f(K,S,I) = -K*I*S
DEF g(K,M,P,Z,S,I)=(1-M)*K*S*I-P*I-Z*I
DEF h(M,K,P,Z,Q,I,S)=M*K*S*I+P*I-Z*Q
DEF y(Z,Q,I)=Z*I+Z*Q
REM
SET Axis COLOR 1
REM パラメータと初期値の設定
LET K = 0.01 ! 感染率
LET M = 0.2! 隔離の割合LET P = 0.1! PCR 陽性からの隔離

LET Z = 0.3! 隔離者の回復率

REM 計算パラメータ
LET t = 0
LET dt= 0.001
LET NN = 500
REM 初期値
LET S0 = 500! 初期健常者数LET I0 = 1! 初期患者数

LET Q0 = 0! 初期隔離者数

LET R0 = 0! 初期回復者

REM Setting of Initial Values
LET S = S0
LET I = I0
LET Q = Q0
LET R = R0
PRINT t, S, I, Q
REM Picture
SET WINDOW -50,500,-20,600
DRAW GRID(50,100) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(25,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1000
22

PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
REM Use conservation law S+I+Q+R = const.
REM Caluculate S, Q, R, then I = const - (S + Q + R)
LET CONST = S0+I0+Q0+R0
FOR i = 1 TO NN
LET a1 = dt*f(K,S,I)
LET b1 = dt*h(M,K,P,Z,Q,I,S)
LET c1 = dt*y(Z,Q,I)
LET a2 = dt*f(K, S+a1/2, I)
LET b2 = dt*h(M,K,P,Z,Q+b1/2,I,S+a1/2)
LET c2 = dt*y(Z,Q+b1/2,I)
LET a3 = dt*f(K, S+a1*(SQR(2)-1)/2+a2*(2-SQR(2))/2, I)
LET b3 = dt*h(M,K,P,Z,Q+b1*(SQR(2)-1)/2+b2*(2-SQR(2))/2,I,S+a1*(SQR(2)-1)/2+a2*(2-SQR(2))/2)
LET c3 = dt*y(Z,Q+b1*(SQR(2)-1)/2+b2*(2-SQR(2))/2, I)
LET a4 = dt*f(K, S-a2*SQR(2)/2+a3*(2+SQR(2))/2, I)
LET b4 = dt*h(M,K,P,Z,Q-b2*SQR(2)/2+a3*(2+SQR(2))/2,I,S-a2*SQR(2)/2+a3*(2+SQR(2))/2)
LET c3 = dt*y(Z,Q-b2*SQR(2)/2+b3*(2+SQR(2))/2, I)
LET S = S + (a1 + (2-SQR(2))*a2 + (2+SQR(2))*a3 + a4)/6
LET Q = Q + (b1 + (2-SQR(2))*b2 + (2+SQR(2))*b3 + b4)/6
LET R = R + (c1 + (2-SQR(2))*c2 + (2+SQR(2))*c3 + c4)/6
LET I = CONST - S - Q - R
LET t = t + dt
PRINT t, S, Q,

R, I

SET POINT COLOR 4 ! RED 健常者数
PLOT POINTS: 50*t, S
SET POINT COLOR 8 ! VIOLET 隔離者数
PLOT POINTS: 50*t, Q
SET POINT COLOR 5 ! BLUE 回復者
PLOT POINTS: 50*t, R
SET POINT COLOR 3 ! GREEN 感染者
PLOT POINTS: 50*t, I!’

END IF

NEXT iEND

23

4 数値計算法
4.1 Runge-Kutter-Gill 法
Runge-Kutter-Gill 法
１０進 BASIC によるプログラム
下のプログラムの 3 行目に記載されたホームページから，このプログラムをとった. 十進 BASIC に素人なのでプログラムは読めるが, 関数をどう表現して良いのかが分からなかった.

REM Malthus_RKG.bas
REM Runge-Kutter-Gill method
REM modify https://nemuneko-gensokyou.blog.ss-blog.jp/2015-06-06-5
REM 関数の設定
DEF f(a,N) = a*N
REM 初期値の設定
LET a = 1
LET N0 = 1
REM
LET t = 0
LET dt= 0.1
LET NN = 10REM
LET N = N0
PRINT t, N
REM Runge-Kutter-Gill Method
FOR i = 1 TO NN
LET k1 = dt*f(a, N)
LET k2 = dt*f(a, N+k1/2)
LET k3 = dt*f(a, N+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2)
LET k4 = dt*f(a, N-k2*SQR(2)/2+k3*(2+SQR(2))/2)
LET N = N + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET t = t + dt
PRINT t, N, EXP(t)NEXT iEND

OUTPUT DATAt

N :numerical01

N :excat24

.1

1.10517083333333

1.10517091807565.2

1.22140257085069

1.22140275816017.3

1.34985849706253

1.349858807576.4

1.49182424008068

1.49182469764127.51.64872063859683

1.64872127070013.6

1.82211796209192

1.82211880039051.72.01375162659676

2.01375270747048.82.2255395632923

2.22554092849247.92.45960141378005

2.45960311115695

1

2.71827974413514

2.71828182845905

Lotka-Volterra Model で RKG 法を使ってみたが，患者数 S の数値が発散して数値計算では望む結果が出なかった.

REM File Name: Lotka-Volterra.bas
REM Method: Runge-Kutter-Gill method
REM Equation: dS/dt = f(K,S,I)
REM Equation: dI/dt = g(K,S,I)
REM SET bitmap SIZE 600 , 640
REM FUNTION f(K,S,I)
DEF f(K,S,I) = -K*I*S
REM END FUNCTION
REM g(K,S,I)
DEF g(K,S,I) = K*S*I
REM END FUNCTION
SET POINT COLOR 4
SET Axis COLOR 1
REM 関数の設定
REM S : Ordinary person
REM I : Patient
REM パラメータと初期値の設定
REM Tokyo
LET K = 0.01
REM Initial Values
LET t = 0
LET dt= 0.0001
LET NN = 1500
LET S0 = 600
LET I0 = 1
25

REM Setting of Initial Values
LET S = S0
LET I = I0
PRINT t, S, I
REM Picture
SET WINDOW -10,120,-100,1100
DRAW GRID(30,1000) !ｘ軸方向 間隔 p，ｙ軸方向 間隔 q の格子を描く。
!’DRAW axes
DRAW AXES(5,100) !’ 目盛り間隔が x 軸方向 p ,y 軸方向 q の x 軸と y 軸を描く
PLOT POINTS: 0,1000
PLOT POINTS: 0,1
REM Runge-Kutter-Gill Method
FOR i = 1 TO NN
LET k1 = dt*f(K, S, I)! S

f(K,S,I) = -K*S*I

LET l1 = dt*g(K, S, I)! I

g(K,S,I) =K*I*SLET k2 = dt*f(K, S+k1/2, I+l1/2)
LET l2 = dt*g(K, S+k1/2, I+l1/2)
PRINT k1, l1, k2, l2
LET k3 = dt*f(K, S+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2, I+l1*(SQR(2)-1)/2+l2*(2-SQR(2))/2)
LET l3 = dt*g(K, S+k1*(SQR(2)-1)/2+k2*(2-SQR(2))/2, I+l1*(SQR(2)-1)/2+l2*(2-SQR(2))/2)
LET k4 = dt*f(K, S-k2*SQR(2)/2+k3*(2+SQR(2))/2, I-l2*SQR(2)/2+l3*(2+SQR(2))/2)
LET l4 = dt*g(K, S-k2*SQR(2)/2+k3*(2+SQR(2))/2, I-l2*SQR(2)/2+l3*(2+SQR(2))/2)
PRINT k3, l3, k4, l4
LET S = S + (k1 + (2-SQR(2))*k2 + (2+SQR(2))*k3 + k4)/6
LET I = I + (l1 + (2-SQR(2))*l2 + (2+SQR(2))*l3 + l4)/6
LET t = t + dt!’

PRINT t, S, I!’

IF INT(t) = t THEN

PRINT t, S, I
PLOT POINTS: 50*t, S
PLOT POINTS: 50*t, I!’

END IF

NEXT iEND

26

『ピタゴラスからオイラーまで』を読む
矢野 忠*1

Reading “From Pythagoras to Euler”
Tadashi Yano *2

500 ページの大作である [1]．この本はピタゴラスの定理からはじめて，三角比や三角関数についてのほとんど
あらゆることが書かれた数学書である．
巻末に近い 11 章では指数関数と対数関数についても述べられてあり，このことから三角関数と指数関数の関係を示すオイラーの公式まで導いてある．三角関数の応用としてのフーリエ級数についても述べられており，もちろん，三角関数の微分と積分や指数関数と対数関数の微分・積分についても述べてある．
一読して，説明の図がとても多いこと，式の計算が途中を省略せずに詳しく書かれていることは類書にない特色であろう．副題として「読む授業」とあるが，この副題通りである．
高校生が読んでも十分にわかる内容だと思うが，現在の高校生でこういう書を読むひまがある人は少ないのではないか．この書を読める高校生は少なくないとは思うが，60 年以上前に高校生であった私がその当時にこの書が出ていたとしても読めたかどうかはわからない．
いわゆる高校の学習参考書の域をはずれた書なので，三角関数の式の変形とか，三角方程式・不等式の解法を学
ぶつもりならば，ちょっと遠回りになるかもしれない．これらについては巻末の補足で簡単に触れられているが．
すでに社会人となっている方で，三角関数とそれに関連したトピックに関心のある人にはまことに楽しい書であろう．私も就寝前の数時間を毎日 1 ヶ月以上にわたって楽しませてもらった．
いくつか，私にとって目新しかった点について述べておこう．
三角関数式の変形についてであるが，三角関数の和や差を積に変形するのは三角方程式や三角不等式を解くときに役立つことが多く，また積を和や差に変形するのは三角関数の積分するときに役立つという指摘である．
特に応用として重要になる，フーリエ級数のフーリエ係数を求めるときには，三角関数の積の積分を和の積分として評価する必要がある．
三角関数とその応用およびその関連が本書のテーマであるが，整関数（多項式）の微分や積分もきちんととりあ
げられているから，微分や積分をあまり知らない人でも，この書を読んでいけば，おおよそのことは習得できる．
高校レベルを超えるトピックとして，複素関数にも触れられている．複素関数としての対数関数ではこの関数の多価性についても述べられており，リーマン面の図もそこには見られる．また球面三角法の余弦定理や正弦定
理にも数ページがさかれているが，図が赤線も使われていてわかりやすい．

参考文献[1] 坂江 正，『ピタゴラスからオイラーまで』（海鳴社，2019）(2020.3.23)*1 元愛媛大学工学部*2 yanotad@earth.ocn.ne.jp27千葉逸人さんとのエピソード
谷村 省吾*1

Episode on Dr. Hayato Chiba
Shogo Tanimura *2「数学・物理通信」の編集者様，数学・物理通信を毎号，楽しませていただいております．
「数学・物理通信」10 巻 4 号（2020 年 6 月発行）掲載の矢野忠さんの記事「行列の積の定義」を読んでいて，矢野さんが千葉逸人さんと私に言及されていることに気づきました．記事の脚注に書かれているとおり，私が京都大学に勤務していたときに千葉逸人さんとの接触がありました．

2002 年頃，私は京都大学工学部物理工学科（機械・航空宇宙・材料工学・原子核工学などの学科）の講師でした．千葉君は学部 2 年生で，学部 3 年生向けに私が行っていた数学の講義を聴きに来ていました．当時，京大では上の学年の開講科目でも履修できたようです（開講時間が重なっている科目でも履修できたそうです．私は全然かまわないと思っていましたが，後に，京大でもそういうことは許されなくなったそうです．残念なことだと思います*3 ）．彼はいつも講義室の最前列の席に座っていて，私の出題に対するレポートもなかなかいい答えを書いていました．

2003 年 2 月のことですが，千葉君は私にメールを寄こして来て，本の原稿を書いたので見ていただけないでしょうかという旨を伝えて来られました．それが『工学部で学ぶ数学』 [1] の原稿でした．その質・量に驚いて，
これ本当に君が書いたの？と思いました．発売後は，現役の京大工学部生が書いた数学の教科書として話題になったようです．
その後，何年かして，京大の数理工学教室の岩井敏洋教授が主宰する研究室に私が准教授として着任したときには，彼は同じ研究室の大学院生でした．彼は手のかからない学生で，すぐに数学者として一人立ちできる人でした．とくに蔵本モデルにおける分岐現象の存在を厳密に証明した仕事 [2] は，目を見張るものです．私も長年大学教員をさせていただいて，素晴らしい人材が現れ活躍する様子を見られるのは，大きな喜びです．
たまたまですが，「数学・物理通信」で千葉逸人さんと私のことに触れていただいたことに縁を感じました．ありがとうございました．

参考文献[1] 千葉逸人，『工学部で学ぶ数学』（プレアデス出版，2003）[2] Hayato Chiba, “A proof of the Kuramoto conjecture for a bifurcation structure of the infinite dimensional
Kuramoto model”, arXiv:1008.0249 (2010), published in Ergodic Theory and Dynamical Systems 35,
762–834 (2015)(2020. 6. 11)*1 名古屋大学大学院情報学研究科*2 tanimura@i.nagoya-u.ac.jp*3 （編集者注）京都大学のそういうところが自由でおもしろいと思う人はかなりいたのではないでしょうか．その特色がなくなるのは編

集者はまったく京都大学の関係者ではないですが，さびしいです．

28

読者の声
Mails from Readers

1 世戸憲治さんから
10 巻 4 号 p.19 の脚注に，矢野さんが書かれたことで，「千葉逸人という人が学生のときに大学で使う数学の本を書いた」というのがあります．そこで思いだしたのですが，ここでは名前は伏せますが，ある高名な先生が高校生のときに大学生用の物理の本を書いています．これを知ったときは私もビックリしました．さすが，上には上があるものですね．

2 編集者から世戸憲治さんから，上のようなメールをもらったので，国会図書館の OPAC で検索してみたのですが，それに相当するらしい本はわかりませんでした．

3 谷村省吾さんから「数学・物理通信」 10 巻 3 号 掲載の記事「ピタゴラスの定理」を拝読しました．
『ピタゴラスの定理―100 の証明法』という本があったことを思い出しました：https://amzn.to/2UrvP7O
ピタゴラスの定理は，いろいろな証明方法があって教育的だと思います．それに対してフェルマーの最終定理（n が 3 以上の整数のとき xn + y n = z n を満たす自然数 x, y, z は存在しない ）は，恐ろしく難しいというのも不思議です．

4 編集者から編集者も『ピタゴラスの定理―100 の証明法』をもっているので，それを念頭において文章を書きましたが，触れておいた方がよかったですね．谷村さん，ご指摘ありがとうございました．
確かに「ピタゴラスの定理」でピタゴラス数について述べるのならば，フェルマーの最終定理についてひとこと
触れるべきでした．私も結城 浩さんの「フェルマーの最終定理」の解説書（ソフトバンククリエイティブ）を図書館で借りて読んだことがありますが，残念ながらわかった気にはなりませんでした．これは結城さんの本の書き方がわるいのではなくて，基本的には私の理解力の問題です．

5 植田洋平さんから「数学・物理通信」をいつもありがとうございます．
「行列の積」は，暗記していた程度なので，考えて見るとそうなのかと思いました．「1m から・・・」の話は興味深かったです．複素数は，神秘的な数という印象が今までは強かったですが，すこし神秘さが和らいだ感がし
ます．

29

編集後記
新型コロナウイルスにもかかわらず，皆様ご健勝のことと存じます．
この 6 月は一挙に 3, 4, 5 号と 3 つの号を発行します．久しぶりの 3 号発行で編集者としてうれしく思っています．
「数学・物理通信」と称する，たいそれたタイトルのサーキュラーを発行しているわけですが，創刊号の発行は 2009 年 12 月でした．だからもう今年で 11 年になります．
いまちょっと数えてみたら，すでに 9 巻までに通巻で 85 号を発行しており，10 巻 5 号は通巻 90 号とな
ります．あと 10 号を発行すれば，通巻で 100 号を達成できることになりますが，それが実際にできるかど
うかはわかりません．しかし，そのことはともかくとして，ここまで「数学・物理通信」を続けて来られたのは，ひとえに読者の皆様とご投稿をいただく教育者，研究者とその他の皆様のおかげによるものにほかなりません．
その中にはあまりにも多数の原稿を投稿してくださったために，特に有能であることを認めて編集委員にもなっていただいた世戸憲治さんのような方もおられます．
話はまったくかわりますが，朝永振一郎先生の名著『量子力学』 I, II（みすず書房）の計算の詳細とか解説をした本で，『朝永振一郎著の「量子力学」の研究』という自費出版の本がありますが，これをコピーして国会図書館に寄贈しようと考えられた方がおられました．
私がその本のコピーをもっていたためにその方にコピーのコピーをお送りしたのですが，けっきょく国会図書館はコピーを受け入れないということがわかってその方は計画を断念されました．
印刷された本でも最低 100 部以上は印刷されていないと受け付けないとの内規があるようです．内規は内規としてもすこし残念な気もしました．もっともその本『・・の研究』の体裁とか数式の整理とかの修正はかなり必要であろうと思っています．
今号には旧知の友，紺野公明さんから長文の論文を投稿いただきました．ありがとうございます．
また，10 巻 4 号の私のエッセイにつけた脚注から谷村省吾さんが，数学者・千葉逸人さんとの若き日のやりとりを回顧してくださいました．私などからみたら，「この先生にしてこの学生あり」とでもいうべきかと思います．ともかく谷村さん，ご寄稿ありがとうございます．
谷村さんには「数学・物理通信」のバックナンバーをすべてご自身のインターネットのホームページに掲載していただいており，いつもお世話になっています．
（矢野

30

忠）