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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.75
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
#1

Найти обратную матрицу - C++

10.09.2012, 21:27. Просмотров 4129. Ответов 9
Метки нет (Все метки)

Здравствуйте, уважаемые программисты!
Прощу помощи.
Для заданной матрицы A(3,3), найти обратную А в -1 степени.

Нужно ли самому в код вписывать свои значения матрицы?

C
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
#define I 3
#define J 3
main ()
{ 
int [I][J]= {1, 2, 3},
             {4, 5, 6}, 
             {1, 2, 1};
.....
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2012, 21:27     Найти обратную матрицу
Посмотрите здесь:

Найти обратную матрицу - C++
Ребят немогу в конда сделал провереку, ошибку выдаёт, не могу найти ошибку помогите!!#include &lt;iostream&gt; #include &lt;cmath&gt; #include...

Найти матрицу, обратную заданной - C++
Найти матрицу, обратную заданной

Для матрицы а(n, n) найти обратную матрицу - C++
Помогите пожалуйста с решением этих задач, а то я уже не знаю что с ними делать.... Задача 1 Для матрицы а(n, n) найти обратную...

Найти обратную матрицу и умножить ее на вектор - C++
Очень нужна помощь для нахождения обратной матрицы на С++. Дело в том что мне нужно реализовать такую задачу: найти обратную матрицу и...

С помощью метода отражения найти обратную матрицу - C++
С помощью метода отражения найти обратную матрицу. Матрица размара н*н. Прошу помочь алгоритмом, исходником или хорошей книжкой. Хотя бы...

Матрицы: определить обратную матрицу - C++
Для заданной в файле матрицы A (n на m) из целых чисел определить обратную ей матрицу B и записать в другой файл.

Найти обратную величину по модулю - C++
Здравствуйте! Подскажите пожалуйста ошибку? Функция должна находить такие х и у, что a * x + b * y = gcd(a, b) = d! Но х и у находит...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
11.09.2012, 07:06     Найти обратную матрицу #2
Первая строка вашего опуса наводит на сильные подозрения, что прогать нужно в С++, а не в С.
Уточните этот вопрос для начала.
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
11.09.2012, 20:18  [ТС]     Найти обратную матрицу #3
Ооой ошибся темой видимо.
На C++ нужно.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.09.2012, 04:36     Найти обратную матрицу #4
похоже, нужна функция получения алгебраического дополнения
C
1
int f(int m[3][3], int i, int j);
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
12.09.2012, 08:54  [ТС]     Найти обратную матрицу #5
К сожалению дополнение не нужно.Думал на счет этого, получается на порядок сложнее (для меня).
Все равно спасибо, за помощь.
Решение на листе я произвел, а вот как написать это в программе не могу понять.
Det=-10
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.09.2012, 10:03     Найти обратную матрицу #6
Цитата Сообщение от nikolas982 Посмотреть сообщение
Решение на листе я произвел, а вот как написать это в программе не могу понять.
там два способа: через алгебраические дополнения и через единичную матрицу
второй закодить сложнее, чем первый

Добавлено через 43 секунды
Цитата Сообщение от nikolas982 Посмотреть сообщение
Det=-10
это тоже надо вычислять в программе
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
12.09.2012, 21:02  [ТС]     Найти обратную матрицу #7
accept, не могли бы Вы помочь?
Прочитал все что можно про матрицы в справочнике по математике.Бронштейн И. Н.Решил, а записать полученное на С++ не получается.

Буду очень благодарен...

Добавлено через 3 часа 53 минуты
С усилиями получилось записать решение в программу (а не на листе, как прежде), а записать решение вычисления обратной не выходит.
Будьте добры, посмотрите пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#define n 3
main()
{
int a [n][n];
int i, j, det;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("Введите элемент матрицы [%d][%d] ",i+1,j+1); scanf("%d",&a[i][j]);}
cout<<"вид матрицы:\n";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%7d",a[i][j]);
puts("\n");
}
det=((a[0][0]*a[1][1]*a[2][2]) + (a[0][1]*a[1][2]*a[2][0])+ (a[1][0]*a[0][2]*a[2][1]) - (a[2][0]*a[1][1]*a[0][2]) - (a[0][0]*a[2][1]*a[1][2]) - (a[1][0]*a[0][1]*a[2][2]));
printf("Определитель равен = %d\n", det);
return 0;
}
IrineK
Заблокирован
12.09.2012, 21:16     Найти обратную матрицу #8
К сожалению, все несколько сложней:

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//Обратная матрица [3][3]
 
#include <iostream>
#include <iomanip>
#include <ctime>
 
using namespace std;
 
//алгебраическое допополнение к элементу a[row][col]
double add(double a[3][3],int row, int col)
{   double b[2][2];
    int i,j,bi,bj;
 
    for(i=0, bi=0;i<3;i++)
    {   if(i!=row)
        {   for(j=0, bj=0;j<3;j++)
                if(j!=col)
                {   b[bi][bj]=a[i][j];
                    bj++;
                }
            bi++;
        }
    }
    
    if((row+col)%2)
        return b[0][1]*b[1][0] - b[0][0]*b[1][1];
    else
        return b[0][0]*b[1][1] - b[0][1]*b[1][0];
}
 
 
//определитель матрицы
double det(double a[3][3])
{   int i;
    double sum;
 
    for(i=0, sum=0.;i<3;i++)
        sum += a[i][0]*add(a,i,0);
    
    return sum;
}
 
 
//обратная матрица
void inverse(double a[3][3], double d)
{   double a1[3][3], cur;
    int i,j;
    
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            a1[i][j] = add(a,i,j) / d;
 
    for(i=0;i<3;i++)
        for(j=i+1;j<3;j++)
        {   cur = a1[i][j];
            a1[i][j] = a1[j][i];
            a1[j][i] = cur;
        }
 
    cout<<"\nInverse:\n";
    for(i=0;i<3;i++)
    {   for(j=0;j<3;j++)
            cout<<setw(7) << a1[i][j];
        cout<<"\n";
    } 
 
}
 
 
int main()
{   double arr[3][3], determinant;
    int i,j;
    
    srand(time(NULL));
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            arr[i][j] = 1.5 * (rand()%9 - 5);
 
    cout<<"Array:\n";
    for(i=0;i<3;i++)
    {   for(j=0;j<3;j++)
            cout<<setw(7)<<setiosflags(ios::fixed) << setprecision(2)<<arr[i][j];
        cout<<"\n";
    } 
 
    determinant = det(arr);
    cout<<"\nDeterminant: "<<determinant<<"\n";
 
    if(determinant) inverse(arr,determinant);
    else cout<<"Inverse impossible";
    
    getchar();
    return 0;
}
Миниатюры
Найти обратную матрицу  
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
12.09.2012, 22:04  [ТС]     Найти обратную матрицу #9
Спасибо большое, Вы очень помогли мне!)
Меня интересует можно ли дополнить, написанный мною код, формулой нахождения обратной матрицы?

Получается найти обратную матрицу, если изначально задать её (записать цифры), а тут получается, что я сам ввожу элементы матрицы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2016, 20:10     Найти обратную матрицу
Еще ссылки по теме:

FOR в обратную сторону - C++
Как в с++ сделать for наоборот? ну то есть не от 1 к n, а от n к 1. подскажите, прошу. попытался сделать как-то типо такого:...

Найти матрицу С - C++
Помогите выполнить данное задание. Нигде не могу найти теорию и даже не представляю как его решать.

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

СЛАУ в обратную сторону - C++
Задание: Решить СЛАУ исходные данные брать из файла , ответы записать в файл. Произвести проверку A*x=b , где A - исходная матрица , x -...

цикл в обратную польскую запись - C++
Смысл такой - на входе есть файл,где записан цикл.Программа должна преобразовать запись в обратную польску и записать в файл. Помогите...


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

Или воспользуйтесь поиском по форуму:
Berserkus
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 70
30.05.2016, 20:10     Найти обратную матрицу #10
а можно код для матрицы размер которой вводит пользователь?Буду очень благодарен.
Yandex
Объявления
30.05.2016, 20:10     Найти обратную матрицу
Ответ Создать тему
Опции темы

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