Текст подпрограммы и версий 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