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