# # Linear Equation (without pivoting) # def gj(x) row=x.size col=row+1 a=Array.new(x.size){|i| x[i].dup} for k in 0..(row-1) # normalize a[k][i] s.t. a[k][k]=1 akk = a[k][k] for i in 0..(col-1) a[k][i]=a[k][i]/akk end # adjust i-th row s.t. a[i][k]=0, skipping k-th row for i in 0..(row-1) if i != k aik = a[i][k] for j in k..(col-1) a[i][j] = a[i][j] - aik * a[k][j] end end end end Array.new(row){|i| a[i][row]} end # a = [[1.0,1.0,-1.0,2.0], # [3.0,5.0,-7.0,0.0], # [2.0,-3.0,1.0,5.0]] # a = [[1.0, -50.0, -3.0, -90.0], # [-85.0, 2.0, -25.0, -6.0], # [79.0, 5.0, 30.0, -1.0]] # p gj(a)