|
Текст подпрограммы и версий afg0r_c.zip , afg0d_c.zip , afg0c_c.zip |
Тексты тестовых примеров tafg0r_c.zip , tafg0d_c.zip , tafg0c_c.zip |
Треугольное разложение вещественной матрицы методом Гаусса без выбора ведущего элемента.
Выполняется факторизация м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 |