Текст подпрограммы и версий ( Фортран )
aeb5r.zip  aeb5d.zip 
Тексты тестовых примеров ( Фортран )
taeb5r.zip  taeb5d.zip 
Текст подпрограммы и версий ( Си )
aeb5r_c.zip  aeb5d_c.zip 
Тексты тестовых примеров ( Си )
taeb5r_c.zip  taeb5d_c.zip 
Текст подпрограммы и версий ( Паскаль )
aeb5r_p.zip , aeb5e_p.zip
Тексты тестовых примеров ( Паскаль )
taeb5r_p.zip , taeb5e_p.zip

Подпрограмма:  AEB5R

Назначение

Вычисление методом бисекции по заданным номерам группы подряд идущих собственных значений вещественной симметричной ленточной матрицы, заданной в компактной форме.

Математическое описание

Пусть все собственные значения заданной симметричной ленточной матрицы порядка N занумерованы в порядке неубывания

              λ1 ≤ λ2 ≤ ... ≤ λN-1 ≤ λN . 

Подпрограмма АЕВ5R вычисляет группу подряд идущих собственных значений заданной матрицы по заданным номерам (задаются номера минимального и максимального собственных значений из искомой группы) с помощью метода бисекции, применяемого непосредственно к ленточной матрице.

Подпрограмма АЕВ5R позволяет вычислять различные собственные значения с различной точностью. Требуемая точность задается пользователем в специальном векторе.

Уилкинсон, Райнш. "Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра". М.: "Машиностроение", 1976.

Использование

    SUBROUTINE  AEB5R (NM, N, M, B, L1, L2, EV, EPS, C) 

Параметры

NM - число строк двумерного массива B, указанное при описании этого массива в вызывающей подпрограмме (тип: целый);
N - порядок исходной матрицы, N ≤ NМ (тип: целый);
M - число нижних ненулевых кодиагоналей исходной матрицы, включая главную диагональ (тип: целый);
B - вещественный двумерный массив размерности NМ * М, в первых N строках которого задана исходная симметричная ленточная матрица в компактной форме (см. Организация Библиотеки. Способы представления матриц специального вида);
L1, L2 - заданные минимальный и максимальный номера искомых собственных значений (тип: целый); возможны оба варианта: L1 ≤ L2 и L1 ≥ L2 (см. описание параметра EV);
EV - вещественный вектор длины | L2 - L1 | + 1, содержащий на выходе из подпрограммы вычисленные собственные значения; при этом, если L1 < L2, то собственные значения располагаются в порядке неубывания, а если L2 < L1, то - в порядке невозрастания;
EPS - вещественный вектор длины | L2 - L1 | + 1, в компонентах которого пользователем задаются значения допустимых погрешностей для соответствующих вычисляемых собственных значений;
C - вещественный двумерный рабочий массив размерности M * min (2М - 1, N).

Версии

AEB5D - вычисление методом бисекции по заданным номерам группы подряд идущих собственных значений симметричной ленточной матрицы, заданной в компактной форме и с двойной точностью.

Вызываемые подпрограммы: нет

Замечания по использованию

  1. 

В подпpогpамме AEВ5D паpаметpы B, EV, EPS, C имеют тип DOUBLE PRECISION;

  2. 

Подпpогpамма AEВ5R (AEB5D) сохpаняет исходный массив В;

  3. 

При работе подпрограммы слишком малые компоненты вектора EPS будут увеличены;

  4. 

Так как подпрограмма AEB5R применяет метод бисекции непосредственно к ленточной матрице, то ее рекомендуется использовать только, если ширина ленты невелика и число искомых собственных значений достаточно мало, точнее, если выполнно неравенство

                                            L
           N  >  0.25 (M - 1)    ∑    r i ,
                                          i =1 
где L = | L2 - L1 | + 1,  ri = - log2 (EPS ( I ) / || A || ),  || A || - спектральная норма исходной матрицы А. В противном случае выгоднее исходную матрицу привести к трехдиагональному виду и применять метод бисекции к трехдиагональной матрице.

Пример использования

      DIMENSION  B(5, 3), C(3, 5), EV(2), EPS(2)
      DATA  B /2*0., 4., 0., 4., 0., 4*3.,
     *                5., 3.25, 1., 4.25, 6./, EPS /2*1.E - 5/
      N = 5
      NM = 5
      M = 3
      L1 = 2
      L2 = 3
      CALL  AEB5R (NM, N, M, B, L1, L2, EV, EPS, C)

Результаты:

               EV  =  ( .10000000E+01, .20000000E+01 )

              EPS  =  ( .10E-04, .10E-04 )