Не могу использовать неявный решатель из OdeInt правильно в Xcode 7.3.1

Мне нужно решить некоторые жесткие обыкновенные дифференциальные уравнения, поэтому я узнал о неявных методах, которые предоставляет Odeint. Однако, когда я копирую и соблюдаю в Xcode пример в документации Odeint,
http://headmyshoulder.github.io/odeint-v2/doc/boost_numeric_odeint/tutorial/stiff_systems.html
(полный пример см. по ссылке «stiff_system.cpp» внизу страницы),
неявный метод rosenbrock4 требует около 40030 шагов для интеграции вместо 71, как утверждается в документации. Напротив, для метода runge_kutta_dopri5, который также применяется в примере для сравнения, я получаю ровно 1531 шаг, как в документации. Соответственно, неявный метод, конечно, требует гораздо больше времени для вычислений, чем метод runga_kutta, хотя пример должен продемонстрировать преимущество неявных методов над явными для этого особого случая жесткой задачи.
Теперь, если я скомпилирую код на другом компьютере с использованием компилятора g ++, я получу почти точный результат, а именно 74 шага для неявного метода, что очень близко к 71 предложенному в документации, но все еще не точному.

Кто-нибудь может объяснить, почему неявный метод не работает должным образом с Xcode 7.3.1 и что можно сделать, чтобы использовать его в Xcode назначенным способом?

-1

Решение

Итак, после некоторого разочаровывающего поиска, чтобы заставить odeint делать то, что он должен делать, я обнаружил, что все работает нормально, когда вы используете версию 1.59 библиотеки boost (содержащей odeint). Описанная проблема с методом rosenbrock4, по-видимому, существует только для более поздних версий 1.60 — 1.62. Таким образом, это определенно кажется проблемой с библиотекой, а не с xcode. Я сообщу об этой проблеме в odeint. В то же время, если вы столкнулись с той же проблемой, вы можете просто скачать boost 1.59, с которым все работает нормально.

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector