У меня есть система обыкновенных дифференциальных уравнений - 7 уравнений и ~ 30 параметров, управляющих их поведением, как часть математической модели передачи болезни. Я бы хотел , чтобы найти устойчивые состояния для этих уравнений Changing dx/dt = rest of the equation
для 0 = equation
каждого из уравнений делает простую проблему алгебры. Это можно сделать вручную, но я смехотворно плох в таких вычислениях.
Я пытался использовать Mathematica, которая может обрабатывать меньшие версии этой проблемы ( см. Здесь ), но Mathematica останавливает эту проблему. Есть ли более эффективный / эффективный способ приблизиться к этому? Более эффективная символическая математическая система? Другие предложения?
Несколько обновлений (21 марта):
- Цель действительно состоит в том, чтобы решить их символически - числовые ответы хороши, но на данный момент конечной целью является символическая версия.
- Существует как минимум одно равновесие. На самом деле я не сел и не доказал это, но по замыслу у него должен быть хотя бы один тривиальный, в котором ни один не заражен в начале. Может быть, ничего кроме этого, но это сделало бы меня таким же довольным, как и все остальное.
- Ниже приведен фактический набор уравнений, о которых идет речь.
Таким образом, я ищу символические выражения для решений системы 7 квадратных уравнений в 7 переменных.
Ответы:
Похоже, что уравнения, с которыми вы имеете дело, являются полиномиальными после очистки знаменателей. Это хорошо (трансцендентные функции часто немного сложнее решать алгебраически). Однако это не гарантия того, что ваши уравнения имеют решение в замкнутой форме. Это важный момент, который многие люди на самом деле не «понимают», даже если они знают это теоретически, поэтому стоит повторить: существуют довольно простые системы полиномиальных уравнений, для которых нет способа дать решения в терминах (N th) корни и т. д. Известный пример (по одной переменной) Икс5- х + 1 = 0 , Смотрите также эту страницу википедии .
Сказав это, конечно, есть также системы уравнений, которые можно решить, и стоит проверить, является ли ваша система одной из них. И даже если ваша система не может быть решена, все же можно найти форму для вашей системы уравнений, которая в некотором смысле проще. Например, найдите одно уравнение, включающее только первую переменную (даже если оно не может быть решено алгебраически), затем второе уравнение, включающее только первую и вторую переменную и т. Д. Существует несколько конкурирующих теорий о том, как найти такие «нормальные формы» полиномиальных систем; наиболее известной является теория базиса Гребнера, а конкурирующей является теория регулярных цепей.
В системе компьютерной алгебры Maple (полное раскрытие: я работаю на них) оба они реализованы.
solve
Команда , как правило , вызывает метод базисов Groebner, я считаю, что и быстро перемалывает к остановке на моем ноутбуке. Я попытался запустить обычное вычисление цепочек, и это занимает больше времени, чем у меня есть терпение, но, похоже, не так плохо, как память. Если вам интересно, страница справки для команды, которую я использовал, находится здесь , и вот код, который я использовал:источник
Профессиональный способ - написать свои уравнения на языке моделирования, таком как AMPL или GAMS, и решить их с помощью решателя, такого как IPOPT.
AMPL - это коммерческая система, но бесплатная версия AMPL для студентов может создавать проблемы с 300 уравнениями и переменными.
Если вы просто хотите решить одну или несколько проблем, вы можете решить их в режиме онлайн бесплатно с помощью сервера NEOS для оптимизации - просто отправьте описание AMPL и подождите, пока ответ не будет возвращен вам.
Если вам необходимо повторно решить такие системы в рамках более масштабного исследования (например, для изменения параметров), вам следует загрузить IPOPT (программное обеспечение по очень либеральной лицензии).
Редактировать: Обратите внимание, что приемлемые символьные решения обычно ограничиваются довольно небольшими задачами - обычно размер базиса Гребнера растет с ростом числа переменных или степени полиномов, а время обработки еще больше. Таким образом, ожидание часа или более с Mathematica является признаком (хотя и не доказательством) того, что ваше символическое решение было бы совершенно непостижимым. Более того, оценка такого длинного выражения, вероятно, будет численно нестабильной, поэтому для получения значимых результатов вам потребуется высокая точность оценки.
источник
Выписать полное решение невозможно в пределах разумного. Но вот некоторые уравнения, чтобы немного уменьшить систему:
Уравнение 7 является линейным по всем переменным и может быть переставлено для решенияD :
Полученное выражение предполагает, что мы должны попытаться найти оставшиеся переменные в терминахСA а также Сп ; поскольку у нас всего 6 независимых уравнений, лучшее, что мы можем сделать, - это свести систему к одному уравнению с двумя переменными.
К счастью, сложение уравнений 3 и 5 дает уравнение, которое является линейным по всем переменным и может быть решено дляUA или Uп , Сложение уравнений 4 и 6 вместе также дает уравнение, которое является линейным по всем переменным и может быть решено дляUA или Uп (что не было решено при сложении уравнений 3 и 5 вместе).
На данный момент мы должны иметь выражения дляUA а также Uп с точки зрения ЧАС , СA , а также Сп (потому что вы можете устранить D используя выражение выше). Мы использовали уравнения 1, 2, 5, 6 и 7; мы сохраним уравнения 3 и 4, потому что они проще.
Мы можем использовать уравнение 3 или 4 для решенияЧАС с точки зрения СA а также Сп , Тогда, делая все необходимые замены, оставшееся уравнение должно быть только в терминахСA а также Сп , Корни этого уравнения будут определять стационарные состояния системы; может быть или не быть возможно найти эти корни символически.
Удачи!
источник
Это зависит от структуры ваших уравнений.
Если вы ищете все стационарные состояния вашего набора уравнений и можете перегруппировать их, как говорит ЭрикП, в полиномы, вы можете использовать методы из реальной алгебраической геометрии для вычисления всех численных решений с высокой точностью. Бертини - один из таких пакетов, о котором я знаю, но есть и другие. Несколько лет назад я отправился на конференцию в Нотр-Дам, где Бертини использовался для нахождения устойчивых состояний ОДУ из химической кинетики; Бертини был разработан в Нотр-Дам.
Другая возможность заключается в использовании методов, предложенных в «Негладком тесте исключения для нахождения всех решений нелинейных уравнений» М. Д. Стубером, В. Кумаром и П. И. Бартоном, BIT Численная математика 50 (4), 885-917, DOI: DOI: 10.1007 / s10543-010-0280-6 ; эти методы не требуют, чтобы система уравнений была полиномами. Пол Бартон - мой советник, а Мэтт Стубер - мой коллега; если хотите, я могу попросить у него программное обеспечение и отправить его вам. В работе используются методы из глобальной оптимизации и интервальной арифметики (в ней цитируется книга АрнольдНумаера), а также метод Ньютона. Преимущество этого метода заключается в том, что он должен найти все решения; недостаток в том, что это сложно.
В случае, если это не ясно, ArnoldNeumaier предлагает вместо решенияF ( x )= 0 непосредственно используя что-то вроде метода Ньютона (который обычно будет работать, если вы дадите ему хорошее начальное предположение, достаточно близкое к решению), вы решаете
гдеS это некоторый выполнимый набор, определенный ограничениями вашей проблемы вместо того, чтобы пытаться ее решить. На очень грубом уровне, использование гладкого решателя нелинейного программирования во многом похоже на использование метода Ньютона, с дополнительным алгоритмическим изощрением для надежности и производительности. IPOPT - действительно хорошее программное обеспечение для этой цели; Есть целый ряд других решателей (просто посмотрите на список доступных решателей для GAMS , AMPL или NEOS . Если вы выберете такой метод, помните о нескольких предостережениях:
источник
Я бы предложил посмотреть на гомотопический метод. Хотя это и не символично, оно даст все решения вашей проблемы. Для легкой библиотеки, чтобы проверить:
http://homepages.math.uic.edu/~jan/PHCpack/phcpack.html
источник