|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: 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.zip , astad_c.zip , astac_c.zip |
Тексты тестовых примеров tastar_c.zip , tastad_c.zip , tastac_c.zip |
Решение системы линейных алгебраических уравнений с теплицевой матрицей.
Решается система А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. )