Реализация LU разложения с помощью функций IMSL. ОТЧЕТ БИРЮКОВКО КОМПАКТНЫЙ. Отчет на тему
Скачать 182.56 Kb.
|
Содержание используемых функцийФункция LSLRB Функция LSLRB (в режиме двойной точности — DLSLRB) направлена на вычисление LU-разложения вещественной несимметрической ленточной матрицы А и решение системы линейных уравнений Ax = b. [3] Входные данные: N, A, LDA, NLCA, NUCA, B, IPATH. Выходные данные: X. Вызов подпрограммы: CALL LSLRB (N, A, LDA, NLCA, NUCA, B, IPATH, X). Таблица 1. — Описание входных/выходных параметров подпрограммы LSLRB
Комментарии: Автоматически выделяемая память (число байт): М = (2 * NLCA + NUCA + 1) * N + 2N байт памяти. (8) В случае двойной точности в подпрограммах автоматически выделяется М = 2(2 * NLCA + NUCA + 1) * N + 3N байт памяти. (9) Также рабочее пространство может быть явно предоставлено, если это нужно, с использованием L2LRB/DL2LRB. Например: CALL L2LRB (N, A, LDA, NLCA, NUCA, B, IPATH, X, FAC, IPVT, WK), где FAC - рабочий вектор длины (2 * NLCA + NUCA + 1) * N, содержащий LU факторизацию A на выходе. Если A не нужен, A может разделить первые (NLCA + NUCA + 1) * N мест хранения с FAC. IPVT - рабочий вектор длины N, содержащий информацию для LU-факторизации A на выходе. WK – рабочий вектор длиной N. Возможные ошибки Входная матрица слишком плохо обусловлена. Решение может быть неточным. (тип – 3, код – 1). Входная матрица сингулярна. (тип – 4, код – 2.) Алгоритм: Процедура LSLRB решает систему линейных алгебраических уравнений, имеющих вещественную ленточную матрицу коэффициентов. Сначала используется процедура LFCRB, для вычисления факторизации LU матрицы коэффициентов и оценки числа обусловленности матрицы. Затем решение линейной системы находится с помощью процедуры LFSRB. LSLRB не работает, если U, верхняя треугольная часть факторизации, имеет нулевой диагональный элемент. Это происходит только в том случае, если A является сингулярной или очень близкой к сингулярной матрице. Если число обусловленности матрицы больше 1/ε (где ε - точность машины), выдается предупреждение об ошибке. Это указывает на то, что очень небольшие изменения в A могут вызвать очень большие изменения в решении x. Если матрица коэффициентов плохо обусловлена или плохо масштабирована, рекомендуется использовать процедуру LSARB. Функция LFCRB Функция LFCRB(в режиме двойной точности — DLFCRB) вычисляет LU-разложение и выполняет оценку числа обусловленности вещественной несимметрической ленточной матрицы.[3] Входные данные: N, A, LDA, NLCA, NUCA, LDFAC. Выходные данные: FAC, IPVT, RCOND. Вызов подпрограммы осуществляется с помощью команды: CALL LFCRB (N, A, LDA, NLCA, NUCA, FAC, LDFAC, IPVT, RCOND) Таблица 2. — Описание входных/выходных параметров подпрограммы LFCRB
Комментарии: Автоматически выделяемая память1 (число байт): М = N байт памяти. (10) В случае двойной точности в подпрограммах автоматически выделяется М = 2N байт памяти. (11) Также рабочее пространство может быть явно предоставлено, если это нужно, с использованием L2СRB/DL2СRB. Например: CALL L2CRB (N, A, LDA, NLCA, NUCA, FAC, LDFAC, IPVT, RCOND, WK), где WK – рабочий вектор длиной N. Возможные ошибки Входная матрица алгоритмически сингулярна (тип – 3, код- 1). Входная матрица сингулярна. ( тип – 4, код – 2). Алгоритм: Процедура LFCRB выполняет LU-факторизацию вещественной матрицы ленточных коэффициентов. Она также оценивает число обусловленности матрицы. LU-факторизация выполняется с использованием масштабированной частичной поворотной функции. Масштабированная частичная поворотная операция отличается от частичной поворотной операции тем, что стратегия поворота такая же, как если бы каждая строка была масштабирована так, чтобы иметь одинаковую ∞-норму (В данном случае только наибольший элемент имеет какой-либо эффект). Условное число L1 матрицы A определяется как κ(A) = ||A|||1 ||A-1|||1. Поскольку вычисление ||A-1||1 является ресурсоемким, число обусловленности только оценивается. Если оцененное число обусловленности больше 1/ε (где ε - машинная точность), выдается предупреждение об ошибке. Это указывает на то, что очень малые изменения в A могут привести к очень большим изменениям в решении x. Итерационное уточнение может иногда найти решение такой системы. LSCRB не работает, если U, верхняя треугольная часть факторизации, имеет нулевой диагональный элемент. Это может произойти, только если A - сингулярная или очень близкая к сингулярной матрица. LU-факторы возвращаются в форме, совместимой с подпрограммами LFIRB, LFSRB, и LFDRB. Для решения систем уравнений с несколькими правосторонними векторами, используйте LFCRB, за которой следует LFIRB или LFSRB, вызываемыми по одному разу для каждой правой стороны. Процедура LFDRB может быть вызвана, чтобы вычислить детерминант матрицы коэффициентов после того, как LFCRB выполнит факторизацию. Пусть F - матрица FAC, пусть ml = NLCA и mu = NUCA. Первые ml + mu + 1 строк F содержат треугольную матрицу U в ленточной форме хранения. Нижние ml строк F содержат множители, необходимые для восстановления L-1. LFCRB основан на программе SGBCO из LINPACK и использует немасштабируемый частичный поворот. Функция LFTRB Функция LFTRB(в режиме двойной точности — DLFTRB) вычисляет LU-разложение вещественной несимметрической ленточной матрицы без оценки ее числа обусловленности.[3] Входные данные: N, A, LDA, NLCA, NUCA, LDFAC. Выходные данные: FAC, IPVT, RCOND. Вызов подпрограммы осуществляется с помощью команды: CALL LFTRB (N, A, LDA, NLCA, NUCA, FAC, LDFAC, IPVT) Таблица 3. — Описание входных/выходных параметров подпрограммы LFTRB.
Комментарии: Автоматически выделяемая память1 (число байт): М = N байт памяти. (12) В случае двойной точности в подпрограммах автоматически выделяется М = 2N байт памяти. (13) Также рабочее пространство может быть явно предоставлено, если это нужно, с использованием L2СRB/DL2СRB. Например: CALL L2TRB (N, A, LDA, NLCA, NUCA, FAC, LDFAC, IPVT, WK), где WK – рабочий вектор длиной N. Возможные ошибки Входная матрица сингулярна. (тип – 4, код – 2). Алгоритм: Процедура LFTRB выполняет LU-факторизацию вещественной матрицы с ленточными коэффициентами, используя гауссово исключение с частичным поворотом. Сбой происходит, если U, верхний треугольный коэффициент, имеет нулевой диагональный элемент. Это может произойти, если A близка к сингулярной матрице. Коэффициенты LU возвращаются в форме, совместимой с процедурами LFIRB, LFSRB, и LFDRB. Для решения системы уравнений с несколькими правосторонними векторами, используйте LFTRB, за которым следует либо LFIRB, либо LFSRB, вызываемые по одному разу для каждой правой стороны. Процедура LFDRB может быть вызвана для вычисления детерминанта матрицы коэффициентов после того, как LFTRB выполнила факторизацию. |