При численном решении
обыкновенных дифференциальных уравнений (ОДУ) и их систем часто возникает
ошибка, связанная с «переполнением» расчета – с превышением результата значения
10307 (см. первую строку на рис. 200,
где с помощью встроенной функции rkfixed решается (неудачно решается) система двух ОДУ).
При численном
решении ОДУ и их систем можно воспользоваться принципом «Часть решения лучше,
чем никакого решения!». Этот принцип воплощает пользовательская функция My_rkfixed,
реализующая тот же алгоритм (алгоритм Рунге-Кутта четвертого порядка) что и
встроенная функция rkfixed, но она включает в себя
оператор on error, обрабатывающего аварийные
ситуации. Из-за этого численное решение системы ОДУ не прерывается сообщением
об ошибке (см. первую строку на рис. 200):
функция My_rkfixed возвращает часть решения, которое можно, например,
отобразить графически (см. конец рис. 200).
Развитие
программы на рис. 200a – замена нулей на оператор break.