![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() АЛГОРИТМЫ Новости Рассылка новостей Форум AlgoPascal Редактор блок-схем Статьи О сайте Контакты |
![]() |
![]() Диофантова задача о "рациональном кубоиде"
Автор:Казаков Ю.В. В настоящее время в математике уже утвердилось новое направление, которое можно обозначить, как компьютерная математика. В математических дисциплинах по аналогии с другими научными дисциплинами стала использоваться технология численного эксперимента. В связи развитием вычислительной техники это дает возможность проанализировать серьезные теоретические проблемы. Известно достаточно большое количество работ в алгебре и в теории чисел, где применение компьютеров позволило получить новые результаты. В качестве примеров можно привести хотя бы задачу о плотности распределения простых чисел, где на основе численных экспериментов были проанализированы распределения нескольких десятков миллионов простых чисел и получены результаты, подтверждающие известные теоретические гипотезы. При использовании компьютерных методов решения подобных задач встают вопросы корректности, оптимизации используемых алгоритмов и естественно «конечности» используемых алгоритмов. Среди всех геометрических диофантовых задач, решение которых не найдено до сих пор, одной из самых трудных и наиболее известных является задача о «целочисленном кирпиче» или задачи о «рациональном кубоиде». Суть которой состоит в том, что бы найти минимальный прямоугольный параллелепипед у которого все стороны и диагонали (включая главную диагональ) являются целыми числами. В настоящей работе проведен анализ алгоритмов решения задачи. Предложенные алгоритмы реализованы на языке Турбо Паскаль. Известны другие языки программирования, которые позволяют использовать «длинную целочисленную математику», однако их использование на задачах с большим перебором значений приводит к большим временным затратам при проведении вычислений. Проведены оценки параметров, позволяющие уменьшить трудоемкость и время проведения расчета. При этом используются результаты теории чисел о разложения целого числа на сумму двух квадратов. Показано, что в диапазоне длин главной диагонали параллелепипеда до значения d= 2147483648 задача решения не имеет. Постановка задачи. Найти целочисленное решение системы уравнений (1-4).
Алгоритм 1. "Тупой до безобразия" алгоритм для "очень быстрых" компьютеров с "длинной целочисленной математикой". Естественно, что достаточно рассматривать только положительные решения для (x,y,z). Если нам удастся найти хотя бы одно решение, то в силу симметрии задачи будет существовать еще 47 целочисленных решений, включая отрицательные значения параметров. Существование решения (x,y,z) можно проверять внутри области (x > 0, y > 0, z > 0) образованной плоскостями x=0, y=x, z=y.Заметим, что в этой задаче невозможны равенства, каких либо двух параметров из (x,y,z). На каждом шаге алгоритма меняем значение параметра x в сторону увеличения, начиная, например, со значения х=3. Параметр у меняем в пределах у=1...x, и соответственно параметр z меняем в пределах z=1...y. При этом проверяем выполнение равенств (1-4). Если решение существует, то рано или поздно оно будет найдено. Алгоритм 2. Предлагаемый ниже алгоритм имеет некоторые элементы оптимизации по сравнению с алгоритмом 1. Алгоритм строится таким образом, что бы избавить пользователя от вычисления квадратов больших величин и уменьшить перебор за счет использования условия разложения целого числа на сумму двух целых квадратов. Заметим, что если решение существует, то в соответствии с равенствами (1-4) должно существовать шесть пифагоровых троек
Условие существования разложения квадрата d на сумму двух целых квадратов
Если в разложении присутствует только одно число указанного вида, то N(d)=1. А если число d представляется в виде: то будет существовать (элементы разложения с нулевым значением одного из слагаемых не учитываются): N(d)=4 k1 k2+2(k1+k2)вариантов разложения d на сумму квадратов. Если число d представляется в виде то N(d)=4 (2 k1 k2+(k1+k2))k3+4 k1 k2+2(k1+k2)+2k3 Заметим, что число s, которое входит в разложение не оказывает влияния на количество допустимых пар разложения. И если существует набор пар при s=1, то естественно будет существовать набор и для любого другого s, только каждый элемент пары разложения будут умножен на s. Поэтому нам достаточно перебрать только те значения d, для которых s=1. Как показывают расчеты, плотность таких чисел на "начальном участке" натурального ряда составляет примерно 1/20. Понятие "начальный участок" очень относительное – здесь говорится об участке натуральных чисел, с которым работал автор в процессе реализации алгоритма. Далее для каждого d, для которого N(d) > 2 ищутся все пары (a,b). Заметим, что для существования разложения необходимо найти три числа (w,r,q), такие что d=w(r2+q2)тогда a=w(r2-q2), b=2wpq и условие (6) будет выполнено. Заметим, что проверка условий существования таких (w,r,q) не требуется, – эти условия автоматически выполняются для тех d, которые удовлетворяют требованию (7). Таким образом, по заданному значению d находятся все возможные значения пар (ai,bi), i=1...N(d) Заметим, что при поиске этих пар нет необходимости возводить в квадрат числа (ai,bi,d), так как они составляют пифагорову тройку. В геометрической интерпретации элементы этих троек представляют – первые два элемента это длина стороны искомого параллелепипеда и длина диагонали его боковой грани, последний элемент длина главной диагонали. Далее, после того как все пары найдены, необходимо проверить существование трех пифагоровых троек (последние три тройки в (5)), которые составлены из элементов множества D (содержащего 2*N(d) элементов) D={ai,bi}, i=1...N(d)То есть, если решение существует, то должны существовать пифагоровы тройки (bn,bm,ak),(bn,bk,am),(bm,bk,an), где квадрат третьего элемента равен сумме квадратов двух первых. При этом здесь не должно быть совпадающих индексов. Поскольку здесь не удается в общем виде установить строгие отношения порядка, то в искомом наборе параметры могут меняться местами внутри одной тройки. Эти наборы в геометрической интерпретации представляют – первые два элемента - длины сторон искомого параллелепипеда и последний элемент длина диагонали его боковой граней. Как только для некоторого значения d находятся три такие пифагоровы тройки - задача решена. Предложенный алгоритм позволяет, не используя "длинную целочисленную математику", значительно расширить диапазон проверенных чисел по сравнению с алгоритмом типа 1. Для каждого значения d анализируются все возможные варианты. Алгоритм 3. В алгоритме 2 реализована процедура сканирования по параметру d. Однако возможен подход, позволяющий параметризовать задачу таким образом, что будут автоматически выполняться условия целочисленности главной диагонали и целочисленности диагонали одной из граней. При этом остается проверить целочисленность двух оставшихся диагоналей двух боковых граней. Очевидно, что можно рассмотреть задачу в терминах рациональных чисел – и тогда задача сводится к поиску точек с рациональными координатами на сфере единичного радиуса. Положение любой точки на сфере единичного радиуса однозначно описывается двумя углами, а ее декартовы координаты, представляются комбинацией функций синусов и косинусов этих углов. Выбирая значения тригонометрических функций таким образом, чтобы они были рациональными числами, получаем определенные условия, обеспечивающие выполнение (1-4). При определенном выборе параметров, такая параметризация полностью представит все рациональные точки поверхности единичной сферы. Достаточно рассматривать в силу симметрии задачи только 1/48 поверхности сферы. После приведения всех рациональных дробей к общему знаменателю легко получить решение исходной задачи в целых числах. Такая параметризация имеет вид x=4mnrq y=2rq(m2-n2) z=(m2+n2)(r2-q2) d=(m2+n2)(r2+q2)Задача будет решена, если выполнены условия: (4mnrq)2+((m2+n2)(r2-q2))2=k2 ((m2+n2)(r2-q2))2+(2rq(m2-n2))2=l2где k,l – целые числа. Для решения задачи необходимо подобрать значения параметров (m, n, r, q) так чтобы выполнялись условия целостности k,l. Очевидно, что эти равенства представляют собой равенства для пифагоровых троек. И следовательно, будут тождественно выполняться, если существуют параметры T,S,E,H,F,G такие что 2FTS=4mnqr F(T2-S2)=(m2+n2)(r2-q2) 2GHE=(m2+n2)(r2-q2) G(H2-E2)=2rq(m2-n2) Перебор вариантов реализуется следующим образом: выбирается начальное значение параметра m, затем параметр n варьируется в пределах от 1 до m-1, далее выбираем параметры r, q - r варьируется в пределах от 1 до m-1, q варьируется в пределах от 1 до r-1. При этом каждый получающийся набор (m, n, r, q) будет уникален. Можно потребовать выполнения ограничений на величину z z < x, z < y. Это позволяет ограничить количественно варианты перебора возможных значений параметров сверху. Однако поскольку все наборы параметров (m, n, r, q) уникальны – то вопрос целесообразности таких условий необходимо анализировать. Алгоритм реализован на языке Турбо-Паскаль и расчеты проведены до значения r = 100. В этом диапазоне параметров предлагаемый алгоритм также не дал результатов. Хотя было найдено достаточно много значений параметров, для которых только одна из диагоналей боковых граней нецелое число. Примеры приведены ниже:
Литература.
1. R.K. Guy Unsolved Problems in Number Theory. – Springer Verlag, 1981, p. 97-101.
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
![]() |