Python: как эффективно решить DAE с якобианом?
Я пытаюсь использовать пакет Assimulo для решения набора дифференциально-алгебраических уравнений (ДАУ). Я пытаюсь использовать алгоритм, аналогичный показанному здесь. Однако, похоже, нет возможности передать разреженную матрицу. Моя матрица Якоби очень большая, примерно 3000 x 3000. Знаете ли вы, есть ли способ решить мои DAE более эффективно с вычислительной точки зрения?
1 ответ
По моему опыту работы с разреженными системами ОДУ (точнее, с системами полудискретных УЧП), использование итеративного линейного решателя значительно повышает эффективность вычислений. Насколько мне известно, Assimulo не позволяет обеспечить шаблон разреженности по якобиану, но изменение линейного решателя - еще один способ решить эту проблему.
Вы бы сделали что-то вроде:
model = Explicit_Problem(ode_function, y0=y_init, t0=t_init)
simulator = CVode(model)
sim.linear_solver = 'SPGMR'
Я не уверен, что это применимо и к системам DAE, но я думаю, что стоит попробовать.