|
|
|
<P>Function inverse(inva() As Double, invl As Long, inv() As Double) As Double<BR> Dim copyinva() As Double<BR> Dim copyinv() As Double<BR> ReDim copyinv(1 To invl) As Double<BR> ReDim copyinva(1 To invl, 1 To invl) As Double</P><P> For iiii = 1 To invl<BR> For jjjj = 1 To invl<BR> If (iiii = jjjj) Then<BR> inv(iiii, jjjj) = 1<BR> Else<BR> inv(iiii, jjjj) = 0<BR> End If<BR> copyinva(iiii, jjjj) = inva(iiii, jjjj)<BR> Next jjjj<BR> Next iiii<BR> For iiii = 1 To invl - 1<BR> For jjjj = iiii + 1 To invl<BR> <BR> If copyinva(jjjj, iiii) <> 0 Then<BR> e = copyinva(iiii, iiii) / copyinva(jjjj, iiii)</P><P> If e <> 0 Then<BR> <BR> For mmmm = 1 To invl<BR> inv(jjjj, mmmm) = (inv(jjjj, mmmm) * e - inv(iiii, mmmm)) / e<BR> Next mmmm<BR> <BR> For mmmm = iiii To invl<BR> copyinva(jjjj, mmmm) = (copyinva(jjjj, mmmm) * e - copyinva(iiii, mmmm)) / e<BR> Next mmmm<BR> <BR> Else<BR> <BR> For mmmm = 1 To invl<BR> <BR> copyinv(mmmm) = inv(jjjj, mmmm)<BR> inv(jjjj, mmmm) = inv(iiii, mmmm)<BR> inv(iiii, mmmm) = copyinv(mmmm)<BR> <BR> Next mmmm<BR> <BR> For mmmm = iiii To invl<BR> <BR> copyinv(mmmm) = copyinva(jjjj, mmmm)<BR> copyinva(jjjj, mmmm) = copyinva(iiii, mmmm)<BR> copyinva(iiii, mmmm) = copyinv(mmmm)<BR> <BR> Next mmmm<BR> <BR> End If<BR> End If<BR> Next jjjj<BR> Next iiii<BR> For iiii = invl To 2 Step -1<BR> For jjjj = iiii - 1 To 1 Step -1<BR> <BR> If copyinva(jjjj, iiii) <> 0 Then<BR> e = copyinva(iiii, iiii) / copyinva(jjjj, iiii)<BR> <BR> If e <> 0 Then<BR> <BR> For mmmm = 1 To invl<BR> inv(jjjj, mmmm) = (inv(jjjj, mmmm) * e - inv(iiii, mmmm)) / e<BR> Next mmmm</P><P> For mmmm = iiii To 1 Step -1<BR> copyinva(jjjj, mmmm) = (copyinva(jjjj, mmmm) * e - copyinva(iiii, mmmm)) / e<BR> Next mmmm<BR> Else<BR> For mmmm = invl To 1 Step -1<BR> <BR> copyinv(mmmm) = inv(jjjj, mmmm)<BR> inv(jjjj, mmmm) = inv(iiii, mmmm)<BR> inv(iiii, mmmm) = copyinv(mmmm)<BR> <BR> Next mmmm<BR> <BR> For mmmm = iiii To 1 Step-1<BR> <BR> copyinv(mmmm) = copyinva(jjjj, mmmm)<BR> copyinva(jjjj, mmmm) = copyinva(iiii, mmmm)<BR> copyinva(iiii, mmmm) = copyinv(mmmm)<BR> <BR> Next mmmm<BR> <BR> End If<BR> End If<BR> Next jjjj<BR> Next iiii<BR> For iiii = 1 To invl<BR> For jjjj = 1 To invl<BR> inv(iiii, jjjj) = inv(iiii, jjjj) / copyinva(iiii, iiii)<BR> Next jjjj<BR> Next iiii</P><P>End Function</P> |
|