Кіріспе

Сплин қисықтарын бағалау әдісі

Сандық талдау математикасының бір саласында де Бур алгоритмі – B сплин түріндегі сплин қисықтарын бағалау үшін полиномиалдық уақыт пен сандық тұрақтылықты қамтамасыз ететін алгоритм. Бұл де Кастельжоның Безиер қисықтарына арналған алгоритмінің жалпыланған түрі. Алгоритмді неміс-американдық математигі Карл Р. де Бур жасаған. Де Бур алгоритмінің жеңілдетілген, ықтимал жылдам нұсқалары құрастырылған, бірақ олар салыстырмалы түрде төмен тұрақтылыққа ұшырайды.

Кіріспе

B сплинелер туралы жалпы түсінік негізгі мақалада берілген. Мұнда біз де Бур алгоритмін талқылаймыз, ол spline қисығын белгілі бір позицияда бағалаудың тиімді және сандық тұрақты схемасы. Бұл қисық B сплине функцияларының қосындысынан, векторлық шамалармен көбейтілген басқару нүктелерінен құралады.

Кез келген реттің B сплинелері – бұл түйіндердің торында анықталған, дәрежесі бірдей полиномдық функциялардың бөлік-бөлікке қосылуы. (Келесіде біз әрқашан нөлдік негізгі индекстерді қолданамыз). Де Бур алгоритмі spline қисығын бағалау үшін O(p²) + O(p) операцияларын қолданады. Ескерту: B сплиндері туралы негізгі мақала және классикалық жарияланымдарда басқа белгілеу қолданылады: B сплині индексімен белгіленеді, мұнда .

Жергілікті қолдау

B сплиндары шекті қолдауға ие, яғни көпмүшелер тек шекті доменде ғана оң, ал қалған жерде нөлге тең. Кокс де Бур рекурсиялық формуласы осыны көрсетеді:

индекс позицияны қамтитын түйін аралығын анықтасын. Рекурсиялық формуладан тек белгілі бір түйін аралығы үшін B сплиндері нөлден өзгеше екенін көреміз. Осылайша, қосынды келесіге дейін қысқартылады:

Осыдан келіп, рекурсияда ең жоғары сұралған түйін орны индексте екенін көреміз. Бұл, нақты қолданылатын кез келген түйін аралығының алдында және артында кем дегенде қосымша түйіндер болуы керек екенін білдіреді. Компьютерлік бағдарламада бұл әдетте бірінші және соңғы қолданылған түйін орнын белгілі бір рет қайталау арқылы жүзеге асырылады. Мысалы, егер және нақты түйін орны болса, түйін векторына қосымша түйіндер қосылады.

Алгоритм

Осы анықтамалармен біз де Бур алгоритмін сипаттай аламыз. Алгоритм B-сплайн функцияларын тікелей есептемейді. Оның орнына, ол эквивалентті рекурсиялық формула арқылы оларды анықтайды. үшін келесі рекурсия қолданылады:

Итерациялар аяқталғаннан кейін , яғни – ізделінді нәтиже. Де Бур алгоритмі Кокс-де Бур рекурсиялық формуласымен B-сплайнды тікелей есептеуге қарағанда тиімдірек, себебі ол нөлге көбейтілетіні анық терминдерді есептемейді.

Оңтайландырулар

Жоғарыдағы алгоритм компьютерде іске асыру үшін оңтайландырылмаған. Ол уақытша басқару нүктелері үшін жадты қажет етеді. Әрбір уақытша басқару нүктесі бір рет жазылады және екі рет оқылады. Итерацияны кері бағытта орындау арқылы (көтерілудің орнына төмен санау арқылы) алгоритмді тек уақытша басқару нүктелеріне арналған жадпен іске асыруға болады, бұл жадты қайта пайдалануға мүмкіндік береді. Сондай-ақ, әр қадамда тек бір ғана мән қолданылады, сондықтан жадты қайта пайдалануға болады. Бұдан әрі, уақытша басқару нүктелері үшін нөлдік индекс пайдалану ыңғайлы. Алдыңғы индекспен байланыс: Осылайша, біз жақсартылған алгоритмді аламыз: үшін болсын. : итерациялаңыз.

J-ді төмен санау керек екенін ескеріңіз. Итерациялар аяқталғаннан кейін нәтиже болады.