Есть уравнение, описывающее эволюцию единичного вектора. Это уравнение хочется численно решать.
Само уравнение устроено так, что вектор
всегда остаётся на сфере, поскольку
Однако, классические явные методы численного интегрирования, например метод Эйлера 1-го порядка, или метод Рунге-Кутта 4-го порядка, если их применять "влоб", этим свойством уже не обладают.
Конечно, прирост длины
имеет второй порядок малости, но ошибка всё равно постепенно набегает, и это плохо. Сейчас для решения этой проблемы я поступаю так: в конце каждого шага я принудительно возвращаю вектор на сферу, то есть нормирую его. Это работает в пределе по
, но суровая реальность заставляет решать это уравнение для, скажем,
.
Возникла идея переписать исходное уравнение так, чтобы сфера cтала для него "родной", тогда численные методы хоть и будут давать ошибку при увеличении шага, но хотя бы не будут выбрасывать вектор со сферы. За счёт этого предполагается увеличить максимально возможный шаг численного интегрирования.
Сразу хочется переписать уравнение в фиксированной сферической с.к., и сделать это легко. Однако, сферическая с.к. не подходит, потому что имеет неустранимые особенности в полюсах (а вектор
будет переходить через полюса любой заранее выбранной сферической с.к.).
Можно выбирать "плавающую" сферическую с.к., отсчитывая зенитный угол от
. Это плодотворная идея, у нас люди этим занимаются, и возможно я в итоге сделаю так же. Однако там много своих сложностей.
Вопрос состоит в том: а есть ли другие пути? Я уже понял, что двумерной фиксированной с.к. не обойтись, там всегда будут особые точки (Википедия говорит, что здесь работает теорема о причёсывании ежа). А если разрешить три координаты, или даже четыре? Можно ли что-то придумать?
Что я ещё попробовал: направляющие углы (арккосинус от декартовых компонент вектора).
Однако численная особенность всё равно остаётся, потому что если
то для того же метода Эйлера получаем
И вот этот синус в знаменателе всё портит.
В общем, что известно про численное решение таких уравнений? За ссылки на литературу тоже буду благодарен. Насколько я понимаю, корень проблемы здесь в том, что исходное уравнение записано в трёхмерной (декартовой с.к.), хотя его пространство решений существенно двумерное.