|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/ae_htm_c/aeh6r_c.htm
Дата изменения: Tue Apr 28 10:44:07 2015 Дата индексирования: Sun Apr 10 02:56:47 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий aeh6r_c.zip , aeh6d_c.zip |
Тексты тестовых примеров taeh6r_c.zip , taeh6d_c.zip |
Вычисление всех собственных значений вещественной симметричной матрицы, заданной в компактной форме, с помощью QL - алгоритма.
Заданная матрица ортогонaльными преобразованиями подобия приводится к треугольной симметричной форме, собственные значения которой затем вычисляются с помощью неявного QL - алгоритма.
Уилкинсон, Pайнш. Справочник алгоритмов на языке АЛГОЛ. линейная алгебра. М.: "Машиностроение", 1976.
int aeh6r_c (integer *n, integer *nv, real *a, real *ev, real *
r, integer *ierr)
Параметры
| n - | порядок исходной матрицы (тип: целый); |
| nv - | длина вектора a, nv ≥ n(n + 1)/2 (тип: целый); |
| a - | вещественный вектор длины nv, содержащий в своих первых n (n + 1)/2 компонентах исходную матрицу, заданную в компактной форме; |
| ev - | вещественный вектор длины n, содержащий вычисленные собственные значения, расположенные в неубывающем порядке; |
| r - | вещественный вектор длины 2 * n, используемый как рабочий; |
| ierr - | целочисленная переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; ierr имеет тот же смысл, что и в подпрограмме aee2r_c. |
Версии
| aeh6d_c - | вычисление с помощью QL - алгоpитма всех собственных значений вещественной симметричной матрицы, заданной в компактной форме, с удвоенной точностью. |
Вызываемые подпрограммы
| aee2r_c - | вычисление всех собственных значений вещественной симметричной трехдиагональной матрицы при помощи неявного QL - алгоpитма. |
| afh5r_c - | приведение вещественной симметричной матрицы, заданной в компактной форме, к симметричной трехдиагональной матрице ортогональными преобразованиями подобия. |
| utae10_c - | подпрограмма выдачи диагностических сообщений при работе подпрограмм aee2r_c и aee2d_c. |
Замечания по использованию
| 1. |
Подпрограмма aeh6r_c не сохраняет исходный вектор a. | |
| 2. | В подпрограмме aeh6d_c параметры a, ev, r имеют тип double. |
int main(void)
{
/* Initialized data */
static float a[6] = { 294.f,-180.f,-25.f,108.f,240.f,231.f };
/* Local variables */
static int ierr;
extern int aeh6r_c(int *, int *, float *, float *, float *, int *);
static float r__[6], ev[3];
aeh6r_c(&c__3, &c__6, a, ev, r__, &ierr);
printf("\n %5i \n", ierr);
printf("\n %16.7e %16.7e %16.7e \n", ev[0], ev[1], ev[2]);
return 0;
} /* main */
Результаты:
ierr = 0
ev = (- 250., 375., 375.)