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

UptoLike

91
class QMatrix : Matrix
{
// конструктор производного класса
public QMatrix(int rows): base(rows, rows)
{
}
// метод получения подматрицы вычеркиванием заданных
// строки и столбца
QMatrix SubMatrix(int i1, int j1)
{
int rows = Rows;
// матрица-результат имеет порядок
// на 1 меньше исходной
QMatrix temp = new QMatrix(rows - 1);
// формируем новую матрицу, игнорируя
// строку с номером i1 и столбец с номером j1
for(int i = 0; i < i1; i++)
{
for(int j = 0;j < j1; j++)
temp[i,j] = a[i,j];
for (int j = j1 + 1; j < rows; j++)
temp[i,j - 1] = a[i,j];
}
for (int i = i1 + 1; i < rows; i++)
{
for(int j = 0; j < j1; j++)
temp[i - 1, j] = a[i, j];
for (int j = j1 + 1; j < rows; j++)
temp[i - 1, j - 1] = a[i,j];
}
return temp;
}
// метод вычисления определителя матрицы
public double Determinant()
{
double det = 0;
int rows = Rows;
// определитель 1-ого порядка совпадает
// с единственным элементом матрицы
if(rows == 1)
return a[0,0];
QMatrix temp = new QMatrix(rows - 1);
// раскладываем определитель по 0-ой строке
for (int j = 0; j < rows; j++)
{
// получаем матрицу для вычисления
// минора элемента a0j
temp = SubMatrix(0, j);
// добавляем очередное произведение элемента
// на его алгебраическое дополнение
if(j % 2 == 0)
class QMatrix : Matrix
{
   // конструктор производного класса
   public QMatrix(int rows): base(rows, rows)
   {
   }

  // метод получения подматрицы вычеркиванием заданных
  // строки и столбца
  QMatrix SubMatrix(int i1, int j1)
  {
     int rows = Rows;
     // матрица-результат имеет порядок
     // на 1 меньше исходной
     QMatrix temp = new QMatrix(rows - 1);
     // формируем новую матрицу, игнорируя
     // строку с номером i1 и столбец с номером j1
     for(int i = 0; i < i1; i++)
     {
        for(int j = 0;j < j1; j++)
           temp[i,j] = a[i,j];
        for (int j = j1 + 1; j < rows; j++)
           temp[i,j - 1] = a[i,j];
     }
     for (int i = i1 + 1; i < rows; i++)
     {
        for(int j = 0; j < j1; j++)
           temp[i - 1, j] = a[i, j];
        for (int j = j1 + 1; j < rows; j++)
           temp[i - 1, j - 1] = a[i,j];
     }
     return temp;
  }

  // метод вычисления определителя матрицы
  public double Determinant()
  {
     double det = 0;
     int rows = Rows;
     // определитель 1-ого порядка совпадает
     // с единственным элементом матрицы
     if(rows == 1)
        return a[0,0];
     QMatrix temp = new QMatrix(rows - 1);
     // раскладываем определитель по 0-ой строке
     for (int j = 0; j < rows; j++)
     {
        // получаем матрицу для вычисления
        // минора элемента a0j
        temp = SubMatrix(0, j);
        // добавляем очередное произведение элемента
        // на его алгебраическое дополнение
        if(j % 2 == 0)
                                                         91