خوارزمية دي بور
في فرع التحليل العددي من الرياضيات ، تُعدّ خوارزمية دي بور [ 1 ] خوارزمية مستقرة عدديًا وذات زمن حسابي متعدد الحدود لتقييم منحنيات السبلاين في صيغة بي-سبلاين . وهي تعميم لخوارزمية دي كاستيلجو لمنحنيات بيزير . وقد ابتكر هذه الخوارزمية عالم الرياضيات الألماني الأمريكي كارل ر. دي بور . وقد طُوّرت صيغ مبسطة وأسرع من خوارزمية دي بور، إلا أنها تعاني من استقرار أقل نسبيًا. [ 2 ] [ 3 ]
مقدمة
يُقدَّم عرضٌ عامٌّ لـ B-splines في المقالة الرئيسية . هنا نناقش خوارزمية دي بور، وهي طريقة فعّالة ومستقرة عدديًا لتقييم منحنى السبلاين.في هذا المنصبالمنحنى مُنشأ من مجموع دوال بي-سبلاينمضروبًا في ثوابت قد تكون ذات قيم متجهةوتسمى نقاط التحكم، منحنيات بي-سبلاين من الرتبةهي دوال متعددة الحدود متصلة على أجزاء من الدرجةمُعرَّف على شبكة من العُقد(نستخدم دائمًا الفهارس التي تبدأ من الصفر فيما يلي). تستخدم خوارزمية دي بور O (p² ) + O (p) من العمليات لتقييم منحنى السبلاين. ملاحظة: تستخدم المقالة الرئيسية حول B-splines والمنشورات الكلاسيكية [ 1 ] ترميزًا مختلفًا: يتم فهرسة B-spline على النحو التالي:مع.
الدعم المحلي
تتمتع دوال B-spline بدعم محلي، مما يعني أن كثيرات الحدود تكون موجبة فقط في نطاق مضغوط، وتساوي صفرًا في أي مكان آخر. وتوضح صيغة كوكس-دي بور التكرارية [ 4 ] ذلك.
لنفترض أن المؤشرحدد فاصل العقدة الذي يحتوي على الموضع،يمكننا أن نرى في صيغة التكرار أن دوال B-spline فقط هي التي تحتوي علىتكون هذه القيم غير صفرية في هذه الفترة المحددة. وبالتالي، يختزل المجموع إلى:
ويترتب على ذلكالذي - التيوبالمثل، نرى في التكرار أن أعلى موقع للعقدة المستعلم عنها هو عند الفهرسهذا يعني أن أي فاصل عقديوالتي يجب أن تحتوي على الأقل على ما يلي، والتي يتم استخدامها فعليًاعقد إضافية قبل وبعد. في برنامج الحاسوب ، يتم تحقيق ذلك عادةً بتكرار موقع العقدة الأولى والأخيرة المستخدمة.مرات. على سبيل المثال، لـومواقع العقد الحقيقية، يقوم المرء بتعبئة متجه العقدة إلى.
الخوارزمية
باستخدام هذه التعريفات، يمكننا الآن وصف خوارزمية دي بور. لا تحسب الخوارزمية دوال بي-سبلاين.مباشرة. بدلاً من ذلك، يتم التقييممن خلال صيغة تكرارية مكافئة.
يترككن نقاط تحكم جديدة معل. ليتم تطبيق التكرار التالي:
بمجرد اكتمال التكرارات، نكون قد حصلناوهذا يعني أنهذه هي النتيجة المرجوة.
تُعد خوارزمية دي بور أكثر كفاءة من الحساب الصريح لـ B-splinesباستخدام صيغة كوكس دي بور التكرارية، لأنها لا تحسب الحدود التي من المضمون ضربها في الصفر.
التحسينات
الخوارزمية المذكورة أعلاه غير مُحسَّنة للتنفيذ على الحاسوب. فهي تتطلب ذاكرة لـنقاط تفتيش مؤقتةتُكتب كل نقطة تحكم مؤقتة مرة واحدة بالضبط وتُقرأ مرتين. وذلك بعكس التكرار على(باستخدام العد التنازلي بدلاً من العد التصاعدي)، يمكننا تشغيل الخوارزمية بذاكرة تكفي فقطنقاط تحكم مؤقتة، عن طريق السماحإعادة استخدام الذاكرة لـوبالمثل، لا توجد سوى قيمة واحدة لـيتم استخدامها في كل خطوة، لذلك يمكننا إعادة استخدام الذاكرة أيضًا.
علاوة على ذلك، من الأنسب استخدام فهرس يبدأ من الصفربالنسبة لنقاط التحكم المؤقتة. العلاقة بالمؤشر السابق هيوبذلك نحصل على الخوارزمية المحسّنة:
يتركلكرر العملية لـ: لاحظ أنه يجب عدّ قيمة j تنازليًا. بعد اكتمال التكرارات، تكون النتيجة هي.
مثال على التنفيذ
الكود التالي في لغة برمجة بايثون هو تطبيق بسيط للخوارزمية المُحسَّنة.
دالة deBoor ( k : عدد صحيح , x : عدد صحيح , t , c , p : عدد صحيح ):"""يقيّم S(x). الحجج --------- k: فهرس فاصل العقدة الذي يحتوي على x. س: الموضع. t: مصفوفة من مواضع العقد، يجب حشوها كما هو موضح أعلاه. ج: مصفوفة من نقاط التحكم. p: درجة B-spline. """d = [ c [ j + k - p ] for j in range ( 0 , p + 1 )]for r in range ( 1 , p + 1 ):for j in range ( p , r - 1 , - 1 ):ألفا = ( س - ت [ ي + ك - ف ]) / ( ت [ ي + 1 + ك - ر ] - ت [ ي + ك - ف ])د [ ي ] = ( 1.0 - ألفا ) * د [ ي - 1 ] + ألفا * د [ ي ]إرجاع د [ ص ]انظر أيضاً
روابط خارجية
شفرة الحاسوب
- حزمة PPPACK : تحتوي على العديد من خوارزميات التجزئة الخطية بلغة فورتران
- مكتبة جنو العلمية : مكتبة مكتوبة بلغة C، تحتوي على مكتبة فرعية للخطوط المنحنية المنقولة من PPPACK
- SciPy : مكتبة بايثون، تحتوي على مكتبة فرعية scipy.interpolate مع دوال spline مبنية على FITPACK
- TinySpline : مكتبة C لإنشاء الدوال المنحنية مع غلاف C++ وروابط للغات C# و Java و Lua و PHP و Python و Ruby
- Einspline : مكتبة C لإنشاء منحنيات في بُعد واحد، وبُعدين، وثلاثة أبعاد مع أغلفة Fortran
مراجع
- 1 2 C. de Boor [1971]، "حزمة روتينية فرعية للحساب باستخدام B-splines"، تقرير فني LA-4728-MS، مختبر لوس ألاموس العلمي، لوس ألاموس، نيو مكسيكو؛ ص 109، 121.
- ↑ لي، إي تي واي (ديسمبر 1982). "روتين حسابي مبسط لـ B-Spline". الحوسبة . 29 (4). سبرينغر-فيرلاغ: 365-371 . doi : 10.1007/BF02246763 . S2CID 2407104 .
- ↑ لي، إي تي واي (1986). "تعليقات على بعض خوارزميات بي-سبلاين". الحوسبة . 36 (3). سبرينغر-فيرلاغ: 229-238 . doi : 10.1007/BF02240069 . S2CID 7003455 .
- ↑ سي. دي بور، ص 90
المراجع
- كارل دي بور (2003). دليل عملي للشرائح، طبعة منقحة . سبرينغر-فيرلاغ. ISBN 0-387-95366-3.
- التحليل العددي
- المنحنيات (الرياضيات)
- الاستيفاء
