Описание типов и констант модуля FMM. Задачи линейной алгебры. Подпрограмма DECOMP. Подпрограмма SOLVE, страница 4

При необходимости, значения этих констант могут быть переопределены пользователем по своему усмотрению путем задания в тексте модуля FMM требуемых значений этих констант.

Тип 'FLOAT' введен для обеспечения удобства работы с программами, использующими этот модуль как на машинах с сопроцессором 8087 или 80287 так и без него. При установке опции компилятора {$N-} в качестве типа FLOAT используется тип REAL (шестибайтовые числа с плавающей точкой), а при {$N+} – тип DOUBLE (восьмибайтовые числа с плавающей точкой).

Переменные типов FLOATVECTOR, FLOATMATRIX, IVECTOR используются в процедурах, работающих с квадратными матрицами и векторами; типы FLOATVECTORC, FLOATVECTORS, FLOATMATRIXCS используются при работе с прямоугольными матрицами и векторами, соответствующими их строчной или столбовой размерности. Типы RVECN и IVEC5 используются для рабочих переменных в процедуре RKF45.

ГЛАВА 2. Задачи линейной алгебры

Одна из наиболее распространенных задач, встречающихся в научных вычислениях, - решение системы линейных алгебраических уравнений. Систему, в которой число уравнений равно числу неизвестных, записывают в виде:

, где

 – квадратная матрица системы порядка ,

 – заданный вектор с  компонентами,

 – неизвестный вектор с  компонентами.

Численное решение задачи выполняют последовательно применяя процедуры DECOMР & SOLVE, описываемые ниже.

§ 1. Подпрограмма DECOMP

Объявление

рrocedure DECOMР( n: integer;

var A: floatmatrix;

var cond: float;

var iрvt: ivector;

var work: floatvector );

Назначение

Программа вычисляет разложение вещественной матрицы посредством гауссова исключения и оценивает обусловленность матрицы. Она используется для вычисления решений линейных систем.

Описание

Входная информация

n – порядок матрицы;

A – матрица, которую нужно разложить.

Размерность решаемой системы алгебраических уравнений (значение переменной n) не должна превышать значения объявленной в модуле FMM размерности массивов (константа NDIM). Если это условие не выполняется, то следует переопределить значение константы NDIM соответствующим образом в своей головной программе.

Выходная информация

A

―  содержит верхнюю треугольную матрицу  и учитывающую перестановки версию нижней треугольной матрицы , такие, что

;

cond

―  оценка обусловленности . Для линейной системы  изменения в  и  могут вызвать изменения в,большие в cond раз. Если , то  в пределах машинной точности является вырожденной матрицей. cond полагается равным 1E+32, если обнаружена точная вырожденность.

iрvt

―  вектор номеров ведущих элементов. iрvt(к)=индекс к-й ведущей строки, .

work

―  рабочее поле. Вектор work должен быть описан и включен в вызов, его входное и выходное содержание обычно не дает важной информации.

Определитель матрицы  может быть получен на выходе по формуле:

.

Параметр cond вычисляется следующим образом:

.

Оценка получается посредством одного шага метода обратных итераций для наименьшего сингулярного вектора. Это требует решения двух систем уравнений:

 и , где -вектор из +1 и -1, выбранный так, чтобы максимизировать величину .

Пример

См. после описания программы SOLVE.

§ 2. Подпрограмма SOLVE

Объявление

рrocedure SOLVE( n: integer;

var A: floatmatrix;

var B: floatvector;

var iрvt: ivector );

Назначение

Решение линейной системы . Подпрограмму не следует использовать, если DECOMP обнаружил вырожденность.

Описание

Входная информация

n

―  порядок матрицы,

A

―  факторизованная матрица, полученная из DECOMP,

B

―  вектор правых частей,

iрvt

―  вектор ведущих элементов, полученный из DECOMP.

Выходная информация

B

―  вектор решения .

Пример