|
Текст подпрограммы и версий ast4r_c.zip , ast4d_c.zip |
Тексты тестовых примеров tast4r_c.zip , tast4d_c.zip |
Решение разреженной линейной системы с верхней треугольной матрицей с единичной диагональю, представленной в формате RR (U) U.
Описание формата RR (U) U приведено в описании подпрограммы am21r_c (индекс 18.8.16).
Пусть разреженная верхняя треугольная матрица U порядка N с единичной диагональю задана в строчном формате RR (U) U. Требуется найти решение линейной системы UX = B.
Решение систем такого вида осуществляется обратной подстановкой по следующим расчетным формулам:
xn = bn
n
xi = bi - ∑ ui k xk , i = n - 1, ..., 2, 1
k= i +1
int ast4r_c (integer *iu, integer *ju, real *un, real *b,
integer *n, real *x)
Параметры
|
iu, ju, - un | заданные портрет и ненулевые элементы верхней треугольной матрицы U с единичной диагональю в формате RR (U) U; |
| b - | вещественный одномерный массив длины n, содержащий компоненты вектора правой части системы; |
| n - | заданный порядок системы (тип: целый); |
| x - | вещественный одномерный массив длины n, содержащий компоненты вычисленного вектора решения. |
Версии
| ast4d_c - | решение разреженной линейной системы с верхней треугольной матрицей с единичной диагональю в режиме удвоенной точности; при этом параметры un, b и x должны иметь тип double. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void)
{
/* Initialized data */
static int iu[5] = { 1,2,3,4,4 };
static int ju[3] = { 4,3,4 };
static float un[3] = { 1.f,1.f,1.f };
static float b[4] = { 1.f,1.f,1.f,1.f };
/* Local variables */
extern int ast4r_c(int *, int *, float *, float *, int *, float *);
static int n;
static float x[4];
n = 4;
ast4r_c(iu, ju, un, b, &n, x);
printf("\n %5.0f %5.0f %5.0f %5.0f \n", x[0], x[1], x[2], x[3]);
return 0;
} /* main */
Результаты: x = (0, 1, 0, 1)