Документ взят из кэша поисковой машины. Адрес оригинального документа : http://num-anal.srcc.msu.su/lib_na/cat/as_htm_c/astar_c.htm
Дата изменения: Fri Dec 4 11:22:24 2015
Дата индексирования: Sun Apr 10 01:41:48 2016
Кодировка: Windows-1251
БЧА НИВЦ МГУ. ASTAR_C. Решение систем с матрицами специального вида (невырожденными)
Текст подпрограммы и версий
astar_c.zip , astad_c.zip , astac_c.zip
Тексты тестовых примеров
tastar_c.zip , tastad_c.zip , tastac_c.zip

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

Назначение

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

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

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

С.Н.Воеводина. Решение системы уравнений с клеточно - теплицевыми матрицами. В сб. "Вычислительные методы и программирование", вып. 24, Изд-во МГУ, 1975.

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

    int astar_c (real *a, real *x, real *r, integer *m)

Параметры

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

Версии

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

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

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

  1. 

При обращении к подпрограмме askad_c параметры a, x, r имеют тип double.

  2. 

При обращении к подпрограмме askac_c параметры a, x, r имеют тип complex.

  3.  В подпрограммах astar_c, astad_c, astac_c используются соответствующие версии служебной подпрограммы ast0r_c.

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

int main(void)
{
    /* Initialized data */
    static float a[7] = { 1.f,2.f,3.f,4.f,4.f,3.f,2.f };
    static float x[4] = { 10.f,10.f,10.f,10.f };

    /* Local variables */
    static int m, i__;
    static float r__[8];
    extern int astar_c(float *, float *, float *, int *);

    m = 4;
    astar_c(a, x, r__, &m);

    for (i__ = 1; i__ <= 4; ++i__) {
         printf("\n  %16.7e \n", x[i__-1]);
    }
    return 0;
} /* main */


Результат:

      x  =   ( 1., 1., 1., 1. )