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

Определитель матрицы, разложением по произвольной строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
13.05.2013, 17:26     Определитель матрицы, разложением по произвольной строке #1
Здравствуйте. Помогите передать этот код. Здесь считается определитель матрицы, путем разложения, но первой строке, а мне нужно по произвольной.
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
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
60
61
62
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
bool notInEx(int *lot, int v, int l){
    for(int i = 0; i < l; i++)
        if(v == lot[i]) return false;
    return true;
}
 
int det(int **&meas, int &size, int *lot, int l){
    int r = 0;
    int s = 1;
    for(int j = 0; j < size; j++){
        if (notInEx(lot, j, l)){
            if(l == size - 1) return meas[l][j];
            else{
                lot[l] = j;
                r = r + s * meas[l][j] * det(meas, size, lot, l + 1);
                s = -s;
            }
        }
    }
    return r;
}
 
void main(){
    setlocale(LC_ALL, "rus");
 
 
    int **meas = 0, *lot = 0;
    int size;
 
    system("cls");
 
    printf("Введите размер матрицы: ");
    scanf("%d", &size);
 
    lot = new int[size];
    meas = new int*[size];
    for(int j = 0; j < size; j++) meas[j] = new int[size];
 
    printf("Введите матрицу:\n");
    for(int j = 0; j < size; j++)
        for(int i = 0; i < size; i++) scanf("%d", &meas[j][i]);
 
    system("cls");
 
    printf("Матрица:\n");
    for(int j = 0; j < size; j++){
        for(int i = 0; i < size; i++) printf("%d ", meas[j][i]);
        printf("\n");
    }
 
    printf("A det: %d\n", det(meas, size, lot, 0));
 
    for(int j = 0; j < size; j++) delete []meas[j];
    delete []meas;
    delete []lot;
 
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 17:26     Определитель матрицы, разложением по произвольной строке
Посмотрите здесь:

C++ Вычислить определитель по первой строке
Определитель Матрицы C++
C++ Определитель матрицы
определитель матрицы 5*5 C++
C++ Матрицы: найти определитель заданной матрицы n-го порядка методом Гаусса (и ещё 6 задач)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:36     Определитель матрицы, разложением по произвольной строке #2
Цитата Сообщение от Wanee Посмотреть сообщение
printf("A det: %d\n", det(meas, size, lot, 0));
заменить на
C++
1
printf("A det: %d\n", det(meas, size, lot, rand()%size));
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
13.05.2013, 17:41  [ТС]     Определитель матрицы, разложением по произвольной строке #3
Ternsip, нет, это не верно.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:47     Определитель матрицы, разложением по произвольной строке #4
Wanee, А, ну да, ошибся. Не проследил сразу логику в коде. А вы уверены, что вам нужен такой трудоёмкий метод ?
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
13.05.2013, 17:52  [ТС]     Определитель матрицы, разложением по произвольной строке #5
Ternsip, да, у меня задание такое.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:57     Определитель матрицы, разложением по произвольной строке #6
Wanee, ну собственно, мне проще свой код написать, чем в ваш вчитываться, так что скажу пару слов : Отличается разложение по произвольной строке тем, что вы первый раз, когда будете раскладывать создадите новую матрицу, которая будет отличаться от старой тем, что у неё вычеркнута строка, по которой вы раскладываете, а дальше всё абсолютно аналогично.
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
13.05.2013, 18:05  [ТС]     Определитель матрицы, разложением по произвольной строке #7
Ternsip, а вы сможете это сделать, без большого выделения памяти? Ну что бы каждый раз не создавать новую матрицу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 18:28     Определитель матрицы, разложением по произвольной строке
Еще ссылки по теме:

Определитель матрицы C++
C++ Определитель матрицы, ранг матрицы, обратная матрица
Найти определитель матрицы, с помощью разложения её по строке C++

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

Или воспользуйтесь поиском по форуму:
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:28     Определитель матрицы, разложением по произвольной строке #8
Wanee, а я просто не стану над этим задумываться, потому как Гауссом за О(N^3) найду определитель, без дополнительных затрат памяти.
Yandex
Объявления
13.05.2013, 18:28     Определитель матрицы, разложением по произвольной строке
Ответ Создать тему
Опции темы

Текущее время: 02:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru