|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Обратная матрица C++ |
|
C/C++ - Обратная матрица C++
|
Новый участник Сообщения: 1 |
Профиль | Отправить PM | Цитировать Доброго времени суток!
Возникла необходимость найти обратную матрицу любым из способов, так как в программировании только делаю первые шаги, обратился к форуму. Нашел множество работающих решений в темах форума, но не смог до конца разобраться. Нашел этот простой рабочий код (спасибо автору). #include <iostream> void inversion(double **A, int N) { double temp; double **E = new double *[N]; for (int i = 0; i < N; i++) E[i] = new double [N]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { E[i][j] = 0.0; if (i == j) E[i][j] = 1.0; } for (int k = 0; k < N; k++) { temp = A[k][k]; for (int j = 0; j < N; j++) { A[k][j] /= temp; E[k][j] /= temp; } for (int i = k + 1; i < N; i++) { temp = A[i][k]; for (int j = 0; j < N; j++) { A[i][j] -= A[k][j] * temp; E[i][j] -= E[k][j] * temp; } } } for (int k = N - 1; k > 0; k--) { for (int i = k - 1; i >= 0; i--) { temp = A[i][k]; for (int j = 0; j < N; j++) { A[i][j] -= A[k][j] * temp; E[i][j] -= E[k][j] * temp; } } } for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) A[i][j] = E[i][j]; for (int i = 0; i < N; i++) delete [] E[i]; delete [] E; } int main() { int N; std::cout << "Enter N: "; std::cin >> N; double **matrix = new double *[N]; for (int i = 0; i < N; i++) matrix[i] = new double [N]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { std::cout << "Enter matrix[" << i << "][" << j << "] = "; std::cin >> matrix[i][j]; } inversion(matrix, N); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) std::cout << matrix[i][j] << " "; std::cout << std::endl; } for (int i = 0; i < N; i++) delete [] matrix[i]; delete [] matrix; std::cin.get(); return 0; } Если у кого-то есть пару минут, объясните пожалуйста. |
|
Отправлено: 14:27, 11-04-2017 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Ну вот в функции main с самого начала и до вызова inversion - это что? Это и есть создание и заполнение матрицы. Вот вместо него и вставляйте код с заранее определённой матрицей.
Да, если матрица создаётся не динамически, то освобождение памяти тоже не нужно: |
Отправлено: 17:20, 11-04-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать YURITIGER, От души, спасибо, всех благ) Часа 2 искал код для рассчета обратной матрицы
|
Отправлено: 02:51, 29-10-2020 | #3 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать А как мне совместить данный код с другим?
Дело в том что мне нужно сделать что-то на подобии матричного калькулятора, где так же нужно реализовать нахождение обратной матрицы, только её я и не могу сделать XD Не могу понять в какую часть кода мне вставить это, так как вижуал ругаеться постоянно на что-то. Хотя без моей программы всё работает хорошо |
Отправлено: 20:29, 12-02-2021 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
DNS/DHCP - обратная зона, у кого настроить? | wp2 | Сетевые технологии | 2 | 17-08-2015 15:52 | |
USB 3.1 и обратная совместимость | CrashTest | Хочу все знать | 3 | 18-01-2015 21:37 | |
[решено] JS. Обратная транслитерация. | VeshchiyOleg | Вебмастеру | 1 | 27-01-2007 21:00 |
|