Текст подпрограммы и версий
astor_c.zip , astod_c.zip
Тексты тестовых примеров
tastor_c.zip , tastod_c.zip

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

Назначение

Решение системы линейных алгебраических уравнений Ax = b с симметричной теплицевой матрицей.

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

Решается система Аx = b, где А - симметричная теплицева матрица размера М на М. Эффективно используется теплицевость и симметричность матрицы А.

В.В.Воеводин, Вычислительные основы линейной алгебры, М., "hаука", 1977.

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

    int astor_c (real *a, real *b, real *x, real *a1, real *b1,
                                 integer *m)

Параметры

a - вещественный вектор длины m, в котором задается первая строка исходной матрицы;
b - вещественный вектор длины m, в котором задается вектор правой части;
x - вещественный вектор длины m, в котором запоминается вычисленное решение;
a1, b1 - вещественные векторы длины m, используемые как рабочие;
m - заданный порядок матрицы (тип: целый).

Версии

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

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

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

  При обращении к подпрограмме astod_c параметры a, b, x, a1, b1 имеют тип double.

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

int main(void)
{
    /* Initialized data */
    static float b[6] = { 21.f,17.f,15.f,15.f,17.f,21.f };

    /* System generated locals */
    int i__1;

    /* Local variables */
    static float a[6];
    static int i__, m;
    static float x[6], a1[6], b1[6];
    extern int astor_c(float *, float *, float *, float *, float *, int *);

    m = 6;
    i__1 = m;
    for (i__ = 1; i__ <= i__1; ++i__) {
        a[i__ - 1] = (float) i__;
/* l1: */
    }
    astor_c(a, b, x, a1, b1, &m);

    for (i__ = 0; i__ <= 3; i__+= 3) {
         printf("\n  %5.1f %5.1f %5.1f \n", x[i__], x[i__+1], x[i__+2]);
    }
    return 0;
} /* main */


Результат:

        x  =   ( 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 )