Главная Работа Фото Рисунки Гостевая
К предыдущему разделуК следующему разделу


4. Расчет рациональных точек на окружности

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

Рассмотрим ряд троек, сгенерированых по (2) и их положение на окружности. В таблице 3 представлены тройки и ихние углы для m = 10 и возрастающих значений n. То есть в таблице представлены не только примитивные тройки.

Таблица 3. Пифагоровы тройки и ихние углы для m = 10.
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)
                               m2n2

Как видим, числа а и b имеют порядок квадрата чисел m и n. То есть ихняя розрядность приблизительно вдвое больше, чем разрядность последних. Это значит, что, во-первых, может случиться, что нужно будет выбрать слишком большое число m, такое, что числа а и b нельзя будет представить как целые числа в компьютере, во-вторых, чем больше значение m — тем сложнее подобрать соответствующее число n. Поэтому следует разработать рациональный способ поиска m и n.

Пусть tgα = х. Тогда решим уравнение (9) относительно n:

          х(m2n2) = 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) можно предложить следующий алгоритм поиска достойной аппроксимации угла α.

    Алгоритм. Начальные данные: угол 0<α<90°, максимальная погрешность Δ, максимальное значение генерирующего коэфициента mmах.
  1. Пункты 2−6 виполнить для 2 ≤ mmmах.
  2. Найти f = n'/m по формуле (10).
  3. n = rnd(f ·m).
  4. Вычисление тройки (a,b,c) по формулам (2).
  5. Вычисление погрешности δ = |arctg(a/b) − α|.
  6. Если δ ≤ Δ, то (a,b,c) и δ запоминаются.
  7. Среди запомненных (a,b,c) выбрать наиболее подходящую тройку, как результат. Конец.

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



К предыдущему разделуК следующему разделу


Сайт управляется системой uCoz