Научная статья на тему 'Вычисления в рациональных числах при решении типичных задач вычислительной геометрии в системах автоматизированного проектирования'

Вычисления в рациональных числах при решении типичных задач вычислительной геометрии в системах автоматизированного проектирования Текст научной статьи по специальности «Математика»

CC BY
176
52
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
РАЦИОНАЛЬНОЕ ЧИСЛО / ВЫЧИСЛИТЕЛЬНАЯ ГЕОМЕТРИЯ / АППРОКСИМАЦИЯ / ПОЛИЛИНИЯ / ОКРУЖНОСТЬ

Аннотация научной статьи по математике, автор научной работы — Валуев А. М., Миннахметов К. М.

Для типичных задач САПР предложен подход, основанный на описании объектов моделирования аппроксимирующими линиями, состоящими из отрезков прямых и дуг окружностей с рациональными коэффициентами уравнений. В его рамках описаны алгоритмы решения типичных задач САПР открытых горных разработок.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Вычисления в рациональных числах при решении типичных задач вычислительной геометрии в системах автоматизированного проектирования»

© А.М. Валуев, К.М. Миннахметов, 2011

УДК 681.31:519.6:622.270

А.М. Валуев, К.М. Миннахметов

ВЫЧИСЛЕНИЯ В РАЦИОНАЛЬНЫХ ЧИСЛАХ ПРИ РЕШЕНИИ ТИПИЧНЫХ ЗАДА Ч ВЫЧИСЛИТЕЛЬНОЙ ГЕОМЕТРИИ В СИСТЕМАХ АВТОМА ТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ

Для типичных задач САПР предложен подход, основанный на описании объектов моделирования аппроксимирующими линиями, состоящими из отрезков прямых и дуг окружностей с рациональными коэффициентами уравнений. В его рамках описаны алгоритмы решения типичных задач САПР открытых горных разработок.

Ключевые слова: рациональное число, вычислительная геометрия, аппроксимация, полилиния, окружность, эквидистанта, контуры карьера.

А нализ и построение некоторых ¿ж.вычислительных алгоритмов основан на том, что вычисления полностью или частично выполняются точно, в рациональных числах. Наиболее эффектным проявлением такого подхода является полиномиальный алгоритм эллипсоидов Л.Г. Хачияна для решения задачи линейного программирования [1, с. 175- 191]. В связи с этим примером обращают на себя внимание следующие обстоятельства:

Предполагается, что в исходной задаче все коэффициенты — целые числа. С практической точки зрения это предположения оправдано тем, что, как правило, исходные данные представляются в виде десятичных дробей, от которых переход к целым числам элементарен;

При выполнении алгоритма эллипсоидов требуется выполнять операцию извлечения квадратного корня, которая в большинстве случаев выводит результат за множество рациональных чисел. В алгоритме Л.Г. Хачияна данная операция выполняется в рациональных числах приближенно с погрешностью, основанной на выведенных его автором оценках, что не мешает получению в ка-

честве окончательного результата точного решения в рациональных числах.

Нельзя не отметить, однако, что значение алгоритма Л.Г. Хачияна пока чисто теоретическое, т.к. оценки длины числителей и знаменателей для компонент точного решения неутешительны

— количество их десятичных знаков превышает сумму количества знаков всех коэффициентов задачи. Следовательно, в задаче с п переменными и т ограничениями количество знаков в числителях и знаменателях результата по отношению к исходным данным в среднем возрастает по крайней мере в п(т+1) раз [1, с. 177]. Это связано с решениями систем т линейных уравнений. Что касается рассматриваемых нами алгоритмов вычислительной геометрии, то в них имеют место лишь системы двух и трех линейных уравнений — соответственно для определения координат точек пересечения двух прямых на плоскости или прямой и плоскости в пространстве. Поэтому никакого драматического увеличения размера результата при применении точных вычислений в рациональных числах для такого типа расчетов не приходится ожидать.

Рассмотрим типичные вычисления при автоматизированном проектировании открытых горных разработок [2-4] (предлагаемый подход может иметь и более широкую область применения, но мы ограничимся данным примером). Типичным способом описания формы карьера (границ выработанного пространства — ВП) на определенный момент времени является описание его граничными линиями в горизонтальных сечениях. При разработке горизонтальными уступами плоскостями сечения служат нижние или средние плоскости уступов, а соответствующие линии называются нижними и верхними бровками или средними линиями откоса уступа. Далее будем называть все рассматриваемые граничные линии бровками. Борт карьера в пределах уступа с достаточной точностью может быть представлен в виде конической поверхности, причем его горизонтальные сечения произвольной плоскостью могут быть получены по любой из бровок уступа или средней линии его откоса с помощью операции эквидистанты.

За редкими исключениями, в задачах моделирования открытых горных работ бровки представляются в одной из двух форм: ломаной, иначе полилинии, и кусочно-окружностной (КО) линии, т.е. гладкой кривой, в которой прямолинейные участки чередуются с дугами окружностей. Что касается границ разрабатываемой залежи (рудных тел или пластов), они в пространстве представляются многогранными поверхностями и, соответственно, замкнутыми полилиниями — в плоскостях сечений. Отмечу, что когда участок границы ВП идет по границе рудного тела, соответствующие полилинии частично совпадают.

Наиболее типичными задачами, сводящимися к вычислениям планиметрии, служат:

• построение границ карьера минимального объема по контуру дна (по нижней бровке нижнего уступа) при заданных значениях ширины площадок уступов и угла откосов борта карьера;

• построение горизонтального сечения откоса на заданной высотной отметке;

• построение панели фиксированной ширины вдоль линии бровки на определенный момент времени;

• построение границы залежи на плоском горизонтальном сечении;

• построение пересечения горизонтального сечения залежи с областью, ограниченной бровкой.

Кроме того, построение аппроксимирующей КО-линии по замеренным координатам отдельных точек линии на чертеже по способу, предложенному в [5], предполагает выполнение следующих действий: вычисление длин отрезков между соседними точками (у^ У2) и у=тт(уь у2)/2; определение положения на каждом отрезке точек Л1, А2, находящихся на расстоянии у от общего конца отрезков; построение дуги окружности, касающейся отрезков соответственно в точках Л] и Л2. Центр такой окружности находится в точке пересечения биссектрисы угла между отрезками с прямыми, перпендикулярными к отрезкам и проходящими соответственно через точки Л1 и Л2.

Рассмотрим элементарные вычисления, комбинацией которых служат вышеперечисленные содержательные задачи. Они сводятся либо к вычислению эквидистанты (задачи 1-3), либо к пересечению двух плоских областей, одна из которых ограничена полилинией, другая полилинией или КО-линией (задача 5) и, наконец, к определению пересечения

многоугольника на плоскости с другой плоскостью, что, в свою очередь, сводится к определению линии пересечения плоскостей и затем точек пересечения отрезков с вычисленной прямой. В свою очередь, как установлено в работе [5], построение эквидистанты с расстоянием D для полилинии сводится к следующему набору задач:

• задаче объединения элементарных площадок, которыми служат прямоугольники или трапеции с высотой D и основаниями на сторонах исходной полилинии, а также сектора кругов радиуса D; боковые стороны трапеций идут по биссектрисам углов между смежными отрезками ломаных;

• задаче теоретико-множественного вычитания области, ограниченной полилинией, из получившейся области.

Существуют и другие способы построения эквидистанты, но они в ряде случаев дают ошибочные результаты (пример такого рода представлен в монографии [2, с. 74-75, рис. 4.7]). При построении эквидистанты по методу работы [5] для КО-линий элементарными площадками вместо секторов кругов служат сектора колец с внешним радиусом, большим внутреннего на величину D. Таким образом, в конечном счете все интересующие нас операции вычислительной планиметрии сводятся к задачам объединения, пересечения и разности плоских фигур, границы которых составлены из отрезков прямых и дуг окружностей.

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

этих затруднений один: в этих операциях у пересекающихся, объединяемых или вычитаемых плоских областей есть общие участки границы, однако приближенные вычисления неспособны гарантированно выявить эти общие участки. Наличие общих участков границы, которое в общем случае для произвольных областей с ломаной или кусочно-окружностной границей можно считать вырожденным случаем, здесь имеет место почти гарантированно, т.к. 1) у смежных элементарных площадок в виде трапеций совпадают боковые стороны; 2) у сектора круга (кольца) участки прямолинейной границы совпадают с боковыми сторонами смежных прямоугольников или трапеций; 3) граница ВП часто частично идет по границе одного из тел, составляющих залежь.

Однако из-за ошибок округления для случая частичного совпадения прямолинейных участков границ объединяемых, пересекаемых или вычитаемых областей можем иметь ситуации, показанные на рисунке. В точности аналогичные ситуации могут иметь место и с общими участками границ в виде дуг окружностей. Кроме того, заметим, что:

Если два участка несовпадающих прямых или окружностей имеют общую точку внутри каждого участка, то за счет ошибки округления возможно лишь незначительное смещение точки пересечения, однако существование точки пересечения и ее расположение на границе каждой области относительно других точек пересечения не может быть искажено; ситуация проблемной не является.

Если точка пересечения двух границ является границей двух участков хотя бы на одной границе, но все пересекающиеся в точке участки обеих границ принадлежат разным кривым, то за счет

Мнимое вырождение общей границы в набор Мнимое отсутствие общей границы случайных точек

Ошибочные ситуации при приближенном задании границ

ошибок округления может быть получено от нуля до четырех точек пересечения, все

— с близкими координатами. Для исключения ошибок требуется выполнить исключающую ошибки проверку расположения точек пересечения соответствующих прямых или окружностей относительно концов отрезков.

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

Отсюда вытекает следующий набор требований:

• однозначная идентификация прямых и окружностей, которым принадлежат участки границ областей;

• однозначная идентификация границ участков;

• безошибочный способ идентификации положения точки пересечения прямых или окружностей, которым принад-

лежат участки двух линий, относительно границ участков.

Для последнего первоначальным вычислением должно быть выявление факта совпадения концов двух участков; если он имеет место, дальнейших вычислений не требуется. В противном случае требуется определить положения концов участка одной линии относительно прямой или окружности, которой принадлежит участок другой линии. Если координаты точки (границы участка) — рациональные числа, а линия — прямая (на плоскости), записанная уравнением Ах+Ву+С=0, или окружность, имеющая рациональные координаты центра и рациональный квадрат радиуса,— то установление того факта, что точка находится на линии (или по определенную сторону от нее) выполняется безошибочно.

Рассмотрим вычисления, которые могут выполнены в рациональных числах, и те, которые можно выполнить в рациональных числах лишь приближенно. В последнем случае существенным здесь является возможность получения

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

Пусть прямая проходит через точки с рациональными координатами. Легко видеть, что ее описание уравнением Ах+Ву+С=0 выполняется однозначно, если потребовать, чтобы А. В, С были целыми взаимно простыми числами; коэффициент А был неотрицателен и в случае А=0 коэффициент В был положителен. Аналогично представляется уравнение Ах+Ву+ +Cz+D=0 плоскости, проходящей через три точки с рациональными координатами. Уравнение окружности (х-Хо)2+(у-уо)2=2=-Я2, где Хо, Уо, г 2 рациональные числа, также содержит лишь рациональные коэффициенты. Такие линии имеют место в качестве участков: 1) аппроксимирующей бровку ломаной, вершины которых лежат на бровке и имеют в качестве координат десятичные числа (иного и быть не может); 2) границы сечения горизонтальной плоскостью с рациональным значением высотной отметки многогранника с рациональными координатами вершин, описывающего пласт или рудное тело; 3) криволинейной части эк-видистанты — дуги окружности с рациональными координатами центра (вершины отрезка исходной полилинии или центра дуги КО-линии) и рациональный радиус.

Все остальные случаи дают линии, уравнения которых имеют иррациональные коэффициенты, которые должны быть приближены рациональными числами, и точки с иррациональными координатами. Рассмотрим все встречающиеся в наших задачах варианты.

Длина отрезка, соединяющего точки с рациональными координатами. Подкоренное выражение — рациональное число, вычисляемое однозначно.

Координаты направляющего вектора L прямой с целочисленными коэффициентами уравнения Ax+By+C=0, имеющего единичную длину. Эти координаты —

(B/D, - A/D) или (-B/D, A/D), где

D = у/ A2 + B2 . Принимая такую формулу и однозначно приближая D рациональным числом, получим однозначное представление искомого вектора.

Координаты единичной нормали N к такой же прямой. Формула (A/D,B/D) или (-A/D,-B/D), расчет аналогичен.

Уравнение прямой P', проходящей через точку прямой P с известными рациональными координатами x0, y0, перпендикулярно P. В сделанных предположениях однозначно определенное приближенное уравнение P', представленное в виде Nx(x-x0)+ Ny(y-y0)=0, имеет рациональные коэффициенты и однозначно преобразуется к виду уравнения Ax+By+C=0 с целыми коэффициентами.

Точка, смещенная относительно точки прямой с известными рациональными координатами x0, y0, вдоль прямой на расстояние S — рациональное число. Координаты выражается формулами x=x0+SLx, y=y0+SLy. В сделанных предположениях однозначно приближенно представляется рациональным числом.

То же самое для точки, смещенной по нормали относительно точки прямой с известными рациональными координатами x0, y0 на расстояние S.

Единичный направляющий вектор ^ биссектрисы угла между смежными отрезками прямых. Через вектора нормалей N1, N к отрезкам некоторый направляющий вектор биссектрисы выражается как М2=М+^. Искомый вектор вычисляется через вектор ^2 с рациональными координатами посредством деления на его длину — корень из рационального числа.

Сама биссектриса выражается уравнением с рациональными коэффициентами ^У(х-х0)-^ВХ(у-у0)=0, которое однозначно преобразуется к виду уравнения Ах+Ву+С=0 с целыми коэффициентами.

Точка пересечения прямой с окружностью определяется решением квадратного уравнения и затем линейной подстановкой. Если А|>|В|, линейно выражаем х через у, подставляем полученное выражение в уравнение окружности, становящееся квадратным уравнением с однозначно определенными рациональными коэффициентами, находим его действительные корни, если они есть, по традиционной формуле с одним радикалом, значение которого вычисляем приближенно, как и в предыдущих случаях. Обратная подстановка не требует округления. В противном случае выражаем у через х, а прочее делаем так же.

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

Наконец, определение центра каждой дуги, составляющей КО-линию, и ее радиуса выполняется следующей цепочкой вычислений: а) определение точек касания окружности к отрезкам исходной ломаной (см п.п. 1, 5); б) определение нормалей к отрезкам в точках касания и уравнений соответствующих прямых (см п.п. 7,8), определение точек пересечения этих прямых (решение системы

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

Проведение прямой на заданном рациональном расстоянии £ от прямой, описываемой уравнением Ах+ +Ву+С=0 с целыми коэффициентами, с заданной точкой с рациональными координатами на ней. Смещаем выделенную точку на расстояние £ в направлении нормали к исходной прямой, получаем ее рациональные координаты х1, у1. Уравнение искомой прямой имеет вид Ах+Ву-(Ах1+

+Ву1)=0. Все его коэффициенты рациональны, переход к целочисленным коэффициентам выполняется стандартным образом. Если на исходной прямой выбрать другую точку с рациональными координатами, результат получится в точности тот же.

Вершины трапеций, о которых шла речь, суть точки пересечения прямых, описанных в п. 12. Определение их координат не требует дополнительных округлений.

Отметим, что в совокупности данные вычисления дают хотя и приближенные, но определяемые с любой заданной точностью конечные результаты. Что касается собственно вычислений в рациональных числах, требуется использование специализированных библиотек, таких как, например, GMP или класс cBigNumber для целочисленной арифметики неограниченной разрядности в языке С++.

В заключение рассмотрим, следуя идеям монографии [1], алгоритм рационального приближения корня из рационального числа в виде двоичной дроби с заданным числом разрядов (в целом для числа или для его дробной части). Срав-

нивая рациональное подкоренное выражение D с последовательно возрастающими (при D>1) или убывающими (в противном случае) степенями 4, найдем старший двоичный разряд корня. Остальные разряды получим, сужая область поиска методом половинного деления.

Например, для V4/ 5 , сравнивая 4/5 с 1, ((0,1)2)2= 1/4, получим, что

і >4лГ5>(0,1), = 1/ 2, затем, срав-

1. Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. — М.: Мир, 1985. — 510 с.

2. Аленичев В.М., Суханов В.И., Хохряков В.С. Моделирование природно-сырьевых технологических комплексов (горное производство) / Под ред. В.Л. Яковлева. — Екатеринбург: УРО РАН, 1998.

3. Капутин Ю.Е. Информационные технологии планирования горных работ. — СПб: Недра, 2004. — 424 с.

нивая 4/5 с ((0,11)2) =9/16, получим, что 1 >у1 4/5 > (0,11 )2 = 3/4 , потом, что

1 ^74Т"5 > (0,111), = 7/8, (0,1111), =

= 15/16 >у/4/5 > (0,111)2 = 7/8 и т.п. С использованием рекуррентных соотношений суммарный объем вычислений оказывается пропорционален квадрату количества разрядов.

------------- СПИСОК ЛИТЕРАТУРЫ

4. Лукичёв С.В., Наговицын О.В. Комплекс-

ное решение задач горной технологии в едином информационном пространстве горного предприятия // Информатизация и управление-2: Сборник статей Г орного информационноаналитического бюллетеня. — 2008. —

№ОВ 11. — С. 37—45.

5. Валуев А.М. Система базовых вычислительных операций при интерактивном моделировании открытых горных работ // Обозрение прикл. и промышл. математ. — 2004. — Т. 11. — Вып. 4. — С. 768—770. ЕШ

КОРОТКО ОБ АВТОРАХ ---------------------------------------------------------------------------

Валуев А.М. — доктор физико-математических наук, профессор, amvaluev@online.ru,

Миннахметов К.М. — горный инженер, соискатель кафедры организации и управления в горной промышленности, minnahmetov@bk.ru.

Московский государственный горный университет,

Moscow State Mining University, Russia, ud@msmu.ru

й

i Надоели баннеры? Вы всегда можете отключить рекламу.