Пифагоровы тройки чисел

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

Согласно теореме Пифагора, для прямоугольных треугольников имеет место равенство:

Для Египетского треугольника:

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

 

Естественно задать следующий вопрос: существуют ли еще такие тройки чисел, отличные от описанных в формуле (2) (то есть, существуют ли прямоугольные треугольники с целочисленными сторонами не подобные египетскому). Ответ утвердительный. Таких троек бесконечно много. Для их нахождения используются методики, описанные в математических трудах по теории чисел. Мы, однако, поставим задачу нахождения таких троек с помощью компьютерной программы. Для ее разработки используем некоторые очевидные свойства пифагоровых троек. Для левой части уравнения (1) справедливо:

Автором на простом языке QBasic написана программа 1, которая определяет и выводит на экран пифагоровы тройки для x, y в диапазоне {3...100}:

  • REM Пифагоровы тройки
  • DIM x, , m, i AS INTEGER
  • DIM z AS SINGLE
  • CLS
  • FOR x = 3 TO 100 STEP 2
  •    FOR y = 4 TO 100 STEP 2
  •       z = SQR(x * x + y * y)
  •       IF z <> INT(z) THEN 1
  •       IF x < y THEN m = x ELSE m = y
  •       FOR i = 2 TO m \ 2 + 1
  •          IF x MOD i = 0 AND y MOD i = 0 THEN 1
  •       NEXT i
  •       PRINT x, y, z
  • 1  NEXT y
  • NEXT x
  • END
 

Результат работы программы 1

Рассмотрим устройство программы «Пифагоровы тройки». После очистки экрана оператором CLS  организуются вложенные циклы с изменением x от 3 до 100 с шагом 2 и y от 4 до 100 с шагом 2. Далее выполняется вычисление z = sqr(x*x + y*y).В следующей строке с помощью операции выделения целой части числа INT(z) проверяется целочисленность z и, если z нецелое, происходит переход по метке 1 к следующему значению у. Если z целое, выполняется следующая строка программы в которой переменной m присваивается значение меньшего из чисел x, y (строка IF x < y THEN m = x ELSE m = y). Далее организуется цикл с изменением переменной i от 2 до m \ 2 + 1 и в строке IF x MOD i = 0 AND y MOD i =0 THEN 1 определяется наличие общих делителей у чисел x, y (если у чисел есть общий делитель i, происходит переход по метке 1 на следующее значение y). Если числа x, y взаимно простые, на экран выводится пифагорова тройка чисел x, y, z.  

Продолжим наши исследования, для этого создадим программу 2, которая будет не только находить пифагоровы тройки, но и представлять их на координатной плоскости [x, y] в виде точек белого цвета на черном фоне. Программу создадим в среде Visual Basic. За основу возьмем программу, созданную на языке QBasic. Установим диапазоны значений x, y на {3…500•mass}, введем  в меню выбор масштаба построения mass 1:1 … 1:32.

Код события, которое наступает при выборе в меню пункта «Пуск»:

  • Private Sub start_Click()
  • For x = 1 To 500
  •    For y = 1 To 500
  •       PSet (x + 5, y + 5), RGB(0, 0, 0)
  •    Next y, x
  •    For x = 3 To 500 * mass Step 2
  •       For y = 4 To 500 * mass Step 2
  •          z = Sqr(x * x + y * y)
  •          If z <> Int(z) Then GoTo 1
  •          If x < y Then m = x Else m = y
  •          For i = 2 To m \ 2 + 1
  •             If x Mod i = 0 And y Mod i = 0 Then GoTo 1
  •          Next i
  •              PSet (x / mass + 5, y / mass + 5), RGB(255, 255, 255)
  • 1     Next y
  •  Next x
  • End Sub
 

Выбор масштаба простроения

 

Результат работы программы 2 (масштаб 1:8)

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

Представляет интерес появление в масштабе 1:32 четко видимых круговых структур из точек:

 

Увеличенный фрагмент

Так как каждая белая точка на координатной плоскости соответствует паре целых координат x, y у которых z также целое число, можно представить эти точки как концы отрезков имеющих начало в точке (0,0) и имеющего длину z, то есть целочисленное значение. Изменим программу 2 так, чтобы она выводила на экран пифагоровы тройки в виде таких векторов. Для этого заменим строку:

PSet (x / mass + 5, y / mass + 5), RGB(255, 255, 255) на:

Line (x / mass + 5, y / mass + 5)-(0+5,0+5), RGB(x mod 255, y mod 255, z mod 255)

Ниже показан результат работы такой программы в масштабе 1:1 ( в ней для большей наглядности цвет векторов зависит от значений x, y, z).

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

Для большей наглядности снова изменим программу 2, а именно: установим диапазон значений x, y {3...50}; выведем на экран точки с целочисленными координатами (точки белого цвета на черном фоне); установим цвет векторов - голубой. В результате работы программы мы увидим как среди множества точек с целочисленными координатами выделяются точки, соответствующие векторам с целочисленной длиной (они обозначены красными окружностями):

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

 

 

Сайт создан в системе uCoz