Текст подпрограммы и версий
afg0r_c.zip , afg0d_c.zip , afg0c_c.zip
Тексты тестовых примеров
tafg0r_c.zip , tafg0d_c.zip , tafg0c_c.zip

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

Назначение

Треугольное разложение вещественной матрицы методом Гаусса без выбора ведущего элемента.

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

Выполняется факторизация мaтpицы А вида А = LU , где L - нижняя, U - верхняя треугольные матрицы. Матрица L имеет единичные диагональные элементы.

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

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

    int afg0r_c (real *a, integer *n)

Параметры

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

Версии

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

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

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

  1. 

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

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

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

int main(void)
{
    /* Initialized data */
    static float pa[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 afg0r_c(float *, int *);
    static int i__;

#define pa_ref(a_1,a_2) pa[(a_2)*4 + a_1 - 5]

    afg0r_c(pa, &c__4);

    for (i__ = 1; i__ <= 4; ++i__) {
        printf("\n  %10.5f %10.5f %10.5f %10.5f \n",
           pa_ref(i__,1), pa_ref(i__,2), pa_ref(i__,3), pa_ref(i__,4));
    }
    return 0;
} /* main */


Результат:

                          | 7.900     5.600    5.700   -7.200 |
                          | 1.076  -10.825  -5.333   11.247 |
      pa_ref    =    | 0.544    -0.106  -6.870   14.415 |   , 
                          | 0.405      0.339   1.369  -17.323 |

это означает, что

                 | 1           0          0            0       |
                 | 1.076    1          0            0       |
      l    =    | 0.544   -0.106   1            0       |   , 
                 | 0.405    0.339   1.369     1       |
                 | 7.900    5.600   5.700   -7.200 |

                 | 0      -10.825  -5.333    11.247 |
      u   =    | 0        0           -6.870    14.415 |  .
                 | 0        0            0          -17.323 |