Текст подпрограммы и версий astor_c.zip , astod_c.zip |
Тексты тестовых примеров tastor_c.zip , tastod_c.zip |
Решение системы линейных алгебраических уравнений 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 )