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

Определитель матрицы - нужен полноценный пример - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
SuperVarenik
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 24
27.04.2013, 16:37     Определитель матрицы - нужен полноценный пример #1
Ребята, нужен код на C++, поиск определителя матрицы n-го порядка, ну скажем что самое простое( помоему по методу гаусса ). Здесь уже видел несколько кусочков, но нужен полный код, если кому не тяжело. Ну скажем в Microsoft Visual C++ чтобы скомпилировалась.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 16:37     Определитель матрицы - нужен полноценный пример
Посмотрите здесь:

Нужен пример нахождения определителя матрицы C++
C++ Найти определитель матрицы
Определитель Матрицы C++
Определитель матрицы C++
C++ Определитель квадратной матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
27.04.2013, 17:05     Определитель матрицы - нужен полноценный пример #2
На Delphi есть, только там через рекурсию и для 12 порядка считает больше минуты
SuperVarenik
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 24
02.05.2013, 13:53  [ТС]     Определитель матрицы - нужен полноценный пример #3
Всё же, мб у кого есть код< поиск определителя матрицы (работающий)?
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
02.05.2013, 14:29     Определитель матрицы - нужен полноценный пример #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
халява, тупо делаешь треугольную матрицу и берёшь произведение элементов на главной диагонали

Добавлено через 13 минут
SuperVarenik,
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
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <stack>
#include <deque>
#include <set>
#include <string>
#include <limits>
#include <fstream>
 
using namespace std;
 
int main(){
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    vector < vector <double> > a(n, vector <double> (n, 0));  
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            scanf("%lf", &a[i][j]);
        }
    }   
    double det = 1;
    for (int i = 0; i < n; i++){
        int row = i;
        int mx = a[i][i];
        for(int k = i+1; k < n; k++){
            if (abs(a[k][i]) > mx){
                row = k;
                mx = abs(a[k][i]);
            }
        }
        if (row != i) {
            det *= -1;
            swap(a[row], a[i]);
        }
        for (int j = i+1; j < n; j++){
            double e = a[j][i]/a[i][i];
            for (int k = i; k < n; k++){
                a[j][k] -= e*a[i][k];
            }
        }
    }
    for (int i = 0; i < n; i++)
        det *= a[i][i];
    printf("%.15lf", det);
    return 0;
}
матрица 200 на 200 считается за 31 ms
Yandex
Объявления
02.05.2013, 14:29     Определитель матрицы - нужен полноценный пример
Ответ Создать тему
Опции темы

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