Как я могу решить систему линейных уравнений в Excel?

У меня есть система из 22 линейных уравнений (ровно 22 уравнения и 22 неизвестных), которые динамически генерируются в электронной таблице Excel. Есть ли способ заставить Excel решить систему и вывести значение для каждой из неизвестных переменных?

Другой вопрос SO содержит много полезной информации об алгоритмах, используемых для решения таких уравнений. В частности , правило Крамера выглядит многообещающе, но я не уверен, как реализовать его в Excel.

Любая помощь приветствуется!

6 ответов

Решение

Эта страница дает следующий простой метод:

  1. Введите матрицу коэффициентов в диапазоне nxn.

  2. Введите в вектор констант в n-высокий столбец. Выберите пустой столбец высотой n. Важно, чтобы вы выбрали не только одну ячейку.

  3. Введите =MMULT(MINVERSE(coefficients_matrix_range), constants_vector_range) в текстовом поле формулы и нажмите [CTRL][SHIFT][ENTER]. Важно, чтобы вы не просто нажимали [ENTER].

Это должно работать адекватно, так как у вас есть только небольшая система (22x22). Хотя в идеале вы бы не обращали матрицу напрямую, в этом случае это не должно иметь значения.

Тебе определенно не нужно правило Крамера. Из-за его довольно плохих числовых свойств, это больше теоретический, чем практический интерес.

Функция Excel LINEST должна это делать и во многих случаях будет возвращать лучшие результаты, чем MMULT(MINVERSE(...)...).

Также могут оказаться полезными функции LOGEST, GROWTH и TREND.

А как насчет http://code.msdn.microsoft.com/solverfoundation? Кажется, я помню, что в документации, поставляемой с экспресс-версией, есть несколько примеров меньшего набора уравнений для одновременного выполнения.

Вы никогда не должны учитывать правило Крамера для решения линейной системы! Это настолько неэффективно, что это невозможно осуществить даже для небольших систем.

Excel не является правильным инструментом для решения линейной системы. На вашем месте я написал бы простой скрипт на python, который читает файл Excel, решал уравнение (с помощью numpy) и сохранял результат в файле, который может прочитать Excel. (даже лучше, избегайте Excel вообще, если можете).

Если у вас есть какие-либо проблемы с вычислением обратных матриц, например, чрезмерный / недостаточный поток / усечение и т. Д., Вы всегда можете использовать Солвер - иначе получите копию числовых рецептов на С и переведите на VBA.

Это может быть решатель линейных уравнений, который мы можем сделать с математическим решателем, используя математическое уравнение корня, находящееся между еще двумя числами экспонентной части решателя, но найти лучший способ решения линейных уравнений.

Другие вопросы по тегам