Не сохранял документ, вот по памяти. Просто ищем сначала экстремумы расстояния самым прямым способом:
Код:
(1) {a Cos[t], b Sin[t]} - {x, y} // Sqrt[# . #] &
(* Расстояние от данной точки до точки эллипса *)
(2) D[%, t]
(3) Solve[% == 0, t]
(Разумеется, это можно свернуть в одно выражение, но не рискну без запуска — вроде как-то раз
D внутри
Solve не запустилось или что-то такое.)
Получается массив из 8 результатов. Если ими заменять
t, четыре результата оказываются вещественными, а другие четыре — нет. Заменяя с помощью них
%1, находим соответствующие этим
t расстояния. В принципе, сразу их и надо,
t я искал чтобы посмотреть, где эти экстремумы находятся (думал, может быть так, что одна формула корня может давать всегда только максимум, а другая только минимум, но это оказалось не так).
Потом я строил
ContourPlot относительно
x и
y, в качестве значений фильтровал вещественные (иногда их давали первые четыре замены, иногда последние) расстояния и применял к этому списку
Max[#] - Min[#] &. Линии уровня как раз те самые кривые. Из-за работы со списками всё это не сразу рисуется. Правда, я не считал время, а занимался другими делами. Может, не так сильно тормозит.
-- Сб авг 03, 2013 02:45:12 --Получается массив из 8 результатов.
Тех самых арккосинусов на несколько экранов.