|
До попереднього розділу | До наступного розділу | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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. Це свідчить про те, що за допомогою піфагорових трійок можна досить точно розраховувати деякі ірраціональні числа.