Объектно-ориентированное программирование на С#. Андрианова А.А - 90 стр.

UptoLike

90
В конструкторе производного класса QMatrix осуществляется вызов
конструктора класса Matrix, в который передается количество строк и
столбцов создаваемой матрицы (в данном случае они совпадают):
class QMatrix : Matrix
{
public QMatrix(int rows): base(rows, rows)
{
. . .
}
. . .
}
Класс QMatrix расширяет базовый класс путем добавления новых
методов вычисления определителя и обратной матрицы. Для этого
требуется вычислить миноры исходной матрицы. Поэтому в класс QMatrix
добавим метод формирования подматрицы, полученной из исходной
вычеркиванием заданной строки и заданного столбца. Как известно,
определитель такой подматрицы является одним из миноров исходной
матрицы.
Согласно теореме Лапласа определитель матрицы Q(
)det(Q
) равен
сумме произведений элементов строки (столбца) на их алгебраические
дополнения:
ininiiii
AqAqAqQ ...)det(
2211
,
где
ij
ji
ij
MA
)1(
,
ij
M
дополнительный минор элемента
ij
q
(определитель матрицы, полученной вычеркиванием из исходной строки с
номером i и столбца с номером j).
Согласно этой формуле для вычисления определителя n-ого порядка
требуется вычислить n определителей (n-1)-ого порядка. Поэтому метод
вычисления определителя матрицы будет рекурсивным.
Для вычисления обратной матрицы для матрицы Q требуется найти
матрицу алгебраических дополнений (
ij
A
) элементов, транспонировать ее и
разделить на значение
)det(Q
. Если матрица является вырожденной (ее
определитель равен нулю), обратной матрицы не существует. В этом случае
генерируется исключение.
Таким образом, определение класса QMatrix станет таким:
     В конструкторе производного класса QMatrix осуществляется вызов
конструктора класса Matrix, в который передается количество строк и
столбцов создаваемой матрицы (в данном случае они совпадают):

      class QMatrix : Matrix
     {
         public QMatrix(int rows): base(rows, rows)
         {
              .    .    .
         }
        .     .    .
     }


     Класс QMatrix расширяет базовый класс путем добавления новых
методов – вычисления определителя и обратной матрицы. Для этого
требуется вычислить миноры исходной матрицы. Поэтому в класс QMatrix
добавим метод формирования подматрицы, полученной из исходной
вычеркиванием заданной строки и заданного столбца. Как известно,
определитель такой подматрицы является одним из миноров исходной
матрицы.
     Согласно теореме Лапласа определитель матрицы Q( det(Q) ) равен
сумме произведений элементов строки (столбца) на их алгебраические
дополнения:

        det(Q)  qi1 Ai1  qi 2 Ai 2  ...  qin Ain ,

где     Aij  (1) i j M ij ,   M ij     –    дополнительный   минор   элемента   qij
(определитель матрицы, полученной вычеркиванием из исходной строки с
номером i и столбца с номером j).
     Согласно этой формуле для вычисления определителя n-ого порядка
требуется вычислить n определителей (n-1)-ого порядка. Поэтому метод
вычисления определителя матрицы будет рекурсивным.
     Для вычисления обратной матрицы для матрицы Q требуется найти
матрицу алгебраических дополнений ( Aij ) элементов, транспонировать ее и
разделить на значение det(Q) . Если матрица является вырожденной (ее
определитель равен нулю), обратной матрицы не существует. В этом случае
генерируется исключение.
     Таким образом, определение класса QMatrix станет таким:


90