fork download
  1. require 'matrix'
  2.  
  3. Q = Matrix[
  4. [0.5, 0.5, 0, 0, 0],
  5. [0.5, 0, 0.5, 0, 0],
  6. [0.5, 0, 0, 0.5, 0],
  7. [0.5, 0, 0, 0, 0.5],
  8. [ 0, 0, 0, 0, 0.5],
  9. ]
  10. U = Vector[0, 0, 0, 0, 0.5]
  11. g = Vector[1, 1, 1, 1, 1]
  12. IQ = Matrix.I(5) - Q
  13. M = (Matrix.I(5) - Q).inverse
  14.  
  15. puts "I - Q = #{IQ}"
  16.  
  17. puts "M = #{M}"
  18.  
  19. puts "B = MU = #{M * U}"
  20. # B = MU = [1.0, 1.0, 1.0, 1.0, 1.0]
  21. # つまりどこからスタートしても終わることが保証されている
  22.  
  23. puts "Mg = #{M * g}"
  24. # Mg = Vector[32.0, 30.0, 26.0, 18.0, 2.0]
  25. # よってSからスタートした場合はN=32であることが分かる
  26. # これよりL=N*2+3=67であることも同時に分かる
Success #stdin #stdout 0.08s 10328KB
stdin
Standard input is empty
stdout
I - Q = Matrix[[0.5, -0.5, 0, 0, 0], [-0.5, 1, -0.5, 0, 0], [-0.5, 0, 1, -0.5, 0], [-0.5, 0, 0, 1, -0.5], [0, 0, 0, 0, 0.5]]
M = Matrix[[16.0, 8.0, 4.0, 2.0, 2.0], [14.0, 8.0, 4.0, 2.0, 2.0], [12.0, 6.0, 4.0, 2.0, 2.0], [8.0, 4.0, 2.0, 2.0, 2.0], [0.0, 0.0, 0.0, 0.0, 2.0]]
B = MU = Vector[1.0, 1.0, 1.0, 1.0, 1.0]
Mg = Vector[32.0, 30.0, 26.0, 18.0, 2.0]