'********************************************************************************* '**************************Gauss-Jordan Decomposition***************************** '********************************************************************************* Function Gauss_Jordan(Apass As Range, bpass As Range) n = Apass.Rows.Count Dim A, B(), x() As Double ReDim A(1 To n, 1 To n) ReDim B(1 To n) ReDim x(1 To n) For p = 1 To n Step 1 For q = 1 To n Step 1 A(p, q) = Apass(p, q) Next q B(p) = bpass(p) Next p For k = 1 To n Step 1 factor = A(k, k) For j = k To n Step 1 A(k, j) = A(k, j) / factor Next j B(k) = B(k) / factor For i = 1 To n Step 1 If (i <> k) Then factor = A(i, k) For j = k To n Step 1 A(i, j) = A(i, j) - factor * A(k, j) Next j B(i) = B(i) - factor * B(k) End If Next i Next k For p = 1 To n Step 1 x(p) = B(p) Next p Gauss_Jordan = x End Function