2015年9月22日火曜日

150922(2)

Ruby


フリーマン・ダイソンによるτ関数に関する公式

「ラマヌジャンの遺した関数」を読んでいると、τ関数に関する公式が出てきたので
自分で確かめたくなった。
オンライン整数列大辞典の
A000594(http://oeis.org/A000594/list)
と比較し、答え合わせしてみる。

def ary(i, m)
  i.step(m, 5).to_a + (i - 5).step(-m, -5).to_a
end

def f(a, b, c, d, e)
  (a - b) * (a - c) * (a - d) * (a - e) * (b - c) * (b - d) * (b - e) * (c - d) * (c - e) * (d - e)
end

def tau_function(n)
  sum = 0
  # -mからmまで調べれば十分
  m = Math.sqrt(10 * n).to_i + 1
  ary(1, m).each{|a|
    ary(2, m).each{|b|
      ary(3, m).each{|c|
        ary(4, m).each{|d|
          ary(5, m).each{|e|
            if a + b + c + d + e == 0
              if a * a + b * b + c * c + d * d + e * e == 10 * n
                f = f(a, b, c, d, e)
                p [n, [a, b, c, d, e], f]
                sum += f
              end
            end
          }
        }
      }
    }
  }
  # 288 = 1!2!3!4!
  sum / 288
end

def A000594(n)
  (1..n).map{|i| tau_function(i)}
end
ary = A000594(28)

# OEIS A000594のデータ
ary0 =
[1,-24,252,-1472,4830,-6048,-16744,84480,-113643,
 -115920,534612,-370944,-577738,401856,1217160,
 987136,-6905934,2727432,10661420,-7109760,
 -4219488,-12830688,18643272,21288960,-25499225,
 13865712,-73279080,24647168]
# 一致の確認
p ary == ary0

出力結果
[1, [1, 2, -2, -1, 0], 288]
[2, [1, -3, 3, -1, 0], -6912]
[3, [1, -3, -2, 4, 0], 36288]
[3, [-4, 2, 3, -1, 0], 36288]
[4, [1, 2, 3, -1, -5], -64512]
[4, [1, -3, -2, -1, 5], -64512]
[4, [-4, 2, -2, 4, 0], -294912]
[5, [1, 2, 3, -6, 0], 36288]
[5, [1, 2, -2, 4, -5], 489888]
[5, [6, -3, -2, -1, 0], 36288]
[5, [-4, 2, -2, -1, 5], 489888]
[5, [-4, -3, 3, 4, 0], 338688]
[6, [1, -3, 3, 4, -5], -870912]
[6, [-4, -3, 3, -1, 5], -870912]
[7, [1, 2, -2, -6, 5], -2483712]
[7, [1, 2, -7, 4, 0], -266112]
[7, [6, 2, -2, -1, -5], -2483712]
[7, [-4, 2, 3, 4, -5], 338688]
[7, [-4, 7, -2, -1, 0], -266112]
[7, [-4, -3, -2, 4, 5], 338688]
[8, [1, 2, -7, -1, 5], 2239488]
[8, [1, 7, -2, -1, -5], 2239488]
[8, [1, -3, 3, -6, 5], 6386688]
[8, [6, 2, -2, -6, 0], 7077888]
[8, [6, -3, 3, -1, -5], 6386688]
[9, [1, 7, -2, -6, 0], -4953312]
[9, [1, -8, 3, 4, 0], 684288]
[9, [6, 2, -7, -1, 0], -4953312]
[9, [6, -3, 3, -6, 0], -17006112]
[9, [6, -3, -2, 4, -5], -3592512]
[9, [-4, 2, 3, -6, 5], -3592512]
[9, [-4, -3, 8, -1, 0], 684288]
[10, [1, 7, -7, -1, 0], 3161088]
[10, [1, -3, 8, -1, -5], -6918912]
[10, [1, -3, -7, 4, 5], -11354112]
[10, [1, -8, 3, -1, 5], -6918912]
[10, [-4, 7, 3, -1, -5], -11354112]
[11, [1, -3, 8, -6, 0], 13039488]
[11, [1, -8, -2, 4, 5], 12737088]
[11, [6, 2, 3, -6, -5], 6386688]
[11, [6, -3, -2, -6, 5], 6386688]
[11, [6, -3, -7, 4, 0], 36324288]
[11, [6, -8, 3, -1, 0], 13039488]
[11, [-4, 2, 8, -1, -5], 12737088]
[11, [-4, 2, -7, 4, 5], 9237888]
[11, [-4, 7, 3, -6, 0], 36324288]
[11, [-4, 7, -2, 4, -5], 9237888]
[11, [-4, -3, -2, 9, 0], -741312]
[11, [-9, 2, 3, 4, 0], -741312]
[12, [1, 7, 3, -6, -5], -22643712]
[12, [1, -3, -2, 9, -5], 6386688]
[12, [6, -3, -7, -1, 5], -22643712]
[12, [6, -8, -2, 4, 0], -37158912]
[12, [-4, 2, 8, -6, 0], -37158912]
[12, [-9, 2, 3, -1, 5], 6386688]
[13, [1, 2, 3, 4, -10], 288288]
[13, [1, 2, 8, -6, -5], 17978688]
[13, [1, -8, 8, -1, 0], -8128512]
[13, [6, 2, -7, 4, -5], -28540512]
[13, [6, -8, -2, -1, 5], 17978688]
[13, [-4, 2, -2, 9, -5], -14126112]
[13, [-4, 7, -2, -6, 5], -28540512]
[13, [-4, 7, -7, 4, 0], -95622912]
[13, [-4, -3, 8, 4, -5], -6918912]
[13, [-4, -3, -2, -1, 10], 288288]
[13, [-4, -8, 3, 4, 5], -6918912]
[13, [-9, 2, -2, 4, 5], -14126112]
[14, [1, 7, -7, 4, -5], 86220288]
[14, [1, -3, -7, 9, 0], -37158912]
[14, [-4, 7, -7, -1, 5], 86220288]
[14, [-4, -3, 3, 9, -5], 8805888]
[14, [-9, 7, 3, -1, 0], -37158912]
[14, [-9, -3, 3, 4, 5], 8805888]
[15, [1, -3, -2, -6, 10], -22643712]
[15, [1, -8, -2, 9, 0], 34898688]
[15, [6, 2, 3, -1, -10], -22643712]
[15, [6, 2, -7, -6, 5], 17791488]
[15, [6, 7, -2, -6, -5], 17791488]
[15, [6, -8, 3, 4, -5], 26345088]
[15, [-4, 2, -7, 9, 0], 118879488]
[15, [-4, -3, 8, -6, 5], 26345088]
[15, [-9, 2, 8, -1, 0], 34898688]
[15, [-9, 7, -2, 4, 0], 118879488]
[16, [1, 2, 3, -11, 5], -1677312]
[16, [1, 2, -7, 9, -5], -75866112]
[16, [1, 7, 3, -1, -10], 67212288]
[16, [1, 7, -7, -6, 5], -64576512]
[16, [1, -3, -7, -1, 10], 67212288]
[16, [6, 2, -2, 4, -10], 66060288]
[16, [6, 7, -7, -1, -5], -64576512]
[16, [11, -3, -2, -1, -5], -1677312]
[16, [-4, 2, -2, -6, 10], 66060288]
[16, [-4, -8, 8, 4, 0], 301989888]
[16, [-9, 7, -2, -1, 5], -75866112]
[17, [1, 2, 8, -1, -10], -48498912]
[17, [1, 7, -2, 4, -10], -183218112]
[17, [1, -8, 8, 4, -5], -305690112]
[17, [1, -8, -2, -1, 10], -48498912]
[17, [6, 2, 3, -11, 0], 14702688]
[17, [6, 7, -7, -6, 0], 50083488]
[17, [6, -3, 3, 4, -10], -46230912]
[17, [6, -3, 8, -6, -5], -28540512]
[17, [6, -8, 3, -6, 5], -28540512]
[17, [11, -3, -2, -6, 0], 14702688]
[17, [-4, 2, -7, -1, 10], -183218112]
[17, [-4, -3, 3, -6, 10], -46230912]
[17, [-4, -8, 3, 9, 0], -352864512]
[17, [-4, -8, 8, -1, 5], -305690112]
[17, [-9, 2, -2, 9, 0], -138311712]
[17, [-9, -3, 8, 4, 0], -352864512]
[18, [1, 7, 3, -11, 0], -33530112]
[18, [1, -8, 3, 9, -5], 325721088]
[18, [11, -3, -7, -1, 0], -33530112]
[18, [-4, -3, -7, 9, 5], -103514112]
[18, [-9, 7, 3, 4, -5], -103514112]
[18, [-9, -3, 3, 9, 0], 408146688]
[18, [-9, -3, 8, -1, 5], 325721088]
[19, [1, 2, 8, -11, 0], 21909888]
[19, [1, 2, -2, 9, -10], 148313088]
[19, [1, 2, -7, -6, 10], 78962688]
[19, [1, 2, -12, 4, 5], 3564288]
[19, [1, -3, 8, 4, -10], 502020288]
[19, [1, -8, 8, -6, 5], 339026688]
[19, [6, 2, -2, -11, 5], -85542912]
[19, [6, 7, -2, -1, -10], 78962688]
[19, [6, -8, 8, -1, -5], 339026688]
[19, [6, -8, -7, 4, 5], 7495488]
[19, [11, 2, -2, -6, -5], -85542912]
[19, [11, -8, -2, -1, 0], 21909888]
[19, [-4, 7, 3, 4, -10], 137225088]
[19, [-4, 7, 8, -6, -5], 7495488]
[19, [-4, 12, -2, -1, -5], 3564288]
[19, [-4, -3, -7, 4, 10], 137225088]
[19, [-4, -8, 3, -1, 10], 502020288]
[19, [-4, -8, -2, 9, 5], 382269888]
[19, [-9, 2, 8, 4, -5], 382269888]
[19, [-9, 2, -2, -1, 10], 148313088]
[20, [1, 7, -2, -11, 5], 282175488]
[20, [1, -3, 3, 9, -10], -525837312]
[20, [6, 2, -12, 4, 0], -37158912]
[20, [6, -3, 3, -11, 5], 78962688]
[20, [6, -3, -7, 9, -5], 166053888]
[20, [6, -8, 8, -6, 0], -346816512]
[20, [11, 2, -7, -1, -5], 282175488]
[20, [11, -3, 3, -6, -5], 78962688]
[20, [-4, 2, 8, 4, -10], -501645312]
[20, [-4, 12, -2, -6, 0], -37158912]
[20, [-4, -8, -2, 4, 10], -501645312]
[20, [-9, 2, 3, 9, -5], -312947712]
[20, [-9, 7, 3, -6, 5], 166053888]
[20, [-9, -3, 3, -1, 10], -525837312]
[20, [-9, -3, -2, 9, 5], -312947712]
[21, [1, 7, -12, 4, 0], 71705088]
[21, [1, 12, -2, -6, -5], 71251488]
[21, [1, -8, 3, -6, 10], -452656512]
[21, [6, 2, -12, -1, 5], 71251488]
[21, [6, 7, -2, -11, 0], -183218112]
[21, [6, -3, 8, -1, -10], -452656512]
[21, [6, -8, -2, 9, -5], -522510912]
[21, [11, 2, -7, -6, 0], -183218112]
[21, [-4, 2, 3, 9, -10], 407822688]
[21, [-4, 12, -7, -1, 0], 71705088]
[21, [-9, 2, 8, -6, 5], -522510912]
[21, [-9, -3, -2, 4, 10], 407822688]
[22, [1, 7, -12, -1, 5], -212838912]
[22, [1, 12, -7, -1, -5], -212838912]
[22, [1, -3, 8, -11, 5], -862912512]
[22, [1, -8, -7, 9, 5], -391053312]
[22, [1, -13, 3, 4, 5], -3290112]
[22, [11, -3, -7, 4, -5], -312947712]
[22, [11, -8, 3, -1, -5], -862912512]
[22, [-4, 7, 3, -11, 5], -312947712]
[22, [-4, 7, -7, 9, -5], -64576512]
[22, [-4, -3, 13, -1, -5], -3290112]
[22, [-9, 7, 8, -1, -5], -391053312]
[22, [-9, 7, -7, 4, 5], -64576512]
[23, [1, 2, -2, -11, 10], -305690112]
[23, [1, 2, -12, 9, 0], -46230912]
[23, [1, 12, -7, -6, 0], 106178688]
[23, [1, -8, -7, 4, 10], 471132288]
[23, [6, 7, 3, -6, -10], -238298112]
[23, [6, 7, -12, -1, 0], 106178688]
[23, [6, -3, 8, -11, 0], 810425088]
[23, [6, -3, -2, 9, -10], 485388288]
[23, [6, -3, -7, -6, 10], -238298112]
[23, [6, -3, -12, 4, 5], -44416512]
[23, [6, -8, -7, 9, 0], 449100288]
[23, [6, -13, 3, 4, 0], 29023488]
[23, [11, 2, -2, -1, -10], -305690112]
[23, [11, -8, 3, -6, 0], 810425088]
[23, [11, -8, -2, 4, -5], 968018688]
[23, [-4, 2, 8, -11, 5], 968018688]
[23, [-4, 7, 8, -1, -10], 471132288]
[23, [-4, 12, 3, -6, -5], -44416512]
[23, [-4, -3, 13, -6, 0], 29023488]
[23, [-9, 2, 3, -6, 10], 485388288]
[23, [-9, 7, 8, -6, 0], 449100288]
[23, [-9, 12, -2, -1, 0], -46230912]
[24, [1, -3, 3, -11, 10], 1109541888]
[24, [1, -3, 13, -6, -5], -66189312]
[24, [6, 2, 8, -6, -10], 891813888]
[24, [6, 7, 3, -11, -5], 325721088]
[24, [6, -8, -2, -6, 10], 891813888]
[24, [6, -13, 3, -1, 5], -66189312]
[24, [11, -3, 3, -1, -10], 1109541888]
[24, [11, -3, -7, -6, 5], 325721088]
[24, [-9, 2, -7, 9, 5], 804722688]
[24, [-9, 7, -2, 9, -5], 804722688]
[25, [1, 2, -12, -1, 10], 209297088]
[25, [1, 7, 8, -6, -10], -720431712]
[25, [1, 12, -2, -1, -10], 209297088]
[25, [1, -13, 8, 4, 0], -174650112]
[25, [6, 2, 8, -11, -5], -1210521312]
[25, [6, 7, -7, 4, -10], 137225088]
[25, [6, -8, -7, -1, 10], -720431712]
[25, [6, -13, -2, 4, 5], 42977088]
[25, [11, 2, -2, -11, 0], 583041888]
[25, [11, -3, -2, 4, -10], -880955712]
[25, [11, -8, -2, -6, 5], -1210521312]
[25, [11, -8, -7, 4, 0], -778643712]
[25, [-4, 2, 3, -11, 10], -880955712]
[25, [-4, 2, 13, -6, -5], 42977088]
[25, [-4, 7, 8, -11, 0], -778643712]
[25, [-4, 7, -2, 9, -10], -877960512]
[25, [-4, 7, -7, -6, 10], 137225088]
[25, [-4, 7, -12, 4, 5], 196466688]
[25, [-4, 12, -7, 4, -5], 196466688]
[25, [-4, -3, -2, 14, -5], 1116288]
[25, [-4, -8, 8, 9, -5], 92671488]
[25, [-4, -8, 13, -1, 0], -174650112]
[25, [-9, 2, -7, 4, 10], -877960512]
[25, [-9, -8, 8, 4, 5], 92671488]
[25, [-14, 2, 3, 4, 5], 1116288]
[26, [1, 7, 8, -11, -5], 968018688]
[26, [1, -3, -12, 9, 5], 2053029888]
[26, [1, -8, 13, -1, -5], 576108288]
[26, [1, -13, 3, 9, 0], 166053888]
[26, [1, -13, 8, -1, 5], 576108288]
[26, [11, -3, 3, -11, 0], -1803174912]
[26, [11, -8, -7, -1, 5], 968018688]
[26, [-9, 7, -7, 9, 0], -1024192512]
[26, [-9, 12, 3, -1, -5], 2053029888]
[26, [-9, -3, 8, 9, -5], -352864512]
[26, [-9, -3, 13, -1, 0], 166053888]
[26, [-9, -8, 3, 9, 5], -352864512]
[27, [1, 12, -2, -11, 0], -302968512]
[27, [1, -3, -12, 4, 10], -2428538112]
[27, [1, -8, 13, -6, 0], -376451712]
[27, [6, 2, -7, 9, -10], -1720922112]
[27, [6, 7, -12, 4, -5], -273030912]
[27, [6, -3, -2, -11, 10], -1154829312]
[27, [6, -3, -12, 9, 0], -2142770112]
[27, [6, -13, 8, -1, 0], -376451712]
[27, [11, 2, 3, -6, -10], -1154829312]
[27, [11, 2, -12, -1, 0], -302968512]
[27, [-4, 2, -12, 9, 5], -2357776512]
[27, [-4, 12, 3, -1, -10], -2428538112]
[27, [-4, 12, -7, -6, 5], -273030912]
[27, [-4, -3, 8, 9, -10], 295783488]
[27, [-4, -3, -7, 14, 0], -90683712]
[27, [-9, 7, -2, -6, 10], -1720922112]
[27, [-9, 12, 3, -6, 0], -2142770112]
[27, [-9, 12, -2, 4, -5], -2357776512]
[27, [-9, -8, 3, 4, 10], 295783488]
[27, [-14, 7, 3, 4, 0], -90683712]
[28, [1, 7, -7, 9, -10], 1833689088]
[28, [1, -3, 13, -1, -10], -685504512]
[28, [1, -3, -7, 14, -5], 270885888]
[28, [1, -13, 3, -1, 10], -685504512]
[28, [1, -13, -2, 9, 5], -1803174912]
[28, [6, 7, -7, -11, 5], -85542912]
[28, [6, -8, 8, 4, -10], -346816512]
[28, [11, 2, 3, -11, -5], 1549836288]
[28, [11, 7, -7, -6, -5], -85542912]
[28, [11, -3, -2, -11, 5], 1549836288]
[28, [-4, 2, -12, 4, 10], 2543321088]
[28, [-4, 12, -2, 4, -10], 2543321088]
[28, [-4, -8, 8, -6, 10], -346816512]
[28, [-4, -8, -2, 14, 0], 272498688]
[28, [-9, 2, 13, -1, -5], -1803174912]
[28, [-9, 7, -7, -1, 10], 1833689088]
[28, [-14, 2, 8, 4, 0], 272498688]
[28, [-14, 7, 3, -1, 5], 270885888]
true

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。