При необходимости, значения этих констант могут быть переопределены пользователем по своему усмотрению путем задания в тексте модуля 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).
Ссылка на скачивание - внизу страницы.