У меня есть система ОДУ (первого порядка) с довольно дорогими для вычисления производными.
Однако производные могут быть вычислены значительно дешевле в заданных пределах погрешности либо потому, что производные вычисляются из сходящегося ряда, а границы могут быть установлены для максимального вклада от пропущенных членов, либо за счет использования предварительно вычисленной информации о диапазоне, хранящейся в kd-дереве. /octree поисковые таблицы.
К сожалению, мне не удалось найти каких-либо общих решателей ОДУ, которые могли бы извлечь из этого пользу; все они, кажется, просто дают вам координаты и хотят вернуть точный результат. (Имейте в виду, я не специалист по ОДУ; я знаком с Рунге-Кутта, материалом в книге «Численные рецепты», LSODE и решателем научной библиотеки Gnu).
т.е. для всех решателей, которые я видел, вы предоставляете функцию обратного вызова derivs
, принимающую t
и массив x
и возвращающую обратно массив dx/dt
; но в идеале я ищу тот, который дает обратный вызов t
, x
s, и массив допустимых ошибок, и получает обратно массивы dx/dt_min
и dx/dt_max
с диапазоном производных, который гарантированно находится в пределах требуемой точности. (Вероятно, возможны многочисленные одинаково полезные варианты).
Любые указатели на решатели, которые разработаны с учетом такого рода вещей, или альтернативные подходы к проблеме (я не могу поверить, что я первый, кто хочет что-то подобное), будут очень признательны.