ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
(генерация исключения равенства нулю определителя предусмотрена в
методе вычисления обратной матрицы класса 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
- …
- следующая ›
- последняя »
