Решение жестких обыкновенных дифференциальных уравнений с использованием C и MATLAB
У меня есть 2 * m + 3 STIFF обыкновенные дифференциальные уравнения для решения. Я попытался решить эту проблему, используя MATLAB ode15s для m=1, и он отлично работает. Но я хотел бы использовать пакет CVODE Sundials для решения уравнений. Пытаясь это сделать, я использовал "формулы обратной дифференциации" и итерацию Ньютона. Я не поставляю якобиан и позволяю вычислять его численно. но он не работает и показывает ошибку:
[CVODE WARNING] CVode
Internal t = 0 and h = 0 are such that t + h = t on the next step. The solver will continue anyway.
[CVODE ERROR] CVode
At t = 0 and h = 0, the correction convergence test failed repeatedly or with :h: = hmin.
SUNDIALS_ERROR: CVode<> failed with flag -4
- Я считаю, что CVODE использует ту же обратную дифференциацию, что и ode15s. Тогда почему это не работает?
- Стоит ли пытаться использовать решатель Крылова с предобработкой в CVODE?
Ждем любую помощь. Спасибо.