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