Вопрос к АКМ.
Последовательные смещения правой вершины эллипса таковы:
- [250.000000 0.0]
- [240.451675 0.0 (Dx=) 9.54832458]
- [231.623322 0.0 (Dx=) 8.82835388]
- [223.180969 0.0 (Dx=) 8.44235229]
- [214.983963 0.0 (Dx=) 8.19700623]
- [206.95311 0.0 (Dx=) 8.03085327]
- [199.036606 0.0 (Dx=) 7.91650391]
- [191.197052 3.75350226e-07 (Dx=) 7.83955383]
- [183.405487 5.51608196e-07 (Dx=) 7.79156494]
- [175.637604 1.12018336e-06 (Dx=) 7.7678833]
- [167.872482 2.45412889e-06 (Dx=) 7.76512146]
- [160.090622 2.45412889e-06 (Dx=) 7.78186035] <---
- [152.27269 1.26910754e-06 (Dx=) 7.81793213]
- [144.398712 1.26910754e-06 (Dx=) 7.87397766]
- [136.446533 1.26695215e-06 (Dx=) 7.95217896]
- [128.390472 -1.8148844e-06 (Dx=) 8.05606079]
- [120.199196 -3.88277249e-06 (Dx=) 8.19127655]
- [111.832954 -5.10916561e-06 (Dx=) 8.36624146]
- [103.23806 -6.24217228e-06 (Dx=) 8.59489441]
- [94.1187744 -1.64193943e-06 (Dx=) 9.11928558]
- [84.8162537 1.08695542e-06 (Dx=) 9.30252075]
- [74.9843674 4.84235625e-06 (Dx=) 9.83188629]
- [64.4550781 4.58797695e-06 (Dx=) 10.5292892]
- [52.7743797 3.14698264e-06 (Dx=) 11.6806984]
- [39.2415085 3.96920723e-06 (Dx=) 13.5328712]
- [22.8734131 5.31395563e-06 (Dx=) 16.3680954]
При этом между каждыми из 25 нарисованных итераций проделано 100 итераций, не нарисованных (у лемнискаты --- 13 и 50). Смещения регулярно уменьшаются, и казалось бы, готовы устаканиться, но этому мешает возникающий бардак (отмечен стрелочкой в данных).
Бардак можно уменьшить, сделав прореживание точек (удаление через одну) в некоторый момент. Но всё это ловля блох.
Для желающих поиграться с этим, я добавил и прокомментировал элементы управления:
Код:
/a 250 def % big half-axis
/b 120 def % small half-axis
/DT0 6 def % time step for one iteration (you can make it negative)
/Npt 36 def % number of points on ellipse
/N 25 def % numer of curves to draw
/M 100 def % number of iterations between two drawings
% So, total number of iterations is M*N
% ------------- Сode partially borrowed from the PS-library, presented by "Алексей К./dxdy.ru"
Изменённую программу положу туда же, о чём будет уведомнение ("сообщение отредактировано...")
Но всё это ловля блох. На самом деле не очень интересно, что там как будет бардачить и схлопываться.
Чуть более интересно сделать это высокоточным пакетом, с огромным количеством точек, что скомпенсирует наше неумение подобрать хороший численный метод.
Потому что погрешности компьютерных вычитаний-сложений при определении кривизны сравнимы с погрешностями, вызванными дискретностью от сравнительно малого количества точек. Увеличим --- и тогда первая причина воспревалирует.
Реально интересно исследовать это дело аналитически, а это уже серьёзная задача (из серии качественный анализ ДУ?).
Реально интересно также изучить или придумать подходящие численные методы (ну, типа, например, после эн итераций вернуться взад, посмотреть отклонения от начальных точек, на их основе подправить результат итерации, вдруг поможет?). Но это тоже серьёзная работёнка для сильно заинтересовавшегося лица. Или когда детективы в магазине кончились.
Ещё было бы забавно убедить ewert'a, что оно в квадрате, или наоборот. Кстати, в новой пограмме я оставлю высвечивание данных про дэ-икс. Надо вызвать Message window (буковкой M в GSview).
-- Пн апр 05, 2010 13:40:29 --Программу легко разделить на две, одну с эллипсом, другую с лемнискатой
(подправив, если надо, оператор переноса начала координат типа
shiftx shifty translate).