2020年6月27日土曜日

200627

JavaScript


Sum_{n = 1..24} n^2 = 70^2(3)

Sum_{n = 1..24} n^2 = 70^2
Sum_{n = 15..34} n^3 = 70^3
に関するHTMLを書いてみた。

<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <title>Sum_{n = 1..24} n^2 = 70^2</title>
  </head>
  <body>
    <script>
      function showSum(from, to, power){
        var sum = from ** power;
        var formula = from + '^' + power;
        for(var i=from + 1; i<=to + 1; i++){
          document.write('<p>' + formula + ' = ' + sum + '</p>');
sum += i ** power; formula += '+' + i + '^' + power;
} } showSum(1, 24, 2) showSum(15, 34, 3) </script> </body> </html>

2020年6月20日土曜日

200620

Ruby


1 / n の性質について(4)

n が99...9 の約数のとき、
1 / n の小数表示が面白い。

require 'bigdecimal'

def A(n)
  puts "1/#{n}"
  if n == 1
    print "= 0." + "9" * 50
  else
    print "= " + BigDecimal(1r / n, 50).to_s("F")[0..51]
  end
  puts "..."
end

def B(n)
  m = 10 ** n - 1
  (1..Math.sqrt(m)).each{|i|
    if m % i == 0
      A(i)
      A(m / i)
    end
  }
end

(1..7).each{|i| B(i)}

出力結果
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/99
= 0.01010101010101010101010101010101010101010101010101...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/33
= 0.03030303030303030303030303030303030303030303030303...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/11
= 0.09090909090909090909090909090909090909090909090909...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/999
= 0.00100100100100100100100100100100100100100100100100...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/333
= 0.00300300300300300300300300300300300300300300300300...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/111
= 0.00900900900900900900900900900900900900900900900900...
1/27
= 0.03703703703703703703703703703703703703703703703703...
1/37
= 0.02702702702702702702702702702702702702702702702702...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/9999
= 0.00010001000100010001000100010001000100010001000100...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/3333
= 0.00030003000300030003000300030003000300030003000300...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/1111
= 0.00090009000900090009000900090009000900090009000900...
1/11
= 0.09090909090909090909090909090909090909090909090909...
1/909
= 0.00110011001100110011001100110011001100110011001100...
1/33
= 0.03030303030303030303030303030303030303030303030303...
1/303
= 0.00330033003300330033003300330033003300330033003300...
1/99
= 0.01010101010101010101010101010101010101010101010101...
1/101
= 0.00990099009900990099009900990099009900990099009900...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/99999
= 0.00001000010000100001000010000100001000010000100001...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/33333
= 0.00003000030000300003000030000300003000030000300003...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/11111
= 0.00009000090000900009000090000900009000090000900009...
1/41
= 0.02439024390243902439024390243902439024390243902439...
1/2439
= 0.00041000410004100041000410004100041000410004100041...
1/123
= 0.00813008130081300813008130081300813008130081300813...
1/813
= 0.00123001230012300123001230012300123001230012300123...
1/271
= 0.00369003690036900369003690036900369003690036900369...
1/369
= 0.00271002710027100271002710027100271002710027100271...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/999999
= 0.00000100000100000100000100000100000100000100000100...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/333333
= 0.00000300000300000300000300000300000300000300000300...
1/7
= 0.14285714285714285714285714285714285714285714285714...
1/142857
= 0.00000700000700000700000700000700000700000700000700...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/111111
= 0.00000900000900000900000900000900000900000900000900...
1/11
= 0.09090909090909090909090909090909090909090909090909...
1/90909
= 0.00001100001100001100001100001100001100001100001100...
1/13
= 0.07692307692307692307692307692307692307692307692307...
1/76923
= 0.00001300001300001300001300001300001300001300001300...
1/21
= 0.04761904761904761904761904761904761904761904761904...
1/47619
= 0.00002100002100002100002100002100002100002100002100...
1/27
= 0.03703703703703703703703703703703703703703703703703...
1/37037
= 0.00002700002700002700002700002700002700002700002700...
1/33
= 0.03030303030303030303030303030303030303030303030303...
1/30303
= 0.00003300003300003300003300003300003300003300003300...
1/37
= 0.02702702702702702702702702702702702702702702702702...
1/27027
= 0.00003700003700003700003700003700003700003700003700...
1/39
= 0.02564102564102564102564102564102564102564102564102...
1/25641
= 0.00003900003900003900003900003900003900003900003900...
1/63
= 0.01587301587301587301587301587301587301587301587301...
1/15873
= 0.00006300006300006300006300006300006300006300006300...
1/77
= 0.01298701298701298701298701298701298701298701298701...
1/12987
= 0.00007700007700007700007700007700007700007700007700...
1/91
= 0.01098901098901098901098901098901098901098901098901...
1/10989
= 0.00009100009100009100009100009100009100009100009100...
1/99
= 0.01010101010101010101010101010101010101010101010101...
1/10101
= 0.00009900009900009900009900009900009900009900009900...
1/111
= 0.00900900900900900900900900900900900900900900900900...
1/9009
= 0.00011100011100011100011100011100011100011100011100...
1/117
= 0.00854700854700854700854700854700854700854700854700...
1/8547
= 0.00011700011700011700011700011700011700011700011700...
1/143
= 0.00699300699300699300699300699300699300699300699300...
1/6993
= 0.00014300014300014300014300014300014300014300014300...
1/189
= 0.00529100529100529100529100529100529100529100529100...
1/5291
= 0.00018900018900018900018900018900018900018900018900...
1/231
= 0.00432900432900432900432900432900432900432900432900...
1/4329
= 0.00023100023100023100023100023100023100023100023100...
1/259
= 0.00386100386100386100386100386100386100386100386100...
1/3861
= 0.00025900025900025900025900025900025900025900025900...
1/273
= 0.00366300366300366300366300366300366300366300366300...
1/3663
= 0.00027300027300027300027300027300027300027300027300...
1/297
= 0.00336700336700336700336700336700336700336700336700...
1/3367
= 0.00029700029700029700029700029700029700029700029700...
1/333
= 0.00300300300300300300300300300300300300300300300300...
1/3003
= 0.00033300033300033300033300033300033300033300033300...
1/351
= 0.00284900284900284900284900284900284900284900284900...
1/2849
= 0.00035100035100035100035100035100035100035100035100...
1/407
= 0.00245700245700245700245700245700245700245700245700...
1/2457
= 0.00040700040700040700040700040700040700040700040700...
1/429
= 0.00233100233100233100233100233100233100233100233100...
1/2331
= 0.00042900042900042900042900042900042900042900042900...
1/481
= 0.00207900207900207900207900207900207900207900207900...
1/2079
= 0.00048100048100048100048100048100048100048100048100...
1/693
= 0.00144300144300144300144300144300144300144300144300...
1/1443
= 0.00069300069300069300069300069300069300069300069300...
1/777
= 0.00128700128700128700128700128700128700128700128700...
1/1287
= 0.00077700077700077700077700077700077700077700077700...
1/819
= 0.00122100122100122100122100122100122100122100122100...
1/1221
= 0.00081900081900081900081900081900081900081900081900...
1/999
= 0.00100100100100100100100100100100100100100100100100...
1/1001
= 0.00099900099900099900099900099900099900099900099900...
1/1
= 0.99999999999999999999999999999999999999999999999999...
1/9999999
= 0.00000010000001000000100000010000001000000100000010...
1/3
= 0.33333333333333333333333333333333333333333333333333...
1/3333333
= 0.00000030000003000000300000030000003000000300000030...
1/9
= 0.11111111111111111111111111111111111111111111111111...
1/1111111
= 0.00000090000009000000900000090000009000000900000090...
1/239
= 0.00418410041841004184100418410041841004184100418410...
1/41841
= 0.00002390000239000023900002390000239000023900002390...
1/717
= 0.00139470013947001394700139470013947001394700139470...
1/13947
= 0.00007170000717000071700007170000717000071700007170...
1/2151
= 0.00046490004649000464900046490004649000464900046490...
1/4649
= 0.00021510002151000215100021510002151000215100021510...

2020年5月24日日曜日

200524

GitHub


芝生への反映

プライベートリポジトリへの貢献を外部に見えるようにするには、
Contribution settings で設定を変えておきましょう。

2020年5月10日日曜日

200510

PARI


百五減算

塵劫記にある問題を解いてみた。

(00:11) gp > f(x, y, z) = chinese(chinese(Mod(x, 3), Mod(y, 5)), Mod(z, 7));
(00:12) gp > f(2, 1, 2)
%2 = Mod(86, 105)
(00:12) gp >

2020年5月2日土曜日

200502(2)

PARI


A330905とA330906(2)

B_n をベルヌーイ数とし、
b(n) = (1-2^(n-1)) * B_n / n! とおく。
以下の式が成り立つ。
Sum_{k>0} (-1)^(k+1) / (k^(4*n+3) * sinh(Pi * k))
= Pi^(4*n+3) * Sum_{k=0..2*n+2} (-1)^k * b(2*k) * b(4*n+4-2*k).

この式を確かめたいので、以下のように変形しておく。
Pi^(4*n+3) / Sum_{k>0} (-1)^(k+1) / (k^(4*n+3) * sinh(Pi * k))
= 1 / Sum_{k=0..2*n+2} (-1)^k * b(2*k) * b(4*n+4-2*k).

PARI で以下を計算してみた。
・左辺の近似
・右辺の小数点表示
・右辺

(20:07) gp > a(n) = Pi^(4*n+3)/sum(k=1, 1e3, (-1)^(k+1)/(k^(4*n+3)*sinh(Pi*k)));
(20:07) gp > b(n) = (1-2^(n-1))*bernfrac(n)/n!;
(20:07) gp > c(n) = 1./sum(k=0, 2*n+2, (-1)^k*b(2*k)*b(4*n+4-2*k));
(20:07) gp > for(n=0, 15, print(n, " ", a(n), ", ", c(n)))
0 360.00000000000000000000000000000000000, 360.00000000000000000000000000000000000
1 34892.307692307692307692307692307692307, 34892.307692307692307692307692307692308
2 3397757.0466450486405587428286355699675, 3397757.0466450486405587428286355699676
3 330965893.87873935512046000436713006769, 330965893.87873935512046000436713006769
4 32239047105.289252291789907094360794212, 32239047105.289252291789907094360794212
5 3140376032121.1543878520200862031670201, 3140376032121.1543878520200862031670202
6 305901173319289.18736149200209787146546, 305901173319289.18736149200209787146547
7 29797555230289305.236886951798435957311, 29797555230289305.236886951798435957311
8 2902552769963310768.7081963347143234222, 2902552769963310768.7081963347143234222
9 282735027000019326514.75198821663551665, 282735027000019326514.75198821663551666
10 27540961983543993800640.575424040179925, 27540961983543993800640.575424040179926
11 2682740073019024892772930.4983112005454, 2682740073019024892772930.4983112005455
12 261323271993276466380937060.90503864062, 261323271993276466380937060.90503864063
13 25455262390896446399109395243.853963842, 25455262390896446399109395243.853963843
14 2479573971529250477868053848163.8705205, 2479573971529250477868053848163.8705206
15 241533046718235727283534125686156.70937, 241533046718235727283534125686156.70938
(20:07) gp > d(n) = 1/sum(k=0, 2*n+2, (-1)^k*b(2*k)*b(4*n+4-2*k));
(20:07) gp > for(n=0, 15, print(n, " ", d(n)))
0 360
1 453600/13
2 13621608000/4009
3 4547140416000/13739
4 844351508246400000/26190337
5 2481187700290640140800000/790092547807
6 4625642784113264833920000000/15121363327643
7 72771380848009396571232614400000000/2442193001593535677
8 121040492221732333298138065066291200000000/41701392468830919939353
9 4859044199288026228257452368062289920000000000/17185858614142258665062467
10 470948281883394078095168798417333263626240000000000/17099921279612182344285033157
11 75909503357294871843169209382788539223253261516800000000000/28295511786898541163838004665601843
12 190237458979356401675743287858178427370130402222080000000000000/727977487532189566289706245511979571
13 577353186156120578296926710267088574653027718747008368640000000000000/22681093492188834346091000609641534617709
14 293380052164647034026484708090366002657453465071092270541520150528000000000000000/118318733594266620784339626611081721895773642441001
15 142060424380033042937835408541691071880198126207611096803753229811712000000000000000/588161439232602912110323381690338959839367310791017
(20:07) gp >

200502

PARI


A330905とA330906(1)

B_n をベルヌーイ数とし、
b(n) = B_n / n! とおく。
Ramanujan は以下の式を証明している。
Sum_{k>0} 1 / (k^(4*n+3) * tanh(Pi * k))
= 1/2 * (2*Pi)^(4*n+3) * Sum_{k=0..2*n+2} (-1)^(k+1) * b(2*k) * b(4*n+4-2*k).

この式を確かめたいので、以下のように変形しておく。
(2*Pi)^(4*n+3) / (2 * Sum_{k>0} 1 / (k^(4*n+3) * tanh(Pi * k)))
= 1 / Sum_{k=0..2*n+2} (-1)^(k+1) * b(2*k) * b(4*n+4-2*k).

PARI で以下を計算してみた。
・左辺の近似
・右辺の小数点表示
・右辺

(20:01) gp > a(n) = (2*Pi)^(4*n+3)/(2*sum(k=1, 1e5, 1/(k^(4*n+3)*tanh(Pi*k))));
(20:01) gp > b(n) = bernfrac(n)/n!;
(20:01) gp > c(n) = 1./sum(k=0, 2*n+2, (-1)^(k+1)*b(2*k)*b(4*n+4-2*k));
(20:01) gp > for(n=0, 15, print(n, " ", a(n), ", ", c(n)))
0 102.85714286140791537238401578455415888, 102.85714285714285714285714285714285714
1 190989.47368421052631578947368424203205, 190989.47368421052631578947368421052632
2 299994119.75223675154852030282174811046, 299994119.75223675154852030282174810736
3 467770417602.68868269160517279170015397, 467770417602.68868269160517279170015343
4 729062290145074.01339579741266079413018, 729062290145074.01339579741266079412994
5 1136278745069845523.6788794377714389477, 1136278745069845523.6788794377714389475
6 1770942272696454712718.5728260712558869, 1770942272696454712718.5728260712558868
7 2760094052120487610477090.9028015566731, 2760094052120487610477090.9028015566730
8 4301732046437584164240285656.1584123002, 4301732046437584164240285656.1584123001
9 6704444936427436938855870102292.5590515, 6704444936427436938855870102292.5590516
10 10449182194336422920902110427614039.942, 10449182194336422920902110427614039.942
11 1.6285525433585632742121198283458288818 E37, 1.6285525433585632742121198283458288818 E37
12 2.5381731671947447046974678469684691899 E40, 2.5381731671947447046974678469684691900 E40
13 3.9558582576533644484189622424332846786 E43, 3.9558582576533644484189622424332846787 E43
14 6.1653849141978696979807423115405833693 E46, 6.1653849141978696979807423115405833693 E46
15 9.6090326458682495355731770685878697235 E49, 9.6090326458682495355731770685878697236 E49
(20:01) gp > d(n) = 1/sum(k=0, 2*n+2, (-1)^(k+1)*b(2*k)*b(4*n+4-2*k));
(20:01) gp > for(n=0, 15, print(n, " ", d(n)))
0 720/7
1 3628800/19
2 435891456000/1453
3 6402373705728000/13687
4 5620003638888038400000/7708537
5 5081472410195231008358400000/4472029801
6 265252859812191058636308480000000/149780635937
7 30999443899158434788999954012569600000000/11231299844779783
8 15865019396486900390053552464368920166400000000/3688053840923281541
9 17832769956094244866124502310026493003038720000000000/2659842854283579394387
10 12839451706228207549650712667200594750243854090240000000000/1228751826452728351300837
11 1099884206876507435068099593496415004208493256012044697600000000000/67537532722660373286810600661
12 6383309881175603783793414201893673685057979412493432258560000000000000/251492292317888012003479295207
13 1007383427692662245069774961649317721640940993506204110466014248960000000000000/25465609788816025420512226447159951
14 8289853482539033016625993546659398645289550810014602743251403004228665344000000000000000/134458003805226512911690964066005527717583
15 2135507068688430481860783942510767721912226637217595584705835882334863472197632000000000000000/22223954766213317384532039590736747648635617
(20:01) gp >

2020年4月26日日曜日

200426(2)

Node.js


IPアドレスの変更

最近、Node.js を勉強しています。
手持ちのWi-Fi を使っていたのですが、
途中で切れて予備のWi-Fi に切り替わっていて、
コードをきちんと書いたはずなのに、
エラーが出ました。
以下のコマンドでアドレスを確認してミスに気がつきました。

ipconfig

200426

Ruby


Ramanujan の没後百周年の命日

Ken Ono & Sarah Trebat-Leder の
The 1729 K3 surface
に載っている恒等式に具体的数値を入れてみた。

# n=1のとき(x,y)=(z,w)=(6,-3)
def A(n)
  x, y = 6 * n * n - 4 * n + 4, -3 * n * n - 5 * n + 5
  z, w = 4 * n * n - 4 * n + 6,  5 * n * n - 5 * n - 3
  puts "#{x}^3 + (#{y})^3 = #{x ** 3 + y ** 3}"
  puts "#{z}^3 +   #{w}^3  = #{z ** 3 + w ** 3}"
end

def B(n)
  63 * (3 * n * n - 3 * n + 1) * (n * n + n + 1) * (n * n - 3 * n + 3)
end

n = 100
(2..n).each{|i| A(i)}
p (1..n).map{|i| B(i)}

出力結果
20^3 + (-17)^3 = 3087
14^3 +   7^3  = 3087
46^3 + (-37)^3 = 46683
30^3 +   27^3  = 46683
84^3 + (-63)^3 = 342657
54^3 +   57^3  = 342657
134^3 + (-95)^3 = 1548729
86^3 +   97^3  = 1548729
196^3 + (-133)^3 = 5176899
126^3 +   147^3  = 5176899
270^3 + (-177)^3 = 14137767
174^3 +   207^3  = 14137767
356^3 + (-227)^3 = 33420933
230^3 +   277^3  = 33420933
454^3 + (-283)^3 = 70911477
294^3 +   357^3  = 70911477
564^3 + (-345)^3 = 138342519
366^3 +   447^3  = 138342519
686^3 + (-413)^3 = 252383859
446^3 +   547^3  = 252383859
820^3 + (-487)^3 = 435866697
534^3 +   657^3  = 435866697
966^3 + (-567)^3 = 719144433
630^3 +   777^3  = 719144433
1124^3 + (-653)^3 = 1141589547
734^3 +   907^3  = 1141589547
1294^3 + (-745)^3 = 1753226559
846^3 +   1047^3  = 1753226559
1476^3 + (-843)^3 = 2616501069
966^3 +   1197^3  = 2616501069
1670^3 + (-947)^3 = 3808184877
1094^3 +   1357^3  = 3808184877
1876^3 + (-1057)^3 = 5421417183
1230^3 +   1527^3  = 5421417183
2094^3 + (-1173)^3 = 7567881867
1374^3 +   1707^3  = 7567881867
2324^3 + (-1295)^3 = 10380120849
1526^3 +   1897^3  = 10380120849
2566^3 + (-1423)^3 = 14013983529
1686^3 +   2097^3  = 14013983529
2820^3 + (-1557)^3 = 18651212307
1854^3 +   2307^3  = 18651212307
3086^3 + (-1697)^3 = 24502164183
2030^3 +   2527^3  = 24502164183
3364^3 + (-1843)^3 = 31808668437
2214^3 +   2757^3  = 31808668437
3654^3 + (-1995)^3 = 40847020389
2406^3 +   2997^3  = 40847020389
3956^3 + (-2153)^3 = 51931111239
2606^3 +   3247^3  = 51931111239
4270^3 + (-2317)^3 = 65415693987
2814^3 +   3507^3  = 65415693987
4596^3 + (-2487)^3 = 81699785433
3030^3 +   3777^3  = 81699785433
4934^3 + (-2663)^3 = 101230204257
3254^3 +   4057^3  = 101230204257
5284^3 + (-2845)^3 = 124505245179
3486^3 +   4347^3  = 124505245179
5646^3 + (-3033)^3 = 152078489199
3726^3 +   4647^3  = 152078489199
6020^3 + (-3227)^3 = 184562749917
3974^3 +   4957^3  = 184562749917
6406^3 + (-3427)^3 = 222634155933
4230^3 +   5277^3  = 222634155933
6804^3 + (-3633)^3 = 267036369327
4494^3 +   5607^3  = 267036369327
7214^3 + (-3845)^3 = 318584940219
4766^3 +   5947^3  = 318584940219
7636^3 + (-4063)^3 = 378171797409
5046^3 +   6297^3  = 378171797409
8070^3 + (-4287)^3 = 446769875097
5334^3 +   6657^3  = 446769875097
8516^3 + (-4517)^3 = 525437875683
5630^3 +   7027^3  = 525437875683
8974^3 + (-4753)^3 = 615325168647
5934^3 +   7407^3  = 615325168647
9444^3 + (-4995)^3 = 717676825509
6246^3 +   7797^3  = 717676825509
9926^3 + (-5243)^3 = 833838790869
6566^3 +   8197^3  = 833838790869
10420^3 + (-5497)^3 = 965263189527
6894^3 +   8607^3  = 965263189527
10926^3 + (-5757)^3 = 1113513769683
7230^3 +   9027^3  = 1113513769683
11444^3 + (-6023)^3 = 1280271482217
7574^3 +   9457^3  = 1280271482217
11974^3 + (-6295)^3 = 1467340196049
7926^3 +   9897^3  = 1467340196049
12516^3 + (-6573)^3 = 1676652549579
8286^3 +   10347^3  = 1676652549579
13070^3 + (-6857)^3 = 1910275938207
8654^3 +   10807^3  = 1910275938207
13636^3 + (-7147)^3 = 2170418637933
9030^3 +   11277^3  = 2170418637933
14214^3 + (-7443)^3 = 2459436065037
9414^3 +   11757^3  = 2459436065037
14804^3 + (-7745)^3 = 2779837171839
9806^3 +   12247^3  = 2779837171839
15406^3 + (-8053)^3 = 3134290978539
10206^3 +   12747^3  = 3134290978539
16020^3 + (-8367)^3 = 3525633241137
10614^3 +   13257^3  = 3525633241137
16646^3 + (-8687)^3 = 3956873255433
11030^3 +   13777^3  = 3956873255433
17284^3 + (-9013)^3 = 4431200797107
11454^3 +   14307^3  = 4431200797107
17934^3 + (-9345)^3 = 4951993197879
11886^3 +   14847^3  = 4951993197879
18596^3 + (-9683)^3 = 5522822557749
12326^3 +   15397^3  = 5522822557749
19270^3 + (-10027)^3 = 6147463093317
12774^3 +   15957^3  = 6147463093317
19956^3 + (-10377)^3 = 6829898622183
13230^3 +   16527^3  = 6829898622183
20654^3 + (-10733)^3 = 7574330183427
13694^3 +   17107^3  = 7574330183427
21364^3 + (-11095)^3 = 8385183794169
14166^3 +   17697^3  = 8385183794169
22086^3 + (-11463)^3 = 9267118342209
14646^3 +   18297^3  = 9267118342209
22820^3 + (-11837)^3 = 10225033614747
15134^3 +   18907^3  = 10225033614747
23566^3 + (-12217)^3 = 11264078463183
15630^3 +   19527^3  = 11264078463183
24324^3 + (-12603)^3 = 12389659103997
16134^3 +   20157^3  = 12389659103997
25094^3 + (-12995)^3 = 13607447555709
16646^3 +   20797^3  = 13607447555709
25876^3 + (-13393)^3 = 14923390211919
17166^3 +   21447^3  = 14923390211919
26670^3 + (-13797)^3 = 16343716550427
17694^3 +   22107^3  = 16343716550427
27476^3 + (-14207)^3 = 17874947978433
18230^3 +   22777^3  = 17874947978433
28294^3 + (-14623)^3 = 19523906813817
18774^3 +   23457^3  = 19523906813817
29124^3 + (-15045)^3 = 21297725402499
19326^3 +   24147^3  = 21297725402499
29966^3 + (-15473)^3 = 23203855371879
19886^3 +   24847^3  = 23203855371879
30820^3 + (-15907)^3 = 25250077020357
20454^3 +   25557^3  = 25250077020357
31686^3 + (-16347)^3 = 27444508842933
21030^3 +   26277^3  = 27444508842933
32564^3 + (-16793)^3 = 29795617192887
21614^3 +   27007^3  = 29795617192887
33454^3 + (-17245)^3 = 32312226079539
22206^3 +   27747^3  = 32312226079539
34356^3 + (-17703)^3 = 35003527102089
22806^3 +   28497^3  = 35003527102089
35270^3 + (-18167)^3 = 37879089519537
23414^3 +   29257^3  = 37879089519537
36196^3 + (-18637)^3 = 40948870456683
24030^3 +   30027^3  = 40948870456683
37134^3 + (-19113)^3 = 44223225246207
24654^3 +   30807^3  = 44223225246207
38084^3 + (-19595)^3 = 47712917906829
25286^3 +   31597^3  = 47712917906829
39046^3 + (-20083)^3 = 51429131757549
25926^3 +   32397^3  = 51429131757549
40020^3 + (-20577)^3 = 55383480167967
26574^3 +   33207^3  = 55383480167967
41006^3 + (-21077)^3 = 59588017444683
27230^3 +   34027^3  = 59588017444683
42004^3 + (-21583)^3 = 64055249853777
27894^3 +   34857^3  = 64055249853777
43014^3 + (-22095)^3 = 68798146779369
28566^3 +   35697^3  = 68798146779369
44036^3 + (-22613)^3 = 73830152018259
29246^3 +   36547^3  = 73830152018259
45070^3 + (-23137)^3 = 79165195210647
29934^3 +   37407^3  = 79165195210647
46116^3 + (-23667)^3 = 84817703406933
30630^3 +   38277^3  = 84817703406933
47174^3 + (-24203)^3 = 90802612770597
31334^3 +   39157^3  = 90802612770597
48244^3 + (-24745)^3 = 97135380417159
32046^3 +   40047^3  = 97135380417159
49326^3 + (-25293)^3 = 103831996389219
32766^3 +   40947^3  = 103831996389219
50420^3 + (-25847)^3 = 110908995767577
33494^3 +   41857^3  = 110908995767577
51526^3 + (-26407)^3 = 118383470918433
34230^3 +   42777^3  = 118383470918433
52644^3 + (-26973)^3 = 126273083876667
34974^3 +   43707^3  = 126273083876667
53774^3 + (-27545)^3 = 134596078865199
35726^3 +   44647^3  = 134596078865199
54916^3 + (-28123)^3 = 143371294950429
36486^3 +   45597^3  = 143371294950429
56070^3 + (-28707)^3 = 152618178833757
37254^3 +   46557^3  = 152618178833757
57236^3 + (-29297)^3 = 162356797779183
38030^3 +   47527^3  = 162356797779183
58414^3 + (-29893)^3 = 172607852676987
38814^3 +   48507^3  = 172607852676987
59604^3 + (-30495)^3 = 183392691243489
39606^3 +   49497^3  = 183392691243489
[189, 3087, 46683, 342657, 1548729, 5176899, 14137767, 33420933, 70911477, 138342519, 252383859, 435866697, 719144433, 1141589547, 1753226559, 2616501069, 3808184877, 5421417183, 7567881867, 10380120849, 14013983529, 18651212307, 24502164183, 31808668437, 40847020389, 51931111239, 65415693987, 81699785433, 101230204257, 124505245179, 152078489199, 184562749917, 222634155933, 267036369327, 318584940219, 378171797409, 446769875097, 525437875683, 615325168647, 717676825509, 833838790869, 965263189527, 1113513769683, 1280271482217, 1467340196049, 1676652549579, 1910275938207, 2170418637933, 2459436065037, 2779837171839, 3134290978539, 3525633241137, 3956873255433, 4431200797107, 4951993197879, 5522822557749, 6147463093317, 6829898622183, 7574330183427, 8385183794169, 9267118342209, 10225033614747, 11264078463183, 12389659103997, 13607447555709, 14923390211919, 16343716550427, 17874947978433, 19523906813817, 21297725402499, 23203855371879, 25250077020357, 27444508842933, 29795617192887, 32312226079539, 35003527102089, 37879089519537, 40948870456683, 44223225246207, 47712917906829, 51429131757549, 55383480167967, 59588017444683, 64055249853777, 68798146779369, 73830152018259, 79165195210647, 84817703406933, 90802612770597, 97135380417159, 103831996389219, 110908995767577, 118383470918433, 126273083876667, 134596078865199, 143371294950429, 152618178833757, 162356797779183, 172607852676987, 183392691243489]

2020年4月14日火曜日

200414

PARI


Number of domino tilings of the n X k grid

n X k の長方形をk*n/2 個のドミノで埋め尽くす方法が何通りあるかという問題に対し、
Temperley & Fisher とKasteleyn によってそれぞれ独立に得られた公式がよく知られている。
この公式を言い換えて、より簡単に計算する方法に気がついた。
求めるものをT(n,k) とすると、
T(n,k)^2 = |Res(U_n(x/2), U_k(i*x/2))|
(ただし、U_n(x) は第二種チェビシェフ多項式)
と表される。
これを用いて、T(n,k) を計算してみた。

(11:13) gp > T(n, k) = sqrtint(abs(polresultant(polchebyshev(n, 2, x/2), polchebyshev(k, 2, I*x/2))));
(11:14) gp > for(n=0, 15, for(k=0, 10, print1(T(n, k), ", ")); print)
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
1, 0, 3, 0, 11, 0, 41, 0, 153, 0, 571,
1, 1, 5, 11, 36, 95, 281, 781, 2245, 6336, 18061,
1, 0, 8, 0, 95, 0, 1183, 0, 14824, 0, 185921,
1, 1, 13, 41, 281, 1183, 6728, 31529, 167089, 817991, 4213133,
1, 0, 21, 0, 781, 0, 31529, 0, 1292697, 0, 53175517,
1, 1, 34, 153, 2245, 14824, 167089, 1292697, 12988816, 108435745, 1031151241,
1, 0, 55, 0, 6336, 0, 817991, 0, 108435745, 0, 14479521761,
1, 1, 89, 571, 18061, 185921, 4213133, 53175517, 1031151241, 14479521761, 258584046368,
1, 0, 144, 0, 51205, 0, 21001799, 0, 8940739824, 0, 3852472573499,
1, 1, 233, 2131, 145601, 2332097, 106912793, 2188978117, 82741005829, 1937528668711, 65743732590821,
1, 0, 377, 0, 413351, 0, 536948224, 0, 731164253833, 0, 1012747193318519,
1, 1, 610, 7953, 1174500, 29253160, 2720246633, 90124167441, 6675498237130, 259423766712000, 16848161392724969,
1, 0, 987, 0, 3335651, 0, 13704300553, 0, 59554200469113, 0, 264499788583572499,
(11:14) gp >

2020年4月6日月曜日

200406

Python


A333466等

Graphillion を使って計算してみた。

from graphillion import GraphSet
import graphillion.tutorial as tl

def four_corners(n):
    return [1, n, n * (n - 1) + 1, n * n]

def points_on_diagonal_1(n):
    return [i + 1 for i in range(n * n) if i % n - i // n == 0]

def points_on_diagonal_2(n):
    return [i + 1 for i in range(n * n) if i % n + i // n == n - 1]

def points_on_two_diagonals(n):
    return [i + 1 for i in range(n * n) if i % n - i // n == 0 or i % n + i // n == n - 1]

def A(points, n):
    print(points)
    universe = tl.grid(n - 1, n - 1)
    GraphSet.set_universe(universe)
    cycles = GraphSet.cycles()
    for i in points:
        cycles = cycles.including(i)
    return cycles.len()

print([A(four_corners(n),            n) for n in range(2, 10)])
print([A(points_on_diagonal_1(n),    n) for n in range(2, 10)])
print([A(points_on_diagonal_2(n),    n) for n in range(2, 10)])
print([A(points_on_two_diagonals(n), n) for n in range(2, 10)])

出力結果
[1, 2, 3, 4]
[1, 3, 7, 9]
[1, 4, 13, 16]
[1, 5, 21, 25]
[1, 6, 31, 36]
[1, 7, 43, 49]
[1, 8, 57, 64]
[1, 9, 73, 81]
[1, 1, 11, 373, 44930, 17720400, 22013629316, 84579095455492]
[1, 4]
[1, 5, 9]
[1, 6, 11, 16]
[1, 7, 13, 19, 25]
[1, 8, 15, 22, 29, 36]
[1, 9, 17, 25, 33, 41, 49]
[1, 10, 19, 28, 37, 46, 55, 64]
[1, 11, 21, 31, 41, 51, 61, 71, 81]
[1, 2, 22, 716, 73346, 23374544, 23037365786, 69630317879888]
[2, 3]
[3, 5, 7]
[4, 7, 10, 13]
[5, 9, 13, 17, 21]
[6, 11, 16, 21, 26, 31]
[7, 13, 19, 25, 31, 37, 43]
[8, 15, 22, 29, 36, 43, 50, 57]
[9, 17, 25, 33, 41, 49, 57, 65, 73]
[1, 2, 22, 716, 73346, 23374544, 23037365786, 69630317879888]
[1, 2, 3, 4]
[1, 3, 5, 7, 9]
[1, 4, 6, 7, 10, 11, 13, 16]
[1, 5, 7, 9, 13, 17, 19, 21, 25]
[1, 6, 8, 11, 15, 16, 21, 22, 26, 29, 31, 36]
[1, 7, 9, 13, 17, 19, 25, 31, 33, 37, 41, 43, 49]
[1, 8, 10, 15, 19, 22, 28, 29, 36, 37, 43, 46, 50, 55, 57, 64]
[1, 9, 11, 17, 21, 25, 31, 33, 41, 49, 51, 57, 61, 65, 71, 73, 81]
[1, 0, 6, 68, 6102, 1404416, 1094802826, 2524252113468]