Каковы лучшие библиотеки или программное обеспечение для численного решения нелинейной системы?

У меня есть система из 8 полиномиальных уравнений 7-го класса, восьми в восьми переменных с ограничениями (минимальные и максимальные допустимые значения).

По вашему опыту и знаниям, что является наиболее эффективным «пакетом» для решения подобных проблем?
Mathematica, Matlab, математические библиотеки в C ++ / Java, …

Я попробовал какой-то наивный подход, но с плохими результатами ….
Так что теперь я стараюсь быть осторожным (насколько это возможно)

Большое спасибо

2

Решение

Вы не говорите, если это проблема с постоянными (известными) коэффициентами, или если коэффициенты являются символическими. И я предполагаю, что когда вы говорите полиномы 7-го класса, я предполагаю, что вы имеете в виду степень полинома.

Что ж, давайте начнем с одного факта. Полином 5-й степени или выше с общими коэффициентами не будет иметь аналитического решения (в общем). Вы всегда можете повезти, но не ожидайте решения. Если коэффициенты являются символическими, тогда ожидайте неприятности, когда вы поднимаетесь выше 4-й степени.

У вас есть система полиномов. Например, предположим, у нас есть два квадратных уравнения с двумя переменными? Мы можем решить одну из них, исключив эту переменную, а затем заменить ее на другую. В итоге мы получим уравнение четвертой степени в оставшейся переменной. Решите для 4 решений.

Но что, если у нас есть большие системы или многочлены более высокого порядка? Общее правило заключается в том, что схема исключения и решения будет эффективно сводиться к конечному уравнению, порядок которого эквивалентен произведению порядков ваших уравнений. Таким образом, система из 8 полиномов, каждый из которых имеет степень 7, будет эквивалентна решению полинома 56 градусов. Если коэффициенты постоянны и известны, то в теории мы могли бы использовать искатель корней многочлена некоторого рода. Есть много из них, которые могут дать числовые корневые решения. Но если коэффициенты являются символическими, и вам нужно символическое решение, или если вы хотите аналитическое решение, то вы почти наверняка застряли.

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

И, конечно, вы ограничиваете решения. Это не так сложно, в том смысле, что вы можете просто исключить все решения, которые выходят за границы, если вы ищете числовые решения.

2

Другие решения

У меня есть некоторый опыт решения уравнений со всеми пакетами программного обеспечения и языками, которые вы упомянули.

Наиболее эффективным для программиста является Mathematica, с Matlab плюс Symbolic Math Toolbox, который не сильно отстает. Что касается проблемы скромных размеров и сложности, которую вы цитируете, я не думаю, что вы должны быть обеспокоены эффективностью выполнения, ни Mathematica, ни Matlab не обанкротятся, решая такие проблемы.

Обратите внимание, что этот ответ является субъективным, как и вопрос (в определенной степени).

1

По вопросам рекламы [email protected]