При необходимости, значения этих констант могут быть переопределены пользователем по своему усмотрению путем задания в тексте модуля FMM требуемых значений этих констант.
Тип 'FLOAT' введен для обеспечения удобства работы с программами, использующими этот модуль как на машинах с сопроцессором 8087 или 80287 так и без него. При установке опции компилятора {$N-} в качестве типа FLOAT используется тип REAL (шестибайтовые числа с плавающей точкой), а при {$N+} – тип DOUBLE (восьмибайтовые числа с плавающей точкой).
Переменные типов FLOATVECTOR, FLOATMATRIX, IVECTOR используются в процедурах, работающих с квадратными матрицами и векторами; типы FLOATVECTORC, FLOATVECTORS, FLOATMATRIXCS используются при работе с прямоугольными матрицами и векторами, соответствующими их строчной или столбовой размерности. Типы RVECN и IVEC5 используются для рабочих переменных в процедуре RKF45.
Одна из наиболее распространенных задач, встречающихся в научных вычислениях, - решение системы линейных алгебраических уравнений. Систему, в которой число уравнений равно числу неизвестных, записывают в виде:
, где
– квадратная матрица системы порядка ,
– заданный вектор с компонентами,
– неизвестный вектор с компонентами.
Численное решение задачи выполняют последовательно применяя процедуры DECOMР & SOLVE, описываемые ниже.
р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.
рrocedure SOLVE( n: integer;
var A: floatmatrix;
var B: floatvector;
var iрvt: ivector );
Решение линейной системы . Подпрограмму не следует использовать, если DECOMP обнаружил вырожденность.
Входная информация
n
― порядок матрицы,
A
― факторизованная матрица, полученная из DECOMP,
B
― вектор правых частей,
iрvt
― вектор ведущих элементов, полученный из DECOMP.
Выходная информация
B
― вектор решения .
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.