ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
(генерация исключения равенства нулю определителя предусмотрена в
методе вычисления обратной матрицы класса Matrix) .
// Функция решения СЛАУ с помощью обратной матрицы
void Slau::InverseMatrix()
{
// проверка, является ли матрица прямоугольной
if(m != n)
throw NonSquareMatrixException();
// вычисление обратной матрицы
Matrix obr = ~ a;
// поскольку для эффективного использования памяти
// вектор хранится как строка, требуется получить
// соответствующий вектор-столбец посредством
// транспонирования
Matrix b = !(this->b);
// получение решения СЛАУ
x = obr * b;
x = ! x;
rang = m;
isSolved = true;
}
Метод исключения Жордана-Гаусса может быть применен, как в
ситуации, когда СЛАУ имеет единственное решение, так и когда этих
решений бесконечно много. Проведение исключений всех строк по i-ой
строке осуществляется по формулам Жордана-Гаусса:
nj
a
a
a
ii
ij
ij
..1,
==
ikmknj
a
a
aaa
ii
ij
kikjkj
≠==−=
,..1,..1,
ii
i
i
a
b
b
=
ikmk
a
b
abb
ii
i
kikk
≠=−=
,..1,
Эти формулы определяют эквивалентное преобразование СЛАУ, которое
не меняет ее решение и позволяет определить ранг матрицы
коэффициентов. Напомним, что ранг – это максимальный порядок
минора матрицы, отличный от нуля. Посредством исключения нужно
205
Объектно-ориентированное программирование на С++ (генерация исключения равенства нулю определителя предусмотрена в методе вычисления обратной матрицы класса Matrix) . // Функция решения СЛАУ с помощью обратной матрицы void Slau::InverseMatrix() { // проверка, является ли матрица прямоугольной if(m != n) throw NonSquareMatrixException(); // вычисление обратной матрицы Matrix obr = ~ a; // поскольку для эффективного использования памяти // вектор хранится как строка, требуется получить // соответствующий вектор-столбец посредством // транспонирования Matrix b = !(this->b); // получение решения СЛАУ x = obr * b; x = ! x; rang = m; isSolved = true; } Метод исключения Жордана-Гаусса может быть применен, как в ситуации, когда СЛАУ имеет единственное решение, так и когда этих решений бесконечно много. Проведение исключений всех строк по i-ой строке осуществляется по формулам Жордана-Гаусса: aij aij = , j = 1..n aii aij akj = akj − aki , j = 1..n, k = 1..m, k ≠ i aii bi bi = aii bi bk = bk − aki , k = 1..m, k ≠ i aii Эти формулы определяют эквивалентное преобразование СЛАУ, которое не меняет ее решение и позволяет определить ранг матрицы коэффициентов. Напомним, что ранг – это максимальный порядок минора матрицы, отличный от нуля. Посредством исключения нужно 205
Страницы
- « первая
- ‹ предыдущая
- …
- 203
- 204
- 205
- 206
- 207
- …
- следующая ›
- последняя »