Текст подпрограммы и версий 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 |