Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/am_htm_c/amz3r_c.htm
Дата изменения: Tue Mar 28 14:50:27 2006 Дата индексирования: Mon Oct 1 22:43:04 2012 Кодировка: Windows-1251 |
Текст подпрограммы и версий amz3r_c.zip , amz3d_c.zip , amz3c_c.zip |
Тексты тестовых примеров tamz3r_c.zip , tamz3d_c.zip , tamz3c_c.zip |
Преобразование ленточной матрицы, заданной в компактной форме, в полную форму представления.
Ленточная матрица А порядка N с NUС верхними и NLС нижними ко - диагоналями, заданная в компактной форме, преобразуется в полную форму представления. Таким образом, amz3r_c выполняет действие, обратное по отношению к подпрограмме amz2r_c.
int amz3r_c (real *a, integer *n, integer *nuc, integer *nlc, real *b)
Параметры
a - | вещественный двумерный массив размера n на (nuc + 1 + nlc), в котором задается ленточная матрица в компактной форме представления; |
n - | порядок матрицы (тип: целый); |
nuc - | число верхних ко - диагоналей (тип: целый); |
nlc - | заданное число нижних ко - диагоналей (тип: целый); |
b - | двумерный массив размера n на n, в котором запоминается исходная ленточная матрица в полной форме. |
Версии
amz3d_c - | преобразование ленточной матрицы, заданной в компактной форме с удвоенной точностью, в полную форму представления. |
amz3c_c - | преобразование комплексной ленточной матрицы, заданной в компактной форме, в полную форму представления. |
Вызываемые подпрограммы: нет.
Замечания по использованию
Массив b может занимать то же место в памяти, что и массив a (это означает, что первый элемент массива b может совпадать с первым элементом массива a). В подпрограмме amz3d_c параметры a и b должны иметь тип double. В подпрограмме amz3c_c параметры a и b должны иметь тип complex. |
int main(void) { /* Initialized data */ static float a[20] /* was [5][4] */ = { 0.f,0.f,3.1f,4.2f,5.3f,0.f,2.1f, 3.2f,4.3f,5.4f,1.1f,2.2f,3.3f,4.4f,5.5f,1.2f,2.3f,3.4f,4.5f,0.f }; /* Local variables */ extern /* Subroutine */ int amz3r_c(float *, int *, int *, int * , float *); static float b[25] /* was [5][5] */; static int n, nlc, nuc, i__; n = 5; nuc = 1; nlc = 2; amz3r_c(a, &n, &nuc, &nlc, b); for (i__ = 0; i__ <= 21; i__+=3) { printf("\n %16.7e %16.7e %16.7e \n", b[i__], b[i__ + 1], b[i__ + 2]); } printf("\n %16.7e \n", b[24]); return 0; } /* main */ Результаты: b = ( 1.1, 2.1, 3.1, 0., 0., 1.2, 2.2, 3.2, 4.2, 0., 0., 2.3, 3.3, 4.3, 5.3, 0., 0., 3.4, 4.4, 5.4, 0., 0., 0., 4.5, 5.5 )