Скорость моделирования нелинейного решателя в Modelica - PullRequest
2 голосов
/ 17 февраля 2020

Почему нелинейный решатель Modelica oneSolveNonlinearEquation требует больше времени для решения нелинейного уравнения, чем традиционная итерационная схема с фиксированной точкой (FPI)? Уравнение

y= arctan(1-x/1+x)-x 

, решаемое с помощью решателя oneSolveNonlinearEquation (который в основном использует метод Брента), решает приведенное выше уравнение за 6 итераций, тогда как традиционный итерационный подход требует 111 итераций. Тем не менее, время процессора, занимаемое итеративной схемой, меньше, чем время, используемое решателем oneSolveNonlinearEquation (см. Изображение).

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

CPU Time of nonlinear equation solved by Brent's method (oneSolveNonlinearEquation solver) and typical fixed point iterative (FPI) scheme

1 Ответ

4 голосов
/ 18 февраля 2020

Различные root методы поиска имеют разные свойства. Скорость сходимости всего одна, и ее можно посчитать по количеству итераций или по времени процессора. И то, и другое будет в значительной степени зависеть от начальных значений, кривизны и монотонности функции, границ, стоимости для оценки функции, доступности аналитических c производных и c. Другими интересными свойствами могут быть гарантия сходимости или необходимость в производных .
Статья в Википедии о root алгоритмах поиска дает хороший обзор преимуществ и недостатков различных методов:

Если для вашего особого случая один метод работает намного лучше, чем другие, вам следует просто реализовать и использовать его! Будьте осторожны при тестировании, очень легко найти примеры, где каждый метод может проявить себя. По этой причине вам следует протестировать каждый алгоритм на различных функциях, возможно, на 10 разных, и каждый с разными интервалами. Бисекция будет работать хуже для той же функции, но с большим интервалом запуска. Brent - хороший и проверенный метод, поэтому он используется в MSL. Вы даже можете подумать об отправке запроса на извлечение в MSL и добавить альтернативы.

...