Популярным подходом для нелинейных задач наименьших квадратов является алгоритм Левенберга-Марквардта.Это своего рода смесь Гаусса-Ньютона и метода градиентного спуска.Он сочетает в себе лучшее из обоих миров (хорошо ориентируется в пространстве поиска некорректных задач и быстро сходится).Но есть много места для маневра с точки зрения реализации.Например, если квадратная матрица J ^ TJ (где J - матрица Якоби, содержащая все производные для всех уравнений) является разреженной, вы можете использовать итерационный алгоритм CG для быстрого решения систем уравнений вместо прямого метода, такого как факторизация Холецкого J^ TJ или QR-разложение J.
Но не просто предполагайте, что какая-то часть медленная и должна быть написана на ассемблере.Ассемблер - это последнее, что нужно учитывать.Перед тем, как идти по этому пути, вы всегда должны использовать профилировщик, чтобы проверить узкие места.