Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
#1

Найти ошибку в реализации метода Гаусса - C++

22.03.2016, 12:47. Просмотров 206. Ответов 6
Метки нет (Все метки)

Нужно решить матрицу методом гауза

вот код:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "iostream" 
#include "math.h" 
#include "stdlib.h" 
#include "locale.h" 
 
using namespace std; 
 
int main() 
{ 
    int i, j, n, m; 
    setlocale(LC_ALL, "rus"); 
    
    cout << "Veditb 4uslo r9dkiv: "; 
    cin >> n; 
    cout << "Vveditb 4uslo stovpciv: "; 
    cin >> m; 
    m+=1; 
    float **matrix = new float *[n]; 
    for (i=0; i<n; i++) 
        matrix[i] = new float [m]; 
    
    
    
    for (i = 0; i<n; i++) 
        
        for (j = 0; j<m; j++) 
        { 
            cout << "Element " << "["<< i+1 << " , " << j+1 << "]: " ; 
            
            cin >> matrix[i][j]; 
        } 
    
    
    cout << "matrix: " << endl; 
    for (i=0; i<n; i++) 
    { 
        for (j=0; j<m; j++) 
            cout << matrix[i][j] << " "; 
        cout << endl; 
    } 
    cout << endl; 
    
    float tmp, *xx = new float[m]; 
    
    int k; 
    
    for (i=0; i<n; i++) 
    { 
        tmp=matrix[i][i]; 
        for (j=n;j>=i;j--) 
            matrix[i][j]/=tmp; 
        for (j=i+1;j<n;j++) 
        { 
            tmp=matrix[j][i]; 
            for (k=n;k>=i;k--) 
                matrix[j][k]-=tmp*matrix[i][k]; 
        } 
    } 
    
    xx[n-1] = matrix[n-1][n]; 
    
    for (i=n-2; i>=0; i--) 
    { 
        xx[i] = matrix[i][n]; 
        for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j]; 
    } 
    
    
    for (i=0; i<n; i++) 
        cout << xx[i] << " "; 
    cout << endl; 
    
    delete[] matrix; 
    
    return 0; 
}
вот то что она выводит:
Veditb 4uslo r9dkiv: 4
Vveditb 4uslo stovpciv: 3
Element [1 , 1]: 9
Element [1 , 2]: 11
Element [1 , 3]: 11
Element [1 , 4]: 12
Element [2 , 1]: 12
Element [2 , 2]: 24
Element [2 , 3]: 2
Element [2 , 4]: 9
Element [3 , 1]: 20
Element [3 , 2]: 4
Element [3 , 3]: 41
Element [3 , 4]: 16
Element [4 , 1]: 7
Element [4 , 2]: 13
Element [4 , 3]: 9
Element [4 , 4]: 3
matrix:
9 11 11 12
12 24 2 9
20 4 41 16
7 13 9 3

0 0 0 -0

Подскажите почему решение сводит до нулей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2016, 12:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти ошибку в реализации метода Гаусса (C++):

Нужно найти ошибку в коде реализации метода половинного деления - C++
Программа должна решать методом половинного деления уравнение: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; float...

Реализации работы метода Гаусса - C++
Начал писать, писать программу и возникло несколько вопросов. 1) допустим есть матрица 3х3 0 0 2 0 2 4 1 1 0 Мне нужно чтобы...

Проверка метода Гаусса - C++
Написала программу решения СЛАУ методом Гаусса. Я в программировании новичек, написать написала, но она не работает. Прошу более опытных...

Неясности в реализации метода Адамса - C++
Добрый вечер, форумчане. Я кажется запутался в реализации этого метода. Скажем порядок метода - 4. Есть: // правые части...

Метода Гаусса без перестановок - C++
Как решить СЛАУ(она у меня постоянная) методом Гаусса с выбором главного элемента по столбцам без перестановок. Я умею также, только с...

Проверить правильность реализации метода Ньютона - C++
Посмотрите все ли я правильно сделал вот изначальные данные: cos(x) + y = 1,5 2x - sin(y * 0,5) = 1 делал как есть, ряд расходился...

6
zss
Модератор
Эксперт С++
6572 / 6134 / 2021
Регистрация: 18.12.2011
Сообщений: 15,987
Завершенные тесты: 1
22.03.2016, 12:56 #2
C++
1
2
3
for (j=n;j>=i;j--) 
    matrix[i][j]/=tmp; // при j=n matrix[i][j] несуществует
 for (j=i+1;j<n;j++) // при i=n-1 j будет равна [B]n[/B]
1
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
22.03.2016, 13:01  [ТС] #3
А как исправить?
0
zss
Модератор
Эксперт С++
6572 / 6134 / 2021
Регистрация: 18.12.2011
Сообщений: 15,987
Завершенные тесты: 1
22.03.2016, 13:10 #4
Повнимательнее отнеситесь к индексам.
Возможно ли в принципе решить требуемую задачу,
если матрица не квадратная?
1
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
22.03.2016, 13:12  [ТС] #5
Мне нужно только по квадратной, и я не понимаю как подправить, запутался уже
0
zss
Модератор
Эксперт С++
6572 / 6134 / 2021
Регистрация: 18.12.2011
Сообщений: 15,987
Завершенные тесты: 1
22.03.2016, 14:03 #6
Значит нужно сделать m=n и уменьшить на 1 индексы в указанных местах.
0
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
28.03.2016, 20:16  [ТС] #7
zss, я понял где ошибка, на самом деле все очень банально - я забыл про 5-й столбец

Veditb 4uslo r9dkiv: 4
Vveditb 4uslo stovpciv: 4
Element [1 , 1]: 9
Element [1 , 2]: 11
Element [1 , 3]: 11
Element [1 , 4]: 12
Element [1 , 5]: 214
Element [2 , 1]: 12
Element [2 , 2]: 24
Element [2 , 3]: 2
Element [2 , 4]: 9
Element [2 , 5]: 186
Element [3 , 1]: 20
Element [3 , 2]: 4
Element [3 , 3]: 41
Element [3 , 4]: 16
Element [3 , 5]: 470
Element [4 , 1]: 7
Element [4 , 2]: 13
Element [4 , 3]: 9
Element [4 , 4]: 3
Element [4 , 5]: 140
matrix:
9 11 11 12 214
12 24 2 9 186
20 4 41 16 470
7 13 9 3 140

5.99999 2 6 6
0
28.03.2016, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2016, 20:16
Привет! Вот еще темы с ответами:

Ошибка в реализации метода, проверяющего правильность данных. - C++
Вводиться ISBN номер. Метод реализован ckeck_ISBN(string isbn)! Нужно проверить правильность введенного номера по шаблону xx-xx-xx-c. xx...

Решить СЛАУ многопоточным вариантом метода Гаусса - C++
Здравствуйте,прошу помощи по условию моего задания: Решить систему линейных уравнений параллельным вариантом метода Гаусса. Количество...

Разработать программу для реализации числ.метода парабол - C++
Доброго времени суток, мужики. С++ пытаюсь учить по примерам из учебника Культин Н.Б, а в институте задали такую задачу с которой не...

Вынос реализации метода шаблона класса в другой файл - C++
Здравствуйте! Допустим, есть класс: // class.hpp #ifndef CLASS_HPP_ #define CLASS_HPP_ class testClass{ public:


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.