ピックの定理 3次元版 四面体の体積と格子点

2 min読了の目安(約2300字IDEAアイデア記事

四面体の体積と格子点について

O(0,0,0)\text{O}(0,\,0,\,0)A(2,2,3)\text{A}(2,\,2,\,3)B(0,1,1)\text{B}(0,\,1,\,1)C(3,5,8)\text{C}(-3,\,5,\,8)を頂点とする四面体OABCの体積VVとする。

4つの面の方程式を求めると,
  • OAB:f(x,y,z)=x+2y2z=0\triangle{\text{OAB}} : f(x,y,z)=x+2y-2z=0
  • OBC:g(x,y,z)=xy+z=0\triangle{\text{OBC}} : g(x,y,z)=x-y+z=0
  • OCA:h(x,y,z)=x+25y16z=0\triangle{\text{OCA}} : h(x,y,z)=-x+25y-16z=0
  • ABC:j(z,y,z)=x20y+11z+9=0\triangle{\text{ABC}} : j(z,y,z)=-x-20y+11z+9=0
In [1]:
f(x,y,z)=x+2y-2z
g(x,y,z)=x-y+z
h(x,y,z)=-x+25y-16z
j(x,y,z)=-x-20y+11z+9

Out[1]:
j (generic function with 1 method)
四面体の重心は四面体の内部なので,この座標を調べて領域を考える。
(0+2+034,0+2+1+54,0+3+1+84)=(14,2,3)\left(\frac{0+2+0-3}4,\,\frac{0+2+1+5}4,\,\frac{0+3+1+8}4\right)=\left(-\frac14,\,2,\,3\right)

この点が,正領域なのか負領域なのか調べ,四面体の内部を表す連立不等式を作る。

  • OAB:f(x,y,z)=x+2y2z<0\triangle{\text{OAB}} : f(x,y,z)=x+2y-2z<0
  • OBC:g(x,y,z)=xy+z>0\triangle{\text{OBC}} : g(x,y,z)=x-y+z>0
  • OCA:h(x,y,z)=x+25y16>0\triangle{\text{OCA}} : h(x,y,z)=-x+25y-16>0
  • ABC:j(z,y,z)=x20y+11z+9>0\triangle{\text{ABC}} : j(z,y,z)=-x-20y+11z+9>0
In [2]:
O=[0,0,0];A=[2,2,3];B=[0,1,1];C=[-3,5,8];(O + A + B + C) /4

Out[2]:
3-element Array{Float64,1}:
 -0.25
  2.0
  3.0

In [3]:
f(-1/4,2,3)

Out[3]:
-2.25

In [4]:
g(-1/4,2,3)

Out[4]:
0.75

In [5]:
h(-1/4,2,3)

Out[5]:
2.25

In [6]:
j(-1/4,2,3)

Out[6]:
2.25
格子点と体積の関係は以下の通りである。
  • aaは境界上の格子点の数
  • bbは境界上の12\frac12格子点の数
  • ccは内部の格子点の数
  • ddは内部の12\frac12格子点の数
  • VVは体積V=16a+112b13c+16dV=-\frac16a+\frac1{12}b-\frac13c+\frac16d
In [7]:
function koushi()
b=0;d=0;
    for i=0:16
        for k=-6:4
            for l=0:10
                if f(k/2,l/2,i/2)<0 && g(k/2,l/2,i/2)>0 && h(k/2,l/2,i/2)>0 && j(k/2,l/2,i/2)>0
                    d += 1
                elseif f(k/2,l/2,i/2)<=0 && g(k/2,l/2,i/2)>=0 && h(k/2,l/2,i/2)>=0 && j(k/2,l/2,i/2)>=0
                    b +=1
                end
            end
        end
    end
a=0;c=0;
    for i=0:8
        for k=-3:2
            for l=0:5
                if f(k,l,i)<0 && g(k,l,i)>0 && h(k,l,i)>0 && j(k,l,i)>0
                    c += 1
                elseif f(k,l,i)<=0 && g(k,l,i)>=0 && h(k,l,i)>=0 && j(k,l,i)>=0
                    a +=1
                end
            end
        end
    end
    println(a)
    println(b)
    println(c)
    println(d)
    v=-1/6 *a+1/12 *b-1/3 *c+1/6 *d
end

koushi()


5
14
2
11
Out[7]:
1.5
結果は
  • 境界上の格子点の数a=5a=5
  • 境界上の12\frac12格子点の数b=14b=14
  • 内部の格子点の数c=2c=2
  • 内部の12\frac12格子点の数d=11d=11
  • 体積V=16×5+112×1413×2+16×11=32V=-\frac16\times5+\frac1{12}\times 14-\frac13\times 2+\frac16\times 11=\frac32