Как инвертировать определенную подматрицу?

Вопрос или проблема

Предположим, у меня есть матрица чисел, как вот эта, в ячейках F2 до I5:

a_1 a_2 a_3 a_4 x
b_1 b_2 b_3 b_4 y
c_1 c_2 c_3 c_4 z
d_1 d_2 d_3 d_4 w

Предположим, что я хочу решить систему уравнений, заданную

a_1 a_3 a_4 x
c_1 c_3 c_4 z
d_1 d_3 d_4 w

Обратите внимание, что вторая матрица является первой, если мы исключим второй ряд и второй столбец.

Я хочу решить систему уравнений, заданную второй матрицей, используя MMULT и MINVERSE. Однако MINVERSE не позволяет мне выбрать нужные значения из первой матрицы, поскольку требует массив в качестве входных данных.

Одним из вариантов является ручное написание второй матрицы на основе первой и соответствующее решение. Хотя это работает, это кажется громоздким. Есть ли способ использовать MMULT и MINVERSE для решения системы уравнений, заданной второй матрицей, без явного написания ее (то есть указания MINVERSE, какие ячейки выбирать из первой матрицы)?

Я также пробовал функцию сортировки, но это нарушает многие формулы в моей таблице, поэтому это не вариант.

Так что я полагаю, что мой вопрос: как я могу инвертировать конкретную подсистему матрицы?

Если у вас есть Excel365, вы можете комбинировать функции CHOOSECOLS и CHOOSEROWS, чтобы получить желаемые результаты. Эти функции позволяют выбирать столбцы и строки соответственно из данного массива.

Попробуйте:

=CHOOSECOLS(CHOOSEROWS(C4:G7,1,3,4),1,3,4,5)

ИЛИ

=CHOOSEROWS(CHOOSECOLS(C4:G7,1,3,4,5),1,3,4)

Вы можете рассмотреть проблему более широко и определить функцию LAMBDA, которая вернет массив с опущенной строкой и столбцом с заданными числами. Я приведу два варианта определения такой функции:

=LAMBDA(data,r,c, FILTER(FILTER(data, SEQUENCE(ROWS(data))<>r), SEQUENCE(,COLUMNS(data))<>c))
=LAMBDA(data,r,c, MAKEARRAY(ROWS(data)-1, COLUMNS(data)-1, LAMBDA(x,y, INDEX(data, IF(x<r,x,x+1), IF(y<c,y,y+1)))))

Функция может быть названа, например, SUBMATRIX и вызываться с тремя аргументами: диапазон данных, номер строки для удаления, номер столбца для удаления.
Результат такой функции может быть аргументом для других массивных функций.

Подматрица

Ответ или решение

Чтобы инвертировать определённую подматрицу в Excel без явного указания элементов, вы можете воспользоваться функциями, доступными в Excel 365, а именно функциями CHOOSEROWS и CHOOSECOLS. Этот подход позволяет вам удобно работать с матрицами и извлекать необходимые строки и столбцы, что значительно упрощает процесс.

Шаги для Инверсии Подматрицы

1. Определите Исходную Матрицу:

Предположим, у вас есть исходная матрица, расположенная в диапазоне ячеек F2:I5:

a_1 a_2 a_3 a_4 x
b_1 b_2 b_3 b_4 y
c_1 c_2 c_3 c_4 z
d_1 d_2 d_3 d_4 w

2. Определите Подматрицу для Инверсии:

Вы хотите инвертировать подматрицу, которая включает некоторые строки и столбцы из исходной матрицы. В вашем случае, вы хотите избавиться от второй строки и второй колонки.

3. Использование Функции CHOOSEROWS и CHOOSECOLS:

Для получения нужной подматрицы воспользуйтесь следующими формулами:

  • Получение подматрицы:
    =CHOOSECOLS(CHOOSEROWS(F2:I5, 1, 3, 4), 1, 3, 4)

    Или:

    =CHOOSEROWS(CHOOSECOLS(F2:I5, 1, 3, 4, 5), 1, 3, 4)

Эти формулы создадут новую матрицу, которая будет представлять собой исходную матрицу за вычетом указанной строки и колонки.

4. Инверсия Подматрицы

Теперь после того как вы получили подматрицу, вы можете использовать функцию MINVERSE для инверсии этой подматрицы:

=MINVERSE(CHOOSEDATA(F2:I5, 1, 3, 4))

5. Создание Пользовательской Функции с Использованием LAMBDA

Для более гибкого подхода вы можете создать пользовательскую функцию с использованием LAMBDA, чтобы избежать многократного использования одной и той же формулы. Пример функции:

=LAMBDA(data, r, c, FILTER(FILTER(data, SEQUENCE(ROWS(data)) <> r), SEQUENCE(, COLUMNS(data)) <> c))

Это позволит вам легко вызывать эту функцию с параметрами диапазона данных, номера строки и номера столбца, которые хотите исключить.

Заключение

Использование возможностей, предлагаемых Excel 365, значительно облегчает задачу работы с матрицами. Функции CHOOSEROWS и CHOOSECOLS, а также определение пользовательских функций с LAMBDA позволяют вам эффективно управлять данными, минимизируя необходимость в ручном вводе и избегая ошибок, связанных с неправильным размещением данных в ячейках.

Оцените материал
Добавить комментарий

Капча загружается...