数学・物理通信
11 巻 2 号

編集

2021 年 3 月

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

2021 年 3 月 13 日

忠

1

目次 (Contents)
1. 錘付き弦振動の問題 (2)
世戸 憲治

2

矢野

忠

12

矢野

忠

23

世戸憲治

28

Kenji SETO

2

Tadashi YANO

12

Tadashi YANO

23

Kenji SETO

28

2. 歩行者のためのスプライン関数（改訂版）

3. 三角形の面積 2

4. 編集後記

1. Oscillation Problem of String with Weight (2)2. Spline Functions for Pedestrians (Revised Version)

3. Area of Triangles 2

4. Editorial Comments錘付き弦振動の問題 (2)世戸 憲治 ∗

Oscillation Problem of String with Weight (2)Kenji Seto∗

1 はじめに
前回の「錘付き弦振動の問題」(「数学・物理通信」11 巻 1 号) では，弦の真ん中に 1 個の錘を付けたときの振動を解析したが，今回は 2 個の錘を左右対称の位置に付けた場合の解析を試みる．

2 2 個の錘を付けたときの波動方程式
2.1 方程式の導入
前回と同じく，長さ 2ℓ, 線密度 ρ の弦を張力 T で張ったものを考えるが，今回は，これに質量 m の 2 個の錘を左右対称の位置に取り付けるものとする．この弦に沿って x 軸をとり，弦の真ん中を座標原点 x = 0 とす
る．2 個の錘は x = ±x0 の位置に取り付けるものとする．ただし，前回と同じく，錘は大きさを持たない点として扱うものとする．この錘付き弦の x 軸に対し，垂直方向の振動を解析するため，錘と弦の両方を含む密度関数 ρ(x) を[]
ρ(x) = m δ(x − x0 ) + δ(x + x0 ) + ρ(2.1)と定義する．この密度関数を用いて，座標 x，時刻 t における垂直方向変位を U (x, t) としたとき，錘を含めた
弦の波動方程式は

ρ(x)∂ 2 U (x, t)∂ 2 U (x, t)
=
T
∂t2
∂x2

(2.2)

と書かれる．以下，x = x0 にある錘のすぐ正の側の x 座標を x0 + 0, 負の側での座標を x0 − 0 と書くことにして，この式を x0 − 0 から x0 + 0 まで積分すると，m][ ∂U (x, t)∂U (x, t)∂ 2 U (x0 , t)
−
=
T
∂t2
∂x
∂x
x=x0 +0x=x0 −0(2.3)となり，これが，x = x0 に存在する錘の方程式である．同様に，x = −x0 に存在する錘の方程式はm∗ 北海学園大学名誉教授][ ∂U (x, t)∂ 2 U (−x0 , t)
∂U (x, t)
=T
−
2
∂t
∂x
∂x
x=−x0 +0x=−x0 −0E-mail: seto@pony.ocn.ne.jp

2

(2.4)

となる．また，錘を除いた純粋に弦部分の方程式は

ρ∂ 2 U (x, t)∂ 2 U (x, t)
=
T
,
∂t2
∂x2

|x| > x0 + 0,|x| < x0 − 0

or

(2.5)

である．

2.2 方程式の解法
方程式は座標原点に対し対称なので，初期条件，境界条件をうまく設定すると解は，x に関し偶関数，あるいは奇関数となる．ここではこのような偶奇性を持った解を求めることにする．
初めに，変位 U (x, t) は，x 依存部分と t 依存部分に変数分離することが可能で，しかも，時間依存部分は適当な角振動数 ω を用いて sin(ωt)，または，cos(ωt) で表されるものと仮定する．すなわち，[
U (x, t) = X(x) sin(ωt)

orcos(ωt)](2.6)とする．この置き換えで，錘の方程式 (2.3) (2.4) は，まとめて，−mω 2 X(±x0 ) = T[ dX(x)dx

x=±x0 +0]dX(x)dx x=±x0 −0

−

(2.7)

となり，弦部分の方程式 (2.5) は−ρ ω 2 X(x) = T

d2 X(x),dx2|x| > x0 + 0,

or|x| < x0 − 0(2.8)となる．この式から X は三角関数となることがわかるので，k を無次元化した波数とし，X(x) = cos(kx/ℓ),
とおいて，方程式に代入すると，

ω2 =( c )2
ℓ

or

k2 ,

c=

sin(kx/ℓ)
√

T /ρ

(2.9)

(2.10)

であれば満たされる．ここに，c はこの第 2 式で定義される波動伝播速度である．ただし，ここでは，ω, k ともに正であるものとし，

c
ω= k
ℓ

(2.11)としておく．これで，この (2.9) 式は方程式 (2.8) の解にはなるが，さらに錘の方程式 (2.7) を満たし，しかも，偶奇性を持たせた解にするためには，さらなる工夫が必要である．そのためにつぎの関数 F(+) (x), G(+) (x) を，F(+) (x) = cos(kx/ℓ)
G(+) (x) = A sin(k|x|/ℓ)θ(|x| − x0 ) + B cos(kx/ℓ)θ(x0 − |x|)(2.12)と定義しておく．ここに，G(+) (x) の定義に含まれる θ は単位階段関数であり，A, B は任意定数である．このF(+) (x) は，もちろん，偶関数であるが，G(+) (x) も偶関数である．ただし，この G(+) (x) が解となるためには，x = x0 で連続でなければならないので，

A sin(kx0 /ℓ) = B cos(kx0 /ℓ)
3(2.13)

でなければならない．以下，この式が成立するように

A = cos(kx0 /ℓ),

B = sin(kx0 /ℓ)(2.14)と選ぶことにして，G(+) (x) をG(+) (x) = cos(kx0 /ℓ) sin(k|x|/ℓ)θ(|x| − x0 ) + sin(kx0 /ℓ) cos(kx/ℓ)θ(x0 − |x|)(2.15)と書いておく．これで偶関数となる解が，F(+) (x), G(+) (x) の 2 つできた．
同様にして，奇関数となる解も 2 つ作ることができ，F(−) (x) = sin(kx/ℓ)[]
G(−) (x) = sin(kx0 /ℓ) cos(kx/ℓ) θ(x − x0 ) − θ(−x0 − x) + cos(kx0 /ℓ) sin(kx/ℓ)θ(x0 − |x|)(2.16)と定義しておく．この F(−) (x), G(−) (x) は共に奇関数で，しかも，G(−) (x) は x = ±x0 で連続になるようにしてある．
以上で，方程式 (2.8) の解 X(x) は，解の偶奇性に応じて，P, Q を任意定数として，

X(±) (x) = P F(±) (x) + QG(±) (x)(2.17)と書ける．最後に満たさなければならないのは，錘の方程式 (2.7) である．ここでの解は偶奇性が決まっている
ので，x = x0 での錘だけを考えればよい．この (2.17) 式を (2.7) 式に代入し，F(±) (x) はその微係数も含めて

x = x0 で連続，また，G(±) (x) は関数自身は連続であるが，その微係数は不連続であることを考慮して，[()]−mω 2 F(±) (x0 )P = mω 2 G(±) (x0 ) + T G′(±) (x0 + 0) − G′(±) (x0 − 0) Q

(2.18)となる．ここに，プライムは微分を表すが，この部分は，(2.15) (2.16) 式を用いると，さらに，と変形できるので，となる．これからG′(±) (x0 + 0) − G′(±) (x0 − 0) = ±k/ℓ

(2.19)[]−mω 2 F(±) (x0 )P = mω 2 G(±) (x0 ) ± T k/ℓ Q(2.20)[]ℓ
P = mω 2 G(±) (x0 ) ± T k/ℓ ,T

Q = −mω 2 F(±) (x0 )ℓT(2.21)と選ぶことにする．ℓ/T を掛けたのは後の式をきれいにするためである．これで，(2.17) の解はX(±) (x) =[[]ℓ]mω 2 G(±) (x0 ) ± T k/ℓ F(±) (x) − mω 2 F(±) (x0 )G(±) (x)T[ 2]= µk G(±) (x0 ) ± k F(±) (x) − µk 2 F(±) (x0 )G(±) (x)(2.22)となる．ここで，(2.10) 式を用い，ω を k で表すようにした．また，µ は錘の弦に対する質量比で，µ = m/(ρ ℓ)と定義する．

4(2.23)

2.3 固有値，固有関数とその規格化
この弦の端である x = ℓ のところは，固定端になっているので，

X(+) (ℓ) = 0,or

X(−) (ℓ) = 0(2.24)

でなければならず，(2.22) 式を用いて，[]µkG(±) (x0 ) ± 1 F(±) (ℓ) − µkF(±) (x0 )G(±) (ℓ) = 0(2.25)となる．この式によって，k の値がきまる．この値は飛び飛びに決まるであろう．これを正の小さい方から，ki , (i = 1, 2, 3, · · · ) とし固有値とする*1 ．また，このときの関数 X(±) を X(±) (x, ki ) と ki 依存性を明示して固有関数とする．この意味で，この (2.25) 式を固有値方程式と呼ぶ．
特に，この (2.25) 式のプラス符号で記述される偶関数の場合には，

F(+) (ℓ) = cos(k), G(+) (ℓ) = cos(kx0 /ℓ) sin(k), F(+) (x0 ) = cos(kx0 /ℓ), G(+) (x0 ) = cos(kx0 /ℓ) sin(kx0 /ℓ)(2.26)となるので，固有値方程式をより具体的に書くと()µk cos(kx0 /ℓ) sin k(x0 − ℓ)/ℓ + cos(k) = 0(2.27)となる．さらにこの式で x0 → 0 の極限をとると，k tan(k) =1µ(2.28)となって，これは前回の質量 2m の錘を 1 個だけ弦の真ん中に付けたときの固有値方程式と一致する．
また，(2.25) 式で負符号の奇関数のときは，F(−) (ℓ) = sin(k), G(−) (ℓ) = sin(kx0 /ℓ) cos(k), F(−) (x0 ) = sin(kx0 /ℓ), G(−) (x0 ) = sin(kx0 /ℓ) cos(kx0 /ℓ)(2.29)
を用いて，固有値方程式は，()µk sin(kx0 /ℓ) sin k(x0 − ℓ)/ℓ + sin(k) = 0(2.30)となる．この式で x0 → 0 の極限をとると，sin(k) = 0 となり，これは錘がまったく動かないトリビアルな解となってしまう．
つぎに，固有関数の規格化を考える．錘を含めた弦の波動方程式 (2.2) において，(2.6) 式の変数分離をすると，x 依存部分 X(x) は，方程式−k 2 ρ(x)X(x) = ρ ℓ2

d2 X(x)dx2(2.31)*1 当然のことながら，X が偶関数の場合と奇関数の場合とでは，決まる固有値 ki は異なるので，厳密には ki にも添え字の (±) を付けるべきであるが，ここでは数式をあまり煩雑化しないために，これを省略することにする．

5

を満たしている．ただし，ここでは (2.10) 式を用いて ω を k で表すようにした．いま，固有値とは限らない

2 個の k があるとして，これを k, k ′ とし，そのときの関数 X を X(x, k), X(x, k ′ ) とする．これら関数は(2.31) の方程式を満たしているので，−k 2 ρ(x)X(x, k) = ρ ℓ2

d2 X(x, k),dx2−k ′2 ρ(x)X(x, k ′ ) = ρ ℓ2

d2 X(x, k ′ )dx2(2.32)となる．この第 1 式に X(x, k ′ ) を掛け，第 2 式に X(x, k) を掛けて辺々の差をとると，]d [ dX(x, k)dX(x, k ′ )X(x, k ′ ) −X(x, k)dx
dx
dx(2.33)]ℓρ ℓ2 [ dX(x, k)dX(x, k ′ )ρ(x)X(x, k)X(x, k ′ )dx = − 2
X(x, k ′ ) −X(x, k)
′2
k −k
dx
dx
−ℓ
−ℓ

(2.34)−(k 2 − k ′2 )ρ(x)X(x, k)X(x, k ′ ) = ρ ℓ2となり，これを −ℓ から ℓ まで積分すると，∫ ℓという式を得る．ここまでは，関数 X の偶奇性に関係なくできたが，関数 X の偶奇性が決まっている場合は，X が偶関数の場合も奇関数の場合も，この式の大括弧の中の関数は奇関数となるので，x = ℓ とおいたときの 2倍になる．したがって，∫ ℓ]dX(±) (x, k ′ )2ρ ℓ2 [ dX(±) (x, k)′
ρ(x)X(±) (x, k)X(±) (x, k ′ )dx = − 2
X
(x,
k
)
−
X
(x,
k)
(±)
(±)
k − k ′2
dx
dx
x=ℓ
−ℓ
(2.35)となる．ここで，k, k ′ が固有値 ki , kj となるときは，境界条件 (2.24) 式が満たされ，この式の右辺の大括弧の部分はゼロとなる．したがって，もし，ki ̸= kj ならば，右辺はゼロとなり，異なる固有値に属する固有関数
の直交性

∫ ℓ
−ℓ

ρ(x)X(±) (x, ki )X(±) (x, kj )dx = 0,ki ̸= kj

(2.36)がでる．同じ固有値になるときは，先に，k ′ = ki とおき，その後，k → ki の極限値をとる．結果として，固有関数の直交性の式∫ ℓ−ℓ2
ρ(x)X(±) (x, ki )X(±) (x, kj )dx = N(±)i
δi,j(2.37)

2を得る．ここに，規格化定数 N(±)i
は
2
N(±)i
=

ρ ℓ2 [ dX(±) (x, ki ) ] [ ∂X(±) (ℓ, k) ]
ki
dx
∂k
x=ℓ
k=ki

(2.38)となる．これから，X(±) (x, ki )/N(±)i が規格化された固有関数となる．なお，偶奇性の異なる関数同士の場合
は，被積分関数が奇関数となるので，∫ ℓ−ℓ

ρ(x)X(±) (x, ki )X(∓) (x, kj )dx = 0(2.39)と，k の値に無関係に，直交することは言うまでもない．
2
なお，この規格化定数 N(±)iは，(2.22) 式を用いてより具体的な形で表そうとすると大変冗長な式になってしまい収拾がつかなくなる．ここでは，前回の論文との関係で，関数 X が偶関数となる場合に限って，x0 → 0としたとき，前回のものと一致する結果になっているかを確かめてみる．x0 → 0 としたとき，X(+) (x, k) は，[]
X(+) (x, k) = k cos(kx/ℓ) − µk sin(k|x|/ℓ)
6(2.40)

であり，これから，[ dX(+) (x, ki )

dx
[ ∂X

(+) (ℓ, k)

∂k

]
k=ki

]

]
k 2[
= − i sin(ki ) + µki cos(ki )
ℓ
x=ℓ

[
]
[
]
= cos(ki ) − µki sin(ki ) − ki sin(ki ) + µ sin(ki ) + µki cos(ki )(2.41)(2.42)となる．これらの式は，x0 → 0 の場合の固有値方程式 (2.28) を使って，µki = cot(ki ) とすると，[ dX(+) (x, ki )

]

dx
[ ∂X

(+) (ℓ, k)

x=ℓ

]

∂k

k=ki

=−

=−

ki 2
ℓ sin(ki )[]ki 1 + µ sin2 (ki )sin(ki )(2.43)(2.44)

2と変形される．これから，この場合の規格化定数 N(+)iはk2= ρℓ i
N(+)i

2

[
]
1 + µ sin2 (ki )sin2 (ki )(2.45)

2となる．これに対し，前回の規格化定数を N前回
i と書くことにすると，

[
]
2
2
N前回
i = ρ ℓ 1 + µ sin (ki )(2.46)であった．この違いは関数 X の定義の違いから発生するもので，前回の関数 X を X前回 (x, k) と書くことにす
ると，今回のものとは，

X(+) (x, k) = −k
X前回 (x, k)sin(k)(2.47)という関係にある．この関数 X の定義の違いを考慮すると，規格化定数を表す (2.45) (2.46) 式は同じものとみなせる．

2.4 初期値問題
波動方程式 (2.2) の一般解は，固有関数 X(x, ki ) に時間部分の sin(ωi t), or cos(ωi t) を掛けたものの重ね合わせである．ここでは，2 個の錘部分に同方向，同量の衝撃を与えた場合と，同量の衝撃を反対方向に与えた
場合，および，片方の錘だけに衝撃を与えた場合の 3 通りについて解析する．初めに，同方向に与えた場合，錘
に衝撃を加えることで，力積が発生し，この力積は運動量の変化分として現われるので，ここでは，初期条件を

U (x, 0) = 0,

ρ(x)

[
]
∂U (x, t)= mv0 δ(x − x0 ) + δ(x + x0 )∂t
t=0(2.48)

とおく．v0 は初速度である．この場合，変位 U (x, t) は x について偶関数となるので，任意定数 C(+)i を用
いて，

U (x, t) =∞∑C(+)i X(+) (x, ki ) sin(cki t/ℓ)

(2.49)

i=1と展開しておく．ここでは，ωi を ki で表すようにした．これで，初期条件の第 1 式はすでに満たしているので，あとは第 2 式を適用すると，
∞
∑
[
]
c
ρ(x)
C(+)i ki X(+) (x, ki ) = mv0 δ(x − x0 ) + δ(x + x0 )
ℓ
i=1

7

(2.50)

となる．この両辺に X(x, kj ) を掛けてから，積分し，固有関数の直交式 (2.37) を使うと，係数 C(+)i が，

C(+)i =

2mℓv0 X(+) (x0 , ki )2cki N(+)i(2.51)と求められるので，これを (2.49) 式に戻して，変位 U (x, t) はU (x, t) =∞2mℓv0 ∑ X(+) (x0 , ki )X(+) (x, ki ) sin(cki t/ℓ)2cki N(+)ii=1(2.52)と求められる．
つぎに，2 個の錘に反対方向の衝撃を与えた場合を考える．このときの初期条件は

U (x, 0) = 0,

ρ(x)

[
]
∂U (x, t)= mv0 δ(x − x0 ) − δ(x + x0 )∂t
t=0(2.53)

とおく．この場合，変位 U (x, t) は x について奇関数となるので，任意定数 C(−)i を用いて，U (x, t) =∞∑C(−)i X(−) (x, ki ) sin(cki t/ℓ)

(2.54)

i=1と展開しておく．これに初期条件の第 2 式を適用すると，
∞
∑
[
]
c
ρ(x)
C(−)i ki X(−) (x, ki ) = mv0 δ(x − x0 ) − δ(x + x0 )ℓi=1(2.55)となる．この両辺に X(x, kj ) を掛け，積分すると，係数 C(−)i が，C(−)i =

2mℓv0 X(−) (x0 , ki )2cki N(−)i(2.56)と求められる．ここで，関数 X(−) (x, ki ) が奇関数であることを用いた．これを (2.54) 式に戻して，変位 U (x, t)
はU (x, t) =∞2mℓv0 ∑ X(−) (x0 , ki )X(−) (x, ki ) sin(cki t/ℓ)2cki N(−)ii=1(2.57)と求められる．この結果は，(2.52) 式の添え字の符号が変わっただけで，形式的には同じものである．

2 個ある錘のうちの一方だけに衝撃を与えた場合は，関数 X(x) は偶関数でも奇関数でもないものになってしまう．このときは，変位 U を (2.49) (2.54) 式の和の形で，U (x, t) =∞∑C(+)i X(+) (x, ki ) sin(cki t/ℓ) +

i=1

∞
∑

C(−)i X(−) (x, ki ) sin(cki t/ℓ)

(2.58)

i=1と展開しておく．ここで，偶関数に付く ki と奇関数に付く ki は異なることに注意しておく．このときの初期条件を，

U (x, 0) = 0,

ρ(x)∂U (x, t)= mv0 δ(x − x0 )∂t
t=0(2.59)

とおく．このときは，固有関数の直交式 (2.37) および (2.39) 式を用いて，係数 C(±)i が決まり，解は，∞∞]∑
X(−) (x0 , ki )mℓv0 [ ∑ X(+) (x0 , ki )U (x, t) =X(+) (x, ki ) sin(cki t/ℓ) +X(−) (x, ki ) sin(cki t/ℓ) (2.60)22cki N(+)iki N(−)i
i=1
i=1

8

と求められる．この解は，(2.52) (2.57) 式の相加平均になっている．
ここで得られた結果の式 (2.52) (2.57) 式を時間で微分し，x = x0 , t = 0 とおくことで，逆に，錘に与えた初速度 v0 が得られるはずである．これは式で表すと，

]2
∞ [
∑
X(−) (x0 , ki )
2m
=1
2
N(−)i
i=1

]2
∞ [
∑
X(+) (x0 , ki )
= 1,
2m
2
N(+)i
i=1

(2.61)という恒等式となる．この式は数値計算をしたときの精度のチェックに使える (次節末尾参照)．

3 数値計算例
前回同様，ピアノの中央「ラ」の音の弦を例として数値計算を試みる．この弦に関するデータは，ℓ = 0.195m,

ρ = 8.9007 × 10−3 kg/m,

ρ ℓ = 1.7356 × 10−3 kg,

c = 343.2m/s(3.1)

である．この弦に，質量 m = 0.05 × 10−3 kg の錘を 2 個左右対称の位置 x0 = ±0.5 ℓ に取り付けた場合の振動を解析してみる．このときは，弦に対する錘の質量比は µ = 0.0288 である．
初めに，x 依存部分 X が偶関数となるときの固有値方程式 (2.27) を解き，200 個の固有値 ki の値を求めてみた．そのうちの初めの 10 個を挙げると，

ki = 1.5485,

4.6455,7.7429,10.8407,13.9390,17.0381,

20.1381,

23.2390,

26.3409,29.4441(3.2)と，初めの k1 は，ほぼ，π/2 であり，その後は，およそ，π の間隔で並ぶ．

X が奇関数となるときの固有値方程式 (2.30) でも 200 個の固有値 ki を求めたが，そのうちの初めの 10 個は，
ki = 3.0537,

6.2831,

9.1624,12.5663,

15.2749,

18.8495,

21.3934,

25.1327,27.5197,31.4159(3.3)となる．この奇関数の場合は，偶関数のときよりも大きい値がでて，特に k1 で比べると 2 倍近い値になっていて，ほぼ，π に近く，その後は，これも，およそ，π の間隔で並ぶ．
このときの変位 (2.52) (2.57) 式において x = x0 として錘の変位を求め，グラフ化したものを以下の図 1，図2 に示す．ここで，v0 は v0 = 10 m/s とした．

図 1 錘の振動；x0 = 0.5ℓ, 偶関数の場合

図 2 錘の振動；x0 = 0.5ℓ, 奇関数の場合

9これらの図から，波動の形は矩形波にさざ波が加わったものになっている．これは，前回の m = 0.05 g の錘を付けた場合とほぼ同じ形になっている．また，奇関数の場合は初めの k1 の値が偶関数の場合の 2 倍になっているので，その分，振動数が 2 倍になっている．
つぎに，x = x0 の錘だけに衝撃を与えた場合の (2.60) 式で，x = x0 の錘の振動を図 3 に，また，もう一つの x = −x0 の錘の振動の様子を図 4 に示す．

図 4 x = −x0 の錘の振動

図 3 x = x0 の錘の振動

このように，矩形波がはっきりと見えるのは，x0 = 0.5 ℓ の場合だけで，x0 の値がこれより大きくなっても小さくなっても，さざ波の方が大きくなってしまい矩形波の形が現われ難くなってしまう．図 5，図 6 に，(2.52)式に基づく偶関数の場合で，x0 = 0.52 ℓ のとき，および，x0 = 0.48 ℓ としたときの錘の振動を図示する．

図 5 錘の振動；x0 = 0.52ℓ, 偶関数の場合

図 6 錘の振動；x0 = 0.48ℓ, 偶関数の場合

ここでは，200 個の固有値，固有関数を用いて解を求めたが，この場合の精度を (2.61) 式で確かめてみると，
この式右辺の和は，偶関数の場合で，0.92976, 奇関数の場合で，0.92960 と，ほぼ，1 に近い値になり，満足できるものになっている．

4 おわりに前回の弦の真ん中に 1 個の錘を付けたときの振動問題を拡張し，今回は，左右対称な位置に 2 個の錘を付けた場合を解析し，このときの x 依存部分 X(x) が偶関数となる場合と，奇関数となる場合の解を求めた．これを10区間 [ 0, ℓ ] で考えると偶関数の場合は x = 0 が自由端，x = ℓ が固定端で，その間に 1 個の錘がついた場合と等価であり，また，奇関数の場合は，x = 0, x = ℓ の両端を固定端として，その間に 1 個の錘を付けたのと等価である．したがって，今回のものは，偶関数，奇関数に限定すると，錘を付ける位置を任意の点とした 1 個のモ
デルということになってしまう．錘を 2 個付けたことが本領を発揮するのは，2.4 節「初期値問題」のところで触れたように，偶関数でも奇関数でもない場合ということになる．
今回のものをさらに拡張すると，一般に n 個の錘を付けた場合の解析などというものもできるのであろうか．
そのうち，機会があれば考えてみたい．

[ 謝辞 ]
今回も，京都大学名誉教授の中西襄先生にこの原稿を見ていただき，いくつかのご助言をいただきました．先生に心から感謝いたします．

11

歩行者のためのスプライン関数（改訂版）
矢野 忠*1

Spline Functions for Pedestrians (Revised Version)
Tadashi YANO*2

目次
1. はじめに
2. なぜスプライン補間を用いるか
3. スプライン関数の種類
4. 3 次スプライン関数
5. 端条件
6. ２次の微係数の決定
7. おわりに
8. 付録 1 (5.13) の導出
9. 付録 2 (6.5) の導出
10. 補記1 はじめにこれはすでに [1] に掲載されたものである．その掲載時にはまだスプライン関数 (spline function) の四元数の球面線形補間 [2] [3] への応用について私は知らなかった．しかし，現在では私のみではなく，一般にもそのことはよく知られているので，ここに少し修正を加えて再掲載することとした．

3D コンピュータ・グラフィックスや工場で使われる CNC (Computer Numerical Control) で球面線形補間を使うためには，その補間のためのコード (Slerp) ができており，スプライン関数を意識することはないかもしれな
いが，その基礎的な考えを持っておくことは望ましいことである *3 ．スプライン関数については日本語でも少な
くとも２冊の本 [4] [5] が出版されている．それらを読めばスプライン関数について分かるはずだが，そのためにはかなりの根気を要し，理解するのに時間がかかる．この小文はそのような根気と時間を持たない人 (歩行者) のためのやさしいスプライン関数入門である*4 ．
タイトルにある「歩行者のための」について一言述べておく．スプライン関数 (spline function) とはまったく関係ないが，Lipkin という人の “Lie Groups for Pedestrians” (North Holland Pub.,1965) という本がある．この本は高踏的な群論を知らなくても群論が使えるようになるという趣旨の画期的な書物である．「歩行者のための」という意味は専門家でなくともわかるといった意味であろう．ここではその用例に倣った．

*1 元愛媛大学工学部*2 yanotad@earth.ocn.ne.jp*3 Slerp は spherical linear interpolation（球面線形補間）の略称である．またコードとはある目的を遂行するためのコンピューターのプログラムのことである．
*4 この小文は文献 [6] [7] をもとにして書かれている．

12

2 なぜスプライン補間を用いるか
スプライン関数とその端条件について述べる前に，なぜスプライン補間が他の補間法より優れているか簡単に述べておく．多項式を使用する補間法としては，ラグランジュ (Lagrange) 補間，ニュートン (Newton) 補間，チェ
ビシェフ (Chebyshev) 補間等があるが，これらはいずれも全区間で単一の多項式を用いている *5 ．このため，ラグランジュ補間を例に取ると，補間された値は区間の両端付近でデータ点の上下に大きく振動する現象（ルンゲ(Runge) の現象）が現れる *6 ．このことはニュートン補間でも単一多項式を使用した補間である限り，同様の現象が現れるのは避けられない．
この点，スプライン補間は少し様子が異なっている．すなわち，全区間を細分割して得られる小区間ごとに，次数は同じで係数が異なった多項式（区分的多項式）（スプライン関数という）で補間を行っているため，前述の弊害が少ない．この補間法によっても，振動現象が全くなくなるわけではない．それは，多項式補間で現れたルンゲの現象がそれぞれの小区間でも現れる可能性があるためである．しかし，区分的多項式の繋ぎ目の点（節点）の位置を変えることによって，この振動を小さくしたり消滅させたりできるという自由度をスプライン補間法は持っている．これがスプライン補間の大きな特徴となっている．これに対し，一般の多項式補間法では，単一区間を１つの多項式で補間するためにこのようなことができない．

3 スプライン関数とはスプライン関数 (spline function) f (x) とは，全区間を細分割した各区間内で同じ次数を持った多項式が，その区間の両端で関数およびその導関数が連続となるように接続した区分的多項式 (piecewise polynomial) のことである．この関数のつなぎ目のことをスプライン関数の節点 (knot) といい，x1 , x2 , · · · , xn で表す．実軸上の区間 x1 ≤ x ≤ xn において，

x1 < x 2 < · · · < x i < · · · < x n(3.1)となる標本点 (sample point) xi , (i = 1, 2, · · · , n) があり，これらの点に対して関数値 yi が与えられているとき，yi = f (xi )(i = 1, 2, · · · , n)(3.2)

を満たすスプライン関数 f (x) を求め，この関数 f (x) によって，標本点内部の関数値を求めることをスプライン
補間 (spline interpolation) という．

4 スプライン関数の種類
スプライン関数には1. 切断べき関数による表現
2. Cardinal-spline
3. B-spline*5 これらの補間は多項式補間と呼ばれている．それぞれが全く無関係の異なった補間のように見えるが，補間多項式として同じ次数の多項式を用いるならば，多項式の一意性から同じ多項式の異なった表現である．因みにニュートン補間はラグランジュ補間を差分によって実用的に書き直したものであり，チェビシェフ補間はラグランジュ補間の一種であり，標本点としてチェビシェフ多項式の零点を用いたものである．
*6 ルンゲの現象についてはたとえば， [8] を見よ．また，Fourier 級数にも類似の現象として Gibbs の現象がある．Gibbs の現象については [9] を参照せよ．

13

等がある．これらのスプライン関数は任意の次数の多項式で表現できるが，近似の精度と計算量との面から一般に 3 次の多項式（3 次スプライン関数）が用いられることが多い．3 次スプライン関数では 1〜3 によらない別の
簡単な表現法があり，節点における関数値と，その導関数の値をパラメータに用いる．実際に用いられているスプライン関数はこの表現によるものがほとんどである．以下では，この 3 次スプライン関数について考えることとし，その関数の求め方について述べる．

5 3 次スプライン関数
i 番目の区間 [xi , xi+1 ] でデータ点 (xi , yi ) と (xi+1 , yi+1 ) を通る関数を次の 3 次式で表す．
y = ai (x − xi )3 + bi (x − xi )2 + ci (x − xi ) + di

(5.1)

この 1 階，2 階および３階の導関数は (5.1) 式を x について 1 回，2 回および３回微分することによって次のように与えられる．

y ′ = 3ai (x − xi )2 + 2bi (x − xi ) + ci

(5.2)

′′

y = 6ai (x − xi ) + 2bi
y

′′′

(5.3)

= 6ai

(5.4)

いま，xi+1 − xi := hi , x = xi における y の値を yi , y ′′ の値を Si と表せば，

yi = di(5.5)

yi+1 = ai h3i + bi h2i + ci hi + di

(5.6)

Si = 2bi(5.7)

Si+1 = 6ai hi + 2bi(5.8)

これらを ai , bi , ci , di について逆に解けば，

Si+1 − Si
6hi
Si
bi =
2
yi+1 − yihi (2Si + Si+1 )
ci =
−
hi
6
di = yi

ai =

(5.9)
(5.10)(5.11)(5.12)と表せる．ここで，区間 [xi−1 , xi ] と [xi , xi+1 ] における２つの 3 次式の 1 階微係数が節点 (xi , yi ) で等しくなることを要請すれば，[

yi+1 − yiyi − yi−1
hi−1 Si−1 + 2(hi−1 + hi )Si + hi Si+1 = 6
−
hi
hi−1

]
(5.13)

が成り立ち*7 ，この両辺を hi−1 + hi で割れば，µi Si−1 + 2Si + λi Si+1 = Di ,*7 (5.13) の導出は付録 1 を参照せよ．

14(i = 2, 3, · · · , n − 1)

(5.14)

となる．ここで，λi , µi , Di は，

hi−1
hi−1 + hi
hi
λi =hi−1 + hi[]
6yi+1 − yiyi − yi−1
Di =−hi−1 + hi
hi
hi−1
µi =

(5.15)(5.16)(5.17)

で定義される．未知の 2 階の微係数 Si は (5.14) では S1 , S2 , · · · , Sn の n 個あるが，条件式の数は n − 2 個しかない．S1 , S2 , · · · , Sn が求められるためには，あと 2 つ方程式を必要とする．そこで，i = 1 と i = n に対しても(5.14) が成り立つとする．すなわちµ1 S0 + 2S1 + λ1 S2 = D1

(5.18)µn Sn−1 + 2Sn + λn Sn+1 = Dn

(5.19)

を仮定する．ところが，(5.18), (5.19) に現れる S0 , Sn+1 は区間 [x1 , xn ] の端点の外側におけるスプライン関数の2 階の微係数であり，これらの値はスプライン関数の計算，すなわち，節点で関数およびその１階の導関数が連続になるように未知係数を決定するという手続からは求められない．このため，これらが現れないようにµ1 = 0(5.20)

λn = 0(5.21)

2S1 + λ1 S2 = D1

(5.22)µn Sn−1 + 2Sn = Dn

(5.23)ととる．そうすれば (5.18), (5.19) は，となる．ここで D1 , Dn の値はまだ与えられていないが，これらの値の決め方を 6 節に示す．
こ の (5.22) と (5.23) は 端 条 件 (end conditions) を 決 定 す る た め に 必 要 と な る 基 本 の 式 で あ る*8 ．

(5.14),(5.22),(5.23) を解いて S1 , S2 , · · · , Sn が決定できれば，スプライン関数の係数 ai , bi , ci , di を (5.9)-(5.12)を用いて求めることができる．(5.14),(5.22) および (5.23) をまとめて，マトリックスの形で書くと，


 

2 λ1
S1
D1
µ2 2 λ2  S2   D2 


 


  S3   D3 
µ
2
λ
3
3


=

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . .   . . . . . 


 


µn−1 2 λn−1  Sn−1  Dn−1 
µn
2
Sn
Dn


(5.24)となる．ここで，(5.24) で左辺の 3 重対角行列要素以外の行列要素は 0 である．ところで，λ1 , µn , D1 および Dn
は (5.15), (5.16), (5.17) によっては与えられないので，これを決定する何らかの条件が必要となる．この 4 つの係数を決定するための条件を端条件という．この端条件の取り方にはいろいろな方法が考えられるが，ここではよく用いられるものを３つ挙げ，その特徴について述べる．

6 端条件
この 6 節ではよく用いられる 3 つの端条件について考えよう．
*8 端条件の定義は 5 節の末に出てくる．

15

6.1 区間 [x1 , xn ] の両端で 1 次微係数を与えるとき
区間 [x1 , xn ] の両端で 1 次微係数 y1′ (x1 ), yn′ (xn ) の値が与えられるとき，それらをy ′ (x1 ) = y1′ , y ′ (xn ) = yn′(6.1)と表す．(5.2) 式で，i = 1 とおき，x = x1 とすれば，y1′ = c1 となる．ここで，(5.11) を用いて，2S1 + S2 を求
めると，

2S1 + S2 =

6
h1

(

y2 − y1
− y1′
h1

)
(6.2)

が得られる．
つぎに，(5.2) で i = n − 1, x = xn とおけば，

yn′ = 3an−1 h2n−1 + 2bn−1 hn−1 + cn−1

(6.3)

となる．この (6,3) に (5.9),(5.10) から求めた an−1 , bn−1 を代入すれば，

cn−1 = yn′ −hn−1 (Sn + Sn−1 )
2

(6.4)

この (6.4) で与えられる cn−1 を (5.11) の ci で，i = n − 1 としたときの cn−1 と等しいとおけば，

Sn−1 + 2Sn =

(

6
hn−1

yn − yn−1
yn′ −
hn−1

)
(6.5)

が得られる*9 ．
そこで，(6.2) を (5.22) と，(6.5) を (5.23) と比較すれば，λ1 = 16h1µn = 1(D1 =y2 − y1
− y1′
h1

)

(
)
6
yn − yn
′
Dn =
yn −
hn−1
hn−1
ととればよいことがわかる．ここで，y1′ と yn′ の値がわからないときに

y2 − y1h1yn − yn−1
′
yn ∼
hn−1
y1′ ∼

と近似すると，D1 = 0, Dn = 0 となる．これは (6.2) および (6.5) から

S1 = −S2
Sn−1, Sn = −2
2ととったことに対応している．

*9 (6.5) の導出は付録 2 を参照．

16

(6.6)
(6.7)
(6.8)
(6.9)

6.2 区間 [x1 , xn ] の両端で 2 次微係数を与えるとき
区間 [x1 , xn ] の両端で 2 次微係数 y1′′ (x1 ), yn′′ (xn ) の値が与えられるとき，それらをy ′′ (x1 ) = y1′′ , y ′′ (xn ) = yn′′(6.10)と表す．(5.3) で i = 1, x = x1 とすると，y1′′ = 2b1 となる．ここで (5.10) を用いて次式を得る．

2S1 = 2y1′′(6.11)

yn′′ = 6an−1 hn−1 + 2bn−1(6.12)

同様に (5.3) で i = n − 1, x = xn とすれば，となり，(5.9), (5.10) を用いると，次式を得る．

2Sn = 2yn′′(6.13)

そこで，(6.11) を (5.22) と，(6.13) を (5.23) と比較すれば

λ1 = 0(6.14)

D1 = 2y1′′(6.15)µn = 0(6.16)

Dn = 2yn′′(6.17)ととればよいことが分かる．y1′′ と yn′′ の値が分からないときには，y1′′ = yn′′ = 0 とおけば，D1 = Dn = 0 となる．
これは，(6.11) と (6.13) から

S1 = 0, Sn = 0(Gerald の端条件 1)

とおいたことに対応していて，この場合を 3 次自然スプライン (natural spline) という．

6.3 区間 [x1 , xn ] の両端で 3 次微係数を与えるとき
区間 [x1 , xn ] の両端で次微係数 y1′′′ (x1 ), yn′′′ (xn ) の値が与えられるとき，と表す．(5.4) から，

y ′′′ (x1 ) = y1′′′ , y ′′′ (xn ) = yn′′′(6.18)

yi′′′ = 6ai(6.19)となる．(6.19) で i = 1, x = x1 とおけば，y1′′′ = 6a1 となり，(5.9) から，

2S1 − 2S2 = −2h1 y1′′′(6.20)

が得られる．また (6.19) で i = n − 1, x = xn とおけば，yn′′′ = 6an−1 が得られ，(5.9) から，−2Sn−1 + 2Sn = 2hn−1 yn′′′(6.21)となる．そこで，(6.20) を (5.22) と，(6.21) を (5.23) と比較すれば

λ1 = −2(6.22)

D1 = −2h1 y1′′′(6.23)µn = −2(6.24)

Dn = 2hn−1 yn′′′(6.25)

17

ととればよいことが分かる．y1′′′ と yn′′′ の値がわからないときに，y1′′′ = 0, yn′′′ = 0 とおけば，これは，(6.20) と(6.21) から
S1 = S2 , Sn = Sn−1

(Gerald の端条件 2)ととったことに対応している．これを P-スプライン (P-spline) と呼ぶ．
′′′
また，y1′′′ = y2′′′ , yn′′′ = yn−1とおけば，これは (6.20), (6.21) および (5.4), (5.9) から

S2 − S1
S3 − S2=h1h2
Sn−1 − Sn−2
Sn − Sn−1
=
hn−1
hn−2
を意味するので，したがってこの 2 式から，

(h1 + h2 )S2 − h1 S3h2(hn−2 + hn−1 )Sn−1 − hn−1 Sn−2
Sn =
hn−2
(Gerald の端条件 3)
S1 =ととったことに対応している．

7 ２次の微係数の決定
連立１次方程式 (5.24) を解いて，Si を求める方法を以下に述べる．一般的な記号を用いて (5.24) を表すと，




 

b1 c1
Z1
d1
a2 b2 c2
  Z2   d2 


 


  Z3   d3 
a
b
c
3
3
3


=

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . .   . . . . . 


 


an−1 bn−1 cn−1  Zn−1  dn−1 
an
bn
Zn
dn

(7.1)

の形をしているので，以下では連立１次方程式 (7.1) の解法を考える．まず (7.1) の係数行列をつぎのように LU
分解する *10 ．




b1 c1


a2 b2 c2

a3 b3 c3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
an−1 bn−1 cn−1 
an
bn



A1 c1
1

α2 1

A2 c2







A3 c3
α3 1


=
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .





An−1 cn−1 
αn−1 1An
αn 1*10 LU 分解による連立１次方程式の解法については，たとえば， [11] を参照せよ.

18

(7.2)

ここで，

A1 = b1ak
αk =(k = 2, 3, · · · , n)
Ak−1
Ak = b − αk ck−1

(7.3)
(7.4)
(7.5)

である．
連立１次方程式 (7.1) は 2n 個の未知数 B1 , B2 , · · · , Bn ; Z1 , Z2 , · · · Zn に関するつぎの連立１次方程式 (7.6),(7.7) と同値である．




 

1
B1
d1
α2 1
  B2   d2 


 


  B3   d3 
α3 1


=

 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   . . . . .  . . . . .


 


 Bn−1  dn−1 
αn−1 1
αn 1
Bn
dn

(7.6)



 

A1 c1
Z1
B1

  Z2   B2 
A2 c2


 


  Z3   B3 
A3 c3


=

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . .   . . . . . 


 


An−1 cn−1  Zn−1  Bn−1 
An
Zn
Bn

(7.7)

方程式 (7.6), (7.7) の解はそれぞれ

B1 = d1(7.8)

Bk = dk − αk Bk−1

(7.9)

(k = 2, 3, · · · , n)とBnAn
Bk − ck Zk+1
Zk =Ak(k = n − 1, n − 2, · · · , 1)Zn =(7.10)(7.11)

で与えられる．したがって，(7.8), (7.9) から求めた B1 , B2 , · · · , Bn を (7.10), (7.11) に代入し，Z1 , Z2 , · · · , Znを計算すれば連立１次方程式 (7.1) の解が得られる．
上に述べたように連立１次方程式の LU 分解による解法を用いて，(5.24) を解き，Si , (i = 1, 2, · · · , n) を求めることができる．こうして，２次の微係数 Si が求まると，(5.1) の係数 ai , bi , ci , di は区間 [xi , xi+1 ] ごとに与えられ，3 次スプライン関数 f (x) を得ることができる．

8 おわりに
以上，まったく予備知識なしにスプライン関数がわかるように解説をしたつもりだが，これでもまだ難しいかもしれない．連立１次方程式の解き方はここに述べた LU 分解による方法が数値解析では一般的に用いられている．
線形代数で学ぶ連立１次方程式の解，Cramer の公式は数学的にきれいだが，実用的でないということは数値計算の専門家にはよく知られている．

19

9 付録
9.1 付録 1(5.13) の導出

ここで (5.13) を導いておく．(5.2) で x = xi とおけば，

yi′ = 3ai (xi − xi )2 + 2bi (xi − xi ) + ci
= ci

(9.1)

また [xi−1 , xi ] 区間での (5.2) にあたる式で x = xi とおけば，

yi′ = 3ai−1 (xi − xi−1 )2 + 2bi−1 (xi − xi−1 ) + ci−1
= 3ai−1 h2i−1 + 2bi−1 hi−1 + ci−1(9.2)

２つの式は等しいので，

3ai−1 h2i−1 + 2bi−1 hi−1 + ci−1 = ci(9.3)

が得られる．上の式から ai−1 , bi−1 , ci−1 , ci を消去すれば，(
hi−1 Si−1 + 2(hi−1 + hi )Si + hi Si+1 = 6

yi+1 − yiyi − yi−1
−
hi
hi−1

)
(5.13)

が得られる．

9.2 付録 2(6.5) の導出

(5.2) で i = n − 1, x = xn とおけば，
yn′ = 3an−1 (xn − xn−1 )2 + 2bn−1 (xn − xn−1 ) + cn−1
= 3an−1 h2n−1 + 2bn−1 hn−1 + cn−1

(6.3)

となる．この (6.3) に (5.9),(5.10) から求めた，an−1 , bn−1 を代入すれば，

cn−1 = yn′ − 3an−1 h2n−1 − 2bn−1 hn−1
hn−1 (Sn − Sn−1 )− hn−1 Sn−12
hn−1 (Sn + Sn−1 )= yn′ −
2= yn′ −

(9.4)

この cn−1 を (5.11) の ci で i = n − 1 としたときの cn−1

yn − yn−1
hn−1 (2Sn−1 + Sn )
−
hn−1
6

(9.5)

yn′ −

yn − yn−1
hn−1 (2Sn−1 + Sn )hn−1 (Sn + Sn−1 )
=
−
2
hn−1
6

(9.6)

yn′ −

yn − yn−1
hn−1 (Sn + Sn−1 ) hn−1 (2Sn−1 + Sn )
=
−
hn−1
2
6

(9.7)

cn−1 =と等しいとおけば，

これから(9.7) の右辺はhn−1 (Sn−1 + 2Sn )
6
20

(9.8)

となる．したがって，

hn−1 (Sn−1 + 2Sn )yn − yn−1= yn′ −
6
hn−1

(9.9)

が得られる．これから Sn−1 + 2Sn を求めれば，(6.5) が得られる．

10 補記
日本で Milne の方法で固有値を求めることをされたのは江沢 洋先生たちである [12]．それを私たちは spline 関数を用いて少し改良しただけであり，オリジナリティは私たちにはあまりない．もっともその御縁で二つほど江沢先生とも共著論文を書かせていただいた．
はじめは Schroedinger 方程式の固有値問題を数値的に解いていた．それを一般の Sturm-Louville 型の微分方
程式の固有値を求める問題へと拡張したが，数値的にうまく求められない場合もあり，それを大学を定年退職するまでに解決したかったが，解決に至らずにそのままとなっている．
私の経験したところでは Schroedinger 方程式の固有値問題ではまったく問題がなかったと思う．参考のために
私たちの論文をあげておく [13]．

(2002.2.22) (2002.10.24 改訂) (2021.3.10 三訂)

参考文献[1] 矢野 忠，歩行者のためのスプライン関数入門，研究と実践（愛数協） 第 80 号 (2002.6) 12-20
その後，『数学散歩』（国土社，2005）190-200 に収録された．

[2] K. Shoemake, Animating Rotation with Quaternion Curves, Compter Graphics 19 (3) (1985) 245-254[3] 矢野 忠，四元数と球面線形補間，数学・物理通信 4 巻 2 号 (2014. 4) 4-22
その後，『四元数の発見』（海鳴社，2014）152-186 に収録された．

[4] 市田浩三，吉本富士市，『スプライン関数とその応用』（教育出版, 1979）[5] T. N. E. Greville (桜井明 編訳） 『スプライン関数入門』（東京電機大学出版局, 1981）[6] 岡田昌司，矢野 忠，横田俊昭，データ解析に用いる補間法の問題点，愛媛大学工学部紀要，第 10 巻 4 号(1985.2) 1-8[7] 大塚（岡田）昌司，矢野 忠，横田俊昭，スプライン補間の端条件の処理，愛媛大学工学部紀要，第 11 巻 2 号(1987.2) 1-8[8] 森正武，『数値解析法』（朝倉書店, 1984） 35[9] 高橋健人，『物理数学』（培風館, 1958） 37-39[10] C. F. Gerald, Applied Numerical Analysis , (Addison-Wesley) 482-488.
[11] 森正武，『数値計算プログラミング』（岩波書店, 1986） 52-78[12] 江沢 洋，中村孔一，山本義隆，Milne の方法による Schroedinger 方程式の固有値問題の数値解法，素粒子論研究，36 巻 (1968) 456-469

H. Ezawa, K. Nakamura and Y. Yamamoto, Numerical solution of anharmonic oscillator eigenvalue
problem by Milne’s method, Proc. Japan Acad. 61 (1970) 168-172[13] T. Yokota, T. Yano, M. Otsuka and S. Matsushima, A high-speed method for solving eigenvalue problems: use of the spline funcituon in Milne’s method, Comput. Phys. Commun. 61 (1990) 387-394
T. Yano, T.Yokota, K. Kawabata, M. Otuka, S. Matsushima and Y. Ezawa, A high-speed method for21

eigenvalue problems II. Calculation of the eigenfunction in Milne’s method, Comput. Phys. Commun.
72 (1992) 61-75
T. Yano, K. Kitani, M.Otuska, S. Tomiyoshi, S.Matsushima, T. Wada and Y. Ezawa, A high-speed
method for eigenvalue problems III. Case of unsymmetrical potentials in Milne’s method, Comput.
Phys. Commun. 81 (1994) 409-424
T. Yano, K.Kitani, H. Miyatake, M. Otuka, S. Tomoyoshi, S. Matsushima, T. Wada and Y.Ezawa, A
high-speed method for eigenvalue problems IV. Sturm-Liouville-type diﬀerential equations, Comput.
Phys. Commun. 96 (1996) 247-262
T. Yano, Y. Ezawa, H. Ezawa and T. Wada, Numerical Solutions of the Eigenvalue Problem of SturmLouiville Type by Using Power Serises Approximation about Regular-Singular Points, Prog. of Theor.
Phys. Suppl. No. 138 (2000) 747-749
T. Yano, Y. Ezawa, T. Wada and H. Ezawa, Can Milne’s method work well to the Coulomb-like potentials ?, Journ. of Comput. and Appl. Math. 152 (2003) 597-611．

(2002.2.22)(2002.10.24 改訂)(2021.3.11 三訂)22三角形の面積 2矢野 忠*1

Area of Triangles 2
Tadashi YANO*2

1 はじめに「三角形の面積 1」のエッセイでは三角形の面積 S はその底辺の長さ a にその高さ h をかけ，それを２でわればよいことを求めた [1]．すなわち，

S=

ah
2

(1.1)

であった．
しかし，この三角形の面積の求め方を基本にしていろいろな求め方がある．このエッセイではそれらのいくつかを調べてみたい．

2 三角形の面積の求め方 1
三角形のある角とその角をはさむ 2 辺の長さがわかっているときに三角形の面積を求める式を導こう*3 ．
いま三角形の辺の長さ c, a とそれらの辺がはさむ角 B がわかっているとしよう．この 3 つの要素がわかっていれば，三角形は決まる（図 1，2 参照)．

A
c

h

A
c

b

b

B

h

B
a H

B
図1

C

a

B

鋭角（直角）三角形の面積

図2

C

H

鈍角三角形の面積

二つの辺の長さ c, a とその間の角 B がわかっているとすると，三角形の高さ AH = h は h = c sin B と表されるので，底辺の長さを a と考えれば，その面積 S はS=

1
ca sin B
2(2.1)と求められる．
いま仮に長さが分かっている辺の長さを c, a としたが，わかっている辺の長さが a, b であり，その間の角が Cであるとすれば，上の面積の導き方にならえば，S=1
ab sin C
2*1 元愛媛大学工学部*2 yanotad@earth.ocn.ne.jp*3 この 2 節とつぎの 3 節の三角形の面積の導出は [2] にもとづいている．

23

(2.2)

も導かれる．
またわかっている辺の長さが b, c であり，その辺にはさまれる角が A であるとすれば，S=

1bc sin A2(2.3)と求められる．
ここで，三角形の 2 辺の長さとその 2 辺のはさむ角がわかっているということが重要である．三角形の２辺はどのようにとっても隣接しているが，わかっている三角形の角がその２辺によってはさまれる角でなけば面積は求まらない．

3 三角形の面積の求め方 2三角形の合同の条件は

1. ２辺とそのはさむ角が等しいこと
2. 三角形の三辺の長さが等しいこと
3. １辺の長さが等しくその辺の両端の角が等しいことの３つである．1. の条件をみたす場合の三角形の面積の求め方は 2 節で述べた．この 3 節では 2. の三辺の長さがわかっているときの三角形の面積の求め方を調べよう．三角形の 3 辺の長さ a, b, c がわかっているとき，その面積を求める公式をヘロンの公式という．
この３節ではヘロンの公式を導く．この公式を導くには 2 の結果を用いる．2 節の公式では，たとえば，(2.3)
では三角形の角 A の正弦 sin A を用いた．ところが，余弦法則という三角形の辺と角を結びつける法則がある．
この余弦法則にはいろいろな表し方があるが，その一つに三角形の 3 辺の長さとそのいずれか一つの角の余弦

cos との間の関係をあたえる式がある．3 つの辺の長さ a, b, c がわかっていれば，それによって cos A はつぎのよ
うに与えられる．

cos A =

b2 + c2 − a2
2bc

(3.1)

この形の余弦法則はなんだか難しい感じをあたえるが，実はこの余弦法則はよく知られているピタゴラスの定理
を直角三角形でない三角形に一般化したものである*4 ．その導出は別の機会に述べる．ここではこの法則はすでに知っているとする．
もし，cos A が上の余弦法則で与えられれば，２節で求めた三角形の面積の公式を書き換えることができる．それは cos A と sin A との間には cos2 A + sin2 A = 1 という関係が知られているから．この関係もはじめてこの式に出会った人には難しく感じられるが，実はピタゴラスの定理と同等の内容である．
要するに 2 節であたえられたS=

1
bc sin A
2(3.3)の公式で sin A を cos A を用いて表せばよい．ヘロンの公式を求める方針は簡単である．計算はやさしいとはいえないが．
さて実際の計算にとりかかろう．最終的に求めたいのは sin A であって，sin2 A ではないが，計算をできるだけ*4 (3.1) の形では余弦法則がピタゴラスの定理の一般化されたものであることはわかりにくい．(3.1) を

a2 = b2 + c2 − 2bc cos Aと書き直して，角 A = 90◦ ととると cos A = 0 となるから，これはピタゴラスの定理に帰着する．

24

(3.2)

難しそうにしないため，まず sin2 A を求めよう．

sin2 A = 1 − cos2 A( 2)2b + c2 − a2
=1−
2bc
1
= 2 2 [(2bc)2 − (b2 + c2 − a2 )2 ]4b c
1
= 2 2 (2bc + b2 + c2 − a2 )(2bc − b2 − c2 + a2 )4b c1
= 2 2 [(b + c)2 − a2 ][a2 − (b − c)2 ]4b c1= 2 2 (a + b + c)(b + c − a)(a + b − c)(c + a − b)
4b c

(3.4)

いま 2s = a + b + c とおけば，

b + c − a = 2(s − a)c + a − b = 2(s − b)a + b − c = 2(s − c)であるから

sin2 A =4s(s − a)(s − b)(s − c)
b2 c2

(3.5)

となる．角 A は三角形の内角で，0◦ < A < 180◦ であるから，sin A > 0 である．したがって,√
2 s(s − a)(s − b)(s − c)sin A =bc

(3.6)

これを (3.3) に代入すれば，ヘロンの公式

S=√s(s − a)(s − b)(s − c), 2s = a + b + c(3.7)

が求められる．

4 三角形の面積の求め方 3
3 節で述べた三角形の合同の条件 3. を用いた三角形の面積の求め方をこの 4 節では示す．4 節の説明は基本的に [3] によっている．図 3 には 3 つの辺の長さ a, b, c と 3 つの角 A, B, C があたえられているが，この中の 1 辺

A
c

A

B

b
C

a

B
図3

C

三角形の面積の長さ a とその両端の角 B, C だけがわかっているとしよう．三角形の合同条件 3. よりこれらのデータから三角形の面積が求められるはずである．

25

しかし，どうやって面積を求めたらよいのだろうか．このときヒントは (2.1) または (2.2) である．ここでは(2.2) を使うことにする．条件として 1 辺の長さ a とその両端の角 B, C とが与えれているから，(2.2) に出てくる
辺 b が求まればいいのではないかと思いつく．それには三角形の正弦法則がつかえる．
正弦法則はどうであったか思い出しておくと

a
b
c
=
=
sin A
sin B
sin C

(4.1)

であった．三角形の辺の長さ a, b, c と角 A, B, C は図 3 に示された通りである．
この正弦法則で

a
b
=
sin A
sin B

(4.2)

を用いれば，辺 b を辺の長さ a と角 A, B で表すことができる．
ところで，角 A はわかっているのか．問題の条件にはあからさまに角 A は与えられていないが，これは三角形の一つの内角であり，他の 2 つの角 B, C がわかっているから

A = π − (B + C)

(4.3)

で与えられる．
さあ，問題の見通しがついた．あとは計算するだけである．まず b は (4.2) から

a sin Bsin A
a sin B=sin[π − (B + C)]a sin B=sin(B + C)

b=

(4.4)

と表される．これを (2.2) へ代入すると

1
a sin Basin C
2 sin(B + C)
a2 sin B sin C=
2 sin(B + C)

S=

(4.5)

が求められる．
同様にして

1
bc sin A2b2 sin C sin A=
2 sin(C + A)

S=

(4.6)

と

1
ca sin B22
c sin A sin B=
2 sin(A + B)

S=

(4.7)

も求められる．
なお，三角形の高さ h は tan B とか tan C と関係づけることができるから，(4.5)-(4.7) を tan で表すことができるが，これらの式は付録に示す．この式の幾何学的な説明は文献 [3] を参照してほしい．

26

5 おわりに「三角形の面積 1」 [1] では鋭角三角形も鈍角三角形もその面積が (1.1) で表されることを示したが，このエッセイでは他にどんな三角形の面積を求める方法があるのか調べてみた．ヘロンの公式は不思議なものだが，それも比較的簡単に導けることもわかった．
さらに，一辺の長さとその両端の角を用いて三角形の面積を求める式も求めた．
このエッセイで使った，正弦法則とか余弦法則の導出はつぎの課題としたい．

6 付録(4.5)-(4.7) の tan を用いた表式(4.5)-(4.7) を tan を用いた表式をこの付録では与えておこう．
導き方はどれも同じなのでここでは (4.5) から導く式について説明する．(4.5) の分子と分母をそれぞれ

cos B cos C でわれば，分子はsin B sin C= tan B tan C
cos B cos C(6.1)となり，分母はsin(B + C)
sin B cos C + cos B sin C=
cos B cos C
cos B cos C= tan B + tan C(6.2)となるから，三角形の面積 S は

a2 sin B sin C
2 sin(B + C)
a2 tan B tan C=
2(tan B + tan C)

S=

(6.3)

と表される．
同様な計算で (4.6) と (4.7) はそれぞれS=

b2 tan C tan A
2(tan C + tan A)

(6.4)

S=

c2 tan A tan B
2(tan A + tan B)

(6.5)

と

と表される．

(2020.5.18)

参考文献[1] 矢野 忠，三角形の面積 1，数学・物理通信，11 巻 1 号 (2021.3) 21-22[2] 田島一郎，高等学校 『解析 II』（好学社，1956）127-130[3] 坂江 正，『ピタゴラスからオイラーまで』（海鳴社，2019） 81-83

27

編集後記
『数学・物理通信』読者の皆様こんにちは．私が住む札幌も，ここ数日で積もっていた雪も解
け始め，めっきり春らしくなってきました．毎年のことながら，後期高齢者の私にとって，冬の寒さが身に染みるようになってきました．いつもの年なら 1 月下旬から 2 月上旬にかけてが最も寒い極寒の時期なのですが，この冬はおかしなことに，ひと月早く，12 月下旬から 1 月上旬
が最も寒く最低気温がマイナス 13 度くらいになる日が何日も続きました．こんなに寒いのは 36
年ぶりだそうです．コロナ禍のせいで炭酸ガスの発生量が減り，地球温暖化が止まり，昔に戻ったのかと思いました．しかし，2 月，3 月は平均気温より 5 度くらい高い日が結構あり，やはり温暖化は進行しているのでしょう．
私がこれまでに経験した最も低い気温はマイナス 40 度です．場所はカナダのアルバータ州エドモントンです．ここに 1 年間滞在したのですが，それまでに札幌で経験した気温は最も低いものでマイナス 15 度程度でしたから，このマイナス 40 度というのは私にとっても驚異的なものでした．外に一歩出て，一息吸った瞬間に鼻の中が瞬間的に凍り付くのが分かります．二息目には喉のあたりまで凍っていくのが分かります．そして寒いというより全身がビリッと痛くなり，特に足が凍ってしまったようになり，これで歩けるのかと不安になりました．それでも，300 メー
トルほど先のレストランまでようやく歩いて行くことができました．このマイナス 40 度という
気温は登山家の植村直己さんがアラスカのマッキンリーで亡くなったときの気温です．こんなところによく行くものだと，気が遠くなります．この私がマイナス 40 度を経験した夜にはマイナ
ス 45 度まで下がったのですが，そのときは外出していないのでわかりません．こんな寒いとこ
ろによく人間が生きているものだと土地の人に言うと，ここはまだ良い方だよ，ここから北に1000 キロメートルほど離れたイエローナイフというところではマイナス 60 度になるよと言われました．このイエローナイフは白人が住んでいる北限で，これより北にはエスキモー人しか住んでいません．
前述したように，札幌で経験する最低気温はマイナス 15 度程度ですが，北海道の内陸部の最も寒いところではマイナス 30 度にもなるところがあります．ただしこれは明け方の最も寒いときだけのことで，昼間には気温が 10 度から 15 度くらいは上がってくるので一日中そんなに寒いわけではありません．これがカナダとの大きな違いで，私がいたエドモントンは緯度が高いた
め，冬は午前 10 時くらいになってようやく少し明るくなり始め，午後 2 時くらいには早くも暗くなり始めます．そのため昼間もほとんど気温が上がらず，このマイナス 40 度前後の気温が，2 月上旬の 10 日間ほど夜も昼も続いてしまいます．これだけ気温が下がると日本では見ることができない光景がいくつかあります．例として，車を戸外に駐車するときエンジンを止めてしまうとエンジンオイルが凍ってしまい，再度エンジンを掛けようとしても動かなくなってしまいま
す．そのためカナダでは車のエンジンには電気ヒーターが付いていて，このヒーターのコードを
必ず電気コンセントに繋いでおかなければなりません．戸外の駐車場にはそのための電気コンセ
ントが一台毎に設備されています．このコンセントがないところに車を駐車するときはエンジンをかけっぱなしにしなくてはなりません．エンジンの冷却水として使う不凍液は凍らないようですが，先ほど述べたイエローナイフでは不凍液も凍ってしまいます．それと，もう一つ印象に

28

残っているのは車が走っているとき，その後ろに車の長さの 2 倍程度の真白い大きな煙幕ができてしまいます．これは排気ガス中の水蒸気が一瞬にして凍るため一種のダイヤモンドダスト現象が起こるためです．これは外から見ていると見事に幻想的なものですが，後続車からは前方が見えなくなるので大変迷惑なことと思われます．ついつい長話をしてしまいました，お許しを，．
まだ話したいことはあったのですが，この辺で．
最後に「数学・物理通信」に戻って，今号も私と編集長の矢野さんの記事だけになってしまいました．できるだけ若い方の論文も載せたく思っておりますので，どうかお気軽に投稿していた
だきたくお願いいたします．
（世戸憲治）

29