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