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