Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
Smile90
1

Обратная матрица методом Гаусса, исправить код

20.06.2012, 18:59. Показов 6365. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста..всю ночь просидел не могу найти ошибку,возвращает NaN- понимаю что идет деление нулей, но по идее там их не должно быть-делаю методом Гаусса.Код программы:
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
        public static double[,] gauss(object matr1)
        {
            double[,] mas = new double[3, 6];
            double[,] matr = ((double[,])matr1);
            double[,] gau = new double[3, 3];
            int ige=0;
            double k;
            for (int i = 0; i <= 2; i++)
            {
                for (int j = 0; j <= 2; j++)
                {
                    mas[i, j] = matr[i, j];
                }
            }
 
            mas[0, 3] = 1; mas[0, 4] = 0; mas[0, 5] = 0;
            mas[1, 3] = 0; mas[1, 4] = 1; mas[1, 5] = 0;
            mas[2, 3] = 0; mas[2, 4] = 0; mas[2, 5] = 1;
            for (int n = 0; n <= 1; n++)
            {
                double ge = mas[n, n];
                for (int i = 1 + n - 1; i <= 2; i++)
                {
                    if (Math.Abs(mas[i, n]) >= ge)
                    {
                        ge = Math.Abs(mas[i, n]);
                        ige = i;
                    }
                }
                for (int j = 0; j <= 5; j++)
                {
                    ge = mas[n, j];
                    mas[n, j] = mas[ige, j];
                    mas[ige, j] = ge;
                }
                for (int i = 2 + n - 1; i <= 2; i++)
                {
                    k = mas[i, n] / mas[n, n];
                    if (k != 0)
                    {
                        for (int j = 0; j <= 5; j++)
                        {
                            mas[i, j] = mas[n, j] - mas[i, j] / k;
                        }
 
                    }
                }
            }
            for (int n = 0; n <= 1; n++)
            {
                for (int i = 2; i >= 1+n; i--)
                {
                    k = mas[i, i] / mas[i - n, i];
                    for (int j = 0; j <= 5; j++)
                    {
                        mas[i - n, j] = mas[i - n, j] - mas[i, j] / k;
                    }
                }
            }
            for (int i = 0; i <= 2; i++)
            {
                for (int j = 0; j <= 2; j++)
                {
                    mas[i, j + 3] = mas[i, j + 3] / mas[i, i];
                }
            }
            for (int i = 0; i <= 2; i++)
            {
                for (int j = 0; j <= 2; j++)
                {
                    gau[i, j] = mas[i, j + 3];
                }
            }
            return gau;
        }
Заранее спасибо!

Добавлено через 13 часов 41 минуту
Всё разобрался сам.Кому интересно ошибка была в цикле:
C#
1
2
3
4
5
6
7
8
9
10
11
for (int n = 0; n <= 1; n++)
            {
                for (int i = 2; i >= 1+n; i--)
                {
                    k = mas[i, i] / mas[i - n, i];
                    for (int j = 0; j <= 5; j++)
                    {
                        mas[i - n, j] = mas[i - n, j] - mas[i, j] / k;
                    }
                }
            }
Может кому пригодиться
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2012, 18:59
Ответы с готовыми решениями:

Решение системы уравнений методом Гаусса, исправить код
Здравсвуйте! Пишу код, который решает системы уравнений методом Гаусса, но на последнем этапе...

Обратная матрица методом Гаусса
Нужно написать программу нахождения обратной матрицы методом Гаусса в Delphi. Я не очень разбираюсь...

Обратная матрица методом Гаусса
Добрый день! Требуется реализовать поиск обратной матрицы путем элементарных преобразований в...

Обратная матрица методом Гаусса
Дана матрица: Нужно найти обратную матрицу методом Гаусса. Помогите решить, никак не...

4
0 / 0 / 1
Регистрация: 10.07.2016
Сообщений: 27
22.01.2017, 21:29 2
Хочу поднять тему, так как сам не вижу в чем ошибка.
Прошу указать мне на нее.
0
1 / 1 / 0
Регистрация: 01.05.2014
Сообщений: 30
28.11.2017, 20:38 3
Так объяснит кто-нибудь в чем была ошибка? В упор не вижу.
Во всем Рунете нет ни одной вменяемой программы для поиска обратной матрицы))
1
0 / 0 / 0
Регистрация: 16.04.2020
Сообщений: 5
18.04.2020, 09:05 4
Такое чувство что хотят еще больше запутать. Код не работает!!!
0
Элд Хасп
18.04.2020, 10:05     Обратная матрица методом Гаусса, исправить код
  #5
 Комментарий модератора 
Nuramok, теме уже восемь лет и ни одного ответа.
Вы к кому обращаетесь?
Поищите более свежие темы или создайте свою.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2020, 10:05

Обратная матрица методом Гаусса
Есть функция на языке C++, которая находит обратную матрицу методом Гаусса. Она проверена, все...

Обратная матрица Гаусса
Здравствуйте)) Помогите пожалуйста дорешать задачу про метод Гаусса. Мне осталось найти обратную...

Обратная матрица, метод Гаусса
Подскажите пожалуйста как найти обратную матрицу методом Гауса?

Обратная матрица. Метод Гаусса—Жордана
Здравствуйте. Пишу программку вычисления матриц и вот эта функция ( см. код ) компилируется и...


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

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

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