Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/as_htm_c/askar_c.htm
Дата изменения: Fri Dec 4 10:40:28 2015 Дата индексирования: Sun Apr 10 03:08:16 2016 Кодировка: Windows-1251 |
Текст подпрограммы и версий askar_c.zip , askad_c.zip , askac_c.zip |
Тексты тестовых примеров taskar_c.zip , taskad_c.zip , taskac_c.zip |
Решение системы линейных алгебраических уравнений с клеточно - теплицевой матрицей.
Решается система А*x = b, где А - клеточно - теплицева матрица, состоящая из L на L клеток общего вида размера М на М. Алгорифм эффективно использует специальный вид матрицы А.
С.Н.Воеводина. Решение системы уравнений с клеточно - теплицевыми матрицами. В сб. "Вычислительные методы и программирование", вып. 24., Изд-во МГУ, 1975.
int askar_c (real *a, real *x, real *r, integer *m, integer *l)
Параметры
a - | вещественный одномерный массив длины m2 на (2l - 1), в котором задается матрица системы следующим образом: массив a делится на 2l - 1 кусков длины m2. В i - ом куске, i = 1, ..., l, записывается i - ая клетка первой клеточной строки матрицы системы. В (l + i) - ом куске, i = 1, ..., l - 1, записывается (i + 1) - ая клетка первого клеточного столбца. Каждая клетка в своем куске записывается по столбцам; |
x - | вещественный одномерный массив длины m на l, в котором задается правая часть; на выходе из подпрограммы в x получается решение; |
r - | вещественный одномерный рабочий массив длины 2m2l + 4m2 + m; |
m - | порядок клетки (тип: целый); |
l - | клеточный порядок исходной матрицы (тип: целый). |
Версии
askad_c - | решение системы линейных алгебраических уравнений с комплексной клеточно - теплицевой матрицей, заданной с двойной точностью. |
askac_c - | решение системы линейных алгебраических уравнений с комплексной клеточно - теплицевой матрицей. |
Вызываемые подпрограммы
aig1r_c - aig1d_c aig1c_c | обращение матрицы методом Жордана с выбором по столбцу. |
Замечания по использованию
1. |
При обращении к подпрограмме askad_c параметры a, x, r имеют тип double. | |
2. |
При обращении к подпрограмме askac_c параметры a, x, r имеют тип complex. | |
3. | В подпрограммах askar_c, askad_c, askac_c используются соответствующие версии служебной подпрограммы askbr_c. |
int main(void) { /* Initialized data */ static float a[12] = { 1.f,2.f,2.f,1.f,2.f,4.f,4.f,2.f,2.f,4.f,4.f,2.f }; static float x[4] = { 9.f,9.f,9.f,9.f }; /* Local variables */ static int l, m, i__; static float r__[34]; extern int askar_c(float *, float *, float *, int *, int *); m = 2; l = 2; askar_c(a, x, r__, &m, &l); for (i__ = 0; i__ <= 2; i__+= 2) { printf("\n %16.8e %16.8e \n", x[i__], x[i__+1]); } return 0; } /* main */ Результат: x = (1., 1., 1., 1.)