![]() |
|
К предыдущему разделу | К следующему разделу | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
n | a | b | c | α, град. | n | а | b | с | α, град. |
1 | 20 | 99 | 101 | 11,42 | 6 | 120 | 64 | 136 | 61,93 |
2 | 40 | 96 | 104 | 22,62 | 7 | 140 | 51 | 149 | 69,98 |
3 | 60 | 91 | 109 | 33,40 | 8 | 160 | 36 | 164 | 77,32 |
4 | 80 | 84 | 116 | 43,60 | 9 | 180 | 19 | 181 | 83,97 |
5 | 100 | 75 | 125 | 53,13 | 10 | 200 | 0 | 200 | 90 |
Анализ таблицы показывает, что при зафиксированом m, когда n пробегает ряд 1,…,9 , генерируются тройки с возрастающими углами, которые размещаются в первом квадранте. Последняя десятая тройка — с нулевым компонентом b дает угол 90°. Эти углы троек равномерно размещены по окружности, как показано на рис.3.
Рисунок 3. Рациональные точки серии пифагоровых троек
Рисунок построен программой, написаной на языке Паскаль, которая генерирует необходимые последовательности пифагоровых троек. На рис.4 показано, как размещены на окружности 150 рациональных точек пифагоровых троек.
Рисунок 4. Рациональные точки серии 150 пифагоровых троек
Таким образом, можно, подобрав соответствующую пифагорову тройку, задать любую тригонометрическую функцию, которая равняется рациональному числу. Но остается вопрос, каким образом это сделать, чтобы угол тройки отличался от заданого угла на допустимую погрешность.
Из опытов по смене параметров m и n видно, что для поиска нужной тройки достаточно выбрать достаточно большое значение m и подобрать n последовательным перебором такое, чтобы
  2mn
tgα = a/b = ————.
(9)
m2 − n2
Как видим, числа а и b имеют порядок квадрата чисел m и n. То есть ихняя розрядность приблизительно вдвое больше, чем разрядность последних. Это значит, что, во-первых, может случиться, что нужно будет выбрать слишком большое число m, такое, что числа а и b нельзя будет представить как целые числа в компьютере, во-вторых, чем больше значение m — тем сложнее подобрать соответствующее число n. Поэтому следует разработать рациональный способ поиска m и n.
Пусть tgα = х. Тогда решим уравнение (9) относительно n:
х(m2 − n2) = 2mn;
хn2 + 2mn − хm2 = 0;
−2m ± √(4m2 + 4x2m2) −1 ± √(1 + x2)
n = —————————— = m ———————.
2x x
Отсюда, приняв во внимание, что n должно быть положительным, получим:
n' −1 + √(1 + tg2α)
— = ————————.
(10)
m tgα
Следует отметить, что здесь для правильности равенства n' — не целое число, которое отличается от целого числа n на величину δ = n' − n, которая пропорциональна погрешности представления угла. На основе равенства (10) можно предложить следующий алгоритм поиска достойной аппроксимации угла α.
В алгоритме операция rnd(a) — дает наиболее близкое к а целое число, то есть округленное а. Наиболее подходящая тройка — значит оптимальное решение, которое, например, удовлетворяет требования небольшой разрядности при удовлетворительной точности.
Алгоритм реализован в программе Triplet_find.PAS, которая выполняется в интерпретаторе языка Паскаль — программе Algo. Результат ее работы:
для угла 10° с абсолютной погрешностью 0,1% есть тройка (92,525,533), а с погрешностью 0,002% — (1120,6351,6449).
Следует отметить, что для угла 45° с точностью 5·10−10 получается тройка (927538920,927538921,1311738121) , которое задает число с/а = √2 с точностью 10−9. А если это число представить как 2c / (a + b), то погрешность представления составит 10−19. Это свидетельствует о том, что с помощью пифагоровых троек можно достаточно точно расчитывать некоторые иррациональные числа.