Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Djentos
0 / 0 / 0
Регистрация: 19.04.2012
Сообщений: 13
1

Программа для нахождения определителя матрицы порядка ≤4

11.05.2012, 13:52. Просмотров 2841. Ответов 4
Метки нет (Все метки)

Помогите сделать курсовую по программираванию. На тему Программа для нахождения определителя матрицы порядка ≤4.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 13:52
Ответы с готовыми решениями:

Составить приложение для вычисления определителя матрицы n-го порядка
Помогите, пожалуйста, составить приложение для вычисления матрицы n-го порядка. Вроде-бы простая...

Программа для нахождения суммы и произведения для наибольшего и наименьшего элемента матрицы
в заданной матрице (m x n) найти сумму и произведение наибольшего и наименьшего (по абсолютной...

Найти средние значения и стандартные отклонения для элементов массивов X[N], Y[M] , (N≤100, M≤100)
не могу написать программу, нуждаюсь в помощи

Формула для нахождения определителя матрицы
Здравствуйте! У меня имеется небольшой вопрос: как записать формулу для нахождения определителя...

Написать функцию для нахождения определителя квадратной матрицы
Здравствуйте! Помогите, пожалуйста, написать функцию для нахождения определителя квадратной матрицы

4
KoGG
5328 / 1394 / 330
Регистрация: 23.12.2010
Сообщений: 2,071
Записей в блоге: 1
11.05.2012, 16:02 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Function det(Matrica1())
  Dim i%, j%, k%, H%, znak%, b#, opr#, Temp#
  H = UBound(Matrica1, 1)
  ReDim A(H, H) As Double
  A = Matrica1
  znak = 1: opr = 1:
  det = 0
  For i = 1 To H
      If A(i, i) = 0 Then
        For j = i + 2 To H
          If A(i, i) = 0 And A(j - 1, i) <> 0 Then
            znak = -znak
            For k = i To H
              Temp = A(i, k)
              A(i, k) = A(j - 1, k)
              A(j - 1, k) = Temp
            Next
          End If
        Next
        If A(i, i) = 0 Then Exit Function
      End If
      If A(i, i) <> 1 Then
        b = A(i, i): opr = opr * b
        For k = i To H
          A(i, k) = A(i, k) / b
        Next
      End If
      If i = H Then Exit For
      For k = i + 1 To H
        b = A(k, i)
        For j = 1 To H
             A(k, j) = A(k, j) - b * A(i, j)
        Next
      Next
  Next
  j = 1: For i = 1 To H: j = j * A(i, i): Next
  If j = 0 Then Exit Function
  det = znak * opr
End Function
 
Sub test()
    Dim M(4, 4)
    M(1, 1) = 1: M(1, 2) = 5: M(1, 3) = 9: M(1, 4) = 3
    M(2, 1) = 2: M(2, 2) = 6: M(2, 3) = 10: M(2, 4) = 4
    M(3, 1) = 3: M(3, 2) = 7: M(3, 3) = 1: M(3, 4) = 5
    M(4, 1) = 4: M(4, 2) = 8: M(4, 3) = 2: M(4, 4) = 6
    Debug.Print det(M())
End Sub
1
Djentos
0 / 0 / 0
Регистрация: 19.04.2012
Сообщений: 13
12.05.2012, 18:45  [ТС] 3
а блок схему можешь нарисовать пожалуйста
0
Апострофф
Заблокирован
08.06.2012, 22:11 4

Не по теме:

Djentos, почитай правила, задай наводящие вопросы там, где тебе пытались помочь, просто апни - как это сделал я своим постом! Но не плоди темы - наказуемо;D



Добавлено через 51 минуту
А потом сюда загляни
0
Catstail
Модератор
25517 / 13120 / 2461
Регистрация: 12.02.2012
Сообщений: 21,462
09.06.2012, 18:44 5
Лучший ответ Сообщение было отмечено как решение

Решение

А вот прикольная программа вычисления определителя квадратной матрицы "в лоб" (разложением по первой строке). Программа рекурсивная. Производительность у метода Гаусса несравненно лучше, зато рекурсивный код проще (как мне кажется)...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
' Получение минора вычеркиванием строки n и столбца k
Function Minor(A() As Double, n As Integer, k As Integer) As Double()
Dim m   As Integer
Dim p   As Integer
Dim i   As Integer
Dim j   As Integer
Dim i1  As Integer
Dim j1  As Integer
Dim R() As Double
 
    m = UBound(A, 1) - 1
    p = UBound(A, 2) - 1
    ReDim R(1 To m, 1 To p) As Double
    i1 = 0
    j1 = 0
    For i = 1 To UBound(A, 1)
        If i <> n Then
           i1 = i1 + 1
           For j = 1 To UBound(A, 2)
               If j <> k Then
                  j1 = j1 + 1
                  R(i1, j1) = A(i, j)
               End If
           Next j
           j1 = 0
        End If
    Next i
    Minor = R
End Function
 
' собственно расчет определителя 
 
Function Detr(A() As Double) As Double
Dim i As Integer
Dim S As Double
    S = 1
    If UBound(A, 1) = 2 Then
       Detr = A(1, 1) * A(2, 2) - A(1, 2) * A(2, 1)  ' второй порядок - обычно
    Else
       For i = 1 To UBound(A, 1)
           Detr = Detr + A(1, i) * Detr(Minor(A, 1, i)) * S ' больший порядок - рекурсивный вызов
           S = -S
       Next i
   End If
End Function
2
09.06.2012, 18:44
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 18:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Код для нахождения определителя матрицы N на N исключением строки и столбца
Подскажите пожалуйста код для нахождения определителя матрицы N на N исключением строки и столбца

И снова класс Матрицы с функция-член класса для нахождения определителя
Проблема в следующем испробовал все варианты, которые закомментированы, все рабочие ну некоторые с...

Подскажите метод нахождения обратной матрицы и определителя матрицы
Подскажите метод нахождения обратной матрицы и определителя матрицы на С#


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.