Private Sub CommandButton1_Click() 'Решение методом Крамера
'Задаем переменные, которые используем для ввода/вывода
'информации в TextBox
Dim a1%, a2%, a3%
'cose - переменная для приравнивания значений столбца в циклах
Dim cose(1 To 3, 1 To 1) As Integer
'Задаем саму матрицу и значения b
Dim m(1 To 3, 1 To 3) As Double
Dim b(1 To 3, 1 To 1) As Double
'Определитель для матриц с разными столбцами
Dim det(1 To 4, 1 To 1) As Double
'Задаем пременные, как числа
a1 = 1
a2 = 2
a3 = 3
For i = 1 To 3 'Создаем цикл считывания значений с текстбоксов
For j = 1 To 3 'В этом считываем значения коэффициентов перед х
k = CStr(a1) & CStr(i) & CStr(j)
m(i, j) = CDbl(Me.Controls("TextBox" & k))
Next j
Next i
'Здесь считываем значения b
For i = 1 To 3
For j = 1 To 1
k = CStr(a2) & CStr(i) & CStr(j)
b(i, j) = CDbl(Me.Controls("TextBox" & k))
'Считаем определитель исходной матрицы
det(1, 1) = WorksheetFunction.MDeterm(m)
Next j
Next i
'Заменяем первый столбец на занчения b
For i = 1 To 3
'Приравниваем переменную cose к первому столбцу матрицы
cose(i, 1) = m(i, 1)
'Производим замену
m(i, 1) = b(i, 1)
'Находим определитель новой матрицы
det(2, 1) = WorksheetFunction.MDeterm(m)
Next i
'Далее производим замену 2,3 и 4 столбцов
'с вычислением определителей
For i = 1 To 3
m(i, 1) = cose(i, 1)
cose(i, 1) = m(i, 2)
m(i, 2) = b(i, 1)
det(3, 1) = WorksheetFunction.MDeterm(m)
Next i
For i = 1 To 3
m(i, 2) = cose(i, 1)
cose(i, 1) = m(i, 3)
m(i, 3) = b(i, 1)
det(4, 1) = WorksheetFunction.MDeterm(m)
Next i
'Выводим ответы
TextBox411.Text = Format(det(2, 1) / det(1, 1), "0")
TextBox421.Text = Format(det(3, 1) / det(1, 1), "0")
TextBox431.Text = Format(det(4, 1) / det(1, 1), "0")
End Sub
Public Sub CommandButton2_Click() 'Решение мотодом обратной матрицы
'Задаем переменные, которые используем для ввода/вывода
'информации в TextBox
Dim m1%, m2%, m3%
'Создаем безразмерный массив для ответа
Dim otv() As Variant
'Создаем массивы для воода коэффициентов перед х и зничений b
Dim a(1 To 3, 1 To 3) As Integer
Dim b(1 To 3, 1 To 1) As Variant
'Присваиваем переменным значения коэффицентов в текстбоксах
m1 = 1
m2 = 2
m3 = 3
For i = 1 To 3 'считываем коэффициенты
For j = 1 To 3
k = CStr(m1) & CStr(i) & CStr(j)
a(i, j) = CDbl(Me.Controls("TextBox" & k))
Next j
Next i
For i = 1 To 3 'Считываем значение после знака ровно
For j = 1 To 1
k = CStr(m2) & CStr(i) & CStr(j)
b(i, j) = CDbl(Me.Controls("Textbox" & k))
Next j
Next i 'с помощью встроенных функций находим решение
otv() = WorksheetFunction.MMult(WorksheetFunction.MInverse(a), b)
For i = 1 To 3
For j = 1 To 1 'выводим ответ
k = CStr(m3) & CStr(i) & CStr(j)
Me.Controls("TextBox" & k) = Format(otv(i, j), "0")
Next j
Next i
End Sub