Optimize solvers

Список изменений:

  • Оптимизированы алгоритмы численного дифференцирования
  • partialDerivate теперь может вычислять производные n-го порядка
  • Оптимизирована работа нелинейного решателя Secant (1-2-мерные системы уравнений больше не используют линейный решатель для решения матрицы Якоби, а решают ее напрямую)
  • Нелинейный решатель Secant теперь может использовать аналитические выражения для нахождения якобиана
  • Переработаны настройки нелинейных решателей: указатель на внутренний линейный решатель теперь обернут в std::shared_ptr (был голый указатель на LinearSolver). Из-этого классы решателей больше не требуют перегрузки конструкторов копирования и операторов присваивания.
  • У линейных и нелинейных решателей больше нет метода copy()
  • Добавлен линейный решатель HybridCholesky, адаптированный под решение SPD (чистый Холецкий) и не-SPD (LU разложение) матриц.
  • Для нелинейных решателей добавлено масштабирование аргументов (приведение к масштабу 1)

Merge request reports

Loading