Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > bigdecimal/ludcmpライブラリ > LUSolveモジュール > lusolve
lusolve(a, b, ps, zero = 0.0) -> [BigDecimal]
[permalink][rdoc]LU 分解を用いて、連立1次方程式 Ax = b の解 x を求めて返します。
require 'bigdecimal'
require 'bigdecimal/util'
require 'bigdecimal/ludcmp'
include LUSolve
a = [['1.0', '2.0'], ['3.0', '1.0']].flatten.map(&:to_d)
# x = ['1.0', -1.0']
b = ['-1.0', '2.0'].map(&:to_d)
zero = '0.0'.to_d
one = '1.0'.to_d
# 以下の 2 行は
ps = ludecomp(a, b.size, zero, one) # a が破壊的に変更される
x = lusolve(a, b, ps, zero)
# こう書いてもよい
# x = lusolve(a, b, ludecomp(a, b.size, zero, one), zero)
p x.map(&:to_f) #=> [1.0, -1.0]