2016年7月21日木曜日

160721(3)

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(4)

先程の二つをまとめて確認してみた。

def A(a1, a2, a3, a4, k, l, n)
  a, b, c, d = a1, a2, a3, a4
  ary = [a1]
  while ary.size < n
    break if (k * b * d + l * c * c) % a > 0
    a, b, c, d = b, c, d, (k * b * d + l * c * c) / a
    ary << a
  end
  ary
end

def x(s, t, u, v, k, l)
  a, b = s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u, s * t * u * v
  return false if a % b > 0
  a / b
end

def Diophantine(s, t, u, v, k, l, x)
  s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u == x * s * t * u * v
end

def f(a1, a2, a3, a4, k, l, n)
  p ary = A(a1, a2, a3, a4, k, l, n)
  p x = x(a1, a2, a3, a4, k, l)
  p (0..n - 4).map{|i| Diophantine(ary[i], ary[i + 1], ary[i + 2], ary[i + 3], k, l, x)} if x != false
end

n = 20
# テスト用
a1, a2, a3, a4, k, l = 1, 1, 1, 3, 1, 1
f(a1, a2, a3, a4, k, l, n)

a1, a2, a3, a4, k, l = 1, 1, 1, 1, 1, 1
f(a1, a2, a3, a4, k, l, n)

a1, a2, a3, a4, k, l = 1, 3, 121, 177023, 1331, 119790
f(a1, a2, a3, a4, k, l, n)

出力結果
[1, 1, 1, 3]
false
[1, 1, 1, 1, 2, 3, 7, 23, 59, 314, 1529, 8209, 83313, 620297, 7869898, 126742987, 1687054711, 47301104551, 1123424582771, 32606721084786]
4
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 121, 177023, 2460698229, 1383391404675863, 8688298479390987330929, 1455780005631999673771330516947, 4764115435770257032716350566474633731689, 223337535292722331216632575726395706629291248170767, 362740488296214246554305584172734945255544810003424782725680421, 5684399354734693943514581605677865492494211340843132464513825699922941136167, 3663178425075173516124169809409408606242603593700025583156605461905659549116130050238057441, 25250176864369887877947189457135530660164015908973302044152819670980403663047598549079989054148703322698403, 4958058020712814432486705115374786533372502495669393443814623968130512717844083284910928004315372729188382986639113180026201, 17688524650722567116776685594211248483217560907027356274244353315433206710285529509934590173847675452395966246426606926505783153051495924349343, 966153896093880153156929695756396704236036978843578716850207392035008377304823716339303902561584926011695191963421912993623952454349316232639228043806839995631829, 1736866319359273848679563666416661400990572249601952304669372511916616818806800257482633495658057209912056650881639272012572504523762082920288405407289575637034423994331294978413198903, 30800398154111222623972673388270929472329720054055277747294164271353605934320605102397826636172957633550948666223675969513619166894174107884459941000174711694283507515473234541353206828914602568204023767889, 22668868718816480695376897795197644842873892175907257844188449489310389324565259905661276413078971420475323254044594866811488882682691048703019039490288373902569924260019965595621220648709917837833509063205069058985862670936440947]
869
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

0 件のコメント:

コメントを投稿

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