• こちらから
  • 3次元格子の隣の話
  • 3次元格子の「直」の隣と「ナナメ」の隣の数の和が18であるという。
  • 一般化しよう
  • 1辺の長さがLのとき、格子点の数は、1次元だとL+1、2次元だと(L+1)^2、n次元だと(L+1)^n
  • ある点の周辺を考える。
  • 自身の周囲は、L=3なので、周囲の全格子点の数は3^n
  • このL=3のn次元立方格子の点を、中央にある自身からの距離で分類する
    • 自身である点の数、nによらず1個。距離は0。
    • 隣接点(距離1の点。1次元的隣の点)、1次元なら2個、2次元なら4個、3次元なら、6個、n次元なら2n個。
    • 普通の斜めの位置の点(距離\sqrt{2}の点。2次元的に出現する隣の点)、1次元なら0個、2次元なら4個、3次元なら、12個、n(n>1)次元なら4n個。
      • ちなみに3次元空間の「直」の隣と「ナナメ」の隣の数の和は18=(3次元空間の1次元的隣の点〜6)+(3次元空間の2次元的隣の点〜12)。
    • 3次元的な隣の点(3次元になって初めて生じる「隣」の点)は、距離が\sqrt{3}で、3以上次元空間にある。その数は1次元で0個、2次元で0個、3次元で8個。n次元で?
  • こう考える。
    • 3^nが自身とその「隣」の数
    • 3^n=(1+2)^n = \sum_{i=0}^n _n C_i 1^i \times 2^{n-i}
      • 格子をその辺をたどって巡り、その道のりを距離とするとき、「隣」までの距離は、0,1,2,...,n。
      • ユークリッドな距離は\sqrt{n}
      • 距離がiの点の数が_n C_i 1^i 2^{n-1}
ns<-1:10

for(n in ns){
	N<-3^n
	Tonari<-rep(0,n+1)
	for(i in 0:n){
		Tonari[i+1]<-choose(n,i)*2^i
	}
	tmp<-paste("n=",n)
	print(tmp)
	print("距離別の隣数")
	print(Tonari)
	tmp<-paste("その和=",sum(Tonari))
	print(tmp)
	tmp<-paste("3^n=",N)
	print(tmp)
	
}
<||
>|r|

[1] "n= 1"
[1] "距離別の隣数"
[1] 1 2
[1] "その和= 3"
[1] "3^n= 3"
[1] "n= 2"
[1] "距離別の隣数"
[1] 1 4 4
[1] "その和= 9"
[1] "3^n= 9"
[1] "n= 3"
[1] "距離別の隣数"
[1]  1  6 12  8
[1] "その和= 27"
[1] "3^n= 27"
[1] "n= 4"
[1] "距離別の隣数"
[1]  1  8 24 32 16
[1] "その和= 81"
[1] "3^n= 81"
[1] "n= 5"
[1] "距離別の隣数"
[1]  1 10 40 80 80 32
[1] "その和= 243"
[1] "3^n= 243"
[1] "n= 6"
[1] "距離別の隣数"
[1]   1  12  60 160 240 192  64
[1] "その和= 729"
[1] "3^n= 729"
[1] "n= 7"
[1] "距離別の隣数"
[1]   1  14  84 280 560 672 448 128
[1] "その和= 2187"
[1] "3^n= 2187"
[1] "n= 8"
[1] "距離別の隣数"
[1]    1   16  112  448 1120 1792 1792 1024  256
[1] "その和= 6561"
[1] "3^n= 6561"
[1] "n= 9"
[1] "距離別の隣数"
 [1]    1   18  144  672 2016 4032 5376 4608 2304  512
[1] "その和= 19683"
[1] "3^n= 19683"
[1] "n= 10"
[1] "距離別の隣数"
 [1]     1    20   180   960  3360  8064 13440 15360 11520  5120  1024
[1] "その和= 59049"
[1] "3^n= 59049"