Текст подпрограммы и версий
aig1r_c.zip  aig1d_c.zip  aig1c_c.zip 
Тексты тестовых примеров
taig1r_c.zip  taig1d_c.zip  taig1c_c.zip 

Подпрограмма:  aig1r_c

Назначение

Обращение вещественной матрицы методом Жордана с выбором ведущего элемента по столбцу.

Математическое описание

Заданная матрица А  N - го порядка приводится к единичной матрице Е последовательностью элементарных преобразований Жордана  L1, L2, ..., LN  и матрицей перестановок Р так, что

     LNLN-1 ... L1PA = E, 

при этом  А-1 = LNLN-1 ... L1Р.  Матрица Р осуществляет перестановку строк матрицы А и обеспечивает стратегию выбора ведущего элемента по столбцам.

В.В.Воеводин, Р.В.Петрина, Комплекс алгоритмов, основанных на преобразованиях типа Гаусса, в пакете линейной алгебры, Сб. "Численный анализ на ФОPТPАНе", вып.3, Изд-во МГУ, 1973.

Использование

    int aig1r_c (real *a, integer *s, integer *n)

Параметры

a - двумерный n на n массив, в котором задается исходная матрица; по окончании работы подпрограммы в массиве a запоминается вычисленная обратная матрица (тип: вещественный);
s - одномерный массив длины n используемый подпрограммой как рабочий (тип: целый);
n - заданный порядок матрицы (тип: целый).

Версии

aig1d_c - обращение матрицы, заданной с удвоенной точностью, методом Жордана с выбором ведущего элемента по столбцу.
aig1c_c - обращение комплексной матрицы методом Жордана с выбором ведущего элемента по столбцу.

Вызываемые подпрограммы : нет

Замечания по использованию

  1. 

В подпрограмме aig1d_c массив a имеет тип double.

  2.  В подпрограмме aig1c_c массив a имеет тип complex.

Пример использования

int main(void)
{
    /* Initialized data */
    static float a1[16]  /* was [4][4] */ = { 7.9f,8.5f,4.3f,3.2f,5.6f,-4.8f,
                       4.2f,-1.4f,5.7f,.8f,-3.2f,-8.9f,-7.2f,3.5f,9.3f,3.3f };
    /* Local variables */
    extern int aig1r_c(float *, float *, int *);
    static float s[4];
    int i__;

    aig1r_c(a1, s, &c__4);

    for (i__ = 0; i__ <= 12; i__+=4) {
           printf("\n %15.5e %15.5e %15.5e %15.5e \n",
                   a1[i__], a1[i__+1], a1[i__+2], a1[i__+3]);
    }
    return 0;
} /* main */


Результат:

                   |  0.0505   0.0542   0.0062    0.0350 |
                   |  0.0518  -0.0846   0.0721  -0.0003 |
      a-1  =   | -0.0084   0.0432   0.0202  -0.1211 |
                   | -0.0497   0.0279   0.0790  -0.0577 |