Решение жестких обыкновенных дифференциальных уравнений с использованием 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
  1. Я считаю, что CVODE использует ту же обратную дифференциацию, что и ode15s. Тогда почему это не работает?
  2. Стоит ли пытаться использовать решатель Крылова с предобработкой в ​​CVODE?

Ждем любую помощь. Спасибо.

0 ответов

Другие вопросы по тегам