|
Текст подпрограммы и версий ( Фортран ) aeb6r.zip , aeb6d.zip |
Тексты тестовых примеров ( Фортран ) taeb6r.zip , taeb6d.zip |
|
Текст подпрограммы и версий ( Си ) aeb6r_c.zip , aeb6d_c.zip |
Тексты тестовых примеров ( Си ) taeb6r_c.zip , taeb6d_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) aeb6r_p.zip , aeb6e_p.zip |
Тексты тестовых примеров ( Паскаль ) taeb6r_p.zip , taeb6e_p.zip |
Вычисление нескольких собственных векторов, соответствующих заданным собственным значениям, для симметричной ленточной матрицы, заданной в компактной форме.
Подпрограмма АЕВ6R по заданным собственным значениям вычисляет соответствующие собственные векторы симметричной ленточной матрицы с помощью метода обратных итераций. Возникающие в методе обратных итераций системы
( A - λ I ) x = y ,
где А - симметричная ленточная матрица, решаются методом Гаусса с перестановками.
Уилкинсон, Райнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. М.: "Машиностроение", 1976.
SUBROUTINE AEB6R (NM, N, M, B, C, EV, L, L0, V, Z, W, LOG,
IERR)
Параметры
| NM - | число строк двумерного массива B, указанное при описании этого массива в вызывающей подпрограмме (тип: целый); |
| N - | порядок исходной матрицы, N ≤ NМ (тип: целый); |
| M - | число нижних ненулевых кодиагоналей исходной симметричной ленточной матрицы (включая главную диагональ) (тип: целый); |
| B - | вещественный двумерный массив размерности NМ * М, в первых N строках которого задана исходная симметричная ленточная матрица в компактной форме (см. Организация Библиотеки. Способы представления матриц специального вида); |
| C - | вещественный рабочий двумерный массив размерности N * (2М - 1); |
| EV - | вещественный вектор длины L, содержащий собственные значения, для которых должны быть вычислены собственные векторы, при L0 > 0 для первых L0 собственных значений собственные векторы задаются пользователем; |
| L - | число заданных собственных значений (тип: целый); |
| L0 - | число собственных значений, собственные векторы для которых уже известны и задаются на входе в подпрограмму, L0 < L (тип: целый); |
| V - | вещественный двумерный массив размерности NМ * L, содержащий на входе в подпрограмму в своих первых L0 столбцах ортонормированные собственные векторы, соответствующие собственным значениям, расположенным в первых L0 компонентах вектора EV, а на выходе из подпрограммы - L ортонормированных собственных векторов, соответствующих заданным собственным значениям; |
| Z - | вещественный рабочий вектор длины N; |
| W - | вещественный рабочий двумерный массив размерности N * М; |
| LOG - | логический рабочий двумерный массив размерности N * М; |
| IERR - | целочисленная переменная, содержащая на входе признак задания пользователем начального приближения к искомым собственным векторам, при этом: |
| IERR=1 - | если пользователь сам задает в соответствующих столбцах массива V начальные приближения к собственным вектоpам; |
| IERR=0 - | ecли пользователь не задает начальных приближений; |
| а при выходе из подпрограммы: |
| IERR=0 - | если вычислены все требуемые собственные векторы; |
| IERR=К - | если при вычислении собственного вектора с индексом К ни один из векторов, используемых в качестве начальных, не позволил получить приемлемого приближения; при этом компоненты К - ого столбца массива V полагаются равными нулю; если таких собственных векторов было несколько, то значение IERR полагается равным индексу последнего из них. |
Версии
| AEB6D - | вычисление нескольких собственных векторов, соответствующих заданным собственным значениям, для симметричной ленточной матрицы, заданной в компактной форме и с двойной точностью. |
Вызываемые подпрограммы
| AV04R - AV04D | вычисление скалярного произведения; |
| AV02R - AV02D | вычисление евклидовой нормы вектора. |
Замечания по использованию
| 1. |
Подпpогpамма AEВ6R сохpаняет исходный массив В; | |
| 2. |
В подпpогpамме AEВ6D паpаметpы B, C, EV, V, Z, W имеют тип DOUBLE PRECISION; | |
| 3. |
Если начальное приближение, заданное пользователем, окажется неудачным, то подпрограмма AEB6R продолжит работу с новым начальным вектором; | |
| 4. |
При повторном обращении к подпрограмме можно задать уже вычисленные L0 собственных векторов в первых столбцах массива V, тогда подпрограмма AEB6R, вычисляя новые собственные векторы, обеспечит их ортогональность по отношению к заданным. Это важно, если среди новых и старых собственных значений имеются близкие, так как сам по себе метод обратных итераций не гарантирует ортогональность собственных векторов, соответствующих близким собственным значениям, и требуется дополнительная ортогонализация; | |
| 5. | Собственные значения, задаваемые в компонентах вектора EV, могут не быть упорядочены. |
DIMENSION C(5, 5), B(5, 3), EV(2), V(5, 2), Z(5), W(5, 2),
* LOG(5, 2)
LOGICAL LOG
DATA B /2*0., 4., 0., 4., 0., 4*3., 5., 3.25, 1., 4.25, 6./
DATA EV /1., 2./
N = 5
NM = 5
M = 3
L = 2
L0 = 0
IERR = 0
CALL AEB6R (NM, N, M, B, C, EV, L, L0, V, Z, W, LOG, IERR)
Результаты:
IERR = 0 ,
| - 0.6 1.E - 11 |
| 0.8 5.E - 12 |
| 1.E - 11 8.E - 12 |
| 2.E - 11 - 0.8 |
| - 3.E - 11 0.6 |