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

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

Войти
Регистрация
Восстановить пароль
 
SuperVarenik
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 24
#1

Определитель матрицы(разобраться в коде) - C++

17.05.2013, 09:12. Просмотров 300. Ответов 3
Метки нет (Все метки)

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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int main()
{
  int n;
  double** a;
  cout<<"Write Razm Matrix: ";
  cin >> n;
  a=new double*[n];
  for (int i = 0; i < n; i++)
     {
      a[i]=new double[n];
     }
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
   {
    cin>>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 (fabs(a[k][i]) > mx)    //Здесь как я понял, проверяется какое то условие, но какое?свиду я вижу а смысл её
   {
    row = k;
    mx = fabs(a[k][i]);      // Согласно этому условию он тут присвание делает 
   }
 }
if (row != i)                  // Тут он отвечает за знак определителя и меняет значение a[row] с a[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];
}
cout<<"Determinant= ";
printf("%lf", det);
return 0;
}
Кто понял там в середине кода часть одну, отпишитесь плиз непонятно зачем он, а так в данном коде снчала вводится матрица, потом приводим к треугольному виду обнулив всё под диагональю главной и умножить элементы получившейся главноё диагонали. Вообщем между линий кто может объяснить зачем код! Её цель хотябы понять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2013, 09:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определитель матрицы(разобраться в коде) (C++):

Определитель матрицы, ранг матрицы, обратная матрица - C++
Вы можете помочь, сделать определитель матрицы, или у кого есть коде: ранг матрицы, обратная матрица, или другие действия с матрицами.

Определитель матрицы - C++
Всем добрый вечер=) Написал программу для вычисления определителя матрицы. Она запускается но функция не считает его, поправьте если что...

Определитель матрицы - C++
Не могу написать код реккурсивной ф-ии на С для подсчёта опредилителя матрцы nxn, помогите кто чем может: или кодом или алгоритмам зарание...

Определитель Матрицы - C++
доброе время суток Напишите у кого есть код нахождения определителя матрицы мне надо 4х4 ну а nxn, соответственно тоже подойдёт !!!! ...

Определитель матрицы 7х7 - C++
Ребят, всем привет! Помогите пожалуйста найти определитель матрицы 7х7...

Найти определитель матрицы - C++
дана матрица второго порядка (a_b; c_d)найти определитель матрицы!

3
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
17.05.2013, 10:50 #2
SuperVarenik, забавно видеть свой код, только сильно переделанный Тут строится треугольная матрица методом равносильных преобразований, затем берётся произведение элементов на главной диагонали. Кстати, вот оригинал http://pastebin.com/c94iuBqd
0
SuperVarenik
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 24
17.05.2013, 11:53  [ТС] #3
Да и ты мне код прислал. Спасибо. Мне в целом метод понятен но не понятна вот та часть . Которую я писал. Как можно догадаться в смысле этой части кода . Зачем там свап и зачем нужно менять знак определителя?
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
17.05.2013, 15:44 #4
SuperVarenik, там свап строк, я ищу строку, ниже данной, с max значением по модулю в j-ом столбце, каждый раз, чтобы на главной диагонали не появлялись нули, на j-м шаге вычисления. Знак меняется при свапе по свойствам определителя, когда строки меняются.
0
17.05.2013, 15:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2013, 15:44
Привет! Вот еще темы с ответами:

Определитель квадратной матрицы - C++
Вычислить определитель квадратной целочисленной матрицы.

Найти определитель матрицы - C++
Написать прогу на с++ : нахождение определителя матрицы методом квадратного корня. Кто сможет помогите пожалуйста((

Найти определитель матрицы - C++
Всем доброго приятного вечера!! Не могу написать программу на такую вот(см.на рис.) задачу, если мне не решить до завтра мне капец светит...

Вычислить определитель матрицы - C++
Здравствуйте, уважаемые форумчане! Так получилось, что я снова решил пополнить свою коллекцию программ по работе с матрицами. На этот раз,...


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

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

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