ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
∆
∆
=
j
j
x
,
,..1 nj
=
где
∆
– определитель матрицы А, а
j
∆
- определитель матрицы, в которой
j-й столбец исходной матрицы заменен на вектор свободных членов.
Если определитель матрицы равен нулю, то будет сгенерировано еще
одно исключение ZeroDevideException.
// Функция решения СЛАУ методом Крамера
void Slau::Kramer()
{
// проверка, не является ли матрица прямоугольной
if(m != n)
throw NonSquareMatrixException();
// вычисление определителя
double det = a.Determinant();
// матрицы коэффициентов
// проверка определенности системы
if(det == 0)
throw ZeroDevideException();
rang = m;
// вычисление корней по формулам Крамера
Matrix temp = a;
for(int j = 0; j < n; j++)
{
for(int i = 0; i < n; i++)
temp[i][j] = b[0][i];
x[0][j] = temp.Determinant() / det;
for(int i = 0; i < n; i++)
temp[i][j] = a[i][j];
}
isSolved = true;
}
В случае, если СЛАУ с квадратной матрицей
A
имеет единственное
решение, его можно получить по формуле:
BAX
1
−
=
, где
1
−
A
– обратная матрица к
A
.
Данная формула применима только в случаях, когда обратную
матрицу можно вычислить (матрица
A
– квадратная, ее определитель не
равен 0). Нарушение этих условий приводит к генерации исключений
204
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М. ∆ xj = j , j = 1..n, ∆ где ∆ – определитель матрицы А, а ∆ j - определитель матрицы, в которой j-й столбец исходной матрицы заменен на вектор свободных членов. Если определитель матрицы равен нулю, то будет сгенерировано еще одно исключение ZeroDevideException. // Функция решения СЛАУ методом Крамера void Slau::Kramer() { // проверка, не является ли матрица прямоугольной if(m != n) throw NonSquareMatrixException(); // вычисление определителя double det = a.Determinant(); // матрицы коэффициентов // проверка определенности системы if(det == 0) throw ZeroDevideException(); rang = m; // вычисление корней по формулам Крамера Matrix temp = a; for(int j = 0; j < n; j++) { for(int i = 0; i < n; i++) temp[i][j] = b[0][i]; x[0][j] = temp.Determinant() / det; for(int i = 0; i < n; i++) temp[i][j] = a[i][j]; } isSolved = true; } В случае, если СЛАУ с квадратной матрицей A имеет единственное решение, его можно получить по формуле: X = A − 1 B , где A − 1 – обратная матрица к A . Данная формула применима только в случаях, когда обратную матрицу можно вычислить (матрица A – квадратная, ее определитель не равен 0). Нарушение этих условий приводит к генерации исключений 204
Страницы
- « первая
- ‹ предыдущая
- …
- 202
- 203
- 204
- 205
- 206
- …
- следующая ›
- последняя »