Ошибка при моделировании с использованием решателя Ньютона в Dymola, но заканчивается успешно - PullRequest
0 голосов
/ 01 мая 2020

Я сталкиваюсь с ошибкой использования решателя Ньютона для решения нелинейного уравнения в Dymola, но симуляция заканчивается успешно, как и другой вопрос здесь ,
мой вопрос:
В списке из решателей, нет решателя ньютона, почему Димола использовал бы решатель ньютона? Димола выбирает решатель дассала только тогда, когда не работает ньютон?

enter image description here

1 Ответ

5 голосов
/ 04 мая 2020

Неявные решатели должны повторяться, чтобы найти решение, так как они используют неизвестные переменные для оценки результата. Эти переменные сначала оцениваются, а затем проверяются с использованием остаточного уравнения. Эта итерация должна выполняться на каждом этапе решателя и часто выполняется с помощью итерации Ньютона, поскольку это обещает хорошую производительность (некоторые slide-deck на этом и полная лекция ) , Одним из недостатков итераций Ньютона является то, что он может потерпеть неудачу при сильной нелинейности или неоптимальных значениях догадки. По этой причине в сообщении об ошибке указывается, что должны быть предоставлены лучшие «начальные значения».

Что могут сделать решатели, так это переключиться с хорошо работающей, но не всегда стабильной итерации Ньютона на что-то более медленное, но более надежный, как би-секция. В Dymola это даст вам предупреждение (к сожалению, записано как ERROR), но симуляция продолжается. Таким образом, ваша модель сложна в обращении, но решатель все еще может сделать это с некоторой дополнительной работой.

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

Если вы хотите избавиться от итерации Ньютона, вам нужно будет выбрать явный решатель (например, Euler, Rkfix, Dopri в Dymola). Но, вероятно, вам понадобятся очень маленькие шаги, чтобы успешно смоделировать модель - замедление моделирования.

...