|
Текст подпрограммы и версий aih3r_c.zip aih3d_c.zip |
Тексты тестовых примеров taih3r_c.zip taih3d_c.zip |
Обращение неособенной симметричной матрицы с компактной формой представления с использованием метода квадратного корня.
Подпрограмма aih3r_c вычисляет матрицу В, записанную в компактной форме, такую что А*В = Е, где А - исходная неособенная симметричная матрица порядка N, заданная в компактной форме, а Е - единичная матрица. Используется метод квадратного корня. Матрица B является симметричной.
Вunch J.R., Рarlett В.N., Direct methods for solving symmetric indefinite systems of linear equations, SIАМ J. Numer. Аnal.,Vol.8, No.4, December 1971.
int aih3r_c (real *a, real *ainv, integer *n, integer *ir,
real *r__, integer *ierr)
Параметры
| a - | вещественный вектор размерности n на (n+1)/2, который содержит исходную матрицу, записанную в компактной форме; |
| ainv - | вещественный вектор размерности n на (n+1)/2, который содержит обратную матрицу B, записанную в компактной форме; |
| n - | порядок заданной матрицы A (тип: целый); |
| ir - | целый вектор длины 2*n, используемый как рабочий массив; |
| r - | вещественный вектор длины n, используемый как рабочий массив; |
| ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы: при этом: |
| ierr=65 - | если матрица является сингулярной. |
Версии
| aih3d_c - | обращение неособенной симметричной матрицы с компактной формой представления (используется метод квадратного корня) с повышенной точностью. |
Вызываемые подпрограммы
| afh3r_c - | подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня. |
| afh3d_c - | подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня с повышенной точностью. |
| ash3r_c - | подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня. |
| ash3d_c - | подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня с повышенной точностью. |
| utai10_c - | подпрограмма печати диагностических сообщений при работе подпрограммы aih3r_c. |
| utai11_c - | подпрограмма печати диагностических сообщений при работе подпрограммы aih3d_c. |
Замечания по использованию
|
При работе подпрограмм aih3r_c и aih3d_c исходная матрица A не сохраняется. На место матрицы A помещается ее треугольное разложение, полученное методом квадратного корня. Для подпрограммы aih3d_c параметры a, ainv должны иметь тип double. |
int main(void)
{
/* Initialized data */
static float a[6] = { 1.f,.5f,-1.f,3.f,2.f,1.f };
/* Local variables */
static float ainv[6];
static int ierr;
extern int aih3r_c(float *, float *, int *, int *, float *, int *);
static int n, i__;
static float r__[3];
static int ri[6];
n = 3;
aih3r_c(a, ainv, &n, ri, r__, &ierr);
for (i__ = 1; i__ <= 6; ++i__) {
printf("\n %16.7e \n", ainv[i__-1]);
}
printf("\n %5i \n", ierr);
return 0;
} /* main */
Результаты:
ainv = (-0.51, 0.56, -0.82, 0.41, -0.05, -0.13) ,
ierr = 0