平成25年7月7日

[流れ星]

     第293回数学的な応募解答

      <解答募集期間:6月16日〜7月7日>

[三角錐内の格子点]

座標がすべて整数である点を格子点という。次の領域内にある格子点の個数をS を求めよ。

問題1: y≧0、z≦0、3y+2z≦6n のとき、格子点の個数をS を求めよ。

問題2 x≧0、 y≧0、z≧0、6x+3y+2z≦6n のとき、格子点の個数をS を求めよ。

ただし、nは自然数とする。

<水の流れ:。お詫び問題1を y≧0、z≧0、3y+2z≦6n のとき、格子点の個数をS を求めよ。赤のように修正します。6月16日午後15時訂正>

NO1uchinyan  06/16 1257分受信 更新7/7

問題1:y≧0、z≦≧0、3y+2z≦6n のとき、格子点の個数をSnを求めよ。

上記は「201361612:40」の時点での問題文ですが,

この z に関する式は明らかにおかしいです。

また,題意がよく分からないのですが,問題1:は問題2:への誘導と思われ,

Sn が有限の値で意味をもつように, (y,z) は2次元平面における格子点で,

y >= 0z >= 03y + 2z <= 6n のとき,格子点の個数 Sn を求めよ。だと思って解きます。

(解法1) (y,z) は,0 <= y <= 2n0 <= z <= [3n - 3y/2],の整数,なので,

Sn = Σ[y=0,2n]{Σ[z=0,[3n-3y/2]]{1}}

= Σ[k=0,n]{Σ[z=0,3n-3k]]{1}} + Σ[k=1,n]{Σ[z=0,3n-3k+1]]{1}}

= Σ[k=0,n]{3n - 3k + 1} + Σ[k=1,n]{3n - 3k + 2}

= {3n * 1 - 3 * 0 + 1 * 1} + 2 * Σ[k=1,n]{3n - 3k + 1} + {1 * n}

= (4n + 1) + 2 * (3n * n - 3 * n(n+1)/2 + 1 * n)

= 3n^2 + 3n + 1

(解法2)  対象となっている領域は,(y,z)-2次元座標平面上で,

(0,0)(2n,0)(0,3n) を頂点とする三角形の内部又は(頂点を含む)

です。そこで,三角形の内部の格子点の個数を I,辺上の格子点の個数を B とすると,

ピックの定理より, 三角形の面積 = I + B/2 1 ここで,

三角形の面積 = 2n * 3n * 1/2 = 3n^2

B = 3n + 2n + n = 6n

なので,

3n^2 = I + 6n/2 - 1I = 3n^2 - 3n + 1

これより,

Sn = I + B = (3n^2 - 3n + 1) + 6n = 3n^2 + 3n + 1 個 になります。

 

問題2:x≧0、y≧0、z≧0、6x+3y+2z≦6n のとき、格子点の個数をSnを求めよ。

(解法1)

(x,y,z) は,0 <= x <= n0 <= y <= 2n - 2x0 <= z <= [3n - 3x - 3y/2],の整数,なので,

Sn = Σ[x=0,n]{Σ[y=0,2n-2x]{Σ[z=0,[3n-3x-3y/2]]{1}}}

= Σ[x=0,n]{Σ[k=0,n-x]{Σ[z=0,3n-3x-3k]]{1}} + Σ[k=1,n-x]{Σ[z=0,3n-3x-3k+1]]{1}}}

= Σ[x=0,n]{Σ[k=0,n-x]{3n - 3x - 3k + 1} + Σ[k=1,n-x]{3n - 3x - 3k + 2}}

= Σ[x=0,n]{{3n * 1 - 3x * 1 - 3 * 0 + 1 * 1} + 2 * Σ[k=1,n-x]{3n - 3x - 3k + 1} + {1 * (n-x)}}

= Σ[x=0,n]{(4n - 4x + 1) + 2 * (3n * (n-x) - 3x * (n-x) - 3 * (n-x)(n-x+1)/2 + 1 * (n-x))}

= Σ[x=0,n]{(3n^2 + 3n + 1) - (6n+3)x + 3x^2}

= (3n^2 + 3n + 1) * (n+1) - (6n+3) * n(n+1)/2 + 3 * n(n+1)(2n+1)/6

= (n+1)(2n^2 + 4n + 2)/2

= (n+1)^3

(解法2)

6x + 3y + 2z <= 6n3y + 2z <= 6(n-x)

と書けるので,0 <= x <= n より,

0 <= x <= n-1 のとき,(y,z) の個数 = 問題1:の S(n-x)

x = n のとき,(y,z) = (0,0)(y,z) の個数 = 1

そこで,

Sn = Σ[x=0,n-1]{問題1:の S(n-x)} + 1

= Σ[k=1,n]{問題1:の S(k)} + 1

= Σ[k=1,n]{3k^2 + 3k + 1} + 1

= Σ[k=1,n]{(k+1)^3 - k^3} + 1

= (n+1)^3

(感想)

問題1:の問題文が少しおかしかったので,適当に解釈して解きました。これでよかったでしょうか。ある意味オールマイティな解法を(解法1)に,この問題の意図と思われる解法を(解法2)にしました。

問題2:の結果は美しいですね。

この結果からすると,今は思い付いていませんが,他の面白い解法があるのかも知れませんね

<水の流れ:実は、別解として、3次元の格子点でピックの公式を使って 解けないかとは思っていまして、>

uchinyanからのコメント>06/17 10時53分受信

実は同じことを思って少し考えてみたのですがうまくいかず,
Web
で調べてみたところ,少なくとも一般の場合は望み薄のようです。
http://www.geocities.jp/ikuro_kotaro/koramu/531_p1.htm
http://www.geocities.jp/ikuro_kotaro/koramu/1520_dv2.htm
http://okwave.jp/qa/q3186023.html
http://mathworld.wolfram.com/EhrhartPolynomial.html
など。

もっとも,今回の問題の三角すいはかなり単純なので何かあるかも,
と思うのですが,どのみち,面上の格子点を数える必要はありそうで,
となると,今回の誘導に従った(解法2)辺りが一番簡単なのかな,
という気もしています。

NO2「スモークマン」  06/18 0008分受信

「スモークマン」  06/21 1640分受信 更新7/7

問題1: y≧0、z≧0、3y+2z≦6n のとき、格子点の個数をSn を求めよ。
0<=y<=2n, 0<=z<=3n
y<=2n-2z/3
グラフで…この直線上の格子点の数を求めると…
z
3の倍数のときだけ直線上に乗っているので…
n+1

けっきょく…
{(2n+1)(3n+1)-(n+1)}/2+(n+1)=(6n^2+6n+2)/2=3n^2+3n+1


問題2 x≧0、 y≧0、z≧0、6x+3y+2z≦6n のとき、格子点の個数をSn を求めよ。
ただし、nは自然数とする。

0<=6x<=6n-3y-2z
6x+3y+2z=6n
の平面上に乗っている格子点の数を求める…
問題1の結果を使うと…
3y=6n-2z
上には、n+1個の格子点があった…
つまり…

6n=3y+2z
6x=6n-3y-2z
において、x=0 のときのもの…
x=1
なら…
6(n-1)=3y+2z
0<=x<=n
なので…
次々、スライスした場合をカウントした和を求めればいいはず......

Σ[0<=k<=n] (3k^2+3k+1)
=(n+1)n(2n+1)/2+3n(n+1)/2+n+1
=n^3+3n^2+3n+1

ってことになるのかな ^^

NO3「浜田明巳」 06/18 1246分受信

「浜田明巳」 06/18 1617分受信 更新7/7

エクセルのマクロで前記の結果を検証してみた.
 1≦n≦1000の範囲のみであるが,確かに問題1では,S=3n+3n+1,問題2では,S(n+1)となった.

Option Explicit
Sub Macro1()
     Dim y As Long
     Dim n As Long
     Dim Sn As Long
     For n = 1 To 1000
         Sn = 0
         For y = 0 To Int(6 * n / 3)
             Sn = Sn + Int((6 * n - 3 * y) / 2) + 1
         Next y
         If Sn = S(n) Then
             Cells(n + 1, 1).Value = n
             Cells(n + 1, 2).Value = Sn
         Else
             Cells(n + 1, 1).Value = ""
             Cells(n + 1, 2).Value = ""
         End If
     Next n
End Sub
Private Function S(ByVal n As Long) As Long
     S = 3 * n * n + 3 * n + 1
End Function

Option Explicit
Sub Macro2()
     Dim x As Long
     Dim y As Long
     Dim n As Long
     Dim Sn As Long
     For n = 1 To 1000
         Sn = 0
         For x = 0 To Int(6 * n / 6)
             For y = 0 To Int((6 * n - 6 * x) / 3)
                 Sn = Sn + Int((6 * n - 6 * x - 3 * y) / 2) + 1
             Next y
         Next x
         If Sn = S(n) Then
             Cells(n + 1, 1).Value = n
             Cells(n + 1, 2).Value = Sn
         Else
             Cells(n + 1, 1).Value = ""
             Cells(n + 1, 2).Value = ""
         End If
     Next n
End Sub
Private Function S(ByVal n As Long) As Long
     S = (n + 1) * (n + 1) * (n + 1)
End Function

「浜田明巳」 06/19 1752分受信 更新7/7

問題1:y≧0,z≧0,3y+2z≦6n
 kを整数とする.
 0≦z≦3n−3/2・yであるから,
i).
y=2kのとき,0≦z≦3n−3k
 故にzは(3n−3k+1){3n−3・(y/2)+1}個ある.
ii).
y=2k−1のとき,0≦z≦3n−3k+1.
 故にzは(3n−3k+2){3n−3・(y+1)/2+2}個ある.

 次に3y+2z≦6nから,0≦y≦2n
  ∴S=Σy=0,2,4,………,2n{3n−3・(y/2)+1}
      +Σy=1,3,5,………,2n−1{3n−3・(y+1)/2+2}
     =Σk=0,1,2,………,n(3n−3k+1)
      +Σk=1,2,3,………,n(3n−3k+2)
     =(3n+1)+Σk=1,2,3,………,n(3n−3k+1)
      +Σk=1,2,3,………,n(3n−3k+2)
     =3n+1+Σk=1,2,3,………,n{(3n−3k+1)(3n−3k+2)}
     =3n+1+Σk=1,2,3,………,n(6n−6k+3)
     =3n+1+3Σk=1,2,3,………,n{(2n+1)−2k}
     =3n+1+3{(2n+1)n−2・1/2・n(n+1)}
     =3n+1+3{(2n+1)−n(n+1)}
     =3n+3n+1

問題2:x≧0,y≧0,z≧0,6x+3y+2z≦6n
 3y+2z≦6(n−x)(n−x=0,1,2,………,n)
であるから,求める個数は,問題1のSを使って表すと,
  S+S+S+………+S
となる.
 3y+2z≦6・0のとき,(y,z)(0,0)となり,S=1
 故に非負整数nにおいて,S=3n+3n+1
  ∴S+S+S+………+S
 =Σ0≦k≦n
 =Σ0≦k≦n(3k+3k+1)
 =1+Σ1≦k≦n(3k+3k+1)
 =1+3・1/6・n(n+1)(2n+1)+3・1/2・n(n+1)+n
 =1/2・n(n+1){(2n+1)+3}(n+1)
 =n(n+1)(n+2)(n+1)
 =(n+1){(n+2)+1}
 =(n+1)
 これが問題2で求めるSとなる.

NO4「二度漬け白菜」7/4 1254分受信 更新7/7

問題2:

 

S_n=(n+1)^3 . (答え)

 

一般に、x0, y0, z0, 6x3y+2zN (Nは任意の自然数)
を満たすような整数の組(x,y,z)の個数をA(N)として考えてみます。
A(N)
6x3y+2z+w=N, x0, y0, z0, w0
を満たすような整数の組(x,y,z,w)の個数に等しいです。
このことから数列{A(N)}の母関数 Σ[k=0∞]A(k)*x^k
 1/((1-x)*(1-x^2)*(1-x^3)*(1-x^6))
 ---()
であることがわかります。
(
)を部分分数分解すればA(N)を求めることができます。

A(N)=floor(1/18*(-3*floor((N+2)/3)+3*floor(N/3)+2)*(floor(N/3)+1)+1/432*(N+6)*(2*N^2+24*N+47+9*(-1)^N)+7/36)
となります。
https://oeis.org/A029000

 

これを使って S_n を計算すると、 
S_n=A(6*n)
=floor(1/18*(-3*2*n+3*2*n+2)*(2*n+1)+1/432*(6*n+6)*(2*(6*n)^2+24*6*n+47+9)+7/36)
=floor(n^3+3*n^2+3*n+13/12)
=n^3+3*n^2+3*n+1
=(n+1)^3.

No5「にいばりZ12 7/5 2346分受信 更新7/17

問題1: y≧0、z0、3y+2z≦6n のとき、格子点の個数をS を求めよ。ただし、nは自然数とする。

 

y=2

z=3

y軸、z軸に囲まれる格子点の和は

(2n+1)×(3+1)=6n^2+5+1

求める格子点はのこの約半分になります。

3+2z=6n(y≧0、z0)上の格子点は求める領域に入るので

この線分上の格子点の1/2を(6n^2+5+1/2に加えると回答となります。

3+2z=6nを変形整理しy=2k、z=3(n-k)とおくとn0の範囲で恒等式となり

3+2z=6n上の0を含む格子点の数はn+1となります。

よって求める格子点は6n^2+5+1/2+(n+1/2

3n^2+3+1・・・・・回答(自然数nに0を含む場合)

3n^2+3n=3n(+1)・・・・・回答(自然数nに0(y=z=0)を含まない場合)

因みに約半分と言うのは

limn→∞(3n^2+3+1/6n^2+5+1

=limn→∞(3+3/+1/n^2/6 +5/+1/n^2)=1/2

問題2 x≧0、 y≧0、z≧0、6x+3y+2z≦6n のとき、格子点の個数をS を求めよ。

式を変形すると

3+2z≦6(n-x)

となります。

ここで

<x とすると

or<0となるので

0≦x≦n

問題1から、x=0の場合3n^2+3+1

格子点は0≦x≦nの範囲で求めればよいので

Σ〈i=0→n〉(3i^2+3+1)=n(n+1)(2+1/2 + 3n(n+1)/2 + n+1

(n+1)^3・・・・・回答(自然数nに0を含む場合)

(n+1^3-1n(n^2+3+3)・・・・・回答(自然数nに0(x=y=z=0)を含まない場合)

 

<水の流れ:nが自然数ですから、0以外でも(x=y=z=0)を数えても差し支えないです>

 

にいばりZ12からのコメント:7/7 0時21分受信 更新7/17

ところで、時々悩むと言うか迷うのですが、自然数の考え方です。

いつも忘れるのでウィキで確認すると、数論の場合0を含まない、集合論の場合含む流儀が採られているとあります。

自然数の成り立ちや語感からは0を含まないと言うのが妥当な気もします。

問題1では、含まないほうが回答として綺麗ですが、問題2は含むほうが簡潔です。

そのようなわけで両方併記させて頂いたわけですが、グラフ化すると確かに原点が欠けているのは如何にも不自然です。

学校では今どちらを採用しているのかわかりませんが、数学界で統一見解を出してほしいものです。(子供たちも迷うのではないでしょうか?特に数学好きな子供なら)

 

「浜田明巳」 07/09 0919分受信 更新7/10

自然数の定義であるが,数学の授業では,正の整数としている.そう扱って間違いはない.授業や入試でも,すべてそうなっている.ただ,学問の分野によっては,そう扱ってない場合もあると聞く.実際,私が高校でBASICを習ったころ(何十年か前である)の,情報の先生(その頃は情報と呼んではおらず,単に数学の先生だった)は,自然数を0以上の整数として,プログラムを説明していた.混乱を招くようであれば,自然数を使わず,正の整数としたらよいであろう.数列の漸化式の問題では,自然数ではなく,n=1,2,3,・・・としている.不正確な表現ではあるが,実質的に間違いはない.

 

皆さん、問題や質問に答えてください。一部でも構いませんから、解答とペンネームを添えて、メールで送ってください。待っています。