Нахождение определителя методом Гаусса - VBA

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

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

Нужно написать макрос который сможет найти определитель матрицы (n*n) используя метод Гаусса (вводится матрица с листа экселя). Вот процедура решения СЛАУ методом Гаусса, но как с её помощью найти определитель - не могу понять, буду благодарен за помощь.

Решение задачи: «Нахождение определителя методом Гаусса»

textual
Листинг программы
Function det(matrix)
   Dim n As Byte, j As Byte
   Dim i_ As Byte, j_ As Byte
   Dim minor()
 
   n = UBound(matrix)
   If n = 1 Then det = matrix(1, 1): Exit Function
   
   ReDim minor(1 To n - 1, 1 To n - 1)
 
   For j = 1 To n 'по первой строке
         For i_ = 1 To n - 1
            For j_ = 1 To n - 1
               If j_ < j Then minor(i_, j_) = matrix(i_ + 1, j_)
               If j_ >= j Then minor(i_, j_) = matrix(i_ + 1, j_ + 1)
            Next j_
         Next i_
      det = det + (-1) ^ (1 + j) * matrix(1, j) * det(minor)
   Next j
End Function
 
Private Sub Command1_Click()
   Dim i As Integer, j As Integer
   n = CInt(InputBox("Число строк")) 'матрица ТОЛЬКО квадратная
   ReDim A(1 To n, 1 To n) As Single
 
   For i = 1 To n
      For j = 1 To n
         A(i, j) = InputBox("a(" & i & " , " & j & " ) ")
         Text1.Text = Text1.Text & A(i, j) & ""
      Next j
      Text1.Text = Text1.Text + vbCrLf
   Next i
   MsgBox det(A) 'Call det(matrix) - бред {Function det, а не Sub det}
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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