require 'matrix' Q = Matrix[ [0.5, 0.5, 0, 0, 0], [0.5, 0, 0.5, 0, 0], [0.5, 0, 0, 0.5, 0], [0.5, 0, 0, 0, 0.5], [ 0, 0, 0, 0, 0.5], ] U = Vector[0, 0, 0, 0, 0.5] g = Vector[1, 1, 1, 1, 1] IQ = Matrix.I(5) - Q M = (Matrix.I(5) - Q).inverse puts "I - Q = #{IQ}" puts "M = #{M}" puts "B = MU = #{M * U}" # B = MU = [1.0, 1.0, 1.0, 1.0, 1.0] # つまりどこからスタートしても終わることが保証されている puts "Mg = #{M * g}" # Mg = Vector[32.0, 30.0, 26.0, 18.0, 2.0] # よってSからスタートした場合はN=32であることが分かる # これよりL=N*2+3=67であることも同時に分かる
Standard input is empty
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]