Единственный явный обратный результат, о котором я знаю, - это правило Крамера , которое, как недавно было показано, вычислимо за времени (как, например, исключение Гаусса; неуверенность в константе перед ведущим фактором).O ( n3)
Матрица, обратная к является гладкой функцией от A до тех пор, пока det ( A ) ≠ 0 , а решение x , безусловно, является гладкой функцией от b , так что если правая часть ODE является гладкой функцией от x и вы избегаете случаев, когда A имеет недостаток ранга, я думаю, что ваша правая сторона будет гладкой. (Здесь я понимаю, что «гладкий» означает «по крайней мере, дважды непрерывно дифференцируемый».)AAдет ( A ) ≠ 0ИксбxA
Чтобы быть в безопасности, вероятно, лучше убедиться, что не имеет числового ранга (то есть не имеет малых сингулярных значений).A
Проблема с правилом Крамера состоит в том, что его свойства устойчивости неизвестны, за исключением случая (который стабилен вперед, но не обратно стабилен). (См. Точность и стабильность численных алгоритмов , 2-е издание, Н. Хайм.) Он не считается надежным алгоритмом; Гауссово исключение с частичным поворотом (GEPP) является предпочтительным.п = 2
Я ожидаю, что проблема с использованием BLAS + LAPACK для выполнения GEPP при решении ODE будет заключаться в любом конечном разнице, используемой в неявном методе ODE. Я знаю, что люди решали линейные программы как часть оценки с правой стороны, и поскольку они делали это наивно (просто подключили решение линейной программы к правой части, вызывая симплексный алгоритм), они значительно снизили точность своих вычислил решение и существенно увеличил время, необходимое для решения проблемы. Один мой товарищ выяснил, как решить такие проблемы гораздо более эффективно и точно; Мне придется посмотреть, была ли опубликована его публикация. Вы можете столкнуться с подобной проблемой независимо от того, используете ли вы GEPP или правило Крамера.
Если есть какой-то способ, которым вы можете рассчитать аналитическую матрицу Якоби для вашей задачи, вы можете сделать это, чтобы избежать некоторых числовых головных болей. Это будет дешевле для оценки и, вероятно, более точным, чем метод конечных разностей. Выражения для производной обратной матрицы можно найти здесь, если они вам нужны. Оценка производной обратной матрицы выглядит так, как если бы она занимала как минимум два или три линейных решения системы, но все они были бы с одинаковой матрицей и разными правыми частями, поэтому она не была бы значительно дороже, чем одна линейная система решать.
И если есть какой-либо способ сравнить вычисленное решение с решением с известными значениями параметров, я бы сделал это, чтобы вы могли диагностировать, не сталкивались ли вы с какими-либо из этих числовых ошибок.