1 / 1 / 0
Регистрация: 06.01.2017
Сообщений: 21
1

Обратная матрица

02.06.2017, 20:25. Показов 1332. Ответов 3

Нужно написать обратную матрицу, начал искать определитель, но появилась ошибка и не могу ее исправить. Матрица P это бинарная матрица произвольной длинны, обычно 7х7.
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
                    double det = 1;
                    const double EPS = 1E-9;
                    int [,] PP=new int [n,n];
                   
                    //проходим по строкам
                    for (int i = 0; i < n; ++i)
                    {
                        //присваиваем k номер строки
                        int k = i;
                        //идем по строке от i+1 до конца
                        for (int j = i + 1; j < n; ++j)
                            //проверяем
 
                            if (Math.Abs(P[j,i]) > Math.Abs(P[k,i]))
                                //если равенство выполняется то k присваиваем j
                                k = j;
                        //если равенство выполняется то определитель приравниваем 0 и выходим из программы
                        if (Math.Abs(P[k,i]) < EPS)
                        {
                            det = 0;
                            break;
                        }
                      
                            for (int j = 0; j < n; j++)
                            for (int z = 0; z < k; z++)
                            {
                                //меняем местами P[i] и P[k]
                              PP[i, j] = P[i, k];
                                P[i, k] = P[k, i];
                               P[k, i] = PP[i, j];
                            }
                        //если i не равно k
                        if (i != k)
                            //то меняем знак определителя
                            det = -det;
                        //умножаем det на элемент P[i.i]
                        det *= P[i,i];
                        //идем по строке от i+1 до конца
                        for (int j = i + 1; j < n; ++j)
                            //каждый элемент делим на P[i,i]
                            P[i,j] /= P[i,i];
                        //идем по столбцам
                        for (int j = 0; j < n; ++j)
                            //проверяем
                            if ((j != i) && (Math.Abs(P[j,i]) > EPS))
                                //если да, то идем по k от i+1
                                for (k = i + 1; k < n; ++k)
                                    P[j,k] -= P[i,k] * P[j,i];
                    }
Здесь выдает ошибку что на 0 делить нельзя.
C#
1
P[i,j] /= P[i,i];
Помогите пожалуйста решить любым способом, заранее благодарен.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2017, 20:25
Ответы с готовыми решениями:

Обратная матрица
1 элемент считает а дальше нули(проверял по калькулятору 1 элемент сходиться) вот код using...

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

обратная матрица
помогите написать опрограмму обратной матрицы!!! плиз!!!! никак не получается

Обратная матрица
Добрый день! Подскажите пожалуйста код нахождения обратной матрицы n на n.

3
6 / 6 / 5
Регистрация: 07.03.2016
Сообщений: 89
03.06.2017, 00:19 2
Gaselka, вообще не понятно о чем говорит это код, скиньте весь код!
0
Нарушитель
3122 / 2218 / 1095
Регистрация: 14.08.2016
Сообщений: 7,591
03.06.2017, 00:41 3
если под бинарной матрицей подразумевается двумерный массив заполненный нулями и единицами, то, скорее всего P[i,i] (похоже на главную диагональ) просто напросто равно 0, тут уж вводи матрицу без нулей на диагонали, либо хз...уточная в задании/препода
0
6 / 6 / 5
Регистрация: 07.03.2016
Сообщений: 89
03.06.2017, 00:56 4
Diamante, да я в принципе это и понял, хотелось от автора это услышать!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2017, 00:56

Обратная матрица
Блин народ киньте метод. Я уже не знаю почему мой метод не вычисляет(((.

Обратная матрица
Люди добрые! Прошу у вас помощи, для курсовой осталось сделать последнее задание, нужно найти...

Жордановы исключения-обратная матрица
Вот написала код для нахождения обратной матрицы способом Жордановых исключений. РАБОТАЕТ, но как...

Обратная матрица методом Гаусса, исправить код
Помогите пожалуйста..всю ночь просидел не могу найти ошибку,возвращает NaN- понимаю что идет...


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

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

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