Подпрограмма: ash1r_c
Назначение
Решение системы линейных алгебраических уравнений с
положительно определенной симметричной матрицей, записанной в
компактной форме, методом квадратного корня (методом
Холецкого).
Математическое описание
Подпрограмма ash1r_c вычисляет решение системы N линейных
алгебраических уравнений А*x = b, где
А - положительно определенная симметричная матрица,
b - одномерный вектор правой
части решаемой системы, методом квадратного корня (методом
Холецкого). Матрица А задается в компактной форме.
В.В.Воеводин, Численные методы алгебры (теория и
алгорифмы), Наука, М., 1966.
Использование
int ash1r_c (real *a, real *b, real *x, integer *n,
integer *l, integer *ierr)
Параметры
a -
|
вектор длины n на (n + 1)/2, в котором
содержится заданная матрица, записанная в компактной форме
(тип: вещественный);
|
b -
|
вектор длины n, в котором задается правая часть
исходной системы (тип: вещественный);
|
x -
|
вектор длины n, в котором содержится решение
исходной системы (тип: вещественный);
|
n -
|
порядок матрицы (тип: целый);
|
l -
|
целая переменная, которая задает режим работы
подпрограммы; при этом:
|
l = 1 -
|
если система с данной матрицей решается впервые;
|
l ≠ 1 -
|
если система с данной матрицей решается повторно.
|
ierr -
|
целая переменная, служащая для сообщения об
ошибках, обнаруженных в ходе работы подпрограммы; при этом:
|
ierr=65 -
|
если заданная матрица не является положительно определенной.
|
Версии
ash1d_c -
|
решение системы линейных алгебраических
уравнений с положительно определенной симметричной
матрицей, записанной в компактной форме,
методом квадратного корня (методом Холецкого) с
повышенной точностью.
|
ash1c_c -
|
решение системы линейных алгебраических
уравнений с положительно определенной эрмитовой
матрицей, записанной в компактной форме, методом
квадратного корня (методом Холецкого) .
|
Вызываемые подпрограммы
utas10_c -
|
подпрограмма выдачи диагностических сообщений
при работе подпрограмм ash1r_c и ash1c_c;
|
utas11_c -
|
подпрограмма выдачи диагностических сообщений
при работе подпрограммы ash1d_c;
|
afh1r_c -
|
подпрограмма, реализующая треугольное
разложение положительно определенной матрицы методом
квадратного корня (методом Холецкого) с
компактной формой представления;
|
afh1d_c - afh1c_c
|
подпрограммы, реализующие треугольное разложение положительно
определенной матрицы методом
квадратного корня (методом Холецкого) с
компактной формой представления с повышенной
точностью и эрмитовой матрицы соответственно.
|
Замечания по использованию
|
При работе подпрограммы исходная матрица A не
сохраняется. На месте матрицы A помещается ее треугольное
разложение, полученное подпрограммами afh1r_c, afh1d_c и
afh1c_c.
Подпрограммы ash1r_c и ash1d_c позволяют использовать
вместо параметра x параметр b. Таким образом, в результате
работы подпрограмм на место столбца правой части может
быть помещено вычисленное решение.
Для подпрограммы ash1d_c параметры a, b, x должны иметь
тип double, а для ash1c_c - тип complex.
|
Пример использования
int main(void)
{
/* Initialized data */
static float a[6] = { 1.f,2.f,20.f,3.f,26.f,70.f };
static float b[3] = { 2.f,0.f,-35.f };
/* Local variables */
static int ierr, i__;
extern int ash1r_c(float *, float *, float *, int *, int *, int *);
static float x[3];
for (i__ = 1; i__ <= 6 ; ++i__) {
printf("\n %9.2e \n", a[i__-1]);
}
for (i__ = 1; i__ <= 3 ; ++i__) {
printf("\n %9.2e \n", b[i__-1]);
}
ash1r_c(a, b, x, &c__3, &c__1, &ierr);
for (i__ = 1; i__ <= 3 ; ++i__) {
printf("\n %9.2e \n", x[i__-1]);
}
printf("\n %5i \n", ierr);
return 0;
} /* main */
Результаты:
x = (3., 1., -1.)
ierr = 0