Zenn
🙌

空間内の3つのベクトルのなす角について

に公開

はじめに

30年前の1991年の京都大学の理系の後期試験の問題です。

空間に原点を始点とする長さ1のベクトルa\overrightarrow{a}b\overrightarrow bc\overrightarrow cがある。a\overrightarrow ab\overrightarrow bのなす角をγ\gammab\overrightarrow bc\overrightarrow cのなす角をα\alphac\overrightarrow ca\overrightarrow aのなす角をβ\betaとするとき,次の関係が成り立つことを示。また,ここで等号が成立するのはどんな場合か。

0cos2α+cos2β+cos2γ2cosαcosβcosγ10\leqq \cos^2\alpha+\cos^2\beta+\cos^2\gamma-2\cos\alpha\cos\beta\cos\gamma\leqq 1

この問題を証明していきます。

証明

=cos2α+cos2β+cos2γ2cosαcosβcosγ\bigstar=\cos^2\alpha+\cos^2\beta+\cos^2\gamma-2\cos\alpha\cos\beta\cos\gammaとする。

証明前半

=(cosαcosβcosγ)2cos2βcos2γ+cos2β+cos2γ=(cosαcosβcosγ)2+cos2β(1cos2γ)+cos2γ=(cosαcosβcosγ)2+cos2βsin2γ+cos2γ0\begin{aligned} \bigstar &=\left(\cos\alpha-\cos\beta\cos\gamma\right)^2-\cos^2\beta\cos^2\gamma+\cos^2\beta+\cos^2\gamma\\ &=\left(\cos\alpha-\cos\beta\cos\gamma\right)^2+\cos^2\beta(1-\cos^2\gamma)+\cos^2\gamma\\ &=\left(\cos\alpha-\cos\beta\cos\gamma\right)^2+\cos^2\beta\sin^2\gamma+\cos^2\gamma\\ &\geqq 0 \end{aligned}
cos2α+cos2β+cos2γ2cosαcosβcosγ0\therefore \cos^2\alpha+\cos^2\beta+\cos^2\gamma-2\cos\alpha\cos\beta\cos\gamma\geqq 0

等号は

cosα=cosβcosγcosβsinγ=0cosγ=0\cos\alpha=\cos\beta\cos\gamma \wedge \cos\beta\sin\gamma=0\wedge \cos\gamma=0

すなわち,

α=β=γ=π2\alpha=\beta=\gamma=\frac{\pi}2

のときに限り成立します。

証明後半

1=1(cosαcosβcosγ)2cos2βsin2γcos2γ=sin2γ(cosαcosβcosγ)2cos2βsin2γ=sin2βsin2γ(cosαcosβcosγ)2=(sinβsinγ+cosαcosβcosγ)(sinβsinγcosα+cosβcosγ)=(cosαcos(β+γ))(cos(βγ)cosα)=(2sinα+β+γ2sinαβγ2)(2sinβγ+α2sinβγα2)=4sinα+β+γ2sinα+β+γ2sinαβ+γ2sinα+βγ2=\begin{aligned} 1-\bigstar &=1-\left(\cos\alpha-\cos\beta\cos\gamma\right)^2-\cos^2\beta\sin^2\gamma-\cos^2\gamma\\ &=\sin^2\gamma-\left(\cos\alpha-\cos\beta\cos\gamma\right)^2-\cos^2\beta\sin^2\gamma\\ &=\sin^2\beta\sin^2\gamma-\left(\cos\alpha-\cos\beta\cos\gamma\right)^2\\ &=(\sin\beta\sin\gamma+\cos\alpha-\cos\beta\cos\gamma)(\sin\beta\sin\gamma-\cos\alpha+\cos\beta\cos\gamma)\\ &=\left(\cos\alpha-\cos(\beta+\gamma)\right)\left(\cos(\beta-\gamma)-\cos\alpha\right)\\ &=\left(-2\sin\frac{\alpha+\beta+\gamma}2\sin\frac{\alpha-\beta-\gamma}2\right)\left(-2\sin\frac{\beta-\gamma+\alpha}2\sin\frac{\beta-\gamma-\alpha}2\right)\\ &=4\sin\frac{\alpha+\beta+\gamma}2\sin\frac{-\alpha+\beta+\gamma}2\sin\frac{\alpha-\beta+\gamma}2\sin\frac{\alpha+\beta-\gamma}2\\ &=\heartsuit \end{aligned}

ここで,α\alphaβ\betaγ\gammaについて条件を考えます。

3つのベクトルのなす角の条件

まず,ベクトルのなす角なので,

0απ,0βπ,0γπ(1)0\leqq \alpha\leqq \pi,\,0\leqq \beta\leqq \pi,\,0\leqq \gamma\leqq \pi\cdots(1)

展開図を考えると,
α+β+γ2π(2)\alpha+\beta+\gamma\leqq 2\pi\cdots(2)

αβ+γ,βγ+α,γα+β(3)\alpha\leqq \beta+\gamma,\,\beta\leqq \gamma+\alpha,\,\gamma\leqq \alpha+\beta\cdots(3)

(1),(2)より,

0α+β+γ2π(4)0\leqq\frac{\alpha+\beta+\gamma}2\leqq \pi\cdots(4)

sinα+β+γ20\therefore \sin\frac{\alpha+\beta+\gamma}2\geqq 0

(3),(4)より,
0α+β+γ2=α+β+γ2απα0\leqq\frac{-\alpha+\beta+\gamma}2=\frac{\alpha+\beta+\gamma}2-\alpha\leqq \pi-\alpha

sinα+β+γ20\therefore \sin\frac{-\alpha+\beta+\gamma}2\geqq 0

同様に

0αβ+γ2=α+β+γ2βπβ0\leqq\frac{\alpha-\beta+\gamma}2=\frac{\alpha+\beta+\gamma}2-\beta\leqq \pi-\beta

sinαβ+γ20\therefore \sin\frac{\alpha-\beta+\gamma}2\geqq 0

0α+βγ2=α+β+γ2γπγ0\leqq\frac{\alpha+\beta-\gamma}2=\frac{\alpha+\beta+\gamma}2-\gamma\leqq \pi-\gamma
sinα+βγ20\therefore \sin\frac{\alpha+\beta-\gamma}2\geqq 0

以上より,0\heartsuit\geqq0となります。
等号は

α=β=γ=0α+β+γ=2πα+β+γ=0αβ+γ=0α+βγ=0\alpha=\beta=\gamma=0\vee \alpha+\beta+\gamma=2\pi\vee-\alpha+\beta+\gamma=0\vee\alpha-\beta+\gamma=0\vee \alpha+\beta-\gamma=0

のときに限り成立します。(これらは3つのベクトルが1次独立ではない,すなわち,3つのベクトルが同一平面上にあるときといえます。)

考察

3つのベクトルのなす角の条件は(2),(3)の

α+β+γ2π,αβ+γ,βγ+α,γα+β\alpha+\beta+\gamma\leqq 2\pi,\,\alpha\leqq \beta+\gamma,\,\beta\leqq \gamma+\alpha,\,\gamma\leqq \alpha+\beta

を満たせばよい事がわかりました。この連立不等式は正四面体の内部(境界を含む)を表します。

本当にこれでよいのか,証明方法もちょっと不明だったので,次のように調べることにしました。

Juliaを使って点をプロット

空間内の3つのベクトルをランダムに作り,なす角(α,β,γ)(\alpha,\,\beta,\,\gamma)を空間にプロットして,どのような範囲に存在するかを見てみます。正四面体の内部を充填するように配置されれば予想は正しいと考えられます。

plotlyjs()を用いて空間にプロットすると,グリグリ動かす事ができます。

まずはパッケージを

using Pkg
Pkg.add("Plots")
Pkg.add("PlotlyJS")
Pkg.add("Random")
using Plots
using Random
plotlyjs()

関数を作成

function veccube()#空間内の単位ベクトルを生成
    θ = 2 * rand()
    ϕ = rand() - 0.5
    x, y, z = cospi(ϕ) * cospi(θ), cospi(ϕ) * sinpi(θ), sinpi(ϕ)
end

function kaku(a, b)#2つの単位ベクトルのなす角を求める。
    acos(a[1] * b[1] + a[2] * b[2] + a[3] * b[3])
end

function vecacos()#3つのベクトルのなす角を(α,β,γ)とする。
    x1, x2, x3 = veccube(), veccube(), veccube()
    α, β, γ = kaku(x1, x2), kaku(x2, x3), kaku(x3, x1)
end

vecn(n) = [vecacos() for _ = 1:n]#n組(α,β,γ)を作る。

214\bm{2^{14}}個の点をプロットしてみる。

scatter(vecn(2^14); msw = 1, ms = 1, alpha = 1, size = (500, 500))

結論

バッチリです!

Discussion

ログインするとコメントできます