Задание 5 "Черепахи"

   Черепахи в этой задаче двигаются по прямой или по плоскости.
Начальное положение - точка O, начальное направление тоже зада-
но, для измерения  расстояния есть единица длины. При таких до-
говоренностях прямая становится числовой прямой, а на плоскости
оказывается введена  полярная система координат и имеется соот-
ветствующая ей декартова. Для знатоков заметим, что плоскость -
это комплексная прямая (размерность над полем комплексных чисел
равна 1).
   Черепаха управляется  с  помощью  программы. Кроме программы
должны быть даны начальный шаг черепахи и правило изменения ша-
га. Нас будет интересовать вопрос, в какую точку придет черепа-
ха.
   Программа  представляет  собой слово,  конечное  или,  может
быть, бесконечное вправо, в котором  на  каком-то  месте  стоит
точка, а остальные  буквы  берутся из некоторого алфавита. Если
слово конечное и кончается точкой,  то  точку  можно не писать.
Слово мы будем давать в этом тексте в угловых скобках. Алфавит,
если в задаче не оговорено иное, состоит из двух цифр 0 и 1.
   Бортовой компьютер черепахи находит в программе  точку и де-
лит программу  на две части, первая часть до  точки, а вторая -
начиная с точки, и сначала для  определенности выполняет первую
часть, а потом - вторую.
   При выполнении первой части, если она есть, компьютер считы-
вает данные о начальном шаге и передает их черепахе. После это-
го он смотрит на первый знак справа.
   Далее повторяется следующее.
   Если рассматриваемый знак 0, то компьютер  дает черепахе ко-
манду "ничего  не делать", а если  1, то дает  команду "сделать
шаг". После этого компьютер меняет черепахе шаг согласно прави-
лу изменения шага и  переходит  к следующему знаку налево, если
он есть.
   При выполнении второй части, если она есть, компьютер считы-
вает данные о начальном шаге и передает их черепахе. После это-
го он смотрит на первый знак после точки.
   Далее повторяется следующее. Компьютер  меняет  черепахе шаг
согласно правилу  изменения  шага. Если рассматриваемый знак 0,
то компьютер дает черепахе  команду  "ничего не делать", а если
1, то дает команду "сделать шаг". После этого компьютер перехо-
дит к следующему знаку направо, если он есть.
   Правило изменения  шага условимся давать для случая перехода
к знаку направо, в случае перехода к знаку налево действуют об-
ратные указания.

====================== Черепаха на прямой =====================
   начальный шаг 1, правило изменения шага - умножить на 1/2
===============================================================

                 Пример: программа < 10110111 >

Согласно договоренностям, эта программа  записывается  с точкой
так: < 10110111. >, правило изменения шага при переходе к знаку
налево - умножить шаг на 2. Черепаха придет в точку

       1+1*2^1+1*2^2+0*2^3+1*2^4+1*2^5+0*2^6+1*2^7 = 183

                  Пример: программа < 101.01 >

Черепаха придет в точку

        (1+0*2^1+1*2^2) + (0*1/2+1*1/2^2) = 5+1/4 = 5.25

                Пример: программа < .11111... >

Здесь 1  после точки периодически повторяется. Условимся период
показывать в круглых скобках. Тогда нашу  программу можно запи-
сать так:  < .(1) >. Черепаха после выполнения команды, которую
дал компьютер, прочитав n-ый знак, нажодится в точке

                 1/2+1/2^2+...+1/2^n = 1-1/2^n

Эта точка стремится к точке 1 при n, стремящемся к бесконечнос-
ти. Если черепаха двигается со скоростью 1 м/сек, то в  точке 1
она окажется через 1 сек после начала движения.

Покажем, как можно найти точку, в которую придет черепаха, дру-
гим способом.

Если после выполнения программы < .(1) > черепаха оказывается в
точке x  (сделав шаги длиной  1/2, 1/2^2, 1/2^3, ...), то после
выполнения программы < .0(1) > она оказывается в точке x/2, так
как сделает шаги  в  2 раза  меньшей  длины. С другой  стороны,
путь, проходимый по программе < .(1) >, равен  сумме пути, про-
ходимого по программе < .1 >, и пути,  проходимого по программе
< .0(1) >:
                           .1
                           .01111...
                           ---------
                           .11111...

Отсюда мы получаем уравнение
                          x = 1/2 + x/2
из которого находим x=1.


                  Пример: программа < .(10) >

Коротко: так как
               < .(10) > = < .10 > + < .00(10) >,

то черепаха, двигаясь по этой программе, придет в  точку x, яв-
ляющуюся решением уравнения
                         x = 1/2 + x/4,
откуда x=2/3.

                  Пример: программа < .1(10) >

Коротко:
пусть черепаха  по этой программе  придет в точку x=< .1(10) >,
тогда двигаясь  по программе < 1.(10) >  (точку в  записи слова
передвинули вправо на 1 -- на чем это сказалось?) она  придет в
точку
     2x = < 1.(10) > = < 1. > + < .(10) > = 1 + 2/3 = 5/3,
откуда x=5/6.

5.1. Найдите слово-программу, переводящую черепаху в точку 100.

5.2. Найдите программу, переводящую черепаху в точку 25/8.

5.3. Найдите программу, переводящую черепаху в точку 1/3.

5.4. Найдите программу, переводящую черепаху в точку 1/6.

5.5. Напишите программу на знакомом Вам языке программирования,
которая по целому положительному x дает слово-программу для че-
репахи, по которой она попадает в точку x.

5.6. Напишите программу на знакомом Вам языке программирования,
которая по  x из интервала от 0 до  1 (рациональному или вещес-
твенному) дает слово-программу для черепахи, по которой она по-
падает в точку x.

==================== Черепаха на плоскости ====================
                        начальный шаг 1
             правило изменения шага: умножить на r
               и сделать поворот налево на alpha

                      программа < 1.(1) >

         След черепахи при движении по такой программе
               и с таким правилом изменения шага
              называется логарифмической спиралью
===============================================================

Пример: r=1/sqrt{2}, alpha=45 градусов.

Рассмотрим  квадрат  с вершинами (0,0), (2,0), (2,2), (0,2).  В
него "вписан" квадрат с вершинами (1,0), (2,1), (1,2), (0,1), в
него вписан следующий квадрат и так далее.

Черепаха  из  точки O(0,0) доходит до середины стороны  первого
квадрата, потом двигается до середины стороны вписанного в него
второго квадрата и  так  далее. В  итоге  она приходит в  точку
(1,1) -- центр первого квадрата.

Следующая задача  относится  к  рассматриваемому примеру, но ее
стоит делать не обращаясь к рисунку с квадратом, о котором сей-
час было рассказано.

5.7. Докажите, что если черепаха  находится  в  точке (x,y), то
после следующего шага она будет в точке с координатами
                         x' = 1 + (x-y)/2,
                         y' = (x+y)/2.

5.8. Попробуйте найти объяснение тому, что  черепаха движется в
точку, координаты которой являются решениями системы
                         1+(x-y)/2 = x,
                           (x+y)/2 = y.

5.9. Пусть r=1/2, alpha=60 градусов. В какую точку придет чере-
паха?

Указание.  Вместо  квадрата  нужно рассмотреть правильный  тре-
угольник.

5.10. "Золотое сечение". Пусть alpha=90 градусов, след черепахи
-- ломаная OABC..., точки O и C - противоположные вершины квад-
рата. Найдите r.

5.11. Докажите (задача 5.10), что точка, в которую приходит че-
репаха, - это точка пересечения отрезков OB и AC.

5.12. Опишите движение  черепахи в случае r=1 и alpha=45 граду-
сов.

5.13. Опишите движение  черепахи  в случае r=1 и alpha=360/5=72
градуса.

Движение в этом случае будет периодическим с периодом 5. Поэто-
му сумма x-координат пяти последовательных шагов черепахи будет
равна 0.

5.14. Получите исходя из этого равенство
          cos (72 градусов) - cos (36 градусов) = -1/2,
а из него - квадратное  уравнение  для  cos(36 градусов), решив
которое  найдите  выражение  cos(36  градусов)  через  радикалы
(квадратные корни).

========================= 360 черепах =========================
           с номерами n = 0, 1, 2, ..., 359 градусов
                        начальный шаг 1
           правило изменения шага для n-ой черепахи:
    умножить на r=1/2 и сделать поворот налево на n градусов
===============================================================

5.15. 360 черепах двигаются в  соответствии  с  описанным  выше
правилом по программе < .(1) >. Докажите, что точки T_n (n = 0,
1, 2, ..., 359), в которые эти черепахи  придут, расположены на
окружности, опирающейся на  отрезок с концами T_0 и T_{180} как
на диаметр.

5.16. Что изменится, если программа будет такой: < 1.(1) > ?

5.17. Нарисуйте на одном чертеже кривые, на которых расположат-
ся черепахи после выполнения программ движения < .1 >, < .01 >,
< .11 >,  < .001 >,  < .011 >,  < .101 >,  < .111 >, < .0001 >,
< .0011 >, ....

5.18. Назовем точку P плоскости достижимой,  если можно указать
угол alpha  (не обязательно выражающийся целым числом градусов)
и программу движения черепахи, начинающуюся с точки, при движе-
нии по которой черепаха попадает в точку P. Здесь у  нас r=1/2.
Какие точки достижимые и какие заведомо недостижимые?

========================= 360 черепах =========================
           с номерами n = 0, 1, 2, ..., 359 градусов
                        начальный шаг 1
           правило изменения шага для n-ой черепахи:
    (умножить на r=1 и) сделать поворот налево на n градусов
===============================================================

5.19. Нарисуйте  кривые, на которых расположатся черепахи после
выполнения программ  движения
     а) < 1.1 >; б) < 1.11 >; в) < 1.111 >; г) < 1.1111 >.
Что общего у них?

5.20. Назовем точку P плоскости достижимой,  если можно указать
угол alpha  (не обязательно выражающийся целым числом градусов)
и программу движения  черепахи, начинающуюся с 1 и потом точки,
при движении  по которой черепаха попадает  в точку P.  Здесь у
нас r=1. Какие точки достижимые и какие заведомо недостижимые?


                           О задачах

   Задачи про черепаху - это задачи на двоичную систему счисле-
ния, суммирование геометрических прогрессий и комплексные  чис-
ла. Система  счисления  и соответственно правило изменения шага
могут быть взяты другие. Рядом находится изучение фракталов.

   Полезное чтение:

1. Алгоритмика. 5-7  классы: Учебник и задачник для общеобразо-
ват.  учеб.  заведений  / А.К.Звонкин, А.Г.Кулаков,  С.К.Ландо,
А.Л.Семенов, А.Х.Шень. - М.: Дрофа, 1998 (и др. издания).
   В частности,  стоит  обратить  внимание на исполнители Удво-
итель и Раздвоитель и посмотреть все, что покажется близким.

2. Кушниренко А.Г.  и  др.  Основы информатики и вычислительной
техники. - М.: Просвещение, 1991 (и др. издания).
   По этой книге стоит учить программирование, при этом исполь-
зуя среду КуМир  < http://www.infomir.ru >  с ее многочисленным
набором исполнителей, среди которых имеются дающие богатые воз-
можности для математических  экспериментов исполнители "Чертеж-
ник" и "Комплексные числа". В  этом  учебнике  стоит  разобрать
все, что относится к математике и  программированию для матема-
тики. В частности (это  не  первое по важности), можно увидеть,
что написано про кодирование алгоритмов управления исполнителя-
ми.

   Центральные задачи 5.15 и 5.16 происходят из лекций Э.Э.Шно-
ля "О решении уравнений", опубликованных в VIII выпуске сборни-
ка "Математическая школа" (изд-во МГУ, 1966). Процитирую:
   "Из некоторой точки A_0 на плоскости отложен отрезок длины 1
вдоль оси OX, затем из его конца A_1 - отрезок A_1A_2 длины 1/2
под углом alpha  к первому, затем  A_2A_3 длины 1/4  под  углом
alpha ко второму и т.д. Доказать, а) что последовательность то-
чек A_0, A_1, ... стремится  к  некоторой  точке C_{alpha}, *б)
что  при  изменении угла  alpha  от  0  до  360  градусов точка
C_{alpha} описывает окружность. Указание. Использовать комплек-
сные числа."

   В этом  цикле задачи для 6-7  классов тоже можно  найти, это
задачи 5.12 и 5.13, где нужно просто найти правильные слова для
описания движения, а также задачи 5.1 и 5.2 про двоичную систе-
му счисления.

(С) С.И.Соболев, 1999-2002