0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 18
1

Вычисление определителя матрицы

17.04.2021, 10:43. Показов 1476. Ответов 1
Метки нет (Все метки)

Кто может подсказать с кодом для вычисления определителя матрицы 4*4 и больше
C++
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
#include <iostream>
#include <time.h> 
using namespace std;
int main()
{
    setlocale(LC_ALL, "");
    int row, column, n; 
    srand(time(NULL)); 
    cout << "введите размер матрицы: ";
    cin >> row;
    column = row;
    n = row;
    int** array = new int* [row];
    for (int i = 0; i < row; i++) 
        array[i] = new int[column];
    for (int i = 0; i < row; i++)
        for (int j = 0; j < n; j++)  
            array[i][j] = 1 + rand() % 10;
    for (int i = 0; i < n;i++)
        for (int j = 0; j < column; j++) {
            cout << "[" << i << "]" << "[" << j << "] = " << array[i][j] << endl;
        }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2021, 10:43
Ответы с готовыми решениями:

Вычисление определителя матрицы N*N
Дорогие форумчане, никто не подскажет как вычислить определитель квадратной матрицы, сам код не...

Вычисление следа матрицы и определителя
воббщем надо реализовать вычисление следа матрицы и определителя алгоритм для следа : #include...

Вычисление миноров и определителя матрицы
Здравствуйте. Одной из задач практички стоит нахождение определителя рекурсивно с помощью методов...

Вычисление определителя матрицы размерами 3 x 3
Написать программу для вычисления определителя матрицы размерами 3 x 3. Воспользоваться тем, что...

1
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,745
17.04.2021, 14:24 2
Лучший ответ Сообщение было отмечено cartmah как решение

Решение

Цитата Сообщение от cartmah Посмотреть сообщение
Кто может подсказать с кодом для вычисления определителя матрицы 4*4 и больше
Делается рекурсивно разложением по строке или столбцу. Когда-то я писал такую функцию для класса матриц, но отрыве от контекста вряд ли в ней легко разобраться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename T>
matrix_detail::prod_elem_type_t<matrix_detail::promoted_type_t<T>, matrix_detail::promoted_type_t<T>> matrix<T>::det() const
{
    if (!is_square())
        throw std::range_error("m_col_count != m_row_count in the \"det\" operator!");
    switch (m_row_count)
    {
    case 0 : return 0;
    case 1 : return m_data[0][0];
    case 2 : return m_data[0][0] * m_data[1][1] - m_data[0][1] * m_data[1][0];
    case 3 : return (m_data[0][0]*m_data[1][1]*m_data[2][2] + m_data[0][1]*m_data[1][2]*m_data[2][0] + m_data[0][2]*m_data[1][0]*m_data[2][1]) -
                    (m_data[2][0]*m_data[1][1]*m_data[0][2] + m_data[2][1]*m_data[1][2]*m_data[0][0] + m_data[2][2]*m_data[1][0]*m_data[0][1]);
    default : break;
    }
    matrix_detail::prod_elem_type_t<matrix_detail::promoted_type_t<T>, matrix_detail::promoted_type_t<T>> sum = 0;
    for (unsigned i = max_zero_count_row(), j = 0; j < m_col_count; ++j)
    {
        if (m_data[i][j] != 0)
            sum += make_truncated_copy(i, j).det() * ((i + j) % 2 == 0 ? m_data[i][j] : -m_data[i][j]);
    }
    return sum;
}
Добавлено через 1 минуту
Строчки 15-21 - это как раз вычисление определителя произвольного порядка более 3.

Добавлено через 2 минуты
В строке 15 определяется переменная для накопления значения определителя. Строки 16-20 - цикл разложения по строке. Здесь функция max_zero_count_row() выдает номер строки, где больше всего нулей, а функция make_truncated_copy возвращает усеченную матрицу, полученную удалением из исходной матрицы строки i и столбца j. m_data - это массив элементов матрицы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2021, 14:24
Помогаю со студенческими работами здесь

Функция класса(вычисление определителя произвольной матрицы) работает не правильно(постоянно определитель 0)
void deterMatr(matr matrx) { if (matrx.rows == matrx.columns){ //приведение матрицы к...

Вычисление определителя
Здравствуйте, дорогие форумчане! Помогите, пожалуйста, отладить программу вычисления...

Вычисление определителя Методом Гаусса
Как сделать обмен строк в этом методе? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt;...

Нахождение определителя матрицы
Написать программу нахождения определителя матрицы

Нахождение определителя матрицы
Нужна помощь. В конце, на выводе детерминанта выводит код, но не число. Как исправить? ...

Нахождение определителя матрицы
Здравствуйте! Функция det правильно находит определитель для матрицы temp1, но неправильно для...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru