Skip to content

Latest commit

 

History

History
38 lines (29 loc) · 4.04 KB

README.md

File metadata and controls

38 lines (29 loc) · 4.04 KB

Лабораторная работа 4. Динамические многомерные массивы.

Написать программу для работы с матрицами, которая реализует сложение матриц, умножение матриц и указанную ниже операцию. Память под матрицы выделяется динамически указанным способом (нумерация способов соответствует нумерации, которая приводилась на лекции). Исходные матрицы читаются из файла, результирующие матрицы записываются в файл. Один файл содержит одну матрицу. Количество строк и столбцов матрицы указывается в первой строчке файла. Тестирование выполняется с помощью сравнения полученного результата с ожидаемым. При этом нужно помнить, что сравнивать вещественные числа на равенство можно только с заданной точностью. Имена файлов и выполняемая операция указывается через параметры командной строки.

Операция, реализуемая по варианту.

  1. Метод Гаусса с выбором главного (ведущего) элемента по столбцу.
  2. Метод Гаусса с выбором главного (ведущего) элемента по строке.
  3. Метод Гаусса с выбором главного (ведущего) элемента по активной подматрице.
  4. Вычисление определителя с помощью разложения по строке. ✅
  5. Вычисление определителя с помощью разложения по столбцу.
  6. Вычисление обратной матрицы методом Гаусса.
  7. Вычисление обратной матрицы методом элементарных преобразований.
  8. Вычисление определителя методом Гаусса.

Пояснения к 6. Обратная матрица ищется через решение системы Ax=f с различными правыми частями. Правая часть последовательно пробегает значения столбцов e(j) единичной матрицы E, при этом для каждой из них найденное решение системы Ax=f образует j-ый столбец искомой обратной матрицы.

Пояснения к 7. К исходной матрице справа приписывается единичная матрица того же порядка: (A|E). С помощью элементарных преобразований строк и столбцов левая "половина" приводится к единичной, совершая одновременно точно такие же преобразования над правой матрицей.

Замечание. На практике метод Гаусса не используется без выбора главного элемента. Поэтому если не оговорено специально и в формулировке задания указан метод Гаусса, считайте, что это метод Гаусса с выбором главного элемента по столбцу.

Сравнение вещественных чисел

Обычно используется следующий подход

if (fabs(a - b) <= eps * fmax(fabs(a), fabs(b))
{
    // Числа равны с относительной точностью eps (0 < eps < 1)
}