Текст подпрограммы и версий
ash1r_c.zip , ash1d_c.zip , ash1c_c.zip
Тексты тестовых примеров
tash1r_c.zip , tash1d_c.zip , tash1c_c.zip

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

Назначение

Решение системы линейных алгебраических уравнений с положительно определенной симметричной матрицей, записанной в компактной форме, методом квадратного корня (методом Холецкого).

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

Подпрограмма ash1r_c вычисляет решение системы N линейных алгебраических уравнений А*x = b, где А - положительно определенная симметричная матрица, b - одномерный вектор правой части решаемой системы, методом квадратного корня (методом Холецкого). Матрица А задается в компактной форме.

В.В.Воеводин, Численные методы алгебры (теория и алгорифмы), Наука, М., 1966.

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

    int ash1r_c (real *a, real *b, real *x, integer *n,
             integer *l, integer *ierr)

Параметры

a - вектор длины n на (n + 1)/2, в котором содержится заданная матрица, записанная в компактной форме (тип: вещественный);
b - вектор длины n, в котором задается правая часть исходной системы (тип: вещественный);
x - вектор длины n, в котором содержится решение исходной системы (тип: вещественный);
n - порядок матрицы (тип: целый);
l - целая переменная, которая задает режим работы подпрограммы; при этом:
l = 1 - если система с данной матрицей решается впервые;
l ≠ 1 - если система с данной матрицей решается повторно.
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
ierr=65 - если заданная матрица не является положительно определенной.

Версии

ash1d_c - решение системы линейных алгебраических уравнений с положительно определенной симметричной матрицей, записанной в компактной форме, методом квадратного корня (методом Холецкого) с повышенной точностью.
ash1c_c - решение системы линейных алгебраических уравнений с положительно определенной эрмитовой матрицей, записанной в компактной форме, методом квадратного корня (методом Холецкого) .

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

utas10_c - подпрограмма выдачи диагностических сообщений при работе подпрограмм ash1r_c и ash1c_c;
utas11_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы ash1d_c;
afh1r_c - подпрограмма, реализующая треугольное разложение положительно определенной матрицы методом квадратного корня (методом Холецкого) с компактной формой представления;
 afh1d_c -  afh1c_c   подпрограммы, реализующие треугольное разложение положительно определенной матрицы методом квадратного корня (методом Холецкого) с компактной формой представления с повышенной точностью и эрмитовой матрицы соответственно.

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

 

При работе подпрограммы исходная матрица A не сохраняется. На месте матрицы A помещается ее треугольное разложение, полученное подпрограммами afh1r_c, afh1d_c и afh1c_c.

Подпрограммы ash1r_c и ash1d_c позволяют использовать вместо параметра x параметр b. Таким образом, в результате работы подпрограмм на место столбца правой части может быть помещено вычисленное решение.

Для подпрограммы ash1d_c параметры a, b, x должны иметь тип double, а для ash1c_c - тип complex.

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

int main(void)
{
    /* Initialized data */
    static float a[6] = { 1.f,2.f,20.f,3.f,26.f,70.f };
    static float b[3] = { 2.f,0.f,-35.f };

    /* Local variables */
    static int ierr, i__;
    extern int ash1r_c(float *, float *, float *, int *, int *, int *);
    static float x[3];

    for (i__ = 1; i__ <= 6 ; ++i__) {
         printf("\n  %9.2e \n", a[i__-1]);
    }
    for (i__ = 1; i__ <= 3 ; ++i__) {
         printf("\n  %9.2e \n", b[i__-1]);
    }
    ash1r_c(a, b, x, &c__3, &c__1, &ierr);

    for (i__ = 1; i__ <= 3 ; ++i__) {
         printf("\n  %9.2e \n", x[i__-1]);
    }
         printf("\n  %5i \n", ierr);
    return 0;
} /* main */


Результаты:

      x  =   (3., 1., -1.)
      ierr  =  0