Вопрос или проблема
Предположим, у меня есть матрица чисел, как вот эта, в ячейках 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
позволяют вам эффективно управлять данными, минимизируя необходимость в ручном вводе и избегая ошибок, связанных с неправильным размещением данных в ячейках.