|
Текст подпрограммы и версий aig5r_c.zip aig5d_c.zip |
Тексты тестовых примеров taig5r_c.zip taig5d_c.zip |
Модификация обратной матрицы после изменения одного элемента исходной матрицы
Пусть известна обратная матрица AI = A - 1, где A - вещественная квадратная матрица порядка N. Пусть матрица AM получена из матрицы A увеличением элемента ai j на величину D. Подпрограмма aig5r_c выполняет такую модификацию матрицы AI, что в результате формируется матрица AIM = AM - 1 без непосредственного обращения матрицы AM
int aig5r_c (real *ai, integer *n, integer *i__, integer *j,
real *d__, real *aim)
Параметры
| ai - | вещественный двумерный массив размеров n на n, в котором задается известная матрица, обратная к исходной матрице A; |
| n - | порядок матрицы AI (тип: целый); |
| i, j - | заданные номера строки и столбца элемента ai j исходной матрицы A, значение которого увеличивается на величину d (тип: целый); |
| d - | заданное значение константы, на которую увеличивается элемент ai j (тип: вещественный); |
| aim - | вещественный двумерный массив размеров n на n, в котором помещается модифицированная обратная матрица |
Версии
| aig5d_c - | модификация обратной матрицы после изменения одного элемента исходной матрицы в режиме удвоенной точности; при этом параметры ai, d и aim должны иметь тип double |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void)
{
/* Initialized data */
static float ai[4] /* was [2][2] */ = { -2.f,1.5f,1.f,-.5f };
/* Local variables */
extern int aig5r_c(float *, int *, int *, int *, float *, float *);
static float d__;
static int i__, j, n;
static float aim[4] /* was [2][2] */;
n = 2;
i__ = 1;
j = 2;
d__ = 3.f;
aig5r_c(ai, &n, &i__, &j, &d__, aim);
for (i__ = 0; i__ <= 2; i__ += 2) {
printf("\n %16.7e %16.7e \n", aim[i__], aim[i__+1]);
}
return 0;
} /* main */
Результаты:
| -0.363636 0.454545 |
aim = |
| 0.272727 -0.0909091 |