Вычислить определитель произвольного размера - VB

Узнай цену своей работы

Формулировка задачи:

На форме стоит кнопка и текстовое поле. В поле вводится число от 2 до 10 (для данной программы). Программа задает рандомно определитель и вычисляет его. Результат выводит на форму. примечание: Время работы программы при n=10 равно 4 сек. Поскольку время работы пропорционально n!, то использовать программу при n>10 неразумно (Для n=11 время будет 40 сек. Но скорее вы получите переполнение и надо использовать другой тип чисел)

Решение задачи: «Вычислить определитель произвольного размера»

textual
Листинг программы
Function Det(A() As Double) As Double
     n% = UBound(A, 1)
     If n% = 2 Then
        Det = A(1, 1) * A(2, 2) - A(1, 2) * A(2, 1)
     Else
        S# = 1
        For j% = 1 To n%
            Det = Det + A(1, j%) * Det(Minor(A(), 1, j%)) * S#
            S# = -S#
        Next j%
     End If
End Function
 
Function Minor(A() As Double, m As Integer, k As Integer) As Double()
Dim B() As Double
    nn% = UBound(A, 1)
    ReDim B(1 To nn% - 1, 1 To nn% - 1) As Double
    ii% = 1
    jj% = 1
    For i% = 1 To nn%
        For j% = 1 To nn%
            If i% <> m And j% <> k Then
               B(ii%, jj%) = A(i%, j%)
               jj% = jj% + 1
               If jj% > nn% - 1 Then
                  ii% = ii% + 1
                  jj% = 1
               End If
            End If
        Next j%
     Next i%
     Minor = B
End Function

Оцени полезность:

14   голосов , оценка 4.429 из 5
Похожие ответы