Marek:

Here is something I wrote a while ago. It solves a matrix where the Number

of rows = the number of columns. A() is the matrix, N is the number of

rows/cols, and X is the solution vector. You may need to modify if the

matrix is not square. Also, YOU MUST VERIFY THE ACCURACY YOURSELF. I have

not run into problems, but I cannot guarantee it will work. Good Luck

Sub Gauss2(A() As Double, N As Integer, X() As Double, ErrorVal As Boolean)

On Error GoTo Err_Gauss2

Dim N1 As Integer

Dim M As Integer

Dim K As Integer

Dim K1 As Integer

Dim K2 As Integer

Dim B0 As Double

Dim I As Integer

Dim B1 As Double

Dim J As Integer

Dim C As Double

Dim I1 As Double

Dim S As Double

Dim J1 As Double

N1 = N - 1

M = N + 1

'Find the row with the largest pivot element

For K = 1 To N1

K1 = K + 1

K2 = K

B0 = Abs(A(K, K))

For I = K1 To N

B1 = Abs(A(I, K))

If (B0 - B1) < 0 Then

B0 = B1

K2 = I

End If

Next I

'Interchange rows to obtain the largest pivot element

If K2 - K <> 0 Then

For J = K To M

C = A(K2, J)

A(K2, J) = A(K, J)

A(K, J) = C

Next J

End If

'Apply the Gaussean Elimination Algorithm

For I = K1 To N

For J = K1 To M

A(I, J) = A(I, J) - A(I, K) * A(K, J) / A(K, K)

Next J

A(I, K) = 0#

Next I

Next K

'Apply Back Substitution

X(N) = A(N, M) / A(N, N)

For I1 = 1 To N1

I = N - I1

S = 0#

J1 = I + 1

For J = J1 To N

S = S + A(I, J) * X(J)

Next J

X(I) = (A(I, M) - S) / A(I, I)

Next I1

Exit_Gauss2:

Exit Sub

Err_Gauss2:

Select Case Err

Case 6

MsgBox "Structure is not stable", vbCritical, "Solution Termination"

ErrorVal = True

Case Else

MsgBox Error, , Err

ErrorVal = True

End Select

Resume Exit_Gauss2

End Sub

Quote:

>Hi!

>Does anyone have a function, module to solve linear matrix equations by

>Gauss method

>written in Vbasic :-) ?

>This could help me to end my project...

>Best regards,

> maras