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

StackOverflow https://stackoverflow.com/questions/2254349

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

  3. Тип, =MMULT(МИНИМАЛЬНОЕ ЗНАЧЕНИЕ (коэффициенты_матрикс_ранжа), константы_вектора_ранжа) в текстовом поле формулы и нажмите [CTRL][SHIFT][ВВОД].Важно чтобы вы не просто нажимали [ENTER].

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

Вам определенно не нужно правило Кремера.Из-за своих довольно плохих числовых свойств он представляет скорее теоретический, чем практический интерес.

Другие советы

Как насчет Фонд решателей Microsoft?Кажется, я помню, что в документации, поставляемой с экспресс-версией, есть пример меньшего набора одновременных уравнений.

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

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

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

Вам также могут пригодиться функции ЛИНГЕСТ, РОСТ и ТРЕНД.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top