Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 37 стр.

UptoLike

36
temp[i, j] = a[i, j];
}
isSolved = true;
}
В случае, если СЛАУ с квадратной матрицей
A
имеет единственное
решение, его можно получить по формуле:
BAX
1
, где
1
A
обратная матрица к
A
.
Данная формула применима только в случаях, когда обратную матрицу
можно вычислить (матрица
A
квадратная, ее определитель не равен 0).
Нарушение этих условий приводит к генерации исключений (генерация
исключения равенства нулю определителя предусмотрена в методе
вычисления обратной матрицы класса Matrix) .
// метод решения СЛАУ с помощью обратной матрицы
public void InverseMatrix()
{
// проверка, является ли матрица прямоугольной
if (m != n)
throw new Exception("Матрица не является квадратной");
// вычисление обратной матрицы
Matrix obr = ~a;
// поскольку для эффективного использования памяти
// вектор хранится как строка, требуется получить
// соответствующий вектор-столбец посредством
// транспонирования
Matrix B = !b;
// получение решения СЛАУ
x = obr * B;
x = !x;
rang = m;
isSolved = true;
}
Метод исключений Жордана-Гаусса может быть применен, как в
ситуации, когда СЛАУ имеет единственное решение, так и когда решений
бесконечно много. Проведение исключений всех строк по i-ой строке
осуществляется по формулам Жордана-Гаусса:
nj
a
a
a
ii
ij
ij
..1,
                temp[i, j] = a[i, j];
      }
      isSolved = true;
  }

     В случае, если СЛАУ с квадратной матрицей A имеет единственное
решение, его можно получить по формуле:

                        X  A1B , где A1 – обратная матрица к A .

     Данная формула применима только в случаях, когда обратную матрицу
можно вычислить (матрица A – квадратная, ее определитель не равен 0).
Нарушение этих условий приводит к генерации исключений (генерация
исключения равенства нулю определителя предусмотрена в методе
вычисления обратной матрицы класса Matrix) .

  // метод решения СЛАУ с помощью обратной матрицы
  public void InverseMatrix()
  {
     // проверка, является ли матрица прямоугольной
     if (m != n)
        throw new Exception("Матрица не является квадратной");
     // вычисление обратной матрицы
     Matrix obr = ~a;
     // поскольку для эффективного использования памяти
     // вектор хранится как строка, требуется получить
     // соответствующий вектор-столбец посредством
     // транспонирования
     Matrix B = !b;
     // получение решения СЛАУ
     x = obr * B;
     x = !x;
     rang = m;
     isSolved = true;
  }

     Метод исключений Жордана-Гаусса может быть применен, как в
ситуации, когда СЛАУ имеет единственное решение, так и когда решений
бесконечно много. Проведение исключений всех строк по i-ой строке
осуществляется по формулам Жордана-Гаусса:

              aij
      aij          ,   j  1..n
              aii


                                                                      36