Построение параллельных прямых. Построение с помощью циркуля и линейки отрезка равного произведению или отношению двух других - творческая работа

Если вполне естественно, что с допущением большего разнообразия инструментов оказывается возможным решать более обширное множество задач на построение, то можно было бы предвидеть, что, напротив, при ограничениях, налагаемых на инструменты, класс разрешимых задач будет суживаться. Тем более замечательным нужно считать открытие, сделанное итальянцем Маскерони (1750-1800): все геометрические построения, выполнимые с помощью циркуля и линейки, могут быть выполнены с помощью одного только циркуля. Следует, конечно, оговорить, что провести на самом деле прямую линию через две данные точки без линейки невозможно, так что это основное построение не покрывается теорией Маскерони. Вместо того приходится считать, что прямая задана, если заданы две ее точки. Но с помощью одного лишь циркуля удается найти точку пересечения двух прямых, заданных таким образом, или точку пересечения прямой с окружностью.

Вероятно, простейшим примером построения Маскерони является удвоение данного отрезка АВ. Решение было уже дано на стр. 174-175. Далее, на стр. 175-176 мы научились делить данный отрезок пополам. Посмотрим теперь, как разделить пополам дугу окружности АВ с центром О. Вот описание этого построения (рис. 47). Радиусом АО проводим две дуги с центрами A и В. От точки О откладываем на этих дугах две такие дуги ОР и OQ, что OP = OQ = АВ . Затем находим точку R пересечения дуги с центром Р и радиусом РВ и дуги с центром Q и радиусом QA. Наконец, взяв в качестве радиуса отрезок OR, опишем дугу с центром Р или Q до пересечения с дугой AВ - точка пересечения и является искомой средней точкой дуги АВ. Доказательство предоставляем читателю в качестве упражнения.

Было бы невозможно доказать основное утверждение Маскерони, указывая для каждого построения, выполнимого с помощью циркуля и линейки, как его можно выполнить с помощью одного циркуля: ведь возможных построений бесчисленное множество. Но мы достигнем той же цели, если установим, что каждое из следующих основных построений выполнимо с помощью одного циркуля:

  1. Провести окружность, если заданы ее центр и радиус.
  2. Найти точки пересечения двух окружностей.
  3. Найти точки пересечения прямой и окружности.
  4. Найти точку пересечения двух прямых.

Любое геометрическое построение (в обычном смысле, с допущением циркуля и линейки) составляется из выполнения конечной последовательности этих элементарных построений. Что первые два из них выполнимы с помощью одного циркуля, ясно непосредственно. Более трудные построения 3 и 4 выполняются с использованием свойств инверсии, рассмотренных в предыдущем пункте.

Обратимся к построению 3: найдем точки пересечения данного круга С с прямой, проходящей через данные точки А и В. Проведем дуги с центрами А и В и радиусами, соответственно равными АО и ВО, кроме точки О, они пересекутся в точке Р. Затем построим точку Q, обратную точке Р относительно окружности С (см. построение, описанное на стр. 174). Наконец, проведем окружность с центром Q и радиусом QO (она непременно пересечется с С): ее точки пересечения Х и Х" окружностью С и будут искомыми. Для доказательства достаточно установить, что каждая из точек X и X" находится на одинаковых расстояниях от О и P (что касается точек А и В, то аналогичное их свойство сразу вытекает из построения). Действительно, достаточно сослаться на то обстоятельство, что точка, обратная точке Q, отстоит от точек X и Х" на расстояние, равное радиусу круга С (см. стр. 173). Стоит отметить, что окружность, проходящая через точки X, X" и О, является обратной прямой АВ в инверсии относительно окружности С, так как эта окружность и прямая АВ пересекаются с С в одних и тех же точках. (При инверсии точки основной окружности остаются неподвижными.) Указанное построение невыполнимо только в том случае, если прямая АВ проходит через центр С. Но тогда точки пересечения могут быть найдены посредством построения, описанного на стр. 178, как середины дуг С, получающихся, когда мы проводим произвольную окружность с центром В, пересекающуюся с С в точках В 1 и В 2 .

Метод проведения окружности, обратной прямой," соединяющей две данные точки, немедленно дает и построение, решающее задачу 4. Пусть прямые даны точками А, В и A", В" (рис. 50) Проведем произвольную окружность С и с помощью указанного выше метода построим окружности, обратные прямым АВ и А"В". Эти окружности пересекаются в точке О и еще в одной точке Y, Точка X, обратная точке Y, и есть искомая точка пересечения: как ее построить - уже было разъяснено выше. Что X есть искомая точка, это ясно из того факта, что Y есть единственная точка, обратная точке, одновременно принадлежащей обеим прямым АВ и А"В", следовательно, точка X, обратная Y, должна лежать одновременно и на АВ, и на А"В".

Этими двумя построениями заканчивается доказательство эквивалентности между построениями Маскерони, при которых разрешается пользоваться только циркулем, и обыкновенными геометрическими построениями с циркулем и линейкой.

Мы не заботились об изяществе решения отдельных проблем, нами здесь рассмотренных, так как нашей целью было выяснить внутренний смысл построений Маскерони. Но в качестве примера мы еще укажем построение правильного пятиугольника; точнее говоря, речь идет о нахождении каких-то пяти точек на окружности, которые могут служить вершинами правильного вписанного пятиугольника.

Пусть Л- произвольная точка на окружности К. Так как сторона правильного вписанного шестиугольника равна радиусу круга, то не представит труда отложить на К такие точки В, С, D, что АВ = ВС = CD = 60° (рис. 51). Проводим дуги с центрами А и D радиусом, равным АС; пусть они пересекаются в точке X. Тогда, если О есть центр K, дуга с центром А и радиусом ОХ пересечет К в точке F, являющейся серединой дуги ВС (см. стр. 178). Затем радиусом, равным радиусу K, опишем дуги с центром F, пересекающиеся с K в точках G и H. Пусть Y есть точка, расстояния которой от точек G и Н равны ОХ и которая отделена от X центром О. В таком случае отрезок AY как раз и есть сторона искомого пятиугольника. Доказательство предоставляется читателю в качестве упражнения. Интересно отметить, что при построении используются только три различных радиуса.

В 1928 г. датский математик Ельмслев нашел в книжной лавке в Копенгагене экземпляр книги под названием Euclides Danicus , опубликованной в 1672 г. никому не известным автором Г. Мором. По титульному листу можно было сделать заключение, что это просто один из вариантов евклидовых "Начал", снабженный, может быть, редакторским комментарием. Но по внимательном рассмотрении оказалось, что в ней содержится полное решение проблемы Маскерони, найденное задолго до Маскерони.

Упражнения. В дальнейшем дается описание построений Мора. Проверьте их правильность. Почему можно утверждать, что они решают проблему Маскерони?

Вдохновляясь результатами Маскерони, Якоб Штейнер (1796-1863) предпринял попытку исследования построений, выполнимых с помощью одной только линейки. Конечно, одна только линейка не выводит за пределы данного числового поля, и потому она недостаточна для выполнения всех геометрических построений в классическом их понимании. Но тем более замечательны результаты, полученные Штейнером при введенном им ограничении - пользоваться циркулем только один раз. Он доказал, что все построения на плоскости, выполнимые с помощью циркуля и линейки, выполнимы также с помощью одной линейки при условии, что задан единственный неподвижный круг вместе с центром. Эти построения подразумевают применение проективных методов и будут описаны позднее (см. стр. 228).

* Без круга, и притом с центром, обойтись нельзя. Например, если дан круг, но не указан его центр, то найти центр с помощью одной линейки невозможно. Мы сейчас докажем это, ссылаясь, однако, на факт, который будет установлен позднее (см. стр. 252): существует такое преобразование плоскости самой в себя, что а) заданная окружность остается неподвижной, b) всякая прямая линия переходит в прямую, с) центр неподвижной окружности не остается неподвижным, а смещается. Само существование такого преобразования свидетельствует о невозможности построить центр данной окружности, пользуясь одной линейкой. В самом деле, какова бы ни была процедура построения, она сводится к ряду отдельных этапов, заключающихся в проведении прямых линий и нахождении их пересечений друг с другом или с данной окружностью. Представим себе теперь, что вся фигура в целом - окружность, а все прямые, проведенные по линейке при выполнении построения центра, подвергнуты преобразованию, существование которого мы здесь допустили. Тогда ясно, что фигура, полученная после преобразования, также удовлетворяла бы всем требованиям построения; но указываемое этой фигурой построение приводило бы к точке, отличной от центра данной окружности. Значит, построение, о котором идет речь, невозможно.

Данная статья написана по материалам одного из разделов книги Седжвика, Уэйна и Дондеро "Программирование на языке Python", уже упоминавшейся ранее . Называется этот раздел "Системы итерационных функций", и в нём описано построение различных изображений, таких как треугольник Серпиньского, папоротник Барнсли и некоторых других, с помощью достаточно несложного алгоритма, который, к тому же, ещё и с лёгкостью реализуется.

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

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

За теоретической частью статьи будет следовать практическая, описывающая реализацию алгоритма на языке C99. Поскольку результатами работы программы будут являться изображения, мы будем использовать в программе графическую библиотеку pgraph , предполагая, что читатель, хотя бы в общих чертах, с ней знаком.

Итак, переходим к теоретической части нашего повествования.

Итерационные функции и случайные последовательности

Перед тем, как изложить схему, по которой будет вестись построение изображений, поговорим о последовательностях, члены которых вычисляются посредством рекуррентных формул.

Зададим 2 последовательности, x n n = 1 ∞ и y n n = 1 ∞ , с помощью следующих рекуррентных формул:

X n = f x n - 1 , y n - 1 , n ∈ ℕ , y n = g x n - 1 , y n - 1 , n ∈ ℕ .

Поясним, что x 0 и y 0 - это некоторые заранее заданные числа, а f (x , y ) и g (x , y ) - это некоторые функции двух переменных, называемые итерационными . Сам процесс вычисления очередного члена той или иной последовательности через такие функции будем называть итерациями , а приведённый выше набор рекуррентных формул - итерационной схемой.

Рекурсивный способ задания последовательностей, скорее всего, хорошо знаком читателю, если он изучал математику в вузе. Несколько необычным может показаться "перекрёстный" способ вычисления членов последовательностей, при котором для вычисления n -го члена каждой из двух последовательностей нужен не только n − 1-й член той же последовательности, но и n − 1-й член другой.

А теперь рассмотрим схему построения членов двух последовательностей, использующую не одну пару итерационных функций, а m пар. Каждая из этих функций будет линейной по обеим переменным, а также будет содержать аддитивную константу. Более конкретно, функции будут иметь вид:

F k x , y = a k x + b k y + c k g k x , y = d k x + e k y + h k , k = 0 , 1 , … , m - 1 .

Для каждого n , начиная с 1, будет случайным образом выбираться число от 0 до m − 1, и при вычислении x n и y n в рекуррентных формулах будет использоваться пара итерационных функций, индексы которых равны данному случайному числу. Отметим, что случайные числа, "появляющиеся" перед каждой итерацией, не обязаны быть равновероятными. Однако для разных шагов вероятность появления конкретного фиксированного числа одна и та же.

Давайте теперь сформулируем сказанное на строгом математическом языке. Рассмотрим последовательность дискретных независимых в совокупности случайных величин T n = 1 ∞ , распределённых по одному и тому же закону. А именно: каждая случайная величина принимает значения 0, 1, …, m − 1 с соответствующими вероятностями p 0 , p 1 , …, p m -1 .

Теперь последовательности, x n n = 1 ∞ и y n n = 1 ∞ зададим с помощью следующей итерационной схемы:

X n = f T n x n - 1 , y n - 1 , n ∈ ℕ , y n = g T n x n - 1 , y n - 1 , n ∈ ℕ .

Как и ранее, x 0 и y 0 - это некоторые заранее заданные числа.

Таким образом, каждая из последовательностей является случайной, т. е. её члены - это случайные величины. Однако, каждую из этих последовательностей можно "реализовать", т. е. вычислить все её члены (разумеется, таких реализаций будет бесконечно много).

Зададимся главным вопросом данного раздела. А какое же отношение изображения, которые мы собираемся строить, имеют к этой паре случайных последовательностей? Очень простое. Построим реализацию этих двух последовательностей. Для каждого натурального n пару (x n , y n ) можно рассматривать как координаты точки, заданной в декартовой прямоугольной системе координат на плоскости. Так вот, изображение, соответствующее некоторой паре реализованных последовательностей, представляет собой геометрическое место всех таких точек на плоскости.

Казалось бы, для каждой реализации пары последовательностей мы будем получать своё изображение, отличное от других. Однако, как это ни парадоксально, получаемые изображения каждый раз будут практически совпадать (т. е. при построении на компьютере будут неразличимы человеческим глазом). А при соответствующем подборе итерационных функций и законов распределения случайных величин, участвующих в формировании членов последовательностей, можно создавать весьма интересные узоры.

Добавим, что при построении изображений на компьютере, мы, разумеется, будем выполнять лишь конечное (но достаточно большое) число итераций.

О генерации псевдослучайных чисел

При написании программы мы столкнёмся с необходимостью генерировать псевдослучайные числа, распределённые, вообще говоря, не равномерно, а по заранее заданному закону. В то же самое время, мы будем располагать лишь программным генератором псевдослучайных чисел, равномерно распределённых на промежутке . Как из второго распределения получить первое?

Переведём задачу в математическую плоскость. Пусть имеется непрерывная случайная величина U , распределённая равномерно на отрезке . Зададимся целью построить дискретную случайную величину T как функцию от U , таким образом, чтобы T принимала значения 0, 1, …, m − 1 с соответствующими вероятностями p 0 , p 1 , …, p m -1 .

Решить поставленную задачу весьма просто. Введём в рассмотрение суммы вероятностей

s k = ∑ i = 0 k - 1 p i , k = 0 , 1 , … , m - 1 .

Если верхний предел суммирования по i меньше нижнего, то такую сумму по определению будем полагать равной 0.

Т выразим через U следующим образом:

T = 0 , если U ∈ s 0 , s 1 , 1 , если U ∈ s 1 , s 2 , 2 , если U ∈ s 2 , s 3 , … … … … … … , … … … … … … , m - 1 , если U ∈ s m - 1 , 1 .

Очевидно, случайная величина T распределена по требуемому нами закону. Заметим, что, по сути, Т - это номер промежутка, в который попадает случайная величина U (при условии, что промежутки мы нумеруем числами от 0 до m − 1 в порядке возрастания их левых границ).

С практической точки зрения полученный результат позволяет на каждом шаге итерации в качестве номера итерационных функций брать номер промежутка, в который попадает число, сгенерированное датчиком псевдослучайных чисел, равномерно распределённых на отрезке .

А теперь можно переходить к написанию программы.

Структура программы

Программа состоит из файла main.c и файлов, образующих графическую библиотеку pgraph. Содержимое файла main.c начинается со следующей директивы, подключающей графическую библиотеку:

#include "pgraph.h"

Далее в файле содержатся описания глобальных константных переменных и константных массивов. За ними - определения функций get_random_value() и main() . Первая из них генерирует псевдослучайные числа, а вторая выполняет основную работу по построению изображений.

Глобальные константные переменные и константные массивы

Вся информация, необходимая для построения конкретного изображения, содержится в глобальных константных переменных и константных массивах. Разумеется, для каждого изображения набор значений констант и элементов константных массивов будет "свой".

Ниже приводятся описания данных констант и массивов.

  • n - количество итераций;
  • w - ширина изображения в пикселях;
  • h - высота изображения в пикселях;
  • xc - абсцисса начала новой системы координат в старой системе;
  • yc - ордината начала новой системы координат в старой системе;
  • l - длина в пикселях отрезка, параллельного одной из осей координат, имеющего в новой системе координат единичную длину;
  • m - количество пар итерационных функций, т. е. число m ;
  • s - одномерный массив размера m , содержащий суммы вероятностей случайных величин T n (k -й элемент массива содержит s k );
  • f - двухмерный массив, состоящий из m f k (x , y k , 0), (k , 1), (k , 2) содержат числа a k , b k , c k соответственно, где 0 ≤ k m − 1);
  • g - двухмерный массив, состоящий из m "строк" и 3-х "столбцов", содержащий константы, задействованные в функциях g k (x , y ) (элементы массива с индексами (k , 0), (k , 1), (k , 2) содержат числа d k , e k , h k соответственно, где 0 ≤ k m − 1).

Все переменные имеют тип int , а базовым типом всех массивов является double .

Поясним, что под "старой" системой координат подразумевается та, которая определена в библиотеке pgraph. Построения всех изображений будут вестись в новой системе, полученной из старой параллельным переносом (сдвиги по осям абсцисс и ординат равны соответственно x c и y c ) и "сжатием" в l раз. Таким образом, точка, имеющая в новой системе координаты (x , y ), в старой будет иметь координаты (x l + x c , y l + y c ). Излишне, думаю, пояснять, что за хранение чисел x c , y c и l ответственны константные переменные xc , yc и l соответственно.

Для хранения чисел x 0 и y 0 переменные не выделяются, поскольку во всех случаях построения изображений в качестве этих чисел берутся нули.

Генерация псевдослучайных чисел: функция get_random_value()

Функция get_random_value() при каждом обращении к ней генерирует псевдослучайное целое число в диапазоне от 0 до m − 1 в соответствии с описанной ранее схемой . Вот код этой функции:

1. int get_random_value() 2. { 3. double r = (double ) rand() / RAND_MAX; 4. int c = 1 ; 5. while (s[c] < r && ++c < m) 6. ; 7. return c - 1 ; 8. }

Получаем с помощью стандартной библиотечной функции rand() псевдослучайное число в диапазоне от 0 до значения макроса RAND_MAX , делим полученный результат на это значение и присваиваем частное переменной r (стр. 3). Теперь в r хранится число, принадлежащее отрезку . Его приближённо можно считать значением случайной величины, равномерно распределённой на этом отрезке.

Поясним, что значение макроса RAND_MAX , в нашем случае (т. е. в случае использования компилятора MinGW64 версии 4.9.2 для 64-битных систем) равно 32767.

Теперь, с помощью линейного поиска, задействующего цикл while , ищем индекс наибольшего элемента массива s , не превосходящего значение r , увеличенный на единицу, и сохраняем его в переменной c (см. стр. 4-6). Отметим, что в случае, если значение r - нулевое, цикл не выполняется ни разу, а переменная с сохраняет единичное значение (см. стр. 4).

Значение, возвращаемое функцией, можно приближённо рассматривать как значение случайной величины T , описанной в упомянутом выше разделе.

Генерация изображения: функция main()

А вот и код функции main() :

1. int main() 2. { 3. image *img = create_image(w, h); 4. double x = 0 , y = 0 ; 5. for (int i = 0 ; i < n; i++) 6. { 7. int r = get_random_value(); 8. double x1 = f[r] * x + f[r] * y + f[r]; 9. double y1 = g[r] * x + g[r] * y + g[r]; 10. x = x1; 11. y = y1; 12. set_color(img, round(x * l) + xc, round(y * l) + yc, BLACK); 13. } 14. save_to_file(img, "out.bmp" ); 15. free(img); 16. return 0 ; 17. }

Создаём изображение с заданными размерами (стр. 3). Выделяем память под переменные x и y , в которых будут храниться текущие члены последовательностей, и инициализируем их нулями (стр. 4). Напомню, что в качестве чисел x 0 и y 0 , участвующих в вычислении первых членов каждой из последовательностей, берутся нули.

Вычисляем в цикле for первые n членов каждой последовательности (стр. 5-13). Получаем сначала псевдослучайное число и записываем его в r (стр. 7). Далее вычисляем текущие значения членов обеих последовательностей, помещая их во временные переменные x1 и y1 (стр. 8, 9). При вычислении используем константы, фигурирующие в итерационных функциях и хранящиеся в массивах f и g . Выбор той или иной пары наборов коэффициентов (а значит, пары итерационных функций) зависит от значения r , использующегося в качестве первых индексов участвующих в вычислениях элементов массивов.

Переписываем вычисленные текущие значения в переменные x и y (стр. 10, 11). Координаты точки, содержащиеся в этих переменных, переводим в координаты исходной системы координат, округляем до целых и наносим точку с результирующими координатами на изображение чёрным цветом (стр. 12).

По завершении цикла сохраняем сформированное изображение в файле "out.bmp" (стр. 14) и освобождаем занимаемую изображением память (стр. 15). На этом работа функции завершается.

Построение изображения треугольника Серпиньского

Треугольник Серпиньского представляет собой множество точек, получаемого из всех точек некоторого исходного равностороннего треугольника следующим образом. Треугольник разбивается тремя средними линиями на 4 треугольника, после чего "центральный" треугольник удаляется. Далее c каждым из оставшихся трёх равносторонних треугольников выполняется та же операция. Наконец, то же самое мы делаем с получившимися девятью равносторонними треугольниками.

Продолжая описанные операции до бесконечности, удаляем, в итоге, из исходного треугольника бесконечное число равносторонних треугольников, сумма площадей которых равна площади исходного. Оставшиеся точки образуют линию, называемую треугольником Серпиньского , играющую важную роль в теории множеств.

В книге Седжвика и других авторов предлагается следующий способ построения изображения треугольника Серпиньского. Рассмотрим 3 точки на плоскости, являющиеся вершинами равностороннего треугольника, например, точки с координатами 0 , 0 , 0 , 1 , 1 / 2 , 3 / 2 в декартовой прямоугольной системе координат. Выбираем наугад (с равными вероятностями) одну из трёх вершин треугольника и строим точку, делящую отрезок, соединяющий вершину с координатами 0 , 0 и выбранную наугад вершину, пополам. Это первая точка нашего изображения.

Приведённый алгоритм можно уложить в описанную ранее схему построения изображений, задействующую случайные последовательности и итерационные функции.

Нам потребуются 3 пары итерационных функций. Их индексы 0, 1, 2 должны выбираться с вероятностями 1/3, 1/3, 1/3 соответственно. Сами итерационные функции приведены ниже.

F 0 x , y = 1 / 2 x , g 0 x , y = 1 / 2 y , f 1 x , y = 1 / 2 x + 1 / 2 , g 1 x , y = 1 / 2 y , f 2 x , y = 1 / 2 x + 1 / 4 , g 2 x , y = 1 / 2 y + 3 / 4 .

Теперь давайте вставим в нашу программу описания глобальных константных переменных и константных массивов, соответствующие данным вероятностям и данным итерационным функциям. Но для начала определим макрос TRIANGLE , поместив в файл main.с после инструкции #include следующую инструкцию

#define TRIANGLE

После инструкции вставляем в файл следующий код:

//Треугольник Серпиньского #ifdef TRIANGLE const int n = 100000 ; //количество итераций const int w = 620 , h = 550 ; //размеры изображения const int xc = 10 , yc = 10 ; //координаты начала новой системы координат в старой const int l = 600 ; //коэффициент сжатия const int m = 3 ; //количество пар итерационных функций const double s = {0 , 0.3333333 , 0.6666667 }; //массив сумм вероятностей const double f = {{0.5 , 0.0 , 0.0 }, //массив коэффициентов для функций f(x,y), {0.5 , 0.0 , 0.5 }, //задействованных для вычислений x {0.5 , 0.0 , 0.25 }}; const double g = {{0.0 , 0.5 , 0.0 }, //массив коэффициентов для функций g(x,y), {0.0 , 0.5 , 0.0 }, //задействованных для вычислений y {0.0 , 0.5 , 0.4330127 }}; #endif

Приведённый фрагмент кода (без директив препроцессора) будет скомпилирован только в случае, если определён макрос TRIANGLE (а он определён). Разумеется, константы, представимые лишь с помощью бесконечных десятичных дробей (рациональных или иррациональных) мы округляли.

В результате компиляции и выполнения программы в корневой директории исполняемого файла появляется графический файл out.bmp, содержащий следующее изображение:

Построение изображения папоротника Барнсли

Следующее изображение, построение которого описывается в книге Седжвика и других, - это изображение папоротника Барнсли. Теперь нам уже потребуются 4 пары итерационных функций. Их индексы 0, 1, 2, 3 будут выбираться с вероятностями 0,01, 0,85, 0,07, 0,07 соответственно. А вот и сами итерационные функции:

F 0 x , y = 0 , 5 , g 0 x , y = 0 , 16 y , f 1 x , y = 0 , 85 x + 0 , 04 y + 0 , 075 , g 1 x , y = - 0 , 04 x + 0 , 85 y + 0 , 18 , f 2 x , y = 0 , 2 x - 0 , 26 y + 0 , 4 , g 2 x , y = 0 , 23 x + 0 , 22 y + 0 , 045 , f 3 x , y = - 0 , 15 x + 0 , 28 y + 0 , 575 , g 3 x , y = 0 , 26 x + 0 , 24 y - 0 , 086 .

Вносим теперь изменения в программу. Инструкцию #define заменяем инструкцией

#define FERN

А после #ifdef -блока помещаем следующий фрагмент кода:

//Папоротник Барнсли #ifdef FERN const int n = 100000 ; const int l = 600 ; const int m = 4 ; const double s = {0 , 0.01 , 0.86 , 0.93 }; const double f = {{0.0 , 0.0 , 0.5 }, {0.85 , 0.04 , 0.075 }, {0.2 , -0.26 , 0.4 }, {-0.15 , 0.28 , 0.575 }}; const double g = {{0.0 , 0.16 , 0.0 }, {-0.04 , 0.85 , 0.18 }, {0.23 , 0.22 , 0.045 }, {0.26 , 0.24 , -0.086 }}; #endif

Результатом компиляции и запуска программы является следующее изображение:

Построение изображения дерева

Теперь построим то, что в книге Седжвика и других авторов называется "деревом", хотя то, что оказывается изображённым, скорее, похоже на набор деревьев различных размеров. На этот раз в итерационном процессе будут участвовать 6 пар итерационных функций. Их индексы 0, 1, 2, 3, 4, 5 будут выбираться с вероятностями 0,1, 0,1, 0,2, 0,2, 0,2, 0,2 соответственно. Вот эти функции:

F 0 x , y = 0 , 55 , g 0 x , y = 0 , 6 y , f 1 x , y = - 0 , 05 x + 0 , 525 , g 1 x , y = - 0 , 5 x + 0 , 75 , f 2 x , y = 0 , 46 x - 0 , 15 y + 0 , 27 , g 2 x , y = 0 , 39 x + 0 , 38 y + 0 , 105 , f 3 x , y = 0 , 47 x - 0 , 15 y + 0 , 265 , g 3 x , y = 0 , 17 x + 0 , 42 y + 0 , 465 , f 4 x , y = 0 , 43 x + 0 , 26 y + 0 , 29 , g 4 x , y = - 0 , 25 x + 0 , 45 y + 0 , 625 , f 5 x , y = 0 , 42 x + 0 , 26 y + 0 , 29 , g 5 x , y = - 0 , 35 x + 0 , 31 y + 0 , 525 .

#define TREE

За последним #ifdef -блоком вставляем следующий код:

//Дерево #ifdef TREE const int n = 100000 ; const int w = 620 , h = 620 ; const int xc = 0 , yc = 10 ; const int l = 600 ; const int m = 6 ; const double s = {0 , 0.1 , 0.2 , 0.4 , 0.6 , 0.8 }; const double f = {{0.0 , 0.0 , 0.55 }, {-0.05 , 0.0 , 0.525 }, {0.46 , -0.15 , 0.27 }, {0.47 , -0.15 , 0.265 }, {0.43 , 0.26 , 0.29 }, {0.42 , 0.26 , 0.29 }}; const double g = {{0.0 , 0.6 , 0.0 }, {-0.5 , 0.0 , 0.75 }, {0.39 , 0.38 , 0.105 }, {0.17 , 0.42 , 0.465 }, {-0.25 , 0.45 , 0.625 }, {-0.35 , 0.31 , 0.525 }}; #endif

Результат работы скомпилированной программы - это изображение, приведённое ниже:

Последнее изображение, которое мы построим, руководствуясь книгой Седжвика, - это изображение коралла. Нам потребуются 3 пары итерационных функций. Их индексы 0, 1, 2 будут выбираться с вероятностями 0,4, 0,15, 0,45 соответственно. Итерационные функции приведены ниже.

F 0 x , y = 0 , 3077 x - 0 , 5315 y + 0 , 8863 , g 0 x , y = - 0 , 4615 x - 0 , 2937 y + 1 , 0962 , f 1 x , y = 0 , 3077 x - 0 , 0769 y + 0 , 2166 , g 1 x , y = 0 , 1538 x - 0 , 4476 y + 0 , 3384 , f 2 x , y = 0 , 5455 y + 0 , 0106 , g 2 x , y = 0 , 6923 x - 0 , 1958 y + 0 , 3808 .

Заменяем инструкцию #define инструкцией

#define CORAL

За последним #ifdef -блоком вставляем новый блок:

//Коралл #ifdef CORAL const int n = 100000 ; const int w = 620 , h = 620 ; const int xc = 10 , yc = 10 ; const int l = 600 ; const int m = 3 ; const double s = {0 , 0.4 , 0.55 }; const double f = {{0.3077 , -0.5315 , 0.8863 }, {0.3077 , -0.0769 , 0.2166 }, {0.0 , 0.5455 , 0.0106 }}; const double g = {{-0.4615 , -0.2937 , 1.0962 }, {0.1538 , -0.4476 , 0.3384 }, {0.6923 , -0.1958 , 0.3808 }}; #endif

Вот какое изображение получаем в результате компиляции и выполнения программы:

Заключение

Не знаю, как вам, а мне было интересно наблюдать за тем, как наборы математических формул "превращается" в весьма забавные изображения. А ещё меня удивляет то, что те, кто всё это придумали, смогли подобрать вероятности и константы, участвующие в итерационных функциях, таким образом, чтобы добиться таких удивительных картин! Методика подбора всех этих чисел (за исключением случая треугольника Серпиньского) мне совершенно непонятна!

Отмечу, что, судя по изображениям, треугольник Серпиньского и папоротник Барнсли являются фракталами. Скорее всего, то же самое можно сказать про "дерево" и "коралл", но их фрактальная природа, пожалуй, чуть менее очевидна.

По приведённой ниже ссылке, как всегда, можно скачать исходный код рассмотренной в статье программы. В файле main.c имеются четыре инструкции #define , каждая из которых соответствует одному из четырёх изображений. Три из них закомментированы. Ясно, что для того, чтобы перейти от одного изображения к другому, требуется закомментировать незакомментированную инструкцию и раскомментировать одну из закомментированных. Ну, Вы поняли...

А ещё с помощью несложного алгоритма можно добиться того, чтобы рассмотренные в статье изображения плавно "превращались" друг в друга. Но это уже тема для отдельной статьи .

В задачах на построение будем рассматривать построение геометрической фигуры, которое можно выполнить с помощью линейки и циркуля.

С помощью линейки можно провести:

    произвольную прямую;

    произвольную прямую, проходящую через данную точку;

    прямую, проходящую через две данные точки.

С помощью циркуля можно описать из данного центра окружность данного радиуса.

Циркулем можно отложить отрезок на данной прямой от данной точки.

Рассмотрим основные задачи на построение.

Задача 1. Построить треугольник с данными сторонами а, b, с (рис.1).

Решение. С помощью линейки проведем произвольную прямую и возьмем на ней произвольную точку В. Раствором циркуля, равным а, описываем окружность с центром В и радиусом а. Пусть С - точка ее пересечения с прямой. Раствором циркуля, равным с, описываем окружность из центра В, а раствором циркуля, равным b - окружность из центра С. Пусть А - точка пересечения этих окружностей. Треугольник ABC имеет стороны, равные a, b, c.

Замечание. Чтобы три отрезка прямой могли служить сторонами треугольника, необходимо, чтобы больший из них был меньше суммы двух остальных (а < b + с).

Задача 2.

Решение. Данный угол с вершиной А и луч ОМ изображены на рисунке 2.

Проведем произвольную окружность с центром в вершине А данного угла. Пусть В и С - точки пересечения окружности со сторонами угла (рис.3, а). Радиусом АВ проведем окружность с центром в точке О - начальной точке данного луча (рис.3, б). Точку пересечения этой окружности с данным лучом обозначим С 1 . Опишем окружность с центром С 1 и радиусом ВС. Точка В 1 пересечения двух окружностей лежит на стороне искомого угла. Это следует из равенства Δ ABC = Δ ОВ 1 С 1 (третий признак равенства треугольников).

Задача 3. Построить биссектрису данного угла (рис.4).

Решение. Из вершины А данного угла, как из центра, проводим окружность произвольного радиуса. Пусть В и С - точки ее пересечения со сторонами угла. Из точек В и С тем же радиусом описываем окружности. Пусть D - точка их пересечения, отличная от А. Луч AD делит угол А пополам. Это следует из равенства Δ ABD = Δ ACD (третий признак равенства треугольников).

Задача 4. Провести серединный перпендикуляр к данному отрезку (рис.5).

Решение. Произвольным, но одинаковым раствором циркуля (большим 1/2 АВ) описываем две дуги с центрами в точках А и В, которые пересекутся между собой в некоторых точках С и D. Прямая CD будет искомым перпендикуляром. Действительно, как видно из построения, каждая из точек С и D одинаково удалена от А и В; следовательно, эти точки должны лежать на серединном перпендикуляре к отрезку АВ.

Задача 5. Разделить данный отрезок пополам. Решается так же, как и задача 4 (см. рис.5).

Задача 6. Через данную точку провести прямую, перпендикулярную данной прямой.

Решение. Возможны два случая:

1) данная точка О лежит на данной прямой а (рис. 6).

Из точки О проводим произвольным радиусом окружность, пересекающую прямую а в точках А и В. Из точек А и В тем же радиусом проводим окружности. Пусть О 1 - точка их пересечения, отличная от О. Получаем ОО 1 ⊥ AB. В самом деле, точки О и О 1 равноудалены от концов отрезка АВ и, следовательно, лежат на серединном перпендикуляре к этому отрезку.

    Итак, я предлагаю поступить для построения угла 30 градусов при помощи циркуля и линейки следующим образом:

    1) Сначала нам необходимо построить равносторонний треугольник, а именно он будет CFD

    Перед этим мы циркулем строим две окружности одинакового диаметра, вторая окружность строится из точки В.

    2) Теперь, CD делится пополам отрезком FО.

    3) Значит угол CFD у нас получается равным 60 градусам

    4) А в соответствии с этим наши углы CFO и DFO будут равны 30 градусам

    Наш угол построен.

    Очень часто на уроках геометрии у нас дается задание - нарисовать угол 30 градусов с помощью циркуля и линейки. Сделать это можно несколькими способами. Рассмотрим один из них.

    С помощью линейки рисуем отрезок АВ.

    При удалении помогших нам в постройке угла линий, получается долгожданный угол 30 градусов.

    Чертим окружность любого радиуса. Затем выбираем точку на окружности и проводим еще окружность такого же радиуса.

    обозначим точки. где пересекаются две окружности как C и D.

    Теперь соединяем точки с помощью прямой.

    Теперь построим равносторонний треугольник, у которого все углы будут равняться 60 градусов.

    Теперь делим этот угол пополам, и у нас получается угол 30 градусов.

    Построит угол в тридцать градусов, можно следующим способом.

    Инструкция простая:

    1) Сначала рисуете круг любого диаметра;

    2) Рисуете еще один круг, точно такого же диаметра, а сторона второго круга, должна проходить через центр первого круга.

    3) Строите треугольник FCD, как показано на рисунке вверху.

    4) И теперь у вас есть два угла по тридцать градусов, это CFO и DFO.

    Как вы видите это достаточно простой способ построения угла в тридцать градусов используя только линейку и циркуль. Научиться так строить углы может любой человек, причем ему не придется очень долго мучится, так как все просто. Удачи.

    Построить угол в 30 градусов можно достаточно быстро, используя, согласно условию, циркуль и линейку.

    Для начала рисуем две перпендикулярные прямые а и b, которые пересекаются в точке А.

    Отмечаем в любом месте на прямой b точку B.

    Строим окружность, где В центр, а 2АВ радиус.

    О точка пересечения построенной окружности с прямой a.

    Угол ВОА как раз и будет составлять тридцать градусов.

    Что угол в 30 градусов, что в 60 градусов строится в прямоугольном треугольнике с углами 30 и 60 градусов.

    1) Начинаем с окружности: из т.О проведм окружность произвольного радиуса ОА = ОВ.

    3) Соединив точки А, С, В, получим искомый треугольник АВС с углами: lt; CAB = 60 гр. , lt; CBA = 30 гр.

    Данное построение основано на свойстве катета АС,равного половине гипотенузы АВ, лежащего против угла lt; CBA = 30 градусов, соответственно, второй угол lt; САВ = 60 гр. Метод построения тоже простой.

    1. Чертим две пересекающиеся окружности.
    2. Через центры окружностей проводим прямую линию.
    3. Отмечаем точки - вершины нашего равностороннего треугольника: точка пересечения прямой, соединяющей центры окружностей, с одной из окружностей; две точки пересечения окружностей.
    4. У равностороннего треугольника углы, как известно, равны 60 градусов.
    5. Ровно половину от 60 градусов получим, если возьмем угол, расположенный на прямой, соединяющей центры окружностей: она-то как раз и делит угол-вершину треугольника ровно пополам.
  • Для построения угла в 30 градусов с помощью линейки и циркуля предлагаю воспользоваться таким вариантом: сначала чертим ромб, а затем - его диагонали. Используя свойства ромба, можно утверждать, что угол ромба будет 30 градусов. Итак:

    1. Чертим линию PQ
    2. Ставим циркуль в точку Р, раздвигаем циркуль на произвольную ширину (например, до середины нашей линии) и чертим часть окружности. Точку, где она пересекается с линией, назовем S.
    3. Ставим циркуль в точку S и чертим еще раз часть окружности, чтобы она пересеклась с предыдущей. Должно получиться так:

    1. Точку, где пересеклись две части окружности назовем Т.
    2. Циркулем из точки Т проводим еще одну часть окружности, получили точку R.
    3. Соединяем линейкой точки Р - R, S-R, R-T, T-P, T-S, получаем ромб и, принимая вр внимание свойства ромба, получаем угол 30 градусов.

    30 градусов - это половина от 60. Деление угла пополам знаете? Ну вот. А 60 градусов строится на раз. Отметьте точку и проведите окружность с центром в этой точке. Потом, не меняя раствор циркуля, проведите ещ такую же окружность, но с центром на первой окружности. Вот угол между радиусом, проведнным в новый центр, и точкой пересечения двух окружностей будет точнхонько 60 градусов.

    На мой взгляд самый быстрый способ построить угол 30 градусов с помощью линейки и циркуля состоит в следующем:

    проводим горизонтальную линию, ставим на нее в произвольной точке циркуль и проводим окружность. В точке, где окружность пересекла линию (например справа) опять ставим циркуль и проводим еще одну такую же окружность. Проводим линию через центр первой окружности и точку пересечения окружностей (красная линия) и проводим линию через точки пересечения окружностей (зеленая линия). Острый угол между красной и зеленой линиями равен 30 градусам.

    Чтобы построить нужный нам угол, понадобилось всего пять движений.


I. Введение.

II. Главная часть:

    Построение отрезка, равного произведению двух других с помощью циркуля и линейки:

    1. первый способ построения;

      второй способ построения;

      третий способ построения,

d) четвёртый способ построения.

2) Построение отрезка, равного отношению двух других с помощью циркуля и линейки:

      первый способ построения;

      второй способ построения.

Заключение.

Приложение.

Введение

Геометрические построения, или теория геометрических построений - раздел геометрии, где изучают вопросы и методы построения геометрических фигур, используя те или иные элементы построения. Геометрические построения изучаются как в геометрии Евклида, так и в других геометриях, как на плоскости, так и в пространстве. Классическими инструментами построения являются циркуль и линейка (односторонняя математическая), однако, существуют построения другими инструментами: только одним циркулем, только одной линейкой, если на плоскости начерчена окружность и её центр, только одной линейкой с параллельными краями и.т.д.

Все задачи на построение опираются на постулаты построения, то есть на простейшие элементарные задачи на построение, и задача считается решённой, если она сведена к конечному числу этих простейших задач-постулатов.

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

Искусство построения геометрических фигур при помощи циркуля и линейки было в высокой степени развито в древней Греции. Одна из труднейших задач на построение, которую уже тогда умели выполнить, - построение окружности, касающейся трёх данных окружностей.

В школе изучают ряд простейших построений циркулем и линейкой (односторонней без делений): построение прямой, проходящей через заданную точку и перпендикулярной или параллельной данной прямой; деление пополам заданного угла, деление отрезка на несколько равных частей, используя теорему Фалеса (по сути дела - деление отрезка на натуральное число); построение отрезка большего данного в целое число раз (по сути -умножение отрезка на натуральное число). Однако, нами нигде не встречалась задача, где надо было бы с помощью циркуля и линейки умножить отрезок на отрезок, то есть построить отрезок, равный произведению двух данных отрезков, или деление отрезка на отрезок, то есть построить отрезок, равный отношению двух других отрезков. Нам показалась данная проблема очень интересной, и мы решили её исследовать, попытаться найти решение и возможность применения найденного метода решения к решению других задач, например, в математике и физике.

При решении задач на построение традиционная методика рекомендует нам четыре этапа: анализ, построение, доказательство и исследование. Однако, указанная схема решения задач на построение считается весьма академичной, и для её осуществления требуется много времени, поэтому часто отдельные этапы традиционной схемы решения задачи опускаются, например, этапы доказательства, исследования. В своей работе по возможности мы использовали все четыре этапа, да и то только там, где была в этом необходимость и целесообразность.

И последнее: найденный нами метод построения вышеназванных отрезков предполагает использование, помимо циркуля и линейки, произвольно выбранного единичного отрезка. Введение единичного отрезка диктуется ещё и тем, что он необходим хотя бы для того, чтобы подтвердить справедливость найденного нами метода нахождения отрезка на конкретных частных примерах.

ОБЩАЯ ПРОБЛЕМА І

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

Примечание:

предполагается:

    Линейка - односторонняя, без делений.

    Задан отрезок единичной длины.

Исследование.

1.Рассмотрим прямые y=2x-2 2 и y=3x-3 2 и попробуем найти координаты точки пересечения этих прямых геометрическим и аналитическим методами:

а
) геометрический метод (Рис.1 ) показал, что координаты точки А пересечения этих прямых: «5»-абсцисса, «6»- ордината, т.е. АЕ=5, АД=6.

б) аналитический метод данный результат подтверждает, т.е. А (5;6) - точка пересечения прямых.

Действительно, решив систему уравнений

y=6 А(5;6)- точка пересечения прямых.

2.Рассмотрим отрезок: ОВ=2, ОС=3, АД=6, АЕ=5.

Можно предположить, что АД=ОВ×ОС, т.к. 6=2×3; АЕ=ОВ+ОС, т.к. 5=2+3 ,где

2=ОВ-угловой коэффициент уравнения y=2x-2 2 , 3=ОС - угловой коэффициент уравнения y=3x-3 2 , АД=у А, ОД=х А - координаты точки А пересечения наших прямых.

Наше предположение проверим на общем примере аналитическим методом, т.е. на уравнениях прямых y=mx-m 2 и y=nx-n 2 (где m≠n) проверим, что точка пересечения прямых имеет координаты:

y=nx-n 2 nx-n 2 =mx-m 2 x=(m 2 -n 2)÷(m-n)=m+n и y=mx-m 2 =m(m+n)-m 2 =mn

координаты точки А пересечения прямых, где m и n – угловые коэффициенты этих прямых, ч.т.д.

3. Осталось найти метод построения отрезка. АД=ОВ×ОС=m∙n=y А - ординаты точки А пересечения прямых У=mx-m 2 и У=nx-n 2 , где m≠n и m=OB, n=OC- отрезки, отложенные на оси ох. А для этого мы должны найти метод построения прямых У=mx-m 2 и У=nx-n 2 . из рассуждений видно, что эти прямые должны пройти через точки В и С отрезков OB=m и OC=n, которые принадлежат оси ох.

Замечание 1. Вышеназванные обозначения отрезков соответствуют рис.1 «Приложения»

Первый способ построения отрезка AD=mn, где m>1ед., n>1ед., m≠n.

единичный отрезок

произвольный отрезок, m>1eд., n>1eд.

n произвольный отрезок, где m≠n.

Построение (Рис.2)

    Проведём прямую ОХ

    На ОХ отложим ОА 1 = m

    На ОХ отложим А 1 С 1 =1ед

    Построим С 1 В 1 =m, где С 1 В 1 ┴ ОХ

    Проведём прямую А 1 В 1 , уравнение которой y=mx-m 2 в координатных осях ХОУ (масштаб на осях одинаковый).

Примечание:


Рис.2

Замечание 1.

Действительно, тангенс угла наклона этой прямой tgά 1 = С 1 В 1 /А 1 С 1 =m/1ед=m, которая проходит через точку А 1 отрезка ОА 1 =m.

Анологично строим прямую, уравнение которой У=nx-n 2 .

6.На оси ОХ отложим ОА 2 =n (точка А 2 случайно совпала с точкой С1).

7.На оси ОХ отложим А 2 С 2 =1ед.

8.Строим В 2 С 2 =n, где В 2 С 2 ┴ ОХ.

9.Проведём прямую В 2 А 2 , уравнение которой У=nx-n 2 .

Замечание 2. Действительно, тангенс наклона этой прямой tg ά 2 =C 2 B 2 /A 2 C 2 =n/1ед=n, которая проходит через т. А 2 отрезка ОА 2 =n.

10. Получили т.А (m+n; mn) – точку пересечения прямых У=mx-m 2 и У=nx-n 2

11. Проведем АД, перпендикулярную ох, где Д принадлежит оси ох.

12. Отрезок АД=mn (ордината т. А), т.е. искомый отрезок.

Замечание 3. а) действительно, если в нашем примере, n=4ед., m=3 ед., то должно быть АД=mn=3ед.∙4ед.=12ед. У нас так и получилось: АД=12ед.; б) прямая В 1 В 2 в этом построении не использовалась. В В – тоже.

Существует ещё, по крайней мере, три разных способа построения отрезка АД=mn.

Второй способ построения отрезка АД= mn , где m >1ед, n >1ед, m и n –любые.

Анализ

Анализ ранее построенного чертежа (рис.2), где с помощью найденного способа построения прямых У=mx-m 2 и У=nx-n 2 нашли т.А (m+n; mn) (это первый способ), подсказывает, что т.А(m+n; mn) можно найти построением любой из этих прямых (У=mx-m 2 или У=nx-n 2) и перпендикуляра АД, где АД – перпендикуляр к ОХ, АД=mn, Д принадлежит оси ОХ. Тогда искомая точка А (m+n; mn) является точкой пересечения любой из этих прямых и перпендикуляра АД. Достаточно найти углы наклона этих прямых, тангенсы которых, согласно угловым коэффициентам, равны m и n, т.е. tg ά 1= m и tg ά 2 =n. Учитывая, что tg ά 1 =m/1ед=m и tg ά 2 =n/1ед=n, где 1ед-единичный отрезок, можно легко построить прямые, уравнения которых У=mx-m 2 и У=nx-n 2 .

единичный отрезок

n n>1ед., m и n-любые числа.

П

остроение (Рис.3)

Рис.3

1.Проведём прямую ОХ.

2.На оси ОХ откладываем отрезок ОА 1 =m.

3.На оси ОХ отложим отрезок А 1 Д=n.

4.На оси ОХ отложим отрезок А 1 С 1 =1ед.

5.Строим С 1 В 1 =m, где С 1 В 1 ┴ ОХ.

6.Проведём прямую А1В1, уравнение которой У=mx-m2, в координатных осях ХОУ (масштаб на осях одинаковый).

7.Востанавливаем перпендикуляр к ОХ в точке D.

8.Получаем точку А (m+n; mn) - точку пересечения прямой У=mx-m2 и перпендикуляра AD

9.Отрезок AD=mn, то есть искомый отрезок.

Вывод: Этот второй способ универсальнее первого способа, так как позволяет найти точу А(m+n;mn)и тогда, когда m=n>1ед., тогда координаты этой точки А(2m;m 2) и AD=m 2 .

Другими словами этот метод позволяет найти отрезок, равный квадрату данного, длина которого больше 1ед.

Замечание: Действительно, если в нашем примере m=3ед., n=5ед., то должно быть AD=mn=3ед.×5ед.=15ед. У нас так и получилось: AD=15ед.

Третий способ построения отрезка AD = mn , где m >1ед, n >1ед и m n .

Используя рисунок №2, проведём штриховой линией прямую В 1 В 2 до пересечения с ОХ в точке Е € ОХ, и прямую В 1 В ┴ В 2 С 2 , тогда

В 1 В=С 1 С 2 =ОС 2 -ОС 1 =(n+1ед.)-(m+1ед)=n-m, а В 2 В=В 2 С 2 -В 1 С 1 =m-n => В 1 В=В 2 В=>∆В 1 ВВ 2 - равнобедренный, прямоугольный>∆ЕС 1 В 1 - равнобедренный, прямоугольный => ά=45º

Т.к. ОС 1 =m+1ед., а ЕС 1 =В 1 С 1 =m, то ОЕ=ОС 1 -ЕС 1 =m+1ед.-m=1ед.

Из рассуждений следует, что точки В 1 и В 2 можно найти по-другому, т.к. они являются точками пересечения прямой ЕВ 1 , проведённой под углом ά=45º к оси ОХ и перпендикуляров к ОХ: В 1 С 1 и В 2 С 2 , а ОЕ=1ед.Дальше, используя уже предыдущие методы будем иметь следующий способ построения.

Единичный отрезок.

n n>1ед., и m≠n.

Построение (Рис.4)

1.Проведём прямую ОХ.

5.Построим
ά=С 1 ЕВ 1 =45º, где В 1 - точка пересечения перпендикуляра С 1 В 1 со стороной ά=45º.

7.Отложим ОА 2 =n, где А 2 € ОХ.

8.Отложим А 2 С 2 =1ед., где С 2 € ОХ.

9.Восстановим перпендикуляр С 2 В 2 к оси ОХ в точке С 2 , где В 2 - точка пересечения перпендикуляра с прямой ЕВ 1 .

10.Проводим прямую А 2 В 2 , уравнение которой У=nx-n 2 , до пересечения с прямой А 1 В 1 в точке А.

11.Опускаем на ОХ из точки А перпендикуляр и получаем AD , равный mn, где D € ОХ, так как в координатных плоскостях осях ХОУ координаты точки А(m+n;mn).

Рис.4

Замечание: Недостаток данного способа такой же, как у первого способа построения, где построение возможно только при условии m≠n.

Четвёртый способ построения отрезка AD = mn , где m и n - любые, большие единичного отрезка.

Единичный отрезок.

n n>1ед., m и n- любые.

Построение (Рис.5)

Рис.5

1.Проведём прямую ОХ.

2.Отложим ОЕ=1ед., где Е € ОХ.

3.Отлтжим ЕС 1 =m, где С 1 € ОХ.

4.Восстановим перпендикуляр в точке С 1 к оси ОХ.

5.Построим ά=С 1 ЕВ 1 =45º, где В 1 - точка пересечения перпендикуляра С 1 В 1 со стороной ά=45º.

6.Отложив ОА 1 =m, проводим прямую А 1 В 1 , уравнение которой У=mx-m 2 , А € ОХ.

7.Отложим А 1 D=n, где D € OX.

8.Восстановим перпендикуляр в точке D до пересечения его в точке А с прямой А 1 В 1 , уравнение которой У=mx-m 2 .

9.Отрезок перпендикуляра AD = произведению отрезков m и n, то есть AD=mn, так как А (m+n; mn).

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

Общая проблема ІІ

С помощью циркуля и линейки построить отрезок, равный отношению двух других отрезков.

Примечание:

единичный отрезок меньше отрезка делителя.

Первый способ построения отрезка n = k / m , где m >1ед.

Единичный отрезок.

Построение (Рис.6)

2.На ОУ отложим ОМ=k.

3. На ОХ отложим ОА 1 = m.

4.На ОХ отложим А 1 С 1 =1ед.

5.Построим С 1 В 1 =m, где С 1 В 1 ┴ ОХ.

6. Проведём прямую А 1 В 1 , уравнение которой y=mx-m 2 в координатных осях ХОУ (масштаб на осях одинаковый, равный 1ед.).

7.Восстановим перпендикуляр МА в точке М к оси ОУ, где А- точка пересечения МА с прямой А 1 В 1 (т.е. А € А 1 В 1).

8.Опустим перпендикуляр из точки А на ось ОХ до пересечения его с осью ОХ в точке D. Отрезок AD=ОМ=k=mn.

9.Отрезок А 1 D= n - искомый отрезок, равный n=k/m.

Рис.6

Доказательство:

1.Уравнение прямой А 1 В 1 действительно У=mx-m 2 , при У=0 имеем 0=mx-m 2 => x=m=OA 1, т а угловой коэффициент - tg

2.В ∆АDA 1 tg 1 D=AD/A 1 D=B 1 C 1 /A 1 C 1 =>A 1 D=AD×A 1 C 1 /B 1 C 1 =k×1ед./m=mn/m=n, т.е. А 1 D=n=k/m - искомый отрезок.

Замечание. Действительно, если в нашем примере m=3ед., k=15ед., то должно быть A 1 D=n=k/m=15ед./3ед.=5ед. У нас так и получилось.

Второй способ построения отрезка n = k / m , где m >1ед.

Единичный отрезок.



Рис.7

1.Строим координатные оси ХОУ.

2.На ОУ отложим ОМ=k.

3.Отложим ОЕ=1ед., где Е € ОХ.

4.Отложим ЕС 1 =m, где С 1 € ОХ.

5.Восстановим перпендикуляр в точке С 1 к оси ОХ.

6.Строим С 1 ЕВ 1 =45º, где В 1 - точка пересечения перпендикуляра С 1 В 1 со стороной угла С 1 ЕВ 1 = 45º.

7. На ОХ отложим ОА 1 = m.

8. Проведём прямую А 1 В 1 , уравнение которой y=mx-m 2 в координатных осях ХОУ (масштаб на осях одинаковый, равный 1ед.).

9.Восстановим перпендикуляр МА в точке М к оси ОУ, где А - точка пересечения МА с прямой А 1 В 1 (т.е. А € А 1 В 1).

10.Опустим перпендикуляр из точки А на ось ОХ до пересечения его с осью ОХ в точке D. Отрезок AD=ОМ=k=mn.

11.Отрезок А 1 D=n - искомый отрезок, равный n=k/m.

Доказательство:

1.∆В 1 С 1 Е - прямоугольный и равнобедренный, так как С 1 ЕВ 1 =45º =>В 1 С 1 =ЕС 1 =m.

2.А 1 С 1 =ОС 1 - ОА 1 =(ОЕ+ЕС1) - ОА 1 =1ед+m-m=1ед.

3.Уравнение прямой А 1 В 1 действительно У=mx-m 2 , при У=0 имеем 0=mx-m 2 => x=m=OA 1, а угловой коэффициент - tg

4.В ∆АDA 1 tg 1 D=AD/A 1 D=B 1 C 1 /A 1 C 1 => A 1 D=AD×A 1 C 1 /B 1 C 1 =k ×1ед./m=mn/m=n, т.е. А 1 D=n=k/m - искомый отрезок.

Заключение

В своей работе мы нашли и исследовали различные методы построения с помощью циркуля и линейки отрезка, равного произведению или отношению двух других отрезков, предварительно дав своё определение этим действиям с отрезками, так как ни в одной специальной литературе мы не смогли найти не только определение умножения и деления отрезков, но даже упоминания об этих действиях над отрезками.

Здесь нами было использовано практически все четыре этапа: анализ, построение, доказательство и исследование.

В заключение мы бы хотели отметить возможность применения найденных методов построения отрезков в отдельных разделах физики и математики.

1. Если продлить прямые y=mx-m 2 и y=nx-n 2 (n>m>0) до пересечения с осью ОУ, то можно получить отрезки, равные m 2 , n 2 , n 2 - m 2 (Рис.8) , где ОК=m 2 , ОМ= n 2 , КМ= n 2 - m 2 .

Р
ис.8

Доказательство:

Если х=0, то y=0-m 2 =>ОК=m 2 .

Аналогично доказывается, что ОМ= n 2 =>КМ=ОМ-ОК= n 2 - m 2 .

2. Так как произведение двух отрезков есть площадь прямоугольника со сторонами, равными этим отрезкам, то, найдя отрезок, равный произведению двух других, тем самым мы представляем площадь прямоугольника в виде отрезка, длина которого численно равна этой площади.

3. В механике, термодинамике есть физические величины, например, работа (А=FS,A=PV), численно равные площадям прямоугольников, построенных в соответствующих координатных плоскостях, поэтому в задачах, где требуется, например, сравнить работы по площадям прямоугольников, очень просто это сделать, если эти площади представить в виде отрезков, численно равных площадям прямоугольников. А отрезки легко сравнить между собой.

4. Рассмотренный метод построения позволяет строить и другие отрезки, например, используя систему уравнений y=mx-m 3 и y=nx-n 3 , можно построить отрезки, имея данные m и n такие, как m 2 +mn+n 2 и mn(m+n), так как точка А пересечения прямых, заданных данной системой уравнений, имеет координаты (m 2 +mn+n 2 ; mn(m+n), а также можно построить отрезки n 3 , m 3 , и разность n 3 - m 3 , получаемые на ОУ в отрицательной области при Х=0.

Произведения . ... помощи циркуля и линейки . Алгоритм деления отрезка АВ пополам: 1) поставить ножку циркуля в точку А; 2) установить раствор циркуля равным длине отрезка ...

  • Биография Пифагора

    Биография >> Математика

    ... построением правильных геометрических фигур с помощью циркуля и линейки . ... помощи циркуля и линейки . Со времени возникновения задачи прошло более двух ... равна b/4+p, один катет равен b/4, а другой b/2-p. По теореме Пифагора имеем:(b/4+p)=(b/4)+(b/4-p)или ...