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

Определить метод решения матрицы - C++

Восстановить пароль Регистрация
 
GaDinka
1 / 1 / 0
Регистрация: 01.02.2011
Сообщений: 64
29.01.2012, 20:24     Определить метод решения матрицы #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
    //Найдем решение системы
    
    this->find_solve(N);
}
 
void systems::find_solve(unsigned char current){
    if(!det(current)){
        printf("Error #4\n");
        return ;
    }
    if(!this->A[3*(current-1)][0]){
        if(this->A[3*(current-1)+1][0]) for(int i=0;i<4;i++) this->A[3*(current-1)][i] += this->A[3*(current-1)+1][i]; else
            for(int i=0;i<4;i++) this->A[3*(current-1)][i] += this->A[3*(current-1)+2][i];
    }
    for(int i=3;i>=0;i--) this->A[3*(current-1)+1][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+1][0]/this->A[3*(current-1)][0];
    if(!this->A[3*(current-1)+1][1]){
        for(int i=0;i<4;i++) this->A[3*(current-1)+1][i] += this->A[3*(current-1)+2][i]+this->A[3*(current-1)][i];
        for(int i=3;i>=0;i--) this->A[3*(current-1)+1][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+1][0]/this->A[3*(current-1)][0];
    }
    //Получаем нули в третьей строке
    for(int i=3;i>=0;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+2][0]/this->A[3*(current-1)][0];
    for(int i=3;i>=1;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)+2][1]/this->A[3*(current-1)+1][1];
    if(!this->A[3*(current-1)+2][2]){
        for(int i=0;i<4;i++) this->A[3*(current-1)+2][i] += this->A[3*(current-1)+1][i]+this->A[3*(current-1)][i];
        for(int i=3;i>=0;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+2][0]/this->A[3*(current-1)][0];
        for(int i=3;i>=1;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)+2][1]/this->A[3*(current-1)+1][1];
    }
    for(int i=3;i>=2;i--){
        this->A[3*(current-1)+1][i] -= this->A[3*(current-1)+2][i]*this->A[3*(current-1)+1][2]/this->A[3*(current-1)+2][2];
        this->A[3*(current-1)][i] -= this->A[3*(current-1)+2][i]*this->A[3*(current-1)][2]/this->A[3*(current-1)+2][2];
    }
    for(int i=3;i>=1;i--) this->A[3*(current-1)][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)][1]/this->A[3*(current-1)+1][1];
    for(int i=0;i<3;i++){
        this->A[3*(current-1)+i][3] /= this->A[3*(current-1)+i][i];
        this->A[3*(current-1)+i][i] /= this->A[3*(current-1)+i][i];
    }
}
Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2012, 20:24     Определить метод решения матрицы
Посмотрите здесь:

C++ метод гаусса для решения линейних уравнений
C++ Метод Холецкого для решения Слау
C++ Написать метод решения
C++ Метод решения
C++ Решения ОДУ, используя уточненный метод Эйлера
Метод простых итераций для решения СЛАУ C++
Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) C++
C++ Метод Гаусса решения СЛАУ с полным выбором. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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