В таблице приведены результаты сравнения наиболее трудных для современных решателей ОДУ жестких систем ОДУ с многопериодным решением. Основным требованием к решателю ОДУ при тестировании являлось задание всех исходных данных в типе данных double представления вещественных чисел языка Си, решатель должен быть рекомендуемым для решения жестких систем ОДУ, задаваемая решателю относительная точность получаемых решений должна быть 0.001, все остальные параметры решателя устанавливались по умолчанию.
Тест | Решатель ОДУ | |||
SADEL |
Mathcad |
MATLAB |
Maple |
|
Тест 1. Уравнения Ван Дер Поля, MU=10^6 | + | + | + | — |
Тест 1. Уравнения Ван Дер Поля, MU=10^9 | + | — | — | — |
Тест 2. Высокодобротный фильтр kt=1, ki=1, ku=0.01 | + | — | — | + |
Тест 2. Высокодобротный фильтр kt=10^-104, ku=1, ki=1 | + | — | — | — |
Тест 3. Локально-неустойчивая система ОДУ MU=10^6 | + | + | — | — |
Тест 4. Моделирование свечения лазера | + | + | + | — |
Знак минус означает невозможность получения решения или (в большинстве случаев) качественно неверный результат без всякого предупреждения о возможных ошибках. При значительном увеличении жесткости и значений коэффициентов тестовых систем ОДУ из таблицы соответствующие решатели программных комплексов Mathcad, MATLAB и Maple дают неверный результат, как правило, без всякого сообщения об ошибке, при этом решатель SADEL дает правильное решение с требуемой точностью. Ниже приведено краткое описание данных трудных тестов.
Тест 1
Пример расчета жесткой системы ОДУ 2-го порядка (MU – параметр жесткости) – осциллятор Ван дер Поля.
Сравнение программ было проведено для часто встречающихся на практике значений жесткости MU=10^6 и MU=10^9. Пример неверного решения этого теста с MU=10^9 в пакете Mathcad (версия 2007 г.):
Тест 2
Пример моделирования одной из тестовых электронных схем с многопериодным решением (линейная система ОДУ 5-го порядка) – тест Маничева.
Сравнение программ было приведено для часто встречающихся на практике параметров масштабных коэффициентов по времени, току и напряжению: kt=1, ki=1, ku=0.01 , а также для значений параметров kt=10^-104, ki=1, ku=1, которые дают трудный тест для современных решателей ОДУ. Пример неверного решения этого теста в пакете Mathcad (версия 2007 г.):
Тест 3
Нелинейная жесткая система ОДУ, имеющая локально-неустойчивое решение – тест Скворцова.
Сравнение программ было проведено для часто встречающегося на практике значения жесткости MU=10^6. Пример неверного решения этого теста в пакете MATLAB (версия 2007 г.):
Тест 4
Нелинейная жесткая система ОДУ для моделирования процессов реального лазера – тест Евстифеева.
Сравнение решателей ОДУ было проведено для параметров реального работающего лазера. Пример неверного решения этого теста в пакете Maple (версия 2007 г.):