September 19th, 2005, 8:59 pm
This is quick and dirty, but not optimal.Function Chol(rMatrix) Dim c: c = rMatrix 'Correlation matrix Dim N As Long: N = UBound(c, 1) Dim d() As Double: ReDim d(1 To N, 1 To N) 'Decomposed matrix Dim i As Long, j As Long, k As Long Dim temp As Double For j = 1 To N For i = j To N If j = 1 Then d(i, j) = c(i, j) Else temp = 0 For k = 1 To j If i = j And temp + d(i, k) * d(j, k) > 1 Then d(i, k) = (1 - temp) / d(j, k) End If temp = temp + d(i, k) * d(j, k) Next k If i = j Then d(i, j) = Sqr(1 - temp) Else d(i, j) = (c(i, j) - temp) / d(j, j) End If End If Next i Next j Chol = dEnd Function