Текст подпрограммы и версий ( Фортран ) adp8r.zip adp8d.zip adp8c.zip |
Тексты тестовых примеров ( Фортран ) tadp8r.zip tadp8d.zip tadp8c.zip |
Текст подпрограммы и версий ( Си ) adp8r_c.zip adp8d_c.zip adp8c_c.zip |
Тексты тестовых примеров ( Си ) tadp8r_c.zip tadp8d_c.zip tadp8c_c.zip |
Текст подпрограммы и версий ( Паскаль ) adp8r_p.zip adp8e_p.zip adp8c_p.zip |
Тексты тестовых примеров ( Паскаль ) tadp8r_p.zip tadp8e_p.zip tadp8c_p.zip |
Вычисление определителя матрицы на основе преобразований вращения.
Матрица А размера N на N с помощью преобразований вращения R21, R31, ..., RNN приводится к верхней треугольной матрице:
RNN ... R21*A = L .
Определитель матрицы А вычисляется как произведение диагональных элементов матрицы L и записывается в виде:
det A = D1*2D2, где 0.0625 ≤ D1 < 1.
В.В.Воеводин, Вычислительные основы линейной алгебры, М., "Наука", 1977.
SUBROUTINE ADP8R (A, D1, D2, N)
Параметры
A - | вещественный двумерный массив размера N на N, в котором задается исходная матрица; |
D1 - | вещественная переменная, в которой запоминается мантисса определителя; |
D2 - | целая переменная, в которой запоминается двоичный порядок определителя; |
N - | заданный порядок исходной матрицы (тип: целый). |
Версии
ADP8D - | вычисление определителя матрицы, заданной с удвоенной точностью, на основе преобразований вращения. |
ADP8C - | вычисление определителя комплексной матрицы на основе преобразования вращения. |
Вызываемые подпрограммы
AFP8R - | приведение прямоугольной матрицы к верхнему треугольному виду преобразованиями вращения. |
AFP8D - | приведение прямоугольной матрицы, заданной с удвоенной точностью, к верхнему треугольному виду преобразованиями вращения. |
AFP8C - | приведение комплексной прямоугольной матрицы к верхнему треугольному виду преобразованиями вращения. |
Замечания по использованию
1. |
В подпрограмме АDР8D массив А и переменная D1 имеют тип DОUВLЕ РRЕСISIОN. | |
2. | В подпрограмме АDР8С массив А и переменная D1 имеют тип СОМРLЕХ. |
DIMENSION A(3, 3) DATA A /0.6, 0.8, 0., 0.4, 2.2, 0., 2.6, 6.8, 0.6/ N = 3 CALL ADP8R (A, D1, D2, N) Результат: D1 = 0.6, D2 = 0, т.е. det A = 0.6*20 = 0.6