вот, собственно, код:
Код |
---|
Sub gaus(ByVal n, ByRef A() As Double, _
ByRef F() As Double, ByRef X() As Double)
Dim i As Integer, j As Integer, k As Integer
Dim AA() As Double: ReDim AA(1 To n, 1 To n)
Dim FF() As Double: ReDim FF(1 To n)
Dim B() As Double: ReDim B(1 To n, 1 To n)
Dim G() As Double: ReDim G(1 To n)
'Прямой ход:
For i = 1 To n
For j = 1 To n
AA(i, j) = A(i, j)
Next j
FF(i) = F(i)
Next i
For k = 1 To n - 1
For j = k + 1 To n
B(k, j) = AA(k, j) / AA(k, k)
Next j
G(k) = FF(k) / AA(k, k)
'конец шага № k и начало шага № k + 1
For i = k + 1 To n
For j = k + 1 To n
AA(i, j) = AA(i, j) - AA(i, k) * _
B(k, j)
Next j
FF(i) = FF(i) - AA(i, k) * G(k)
Next i
Next k
G(n) = FF(n) / AA(n, n)
'Обратный ход:
X(n) = G(n)
For k = n - 1 To 1 Step -1
X(k) = G(k)
For j = k + 1 To n
X(k) = X(k) - B(k, j) * X(j)
Next j
Next k
End Sub
|
при запуске, вместо выполнения решения СЛУ методом Гаусса, открывается окно выбора макроса...