Как рассчитать значение узлов b spline. Смотреть что такое "B-сплайн" в других словарях

ОБ ЭЛЕКТРИЧЕСКОМ РЕЗОНАНСЕ

Эффект резонанса все чаще и чаще упоминается инженерами, и приобретает все большую важность при практическом использовании всех типов аппаратов, работающих от переменного (тока. Поэтому в отношении этих эффектов следует привести несколько общих замечаний. Общеизвестно, что при успешном применении эффекта резонанса в практической работе устройств, отпадает необходимость в использовании обратного провода, поскольку электрические колебания могут передаваться по одному проводу, а иногда даже лучше, чем с использованием двух проводов. Первы й вопрос, на который следует дать ответ, звучит так: "Можно ли целенаправленно создавать чистые резонансные эффекты? " И теоретические расчеты и экспериментальная практика показывают, что в Природе подобное невозможно. Это связано с тем, что при увеличении интенсивности колебаний, быстро возрастает негативное воздействие на тело, где происходят колебания, а также на окружающую его среду. Поэтому необходимо контролировать колебания, в противном случае они могут возрастать до бесконечности. Пожалуй, что невозможность создания чистого резонанса, является очень удачным обстоятельством. В противном случае, трудно даж е предположить, какими опасностями может грозить даж е самый невинный эксперимент. Но вполне возможно произвести резонанс определенного уровня. Величина данного эффекта ограничивается недостаточной проводимостью и эластичностью среды, или фрикционными потерями в целом.

Чем меньше потери, тем значительнее эффект. То же самое относится и к механическим ко- лебаниям. Можно вызвать колебания в толстом стальном стержне при помощи водяных капель, падающих на него с определенными интервалами. В стеклянной среде, которая более эластич- на, эффект резонанса проявляется еще сильнее. Можн о сделать так, чтобы стеклянный бокалi разлетелся вдребезги, если направить в него звук определенного тона. Электрический резонанс достигается более совершенным способом. Че м меньше сопротивление, или импеданс, токопро- водящего пути, тем выше диэлектрик. Если лейденская банка разряжается через короткий ви- той кабель, изготовленный из тонкой проволоки, то это означает, что для достижения ". резонансного эффекта, возможно, созданы самые лучшие условия, и поэтому он проявляется, наиболее отчетливо. Это не относится к динамо-машинам, трансформаторам и их цепям, а так- же к другим аппаратам промышленного изготовления, где наличие железных сердечников силь- но препятствует возникновению резонанса, и даже делает его невозможным. Чт о касается Лейденских банок, при помощи которых часто демонстрируется эффект резонанса, я бы хотел сказать, что наблюдаемые эффекты часто всего лишь приписываются, и редко когда возника- ют действительно в результате резонанса. Здес ь очень легко допустить ошибку в выводах. Это можно продемонстрировать при помощи нижеследующего эксперимента. Возьмем, к примеру, две большие изолированные пластины, или сферы, которые обозначим как А и В. Поместим их на определенном небольшом расстоянии друг от друга, затем зарядим их при помощи фрикци- онного, или электрофорного генератора до потенциалов такой величины, чтобы даже при не- большом увеличении разницы потенциалов, происходил пробой воздуха, или изолирующего пространства между ними. Этого легко добиться, если предварительно немного потренировать- ся. Теперь возьмем другую пластину, имеющую изолированную рукоятку, и соединенную при помощи провода с одной из клемм вторичной обмотки высокого напряжения индукционной ка- тушки, которая запитывается от генератора переменного тока, желательно высокочастотного. Если эту пластину поднести к одному из заряженных тел А, или В, то между ними будут про- исходить разряды. Но для этого необходимо, по меньшей мере, чтобы потенциал катушки, со- единенной с пластиной, был достаточно высок. Объяснение этому кроется в том, что пластина индуктивно воздействует на тела А и В, и вызывает искровой разряд между ними. Пр и возник- новении искры, заряды, которые до этого нагнетались на тела элекрофорным генератором, не- избежно теряются, поскольку тела вошли в электрический контакт через образовавшуюся дугу. Эта дуга образуется вне зависимости того, есть резонанс, или нет. Но даже если искра не об- разуется, то при приближении пластины возникает переменная электродвижущая сила между телами. Таким образом, приближение пластины, своим индуктивным воздействием, по меньшей мере, способствует возникновению пробоя воздушной прослойки. С тем же успехом, вме- сто сфер, или пластин А и В мы можем использовать покрытия Лейденской банки, а вместо re- нератора - предпочтительно генератора переменного тока высокой частоты, потому что он лучше всего подходит для этого эксперимента, и особенно для его аргументации - мы можем» использовать другую Лейденскую банку, или набор банок. Во время разряда Лейденских ба- нок через цепь с низким сопротивлением, через нее проходит ток очень высокой частоты. Те- перь пластину можно подключить к одному из покрытий второй банки. И если ее поднести к первой банке, предварительно зарядив ее от электрофорного генератора до высокого потенци- ала, то мы получим тот же результат, что и в первом случае, а первая банка разрядится через небольшую воздушную прослойку над разряженной второй банкой. Но обе банки и их цепи нужно настроить так, чтобы они отличались друг от друга как низкий бас от комариного писка. А так как маленькие искры будут проскакивать сквозь прослойку воздуха, то последний будет, по меньшей мере, в значительной степени напряжен, вследствие переменной электродвижущей силы, образовавшейся в результате индукции, которая возникает при разрядке одной из банок. И опять была допущена такая же ошибка. Если цепи двух банок соединены параллельно и за- мыкают друг друга, и если во время эксперимента банки разряжались одна за другой, а к цепи, над которой эксперимент прошел неудачно, была подключена катушка с проволокой, то вывод, что эксперимент не удался вследствие неточной настройки цепей, далек от истины.

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

На Рис. 20 I представлен план, которому следовали при изучении резонансных эффектов с использованием высокочастотного генератора переменного тока, где С1 - катушка, состоящая из большого количества витков, которая для удобства настройки разделена на множество небольших секций. Окончательная настройка иногда проводилась при помощи нескольких тонких железных проводов (хотя это и не рекомендуется), либо при помощи вторичной обмотки. Катушка С1 одним своим выходом соединена с контуром " L", идущим от генератора G, а другим выходом с одной из пластин С конденсатора С С1. Пластина С1 конденсатора подключена к значительно большей по размерам пластине Рj. Таким образом, параметры емкости и самоиндукции оказались настроены на частоту динамо-машины.

Что касается возрастания потенциала при резонансе, то, разумеется, теоретически он может вырасти до любого значения, поскольку это зависит от самоиндукции и сопротивления. Но на практике величина потенциала ограничивается параметрами самоиндукции и сопротивления, а также другими обстоятельствами. Можно начать, скажем, с 1,000 вольт и увеличить величину электродвижущей силы в 50 раз, но невозможно начать со 100,000 вольт и увеличить ее в 10 раз потому, что потери в среде очень велики, особенно при высокой частоте. Вполне реально начинать эксперимент, например, с двух вольт, получаемых от цепи высокой, или низкой частоты, либо от динамо-машины и увеличить величину электродвижущей силы в несколько сот раз. Таким образом, катушки соответствующих размеров могут быть подключены к сетевой розетке динамо-машины со слабой электродвижущей силой только одним своим выходом. Однако, даже если цепь машины не замкнута, в обычном значении этого термина, то при возникновении соответствующего резонансного эффекта динамо-машина может сгореть. Мне не удавалось добиться самому, как и наблюдать, что кто-то сумел получать такую величину потенциала от тока, вырабатываемого динамо-машиной. Но вполне возможно, и совсем не кажется невероятным, что если использовать ток от аппарата, содержащего железо, то негативное влияние железа может стать причиной, по которой эти теоретические возможности окажутся нереализуемыми. И если это так, то я могу объяснить сие исключительно гистерезисом, а также потерями от токов Фуко в сердечнике. В общем, если электродвижущая сила слаба, то ее нужно усиливать. Обычно это делается при помощи индукционной катушки обычной формы, но в некоторых случаях можно использовать устройство, изображенное на Рис. II. В этом случае, катушка С состоит из большого числа секций, часть из которых используются в качестве первичной обмотки. Таким образом, и первичная и вторичная обмотки становятся регулируемыми. Один выход этой катушки подключен к контуру L j, а другой контур L соединен с промежуточной частью катушки. Такая катушка с регулируемыми первичной и вторичной обмотками, также может оказаться удобной для проведения экспериментов с пробивными электрическими разрядами.

Я бы хотел сказать несколько слов в отношении предмета, который в контексте резонансных явлений и проблемы передачи энергии по одному проводу, занимает все мои мысли, и который касается всеобщего благосостояния. Я имею в виду передачу четких сигналов, а возможно даже энергии, на любое расстояние без использования проводов. На днях я пришел еще к большему убеждению, что подобная схема реализуема. Я отдаю себе отчет в том, что большинство ученых не поверят в возможность достижения этих результатов на практике и немедленно, однако, как мне думается, все понимают, что разработки последних лет нескольких специалистов заслуживают более пристального внимания, и проведения экспериментов в этом направлении. Моя убежденность возросла до такой степени, что я уже больше не рассматриваю этот проект по передаче энергии, или информации как исключительно теоретическую возможность. Мне она представляется как серьезная электротехническая задача, которой необходимо посвятить хотя бы несколько дней. Идея передачи информации без использования проводов возникла как естественное продолжение самых последних результатов исследований электрической энергии. Несколько энтузиастов выразили убежденность, что вполне возможно создать телефонию по воздуху на любое расстояние при помощи индукции. Моя фантазия не зашла так далеко, но я твердо убежден, что при помощи мощных машин можно нарушать электростатические условия земли и таким образом передавать информацию и возможно даже энергию. В самом деле, что мешает практическому выполнению данной схемы? Сейчас мы уже знаем, что электрические колебания можно передавать посредством одного провода. Тогда почему бы не попробовать использовать для этих целей землю? Мы не должны пугаться фактора расстояния. Для утомленного путника, считающего верстовые столбы, земля может показаться очень большой. Однако для самого счастливого человека - астронома, устремляющего свой пристальный взгляд в небеса, по сравнению с теми масштабами, земля кажется совсем маленькой. И я думаю, что для электрика, когда он задумывается над тем, с какой скоростью распространяются электрические колебания по земле, все представления о расстоянии пропадают напрочь.

Самое главное, что в первую очередь нужно узнать - это емкость земли, и каков ее эле- ктрический заряд, если ее наэлектризовать? Поскольку мы не располагаем доказательствами того, что в космосе не существуют тела, имеющие определенный электрический заряд, а также другие тела с противоположным зарядом, находящиеся недалеко от первых, то существует сла- бая вероятность того, что земля представляет собой именно такое тело, которое в результате ка- кого-то процесса отделилось от остальных - это общепризнанная гипотеза происхождения земли. А если это так, то она должна нести в себе определенный электрический заряд, как про- исходит при механическом разделении тел. Если она является заряженным телом, изолирован- ным в пространстве, то тогда ее емкость должна быть очень маленькой, менее одной тысячной фарады. Однако верхний слой атмосферы является токопроводящим. Следовательно, возмож- но, что открытом космосе, за границами атмосферы есть среда, которая имеет противоположный заряд. В этом случае емкость земли может оказаться несоизмеримо больше. В любом случае, очень важно узнать, какое количество электричества содержит земля. Трудно сказать, обретем ли мы когда-нибудь столь необходимые знания? Но если и сможем, то толь- ко при помощи электрического резонанса. Если мы когда-нибудь сможем установить период зарядки земли, период возбуждения колебаний по от- ношению к противоположно заряженной системе, или известной цепи, мы обретем знания, которые, возможно, будет иметь наибольшую значи- мость для благосостояния человечества. Я предлагаю постараться опре- делить этот период при помощи электрического осциллятора, либо при помощи источника переменного электрического тока. Одн а из клемм ис- точника должна быть подключена к земле, например, к городской систе- ме водоснабжения, а другая - к изолированному телу с большой поверхностью. Возможно, что внешний токопроводящий слой атмосфе- ры, или открытый космос имеют противоположный земле заряд, тогда они с землей образуют конденсатор огромной емкости. В этом случае пе- риод колебаний может оказаться очень низким, тогда динамо-машина пе- ременного тока вполне может подойти для целей эксперимента. Затем, я бы преобразовал электрический ток в максимально возможный потенци- ал и подсоединил бы выходы вторичной обмотки высокого напряжения к земле и к изолированному телу. Изменя я частоту тока и тщательно фик- сируя величину потенциала изолированного тела, а также наблюдая за возбуждениями на различных соседних точках земной поверхности, мож- но заметить явление резонанса.

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

Предположим, что источник переменного тока подключен так, как показано на Рис. 21: одной своей клеммой к земле (удобней всего к магистралям водоснабжения), а другой к телу с большой поверхностью Р. Пр и возникновении электрических колебаний, произойдет движение электрического тока в направлении тела Р и от него. Переменный ток, проходя по земле, будет сосредоточиваться в, и рассредоточиваться от точки С - точки, где установлено соединение с землей. Таким образом, произойдет возбуждение в соседних точках на земной поверхности, расположенных в определенном радиусе. Но сила возбуждения уменьшается с увеличением расстояния. Следовательно, расстояние, на котором данный эффект можно будет воспринимать, будет зависеть от количества электричества, находящегося в движении. Одни м из ограничений величины потенциала тела Р является площадь его поверхности, поэтому они изолировано, а для того, чтобы зарядить его, необходим источник энергии большой мощности. Необходимо также создать условия, при которых генератор или источник S создавал бы одно и то же движение электричества, как если бы его цепь была замкнута. Таким образом, при наличии соответствующего оборудования, определенно вполне реально передавать Земле электрические колебания по крайней мере, при малом периоде. Остается только догадываться, на каком удалении от источника эти колебания можно принимать. Я бы хотел поведать вам еще об одном соображении, непосредственно касающегося вопроса об отношении земли к электрическому возбуждению. Несомненно, что в данном эксперименте, на поверхности земли может иметь место определенная плотность электричества, но очень-очень маленькая, в силу размеров земли. Это доказывается тем, что атмосферный воздух не является сильным дестабилизирующим фактором, то есть при распространении электрических колебаний по воздуху не происходят больших потерь энергии, что могло бы иметь место в случае, если бы плотность электричества на поверхности земли была бы большой. Теоретически, для того, чтобы создать возбуждение, которое можно было бы принимать на большом расстоянии от источника, или даже в любой точке земной поверхности, не требуется большого количества энергии. Сегодня уже совершенно ясно, что в любой точке, находящейся в рамках определенного радиуса удаления от источника о, при помощи резонанса можно привести в действие устройство с надлежащим образом подобранными параметрами самоиндукции и емкости. Но можно сделать не только это. Можно синхронизовать работу источника S с работой другого источника Sj, подобного первому, или любого количества таких источников. Это даст возможность усиливать колебания и распространять их по большой территории, либо осуществлять транспортировку электрической энергии, произведенной источником Sj, к источнику S при условии, что они работают в противофазе. Я думаю, что нет сомнений в том, что при помощи резонанса, вполне возможно в городских условиях приводить в действие электрические устройства от электрического осциллятора, находящегося в центральной точке, через систему трубопроводов, или по земле. Однако практическое решение этой проблемы принесло бы несоизмеримо меньше благ людям, нежели претворение в жизнь программы, позволяющей передавать информацию, а, возможно, и энергию, через землю, или окружающую среду. Рис 21. Если это в целом возможно, то расстояние уже не имеет никакого значения. В первую очередь необходимо изготовить соответствующие устройства, при помощи которых мы начнем наше наступление на эту проблему. Я посвятил немало времени и умственного напряжения данной теме, и полностью убежден, что это можно осуществить. Я также надеюсь, что мы доживем до того момента, когда это будет реализовано.

Построение интерполяционных сплайнов в B-форме

Интерполяция сплайном в B -форме позволяет просто управлять гладкостью сплайна. Сплайн в B -форме определяется последовательностью узлов {t i } , среди которых могут быть повторяющиеся. Число повторений узла определяет гладкость сплайна в точках разрыва . Во внутренних точках разрыва должно выполняться следующее правило: число повторений узлов в последовательности + число условий непрерывности в точке разрыва = порядку сплайна. Отметим, что полюса интерполяции (т.е. точки, в которых сплайн совпадает с интерполируемой функцией) вовсе не обязаны совпадать с точками разрыва , хотя произвольно они выбираться не могут!

Интерполирование при помощи функции spapi

Рассмотрим простой пример. Проинтерполируем функцию x sin x на отрезке сплайном f(x) четвертого порядка (k=4) , выбрав семь полюсов интерполяции

.
Обычно первые k узлов совпадают с первым полюсом, а последние k узлов - с последним. Возьмем следующую последовательность из одиннадцати узлов (число узлов должно равняться числу полюсов интерполяции + порядок сплайна, в данном случае 11=7+4)

.
и применим функцию spapi: tau = ; % полюса интерполяции y = tau.*sin(tau); % значения интерполируемой функции в полюсах интерполяции t = ; % последовательность узлов сплайна sp = spapi(t, tau, y); % конструирование сплайна figure fnplt(sp) % построение графика сплайна hold on plot(tau, y, "ro") % отображение данных маркерами Получаем следующий график (см. рис. 1), где сплайн f(x) нарисован линией, а маркеры соответствуют значениям интерполируемой функции x sin x в полюсах интерполяции :


Рис. 1. Интерполяция сплайном f(x) в B -форме при помощи spapi.
Убедимся, что внутренние узлы являются точками разрыва. Их кратность равна единице, следовательно, число условий непрерывности (порядок сплайна минус кратность узла, т.е 4-1) в каждой из них равно трем и, следовательно, должна быть непрерывна сама сплайн-функция, ее первая и вторая производные. Для этого построим графики первой, второй и третьей производных сплайна f(x) , вычислив значения производных сплайна при помощи функции fnder. На графики поместим вертикальные линии в точках разрыва (см. рис. 2): figure subplot(3,1,1) fnplt(fnder(sp,1)) % находим первую производную сплайна и строим ее график title("1st derivative of the spline") hold on lims=axis; ymin=lims(3); ymax=lims(4); % узнаем пределы осей plot(, ,"k") % рисуем линии в точках разрыва subplot(3,1,2) fnplt(fnder(sp,2)) % находим вторую производную сплайна и строим ее график title("2nd derivative of the spline") hold on lims=axis; ymin=lims(3); ymax=lims(4); % узнаем пределы осей plot(, ,"k") % рисуем линии в точках разрыва subplot(3,1,3) fnplt(fnder(sp,3)) % находим третью производную сплайна и строим ее график title("3rd derivative of the spline") % рисуем линии в точках разрыва hold on lims=axis; ymin=lims(3); ymax=lims(4); % узнаем пределы осей plot(, ,"k")
Рис. 2. Графики первой, второй и третьей производной сплайна f(x) в B -форме.
Итак, узлы простой кратности действительно являются точками разрыва третьей производной сплайна.
Если бы требовалось приблизить функцию сплайном, у которого вторая производная в точке 1.7 была бы разрывной, то необходимо было повторить 1.7 дважды в последовательности узлов:

.
t = sp = spapi(t, tau, y); Графики сплайна и его производных строится аналогично, из графиков производных видно (см. рис. 3), что вторая производная сплайна имеет разрыв в узле 1.7:


Рис. 3. Графики первой, второй и третьей производных сплайна в B -форме для другой последовательности узлов (узел 1.7 имеет кратность 2).

B-форма, базисные сплайны

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

Сплайн f(x) должен совпадать с функцией функции x sin x в полюсах интерполяции

Tau = ; % полюса интерполяции y = tau.*sin(tau); % значения интерполируемой функции в полюсах интерполяции t = ; % последовательность узлов сплайна sp = spapi(t, tau, y) % конструирование сплайна Обратимся к содержимому структуры sp, в которую записана информация о B -форме сплайна f(x) : sp = form: "B-" knots: coefs: number: 7 order: 4 dim: 1 Самыми важными для нас сейчас является поля number и coefs - оказывается B -форма состоит из семи сплайнов (sp.number=7), назовем их B 1 (x) , B 2 (x) , ... , B 7 (x) . Сплайн-функция f(x) является суммой этих сплайнов, умноженных на соответствующие коэффициенты C i :


Массив коэффициентов C i записан в sp.coefs. Что же это за сплайны B 1 (x) , B 2 (x) , ... , B 7 (x) ? Оказывается каждый из них построен по своей последовательности из пяти узлов, указанной в таблице:


т.е. сплайн B i (x) построен по узлам t i , t i+1 , ..., t i+k . Определение B -сплайна через его узлы мы рассмотрим позже. Сейчас нам понадобится функция spmak, входящая в состав Spline Toolbox, которая конструирует B -сплайн по заданной последовательности узлов. Для построения, например, сплайна B i (x) следует обратиться к ней так: B1 = spmak(, 1), или задать узлы при помощи сечения массива t: B1 = spmak(, 1). Результатом является структура B1 с информацией о сплайне. Создадим сплайны B 1 (x) , B 2 (x) , ... , B 7 (x) , запишем их в структуры B1, B2, ..., B7, соответственно, и построим их графики разыми цветами (см. рис. 4) при помощи функции fnplt (отдельные структуры для сплайнов взяты только для наглядности изложения, можно было ввести массив структур и все сделать в циклах): % Создание сплайнов B1, B2, ... , B7 B1 = spmak(t(1:5), 1); B2 = spmak(t(2:6), 1); B3 = spmak(t(3:7), 1); B4 = spmak(t(4:8), 1); B5 = spmak(t(5:9), 1); B6 = spmak(t(6:10), 1); B7 = spmak(t(7:11), 1); % Построение графиков сплайнов B1, B2, ... , B7 figure fnplt(B1, "r"); hold on; fnplt(B2, "g"); fnplt(B3, "b"); fnplt(B4, "c"); fnplt(B5, "m"); fnplt(B6, "y"); fnplt(B7, "k"); % Подписываем координаты узлов сплайна set(gca, "XTick", t(4:8), "XTickLabel", num2str(t(4:8)"), "XGrid", "on") % Добавление легенды str = {"spline B_1(x)"; "spline B_2(x)"; "spline B_3(x)";... "spline B_4(x)"; "spline B_5(x)"; "spline B_6(x)"; "spline B_7(x)"}; legend(str, -1)

Рис. 4. Графики B-сплайнов, образующих сплайн f(x) .
Вне интервала (t i , t i+k) B -сплайн B i (x) тождественно равен нулю, в чем несложно убедиться, построив их графики (см. рис. 5), например: figure % строим график B1 на отрезке [-1, 4] subplot(2, 1 ,1) fnplt(B1, [-1 4], "r") title("spline B_1") set(gca,"XTick", , "XTickLabel", num2str("), "XGrid", "on") % строим график B2 на отрезке [-1, 4] subplot(2, 1, 2) fnplt(B2, [-1 4], "g") title("spline B_2") set(gca, "XTick", , "XTickLabel", num2str("), "XGrid", "on")

Рис. 5. Графики сплайнов B 1 (x) и B 2 (x) на отрезке [-1, 4].
Обратите внимание, что сплайн B 1 (x) имеет разрыв в точке 0 потому, что его среди его узлов t 1 =0 , t 2 =0 , t 3 =0 , t 4 =0 , t 5 =1.2 узел со значением 0 встречается 4 раза. Так как сам сплайн 4-го порядка, то число условий непрерывности равно нулю (4-4=0), т.е. нет непрерывности не только производных, но и самого сплайна.
Сумма сплайнов B 1 (x) , B 2 (x) , ... , B 7 (x) , умноженных на соответствующие коэффициенты (которые возвращаются в sp.coefs при вызове sp = spapi(t, tau, y)),


является сплайном в B-форме, ровно тем, который возвращает функция spapi. Это несложно проверить, вычислив данную сумму сплайнов. Для нахождения значений каждого из сплайнов B 1 (x) , B 2 (x) , ... , B 7 (x) в точках отрезка с шагом 0.05 применим функцию fnval, значения суммы в этих точках запишем в вектор f и построим график зависимости суммы от x на отрезке : % записываем коэффициенты сплайна в B-форме в вектор c c = sp.coefs; % вычисляем значения сплайна на отрезке с шагом 0.05 x = 0:0.05:3; f = c(1)*fnval(B1, x) + c(2)*fnval(B2, x) + c(3)*fnval(B3, x) + c(4)*fnval(B4, x) + ... c(5)*fnval(B5, x)+c(6)*fnval(B6, x) + c(7)*fnval(B7, x); % строим графики сплайна и исходных данных figure plot(x, f) hold on plot(tau, y, "ro") Построенный график совпадает с графиком сплайна, полученного ранее при непосредственном использовании функции spapi для интерполяции функции x sin x , поэтому график сплайна здесь не приводится (см. рис. 1).

Выбор узлов B-сплайнов

Как мы уже замечали, последовательность узлов B -формы сплайна не может выбираться независимо от последовательности полюсов интерполяции. Во-первых, число узлов должно равняться числу полюсов + порядок сплайна. Во-вторых, для существования и единственности сплайна требуется выполнение еще условия теоремы Шенберга-Уитни.
Начнем с примера. Попробуем взять такую последовательность узлов:

А полюса интерполяции оставим теми же самыми

При выполнении команд tau = [ 0 0.5 1.1 1.8 2.2 2.8 3]; y = tau.*sin(tau); t = sp = spapi(t, tau, y); получим ошибку и сообщение о том, что матрица является вырожденной. Дело в том, что при интерполяции B -сплайнами для нахождения коэффициентов B -формы необходимо решить некоторую систему линейных алгебраических уравнений, матрица которой в данном случае оказывается вырожденной. Для однозначной разрешимости этой системы линейных уравнений, а следовательно, и для однозначного определения интерполяционного сплайна все элементы последовательности полюсов интерполяции и узлов должны удовлетворять неравенствам:

В которых строгое равенство допускается лишь для крайних узлов (разумеется, имеется ввиду, что последовательность узлов упорядочена по возрастанию).
В данном случае уже не выполняется условие , так как Конечно, для построения подходящей последовательности узлов сплайна не требуется подбирать их вручную. В Spline Toolbox входит функция aptknt , которая по заданной последовательности полюсов интерполяции tau возвращает последовательность t узлов, обеспечивающую существование и единственность сплайна заданного порядка k. Обращение к функции aptknt выглядит следующим образом: t = aptknt(tau, k) Для интерполяции B -сплайнами 4-го порядка функции в нашем примере подошла бы такая последовательность команд: tau = [ 0 0.5 1.1 1.8 2.2 2.8 3]; y = tau.*sin(tau); t = aptknt(tau, 4) sp = spapi(t, tau, y); figure fnplt(sp) % построение графика сплайна hold on plot(tau, y, "ro") % отображение данных маркерами Более того, интерфейс функции spapi позволяет вообще не заботится об узлах сплайна и указать только степень, полюса интерполяции и значения функции в них: sp = spapi(4,tau,y); Результат будет тот же самый, поскольку при таком способе обращения к функции spapi она вызывает функцию aptknt для конструирования допустимой последовательности узлов сплайна, удовлетворяющей условиям теоремы Шенберга-Уитни. Функция aptknt возвращает такую последовательность узлов:


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


для i=1,2,...,n-k . Предполагается, что последовательность полюсов интерполяции содержит не менее элементов, является неубывающей и для всех i . Эти узлы удовлетворяют условиям теоремы Шенберга-Уитни и обеспечивают существование и единственность интерполяционного сплайна.
Вообще говоря, выбор хороших полюсов и узлов интерполяции сплайна (оптимальных в некотором смысле) - отдельная задача. В Spline Toolbox имеется специальная функция optknt , которая так же, как и aptknt, по заданным полюсам интерполяции и заданному порядку сплайна возвращает последовательность его узлов, удовлетворяющую условию теоремы Шенберга-Уитни. Узлы сплайна, которые строит функция optknt, приводят к наилучшему приближению сплайном.
Обратная задача - выбор в некотором смысле оптимальных полюсов для интерполяции сплайном заданного порядка с заданными узлами - решается при помощи функции chbpnt . Хорошее приближение также дают полюса интерполяции, получаемые путем усреднения узлов сплайна. Для сплайна порядка k с последовательностью узлов такие полюса определяются по формуле:

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

Кроме перечисленных функций, в состав Spline Toolbox входят несколько сервисных функций для работы с узлами и полюсами интерполяции.

Функция augknt позволяет просто создать последовательность узлов сплайна по заданным точкам разрыва так, что в каждой точке разрыва узел будет иметь заданную кратность, например >> t = augknt([-2 -1 0 1 2], 4) возвращает t = -2 -2 -2 -2 -1 0 1 2 2 2 2 Если требуется задать кратность узла в каждой внутренней точке отдельно, то следует указать вектор кратностей в качестве третьего входного аргумента: >> t = augknt([-2 -1 1 2], 4, ) t = -2 -2 -2 -2 -1 -1 1 1 1 2 2 2 2 Для конструирования последовательности узлов с заданными кратностями подходит также функция brk2knt, которая требует задания двух входных аргументов - массива точек разрыва и массива их кратностей такой же длины: >> knots = brk2knt([-1 0 1], ) knots = -1 -1 -1 0 0 1 1 1 1 Обратная задача - получение точек разрыва и соответствующих кратностей узлов решается при помощи функции knt2brk: >>knots = [-1 -1 -1 0 0 1 1 1 1] >> = knt2brk(knots) breaks = -1 0 1 mults = 3 2 4

Интерполирование B-сплайнами с заданными значениями производных

Функция spapi позволяет конструировать такие B -сплайны, которые принимают заданные значения вместе со своими производными в полюсах интерполяции. Для этого при вызове функции spapi: sp = spapi(t, tau, y), где t - массив узлов, или sp = spapi(k, tau, y), где k - порядок сплайна следует повторить координату полюса в массиве tau и, соответственно, в векторе y задать значения не только сплайна, но и его производной в этом полюсе интерполяции. Для задания значения сплайна и его p -ой производной в некотором полюсе , он должен встречаться p+1 раз в массиве tau, тогда соответствующие значения массива y будут восприниматься как значения сплайна, его первой, второй и т. д., ..., p -ой производной.
Например, для интерполяции кубическим сплайном некоторой функции, заданной таблицей:


подойдет такая последовательность команд (см. результат на рис. 6, на котором приведен график сплайна, его первой производной и маркерами отмечены заданные значения в полюсах интерполяции): x = ; y = ; dy = sp = spapi(4, , ) figure subplot(2, 1, 1) fnplt(sp) title("cubic spline") hold on plot(x, y, "ro") subplot(2,1, 2) fnplt(fnder(sp)) title("its first derivative") hold on plot(x, dy, "ro")
Рис. 6. Интерполяция B-сплайном по заданным значениям функции и ее производной.
Значения производных интерполируемой функции могут быть заданы не во всех полюсах интерполяции. Рассмотрим пример, в котором требуется интерполировать функцию y=e -x sin3x на отрезке в шести полюсах: так, чтобы значения первой и второй производных сплайна f(x) совпадали со значениями y и в трех полюсах . Для этого задаем массив полюсов интерполяции tau, inline-функцию для вычисления и записываем значения ее первой и второй производных в полюсах в массивы y1 и y2, соответственно: fun = inline("exp(-x).*sin(3*x)"); tau = 0:5; y = fun(tau); y1 = exp(-tau(1:2:5)).*(3*cos(3*tau(1:2:5))-sin(3*tau(1:2:5))); y2 = -exp(-tau(1:2:5)).*(8*sin(3*tau(1:2:5))+6*cos(3*tau(1:2:5))); Далее обращаемся к функции spapi: f = spapi(4, , ); Сравним исходную функцию, полученный сплайн и еще два сплайна: g(x) (который был построен с учетом значений производных ) и сплайн h(x) (который просто совпадает с функцией f(x) в полюсах интерполяции). Результат представлен на рис. 7. g = spapi(4, , ); h = spapi(4, tau, y); figure fplot(fun, , "b") hold on fnplt(f, "m") fnplt(g, "g") fnplt(h, "k") legend("y(x)", "f(x)", "g(x)", "h(x)")
Рис. 7. Интерполяция функции y=e -x sin3x с учетом и без учета значений производных.

С математической точки зрения кривая, заданная вершинами многоугольника, зависит от интерполяции или аппроксимации, устанавливающей связь кривой и многоугольника. Здесь основой является выбор базисных функций. Как было отмечено в разд. 5-8, базис Бернштейна порождает кривые Безье вида (5-62), но он обладает двумя свойствами, которые ограничивают гибкость кривых. Во-первых, количество вершин многоугольника жестко задает порядок многочлена. Например, кубическая кривая должна быть задана четырьмя вершинами и тремя отрезками. Многоугольник из шести точек всегда порождает кривую пятого порядка. Единственный способ понизить степень кривой - это сократить количество вершин, а повысить степень кривой - увеличить их число.

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

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

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

Пусть определяет кривую как функцию от параметра , тогда В-сплайн имеет вид

, , , (5-83)

где есть вершина многоугольника, a - нормализованные функции базиса В-сплайна.

Для -й нормализованной функции базиса порядка (степени ) функции базиса определяются рекурсивными формулами Кокса-де Бура:

(5-84а)

Величины - это элементы узлового вектора, удовлетворяющие отношению . Параметр изменяется от до вдоль кривой . Считается, что .

Формально В-сплайн определяется как полиномиальный сплайн порядка (степени ), так как он удовлетворяет следующим условиям:

Функция является полиномом степени на каждом интервале .

И ее производные порядка непрерывны вдоль всей кривой.

Так, например, В-сплайн четвертого порядка - это кусочная кубическая кривая.

Из того что В-сплайн задается базисом В-сплайна, сразу следует еще несколько его свойств:

Сумма базисных функций В-сплайна для любого значения параметра (см. работы и )

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

Кроме , все базисные функции имеют ровно один максимум.

Максимальный порядок кривой равен количеству вершин определяющего многоугольника.

Кривая обладает свойством уменьшения вариации. Кривая пересекает любую прямую не чаще, чем ее определяющий многоугольник.

Общая форма кривой повторяет форму определяющего многоугольника.

Чтобы применить к кривой любое аффинное преобразование, необходимо применить его к вершинам определяющего многоугольника.

Кривая лежит внутри выпуклой оболочки определяющего многоугольника.

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

С помощью свойства выпуклой оболочки легко показать, что если все точки многоугольника коллинеарны, то соответствующий В-сплайн - прямая линия для всех . Далее, если в неколлинеарном определяющем многоугольнике встречаются коллинеарных вершин, то прямые участки кривой (если они есть) начинаются и кончаются по крайней мере за отрезка от начала и конца серии коллинеарных вершин. Если последовательность коллинеарных вершин полностью лежит внутри неколлинеарного многоугольника, число коллинеарных участков кривой не меньше, чем . Если же эта последовательность находится на конце неколлинеарного многоугольника, то число коллинеарных участков кривой не меньше . Иллюстрация приведена на рис. 5-33.

Если имеется совпадающих вершин, т.е. , то выпуклая оболочка вершин от до - это сама вершина. Отсюда следует, что В-сплайн должен проходить через вершину . На рис. 5-34 изображен пример такой точки для . Далее, так как В-сплайн везде непрерывен, он также непрерывен в .

Наконец, заметим, что свойство непрерывности плавно переводит В-сплайн во вложенные отрезки прямой, как показано на рис. 5-35.

Уравнения (5-84) указывают, что выбор узлового вектора оказывает существенное влияние на базисные функции В-сплайна и, следовательно, на сам В-сплайн. Единственное требование к узловому вектору: , т. е. это монотонно возрастающая последовательность вещественных чисел. Обычно используются три типа узловых векторов: равномерные, открытые равномерные (или открытые) и неравномерные.

Отдельные узловые значения равномерного узлового вектора распределены на одинаковом расстоянии, например

В частности, равномерные узловые векторы обычно начинаются в нуле и увеличиваются на 1 к некоторому максимальному значению или нормируются в диапазоне между 0 и 1 равными десятичными значениями, например,

Рис. 5-32 Свойства выпуклой оболочки В-сплайнов.

Рис. 5-33 Свойства выпуклой оболочки В-сплайнов для коллинеарных сегментов кривой. (а) Внутренние вершины определяющего многоугольника; (b) вершины в конце определяющего многоугольника.

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

То есть каждая функция базиса - это параллельный перенос другой функции, см. рис. 5-36.

У открытого равномерного узлового вектора количество одинаковых узловых значений в концах равно порядку базисной функции В-сплайна. Внутренние узловые значения распределены равномерно.

Рис. 5-34 Выпуклая оболочка для кратных вершин, .

Рис. 5-35 Плавное превращение в отрезки прямой.

Рис. 5-36 Базисные функции периодического равномерного В-сплайна, , , .

Несколько примеров с целыми приращениями:

,

или для нормализованных приращений

Рис. 5-37 Базисные функции открытого равномерного В-сплайна, , , .

Формально открытый равномерный узловой вектор определяется как

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

В результате мы имеем кубическую кривую Безье - В-сплайн. Соответствующие базисные функции изображены на рис. 5-27b. На рис. 5-37 приведен еще один пример открытых базисных функций.

Неравномерные узловые векторы отличаются тем, что их внутренние узловые величины располагаются на разном расстоянии друг от друга и/или совмещаются.

Векторы могут быть периодическими или открытыми, например

,

На рис. 5.38b-е показаны примеры неравномерных базисных функций В-сплайна порядка . У соответствующих узловых векторов на концах находится по совмещенных одинаковых значений. Для сравнения на рис. 5-38а приведены базисные функции для открытого равномерного вектора. Отметим, что на рис. 5-38а и b функции симметричны, а также что у неравномерных базисов симметрия нарушается: 5-38с-е. Кроме того, при совмещенных узловых значениях у одной из функций появляется излом. На рис. 5-38d и е видно, что положение излома зависит от расположения совмещенного значения в узловом векторе.

Формула Кокса-де Бура (5-84) для расчета базисных функций В-сплайна рекурсивна, поэтому функция порядка зависит от базисных функций более низкого порядка вплоть до 1. Пусть дана базисная функция . Тогда эту зависимость можно выразить в виде треугольника

.

Тогда обратная зависимость, т.е. влияние одной базисной функции первого порядка на функции более высоких порядков, такова:

.

Рассмотрим пример расчета базисных функций.

Пример 5-9 Расчет периодических базисных функций

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

Рис. 5-38 Функции неравномерного базиса для , .

Обратные зависимости для :

.

Каков диапазон узлового вектора, необходимый для этого расчета? Из уравнения (5-84) следует, что для вычисления необходимы узловые величины и , а для - и , т. е. необходимы значения от 0 до . Отсюда количество узловых значений равно . Узловой вектор для заданных периодических функций:

где . Диапазон параметра . Используя уравнение (5-84) и приведенные выше диаграммы, получим базисные функции для различных значений параметра:

; ; , ,

;

; ,

; ; , ,

;

;

; ,

; ; ,

; ;

; ,

; ; , ,

;

;

; , ,

; , .

Знак в определении приводит к тому, что при все функции равны 0.

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

Пример 5-9 показывает, как построить базис по функциям базиса более низкого порядка. На рис. 5-39а изображены функции первого порядка из примера 5-9, на рис. 5-39b - второго порядка, и на рис. 5-39с - третьего порядка. Обратим внимание на то, как растягивается диапазон ненулевых значений функций с увеличением их порядка. Говорят, что функция базиса обеспечивает поддержку на интервале от до .

Внимательно рассматривая рис. 5-36, можно заметить важное свойство функций равномерного базиса. Из уравнения (5-85) известно, что для любого значения параметра . Отсюда следует, что все множество периодических базисных функций для определено только в диапазоне . За его границами . Для равномерного начинающегося с 0 узлового вектора с целыми приращениями пригодный диапазон параметра: . Для более общих или нормализованных векторов сокращение диапазона параметра соответствует потере интервала узловых значений на каждом конце вектора.

Рис. 5-39 Построение периодических базисных функций . (а) ; (b) ; (c).

Пример 5-10 Расчет открытого равномерного базиса

Найти четыре базисные функции , , третьего порядка .

Напомним, что формально открытый узловой вектор с целыми интервалами между внутренними узловыми значениями определяется как

Диапазон изменения параметра , т. е. от 0 до максимального узлового значения. Как и в примере 5-9, количество узловых значений равно . Если брать узловые значения, то вектор для данного примера примет вид

где . Параметр изменяется от 0 до 2.

Пользуясь уравнениями (5-84) и диаграммами зависимости, получаем функции базиса для различных диапазонов параметра:

; ;

; ; , ,

; ;

; , .

Эти результаты приведены на рис. 5-40.

Сравнивая результаты примера 5-10 (рис. 5-40) и 5-9 (рис. 5-39), мы видим, что они существенно различаются для периодического и открытого равномерного узловых векторов. В частности, отметим, что у открытых равномерных узловых векторов на всем диапазоне изменения параметра определен полный набор базисных функций; т.е. для всех . У периодического вектора диапазон параметра уменьшается.

Рис. 5-40 Построение открытых базисных функций . (а) ; (b) ; (с) .

Пример 5-11 Расчет неравномерных базисных функций

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

; ;

В частности, как следствие повторения узлового значения, для всех .

; ; , ,

;

; , .

Результат приведен на рис.5-38d.

Заметим, что для всех значений имеем . Например, для ,

Аналогично для

Рис. 5-41 Зависимость формы В-сплайна от его порядка.

Из вышесказанного видно, какое влияние оказывает выбор узлового вектора на вид базисных функций В-сплайна и, следовательно, на форму В-сплайна.

Гибкость базиса В-сплайна позволяет воздействовать на форму кривой разными способами:

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

Меняя порядок базисных функций.

Меняя количество и расположение вершин определяющего многоугольника.

Используя повторяющиеся вершины.

Используя повторяющиеся узловые значения в узловых векторах.

Рассмотрим эти способы сначала для открытых В-сплайнов, затем для равномерных периодических и неравномерных В-сплайнов.

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

На рис. 5-41 изображены три открытых В-сплайна различного порядка, заданные одним набором из четырех вершин. Кривая четвертого порядка - это кривая Безье - один кубический полиномиальный сегмент. Кривая третьего порядка состоит из двух параболических сегментов, соединяющихся в центре второго отрезка с непрерывностью . Кривая второго порядка совпадает с определяющим многоугольником. Она состоит из трех линейных сегментов, соединяющихся во второй и третьей вершинах с непрерывностью . Угол наклона на концах, заданный наклоном сторон многоугольника, одинаков для всех трех кривых.

Рис. 5-42 Влияние кратности вершины на форму В-сплайна, .

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

На рис. 5-42 изображается влияние повторяющихся или совпадающих вершин. Все В-сплайны имеют порядок . Нижняя кривая определена четырьмя вершинами с узловым вектором . У средней кривой пять определяющих вершин, причем две из них повторяются во второй вершине многоугольника . Узловой вектор - . Верхняя кривая определена шестью вершинами с тремя повторяющимися в точке . Узловой вектор - . Соответствующие многоугольники для трех кривых соответственно таковы: ; и .

Нижняя кривая состоит из единственного кубического сегмента. Средняя кривая состоит из двух сегментов, соединенных между и . Верхняя кривая состоит из трех сегментов: первый от до , второй от до середины между и , третий от этой точки до . Обратим внимание на то, что с увеличением кратности вершины кривая все ближе подходит к . Когда кратность достигается , возникает острый угол в соответствии со свойством выпуклой оболочки В-сплайнов. При внимательном изучении рис. 5-42 можно заметить, что на обеих сторонах кратной вершины имеется линейный участок.

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

Наконец, заметим, что у всех кривых наклон в концах одинаков.

На рис. 5-43 показаны три В-сплайна четвертого порядка. Каждый определяющий многоугольник состоит из восьми вершин. Кривые отличаются тем, что точка передвигается в и . Передвижение точки воздействует на кривую только локально: изменяются лишь сегменты, отвечающие отрезкам , и , .

Рис. 5-43 Локальная коррекция В-сплайна.

В общем случае затрагиваются только отрезков вокруг сдвинутой точки.

Для иллюстрации рассмотрим пример.

Пример 5-12 Расчет открытого В-сплайна

Рассмотрим многоугольник из примера 5-7: , , , . Найти В-сплайн второго и четвертого порядка. Для открытый узловой вектор

,

где , , …, . Параметр изменяется от 0 до 3. Кривая состоит из трех линейных сегментов. Для функции базиса имеют вид:

; ; , ,

; ; , .

Для каждого из этих интервалов

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

Последняя точка кривой требует особого внимания. Из-за того что интервал в уравнении (5-84а) открыт справа, все базисные функции при равны нулю. Следовательно, последняя точка многоугольника формально не лежит на кривой. Фактически же это не так. Рассмотрим , где - бесконечно малая величина. Если стремится к нулю, то в пределе последние точки кривой и многоугольника совпадают. На практике либо явно добавляют последнюю точку в описание кривой, либо определяют .

Для порядок кривой совпадает с количеством вершин определяющего многоугольника, поэтому В-сплайн сводится к кривой Безье. Узловой вектор с . Функции базиса таковы:

; ; , ,

; ;

; ;

Из уравнения (5-83) получаем параметрический В-сплайн

Итак, при

Сравнивая с примером 5-7, видим, что результаты одинаковы. Получившаяся кривая изображена на рис. 5-28.

Рис. 5-44 Зависимость формы периодического В-сплайна от его порядка.

Теперь займемся периодическими В-сплайнами. На рис. 5-44 показаны три периодических В-сплайна разного порядка. Все кривые определены теми же вершинами, что и для открытых В-сплайнов на рис. 5-41. Для В-сплайн опять совпадает с определяющим многоугольником. Отметим, однако, что у периодического сплайна при первая и последняя точки на кривой не совпадают с первой и последней точками многоугольника. Наклон в первой и последней точках также может отличаться от наклона соответствующих сторон многоугольника. Для В-сплайн начинается в середине первого ребра и оканчивается в середине последнего, как отмечено стрелками. Это происходит из-за сокращения диапазона параметра для базисных функций периодического В-сплайна. Для периодический узловой вектор - с диапазоном параметра . Для периодический узловой вектор - с диапазоном параметра . Для периодический узловой вектор - с диапазоном параметра .

Сравнение полученных результатов и результатов для открытых узловых векторов на рис. 5-41 показывает, что кривую можно определить на полном диапазоне параметра, задавая кратные узловые значения на концах векторов. При этом кривая растягивается к концам многоугольника.

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

Рис. 5-45 показывает, что воздействие кратных вершин одинаково для периодических и открытых В-сплайнов. Область вокруг точки изображена более подробно.

Рис. 5-45 Влияние кратности вершины на форму периодического В-сплайна, .

Пример 5-13 Расчет периодического В-сплайна

Снова рассмотрим многоугольник на рис. 5-44. Вершины многоугольника - , , , . Найти периодический В-сплайн четвертого порядка , заданный этим многоугольником.

Для на диапазоне узловой вектор для периодических базисных функций - . Для этого диапазона базисные функции первого порядка (см. уравнение (5-84а), :

Из уравнения (5-84b) получаем базисные функции высших порядков:

; ; , ,

; ;

; , ,

;

.

,

.

Точка на В-сплайне при имеет вид

Полная кривая приведена на рис. 5-44.

Периодические В-сплайны очень удобны для построения замкнутых кривых. На рис. 5-46а изображен периодический В-сплайн четвертого порядка , построенный для замкнутого многоугольника .

Первая вершина совпадает с последней. В-сплайн получается незамкнутым из-за ограниченного диапазона параметра. Здесь периодический равномерный узловой вектор: с диапазоном параметра .

Повторяя всего вершин в начале и/или конце замкнутого многоугольника, получаем замкнутый периодический В-сплайн. (Далее в этом разделе обсуждается другой метод в матричной формулировке.) Результат показан на рис. 5-46b, где определяющий многоугольник - с периодическим равномерным узловым вектором и диапазоном параметра . Альтернативные многоугольники или приводят к тому же самому результату.

На рис. 5-47 одна вершина многоугольника передвинута на другое место. Ее воздействие распространяется на сегменты кривой, соответствующие ребрам многоугольника по обе стороны от сдвинутой точки. На рис. 5-48 показан эффект кратной вершины . Область вокруг изображена более подробно. Опять отметим, что ее влияние распространяется также только на сегмента кривой по обе стороны кратной вершины.

Теперь рассмотрим неравномерные В-сплайны. На рис. 5-49 кривая изменяется под воздействием кратных внутренних узловых значений.

Рис. 5-46 Замкнутый периодический В-сплайн. (а) определяющий многоугольник; (b) - определяющий многоугольник.

Рис. 5-47 Изменение формы В-сплайна после перемещения одной вершины многоугольника.

Верхняя кривая третьего порядка рассчитана для открытого узлового вектора . Базисные функции для этой кривой изображены на рис. 5-38а. Нижняя кривая третьего порядка построена с неравномерным узловым вектором . Ее базисные функции - на рис. 5-38d.

Рис. 5-48 Влияние кратных вершин на форму замкнутого периодического В-сплайна.

Такая же кривая получается с неравномерным узловым вектором и базисными функциями на рис. 5-38е.

Из рис. 5-49 видно, что кратные внутренние узловые значения порождают излом в вершине . Кратное значение порождает ребро нулевой длины, поэтому уменьшается диапазон поддержки базисных функций. Далее, кратные внутренние узловые значения, в отличие от кратных вершин многоугольника, снижают дифференцируемость базисной функции в до , где равно кратности внутреннего узлового значения. Локально неравномерная кривая на рис. 5-49 непрерывная в окрестности , что и приводит к появлению угла.

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

, ,

, , (5-86)

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

Рис. 5-49 Неравномерные В-сплайны, . (а) ; (b) .

Рис. 5-50 Сравнение открытых неравномерных В-сплайнов: (a) равномерный узловой вектор; (b) неравномерный узловой вектор, пропорциональный длинам хорд; (c) неравномерный узловой вектор, пропорциональный длинам хорд, с двойной вершиной в .

Для сравнения приведена кривая с открытым равномерным вектором, а также кривая с парой совпадающих вершин .

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

Пример 5-14 Неравномерный В-сплайн

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

Сначала найдем длины хорд

Их суммарная длина

Из уравнения (5-86) получаем внутренние узловые значения

.

Узловой вектор имеет вид

где , , …, . Диапазон параметра . Кривая состоит из трех параболических сегментов.

Функции базиса для таковы

; ; , ,

; ;

; , .

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



Последние материалы раздела:

Изменение вида звездного неба в течение суток
Изменение вида звездного неба в течение суток

Тема урока «Изменение вида звездного неба в течение года». Цель урока: Изучить видимое годичное движение Солнца. Звёздное небо – великая книга...

Развитие критического мышления: технологии и методики
Развитие критического мышления: технологии и методики

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

Онлайн обучение профессии Программист 1С
Онлайн обучение профессии Программист 1С

В современном мире цифровых технологий профессия программиста остается одной из самых востребованных и перспективных. Особенно высок спрос на...