Форум программистов, компьютерный форум CyberForum.ru

Нужен пример нахождения определителя матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура http://www.cyberforum.ru/cpp-beginners/thread96249.html
Описать структуру с именем TRAIN, содержащую следующие поля: Название пункта; номер поезда; Время отправления; Программа должна: Ввод с клавиатуры данных в масив состоящий из восьми элементов типа TRAIN;записи должны быть размещены в алфавитном порятке по названиям пунктов назначения; вывод на экран информации о поездах, отправляющихся после введённого с клавиатуры времини;
C++ соединить эл-ты массива Люди, подскажите, пожалуйста!!! Короче есть массив char arr1="1 2 3"; (3 элемента) Нужно соединить эти элементы 1,2 и 3 в одно число, чтобы получилось 123 а потом перевести в двоичную систему. В двоичную систему легко, но вот как соединить элементы??? http://www.cyberforum.ru/cpp-beginners/thread96230.html
Циклы C++
если честно, даже сам не знаю что нужно сделать с этой формулой. У читель тал текст, сказал написать на С++ с использованием циклов) больше ничего...подскажите что нужно сделать?)
перевести элементарные программы с delphi на С++ C++
Здравствуйте, я провожу анализ языков программирования по времени исполнения программ, но не владею С++, программы есть на delphi и все очень простые в несколько строчек, просьба перевести их на С++ список программ 1) Задача на длинную арифметику, подсчет факториала числа N=100; 2) Ханойские башни N =16; 3)Кол-во способов разбиения числа N на различные комбинации слагаемых (в целых числах)...
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread96223.html
Помогите пожалуйста, создать программку, вот задача: "Превратить строку так, чтобы все цифры в ней были отсортированы по убыванию". Заранее огромное спасибо за помощь
C++ Вывести количество чисел в наборе Дан набор ненулевых целых чисел; признак его завершения - число 0. Вывести количество чисел в наборе. Задача на С подробнее

Показать сообщение отдельно
EvgeTrofi
Сообщений: n/a
20.03.2014, 06:55     Нужен пример нахождения определителя матрицы
Не пойму, каким образом у Вас всё работает? Переменная L становится отрицательной, а потом начинает использоваться в качестве индекса массива??? Это как?
Может быть Вы что-то скрыли от публики?
Вот мой вариант вычисления определителя на языке VB NET:
vb.net
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
49
50
51
52
53
54
55
56
57
58
59
    'Возвращает детерминант (определитель) матрицы
    Public Function det(ByVal M(,) As Double) As Double
        Dim a As Long = UBound(M, 1)
        Dim b As Long = UBound(M, 2)
        Dim multi As Double = 1
        If a <> b Then Return 0
        For i As Long = a + 1 To 3 Step -1 'Порядок матрицы
            Dim multiplier As Double
            EasyM(M, multiplier)
            multi *= multiplier
        Next
        det = multi * (M(0, 0) * M(1, 1) - M(0, 1) * M(1, 0))
    End Function
    'Процедура разложения определителя по элементам первой строки
    Private Sub EasyM(ByRef M(,) As Double, ByRef multiplier As Double)
        Dim a As Long = UBound(M, 1)
        Dim b As Long = UBound(M, 2)
        Dim i As Long = getNotNull(M)
        Do While i > -1 And i < b
            Dim j As Long = getNotNull(M, i + 1)
            If j < 0 Then Exit Do
            'Вычисляем множитель, на который нужно умножить j столбец, чтобы прибавить к i 
            'и при этом получить нулевой элемент в первой строке
            multiplier = -M(0, i) / M(0, j)
            For k As Long = 0 To a
                M(k, i) += multiplier * M(k, j)
            Next
            i = j
        Loop
        multiplier = Math.Pow(-1, 2 + i) * M(0, i)
        MinorMatrix(M, 0, i)
    End Sub
    'После выполнения процедуры в переменной M сформируется матрица с вычеркнутыми строкой row и столбцом col
    'Если найти определитель такой уменьшеной матрицы, то он будет называться минором
    Public Sub MinorMatrix(ByRef M(,) As Double, row As Long, col As Long)
        Dim a As Long = UBound(M, 1)
        Dim b As Long = UBound(M, 2)
        Dim EM(a - 1, b - 1) As Double
        Dim t As Long = -1
        For i As Long = 0 To a
            If i = row Then Continue For
            t += 1
            Dim p As Long = -1
            For j As Long = 0 To b
                If j = col Then Continue For
                p += 1
                EM(t, p) = M(i, j)
            Next
        Next
        M = EM
    End Sub
    'Возвращает индекс столбца в котором первая строка не нулевая
    'поиск начинается с позиции start включительно. Если не находит, то возвращает -1
    Private Function getNotNull(ByRef M(,) As Double, Optional start As Long = 0) As Long
        For i As Long = start To UBound(M, 2)
            If M(0, i) <> 0 Then Return i
        Next
        Return -1
    End Function
Тестировать так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Public Sub testDET()
        'Dim M(,) As Double = {{4, 3, -4, 2, 0}, {2, -1, -3, -4, 2}, {3, 1, 1, 2, -1}, {1, 2, 3, 4, -1}, {-1, 1, -1, -2, 3}}
        Dim M(,) As Double = {{-3, 1, -2}, {1, -2, 1}, {2, 3, -1}}
        MsgBox(det(M))
    End Sub
 
    Private Sub printMatrix(M(,) As Double)
        Dim txt As String = ""
        For i As Long = 0 To UBound(M, 1)
            For j As Long = 0 To UBound(M, 2)
                txt &= " " & M(i, j)
            Next
            txt &= vbCrLf
        Next
        MsgBox(txt)
    End Sub
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru