حركة براونية كسرية

مقدمة


fBM لتقف على الحركة البراونية الكسرية (الحركة البرازية الكسرية). ولكن قبل أن نبدأ في الحديث عن الطبيعة والكسور والراحة الإجرائية ، دعنا ندرس النظرية للحظة.

Brownian Motion (BM) ، ببساطة ، بدون "تجزئة" هي حركة يتغير فيها موضع كائن مع زيادات عشوائية بمرور الوقت (تخيل position+=white_noise(); التسلسل position+=white_noise(); ). من وجهة نظر رسمية ، يعتبر BM جزءًا لا يتجزأ من الضوضاء البيضاء. تعرّف هذه الحركات المسارات العشوائية ولكنها متشابهة ذاتياً (إحصائياً) ، أي تشبه الصورة التقريبية للمسار المسار بالكامل. Fractional Brownian Motion هي عملية مشابهة لا تكون فيها الزيادات مستقلة تمامًا عن بعضها البعض ، وهناك نوع من الذاكرة في هذه العملية. إذا كان للذاكرة علاقة إيجابية ، فإن التغييرات في اتجاه معين تميل إلى التغيرات المستقبلية في نفس الاتجاه ، وسيكون المسار أكثر سلاسة من BM العادي. إذا كانت للذاكرة علاقة سلبية ، فمن المرجح أن يتبع التغيير في الاتجاه الإيجابي تغيير في الاتجاه السلبي ، وسيكون المسار أكثر عشوائية. تُعرف المعلمة التي تتحكم في سلوك الذاكرة أو التكامل ، وبالتالي التشابه الذاتي ، بعدها النمطي هندسيًا ، وطيف القدرة ، باسم الأس ، Hurst ، وعادةً ما يتم اختزالها إلى H. من وجهة نظر رياضية ، H تسمح لنا بدمج الضوضاء البيضاء جزئيًا فقط (على سبيل المثال ، 1/3 فقط من التكامل) ، وبالتالي "تجزئة" في الاسم) لإنشاء fBM لأي خصائص الذاكرة المطلوبة والمظهر. تأخذ H القيم في النطاق من 0 إلى 1 ، والتي تصف ، على التوالي ، fBM الخشنة والسلسة ، ويتم الحصول على BM المعتاد عند H = 1/2.


هنا يتم استخدام الدالة fBM () لإنشاء التضاريس ، السحب ، توزيع الأشجار ، أشكالها اللونية وتفاصيل التاج. "الغابات المطيرة" ، 2016: https://www.shadertoy.com/view/4ttSWf

كل هذا نظري للغاية ، وفي رسومات الكمبيوتر ، يتم إنشاء fBM بطريقة مختلفة تمامًا ، لكنني أردت شرح النظرية ، لأنه من المهم تذكرها حتى عند إنشاء الرسومات. دعونا نرى كيف يتم ذلك في الممارسة العملية:

كما نعلم ، فإن الهياكل المتشابهة ذاتيا ، والتي تكون عشوائية في نفس الوقت ، مفيدة للغاية للنمذجة الإجرائية لجميع أنواع الظواهر الطبيعية ، من الغيوم إلى الجبال والقوام من لحاء الأشجار . من الواضح بشكل حدسي أن الأشكال في الطبيعة يمكن أن تتحلل إلى العديد من الأشكال الكبيرة التي تصف الشكل ككل ، وعددًا أكبر من الأشكال المتوسطة الحجم التي تشوه المخطط الرئيسي أو سطح الشكل الأصلي ، وعدد أكبر من الأشكال الصغيرة التي تضيف التفاصيل إلى المخطط التفصيلي والشكل السابقتين. هذه الطريقة الإضافية لإضافة تفاصيل إلى كائن ما ، توفر لنا طريقة بسيطة لتقييد حدود نطاقات التردد لتغيير LOD (مستوى التفاصيل ، مستويات التفاصيل) وتصفية / تجانس الأشكال ، تجعل من السهل كتابة التعليمات البرمجية وإنشاء نتائج جميلة بصريًا. لذلك ، يستخدم على نطاق واسع في الأفلام والألعاب. ومع ذلك ، لا أعتقد أن fBM مفهومة جيدًا من خلال الآلية بالكامل. في هذه المقالة ، سوف أصف كيف يعمل وكيف يتم استخدام خصائصه الطيفية والبصرية المختلفة لقيم مختلفة من المعلمة الرئيسية H ، وسأكمل كل هذا بالتجارب والقياسات.

الفكرة الأساسية


عادةً (هناك العديد من الطرق) يتم إنشاء fBMs عن طريق استدعاء العشوائية الحتمية والتمهيد باستخدام وظيفة الضوضاء التي حددها المطور ( القيمة ، التدرج ، الخلوية ، Voronoi ، مثلثية ، simplex ، ... ، إلخ ، الخيار المختار غير مهم للغاية هنا) ، تليها بناء التشابه الذاتي. يتم تطبيق fBMs بدءًا من إشارة الضوضاء الأساسية ، مما يضيف إليها تدريجًا دعوات ضوضاء مفصلة أصغر وأصغر. شيء مثل هذا:

 float fbm( in vecN x, in float H ) { float t = 0.0; for( int i=0; i<numOctaves; i++ ) { float f = pow( 2.0, float(i) ); float a = pow( f, -H ); t += a*noise(f*x); } return t; } 

هذا هو fBM في أنقى صورها. كل إشارة (أو "موجة") ضجيج () ، والتي لدينا "numOctaves" ، يتم دمجها بشكل إضافي مع مجموع وسيط ، ولكن يتم ضغطها أفقياً بمقدار النصف ، مما يؤدي بشكل أساسي إلى خفض طول الموجة ، ويخفض اتساعها أضعافا مضاعفة. مثل هذا التراكم للموجات مع انخفاض منسق في الطول الموجي والسعة يخلق التشابه الذاتي الذي نلاحظه في الطبيعة. في النهاية ، في أي مساحة معينة ، لا يوجد سوى عدد قليل من التغييرات الكبيرة ، ولكن هناك مساحة كبيرة لإجراء تغييرات أصغر من أي وقت مضى. يبدو معقول جدا. في الواقع ، توجد مثل هذه المظاهر لقانون السلطة في كل مكان في الطبيعة.

أول ما يمكنك ملاحظته هو أن الكود الموضح أعلاه لا يشبه إلى حد كبير معظم تطبيقات fBM التي يمكن أن تراها في Shadertoy وأمثلة التعليمات البرمجية الأخرى. يشبه الكود الموجود أدناه الرمز الموضح أعلاه ، ولكنه أكثر شيوعًا ، لأنه يستغني عن الوظائف المكلفة لـ pow ():

 float fbm( in vecN x, in float H ) { float G = exp2(-H); float f = 1.0; float a = 1.0; float t = 0.0; for( int i=0; i<numOctaves; i++ ) { t += a*noise(f*x); f *= 2.0; a *= G; } return t; } 

لذلك ، لنبدأ بالحديث عن numOctaves. نظرًا لأن الطول الموجي لكل ضجيج أقل مرتين من الطول السابق (والتردد أعلى مرتين) ، يتم استبدال تسمية ما يجب أن يطلق عليه "numFrequencies" بـ "numOctaves" كمرجع لمفهوم موسيقي: تقسيم أوكتاف واحد بين ملاحظتين مضاعفة وتيرة المذكرة الأساسية. بالإضافة إلى ذلك ، يمكن إنشاء fBM بزيادة تردد كل ضوضاء بمقدار مختلف عن الاثنين. في هذه الحالة ، لن يكون المصطلح "octave" صحيحًا تقنيًا ، لكنه لا يزال يُستخدم. في بعض الحالات ، قد يكون من الضروري أيضًا إنشاء موجات / ضوضاء بترددات تزيد مع معامل خطي ثابت ، وليس هندسيًا ، على سبيل المثال ، FFT (تحويل فورييه السريع ؛ يمكن استخدامه فعليًا لإنشاء fBMs دورية) ، وهو مفيد في إنشاء مواد المحيط). ولكن ، كما سنرى لاحقًا ، يمكن أن تؤدي معظم الوظائف الأساسية للضوضاء () إلى زيادة الترددات بمعدلات مضاعفة ، أي أننا نحتاج إلى عدد قليل جدًا من التكرارات ، وسيظل fBM جميلًا. في الواقع ، يتيح لنا توليف fBM أوكتاف واحد في وقت واحد أن نكون فعالين للغاية - على سبيل المثال ، في 24 أوكتاف / تكرار فقط ، يمكنك إنشاء fBM يغطي كوكب الأرض بأكمله بتفاصيل 2 متر. إذا قمت بذلك باستخدام ترددات متزايدة خطيًا ، فسوف يستغرق الأمر عدة مرات من التكرار بحجم أكبر.

الملاحظة الأخيرة على تسلسل الترددات: إذا انتقلنا من f i = 2 i إلى f i = 2⋅f i-1 ، فإن هذا سيتيح لنا بعض المرونة فيما يتعلق بمضاعفة الترددات (أو تقليل بمقدار نصف طول الموجات) - يمكننا بسهولة توسيع الدورة و تغيير كل أوكتاف ، على سبيل المثال ، استبدال 2.0 بـ 2.01 و 1.99 والقيم المماثلة الأخرى بحيث لا تتداخل الأصفار المتراكمة وقمم موجات الضوضاء المختلفة مع بعضها البعض تمامًا ، مما يؤدي أحيانًا إلى إنشاء أنماط غير واقعية. في حالة 2D-fBM ، يمكنك أيضًا تدوير منطقة التعريف قليلاً.

لذلك ، في تطبيق البرمجيات الجديد لـ fBM () ، لم نستبدل توليد التردد من صياغة قانون الطاقة بعملية تكرارية فحسب ، بل قمنا أيضًا بتغيير السعة الأسية (قانون الطاقة) من خلال سلسلة هندسية تتحكم فيها مؤشرات "الكسب" G. من الضروري إجراء تحول من H إلى G ، حساب G = 2 -H ، والتي يمكن استنتاجها بسهولة من الإصدار الأول من الكود. ومع ذلك ، في كثير من الأحيان يتجاهل المبرمجون الرسميون H Hurst exponent H ، أو حتى لا يعرفون عنها ، ويعملون مباشرة مع قيم G. بما أننا نعلم أن H تتفاوت في النطاق من 0 إلى 1 ، فإن G تتنوع من 1 إلى 0.5. في الواقع ، قام معظم المبرمجين بتعيين قيمة ثابتة قدرها G = 0.5 في تطبيقات fBM الخاصة بهم. لن يكون هذا الرمز مرنًا مثل استخدام المتغير G ، ولكن هناك أسباب وجيهة لذلك ، وسنتعرف عليهم قريبًا.

التشابه الذاتي


كما ذكر أعلاه ، تحدد المعلمة H التشابه الذاتي للمنحنى. بالطبع ، هذا هو التشابه الذاتي الإحصائي. هذا هو الحال في حالة fBM أحادية البعد () ، إذا قمنا بجعل الكاميرا أقرب أفقياً من الرسم البياني بواسطة U ، فكيف نحتاج إلى الاقتراب من الرسم عموديًا بواسطة V للحصول على منحنى سيبدو كما هو؟ حسنًا ، نظرًا لأن = f -H ، ثم a⋅V = (f⋅U) -H = f -H ⋅U -H = a⋅U -H ، أي ، V = U -H . لذلك ، إذا قمنا بتحريك الكاميرا أقرب إلى fBM بواسطة مؤشر أفقي 2 ، ثم عموديًا نحتاج إلى تغيير المقياس إلى 2- H . لكن 2 -H هو G! وهذه ليست مصادفة: عند استخدام G لتوسيع نطاقات الضوضاء ، فإننا ، بحكم التعريف ، نبني التشابه الذاتي fBM مع عامل القياس G = 2 -H .


تظهر الحركة البراونية (H = 1/2) والزوم متباين الخواص على اليسار. إلى اليمين هو fBM (H = 1) والتكبير الخواص.

الرمز: https://www.shadertoy.com/view/WsV3zz

ماذا عن الجبال الإجرائية؟ تحتوي الحركة البراونية القياسية على قيمة H = 1/2 ، والتي تعطينا G = 0.707107 ... عند هذه القيم ، يتم إنشاء منحنى ، عندما يكون مكبّرًا ، يظهر تمامًا إذا تم تحجيمه متباين الخواص على طول X و Y (إذا كان منحنى أحادي البعد). وفي الواقع: لكل عامل تكبير أفقي U ، نحتاج إلى قياس المنحنى رأسياً بواسطة V = sqrt (U) ، وهو أمر غير طبيعي للغاية. ومع ذلك ، غالباً ما تقترب مخططات البورصات من H = 1/2 ، لأنه من الناحية النظرية ، كل زيادة أو انخفاض في قيمة الأسهم لا تعتمد على التغييرات السابقة (لا تنس أن BM هي عملية بدون ذاكرة). بالطبع ، في الممارسة العملية ، توجد بعض التبعيات ، وهذه المنحنيات أقرب إلى H = 0.6.

لكن العملية الطبيعية تحتوي على المزيد من "الذاكرة" في حد ذاتها ، والتشابه الذاتي فيها أكبر بكثير من الخواص. على سبيل المثال ، الجبل الأعلى أوسع في قاعدته بنفس المقدار ، أي الجبال عادة لا تمتد ولا تصبح أرق. لذلك ، هذا يجعلنا نفهم أنه بالنسبة للجبال يجب أن تكون G 1/2 - نفس التكبير الأفقي والرأسي. هذا يتوافق مع H = 1 ، أي أن ملامح الجبل يجب أن تكون أكثر سلاسة من منحنى البورصة. في الواقع ، هو ، وبعد ذلك بقليل سنقوم بقياس ملفات التعريف الحقيقية لتأكيد هذا. ولكن من التجربة ، نعلم أن G = 0.5 تخلق نقوشًا وسحبًا كسورية جميلة ، لذلك G = 0.5 هي في الواقع أكثر قيمة G لكل تطبيقات fbm.

ولكن الآن لدينا فهم أعمق لـ H و G و fBM بشكل عام. نحن نعلم أنه إذا كانت قيمة G أقرب إلى 1 ، فإن fBM سيكون أكثر جنونًا من BM النقي. وفي الحقيقة: بالنسبة إلى G = 1 ، والتي تتوافق مع H = 0 ، نحصل على أكثر ضوضاء fBM على الإطلاق.

جميع وظائف fBM المعيارية هذه لها أسماء ، على سبيل المثال ، "الضوضاء الوردية" عند H = 0 أو G = 1 أو "الضوضاء البنية" عند H = 1/2 أو G = sqrt (2) ، الموروثة من مجال معالجة الإشارات الرقمية (Digital معالجة الإشارات) ومعروفة للأشخاص الذين يعانون من مشاكل النوم. دعنا نعمق في DSP وحساب الخصائص الطيفية للحصول على فهم أعمق fBM.

منظور معالجة الإشارات


إذا كنت تفكر في تحليل فورييه ، أو توليف الصوت الإضافي ، فإن تطبيق fBM () الموضح أعلاه يشبه تحويل Inverse Fourier ، المنفصل مثل تحويل فورييه المنفصل (DFT) ، ولكنه متفرق للغاية ويستخدم قاعدة مختلفة وظيفة (تختلف اختلافا كبيرا عن IFT ، ولكن اسمحوا لي أن أشرح). في الواقع ، يمكننا إنشاء fBM () ورسومات الكمبيوتر وحتى أسطح المحيطات باستخدام IFFT ، لكن هذا سرعان ما أصبح مشروعًا مكلفًا للغاية. والسبب هو أن IFFT لا تجمع بشكل إضافي بين موجات الضوضاء ، ولكن الجيوب الأنفية ، لكن الجيوب الأنفية لا تملأ طيف طاقة الطاقة بشكل فعال ، لأن كل جيب جيبي يؤثر على تردد واحد. ومع ذلك ، فإن وظائف الضوضاء لديها أطياف واسعة تغطي فترات تردد طويلة مع موجة واحدة. كل من ضجيج التدرج وضوضاء القيمة لديها هذه الرسوم البيانية الغنية والكثيفة من الكثافة الطيفية. ألق نظرة على الرسوم البيانية:


موجة جيبية


الضوضاء القيمة


ضجيج التدرج
لاحظ أنه في طيف ضوضاء القيمة وضوضاء التدرج ، يتركز الجزء الأكبر من الطاقة في الترددات المنخفضة ، لكنه أوسع - وهو الاختيار المثالي لملء الطيف بالكامل بسرعة بعدة نسخ إزاحة ونسخة. مشكلة أخرى شرط موجة fBM هو هذا. أنه ، بطبيعة الحال ، يولد باترات متكررة ، والتي غالباً ما تكون غير مرغوب فيها ، على الرغم من أنها يمكن أن تكون مفيدة لتوليد قوام سلس. إن ميزة fBM () القائمة على sin () هي أنها فائقة الإنتاجية ، لأن وظائف مثلثية يتم تنفيذها في الحديد بشكل أسرع بكثير من بناء الضوضاء باستخدام متعدد الحدود والتجزئة / لذلك ، في بعض الأحيان لا يزال الأمر يستحق استخدام fBM على أساس موجات جيبية من اعتبارات الأداء ، حتى لو تم إنشاء المناظر الطبيعية الفقيرة.

الآن دعنا نلقي نظرة على الرسوم البيانية لكثافة الأطياف لل fBM بقيم مختلفة من H. إيلاء اهتمام خاص للعلامات على المحور العمودي ، لأن جميع الرسوم البيانية الثلاثة طبيعية ولا تصف نفس المنحدرات ، على الرغم من أنها تبدو للوهلة الأولى كما هي تقريبا. إذا أشرنا إلى الميل السلبي لهذه الرسوم البيانية الطيفية ب "B" ، فبما أن هذه الرسوم البيانية لها مقياس لوغاريتمي ، فسوف يتبع الطيف قانون الطاقة الخاص بالنموذج f -B . في هذا الاختبار ، أستخدم 10 أوكتافات من ضجيج التدرج العادي لبناء fBM الموضح أدناه.


ع = 1.0 (ع = 0)


ع = 0.707 (ع = 1/2)


ع = 0.5 (ع = 1)

كما نرى ، فإن طاقة fBM ذات H = 0 (G = 1) تضعف عند 3 dB لكل أوكتاف ، أو في الواقع ، تعود بقيمة التردد. هذا هو قانون القوة f -1 (B = 1) ، والذي يسمى "الضوضاء الوردي" ويبدو وكأنه المطر.

يولد fBM () مع H = 1/2 (G = 0.707) طيفًا يُخفف بشكل أسرع ، عند 6 dB لكل أوكتاف ، أي أنه يحتوي على ترددات أقل. في الواقع يبدو أعمق ، كما لو كنت تسمع المطر ، ولكن هذه المرة من غرفتك مع النوافذ مغلقة. يعني توهين 6 ديسيبل / أوكتاف أن الطاقة تتناسب مع f -2 (B = 2) ، وهذا هو في الواقع سمة من سمات الحركة البراونية في DSP.

أخيرًا ، يولد fBM المفضل لدينا من رسومات الكمبيوتر ذات H = 1 (G = 0.5) مؤامرة للكثافة الطيفية بتحلل قدره 9 dB / octave ، أي أن الطاقة تتناسب عكسياً مع مكعب التردد (f -3 ، B = 3). هذه إشارة ذات تردد منخفض باستمرار ، والتي تتوافق مع عملية ذات ذاكرة ارتباط إيجابية ، والتي تحدثنا عنها في البداية. هذا النوع من الإشارات ليس له اسم خاص به ، لذلك لدي إغراء أن أسميها "ضوضاء صفراء" (ببساطة لأن هذا الاسم لم يعد يستخدم لأي شيء). كما نعلم ، هو موحد الخواص ، مما يعني أنه يصوغ الكثير من الأشكال الطبيعية المتكررة ذاتياً.

في الحقيقة ، سأؤكد كلماتي حول التشابه مع الطبيعة من خلال إجراء القياسات الواردة في القسم التالي من المقال.

اسمHع = 2 ساعةB = 2H + 1ديسيبل / أكتوبرالصوت
أزرق--+1+3رش الماء. صلة
أبيض--00الرياح في الأوراق. صلة
وردي01-1-3المطر. صلة
أسمر1/2sqrt (2)-2-6سمعت المطر من المنزل. صلة
أصفر11/2-3-9محرك وراء الباب

قياس


أولاً ، يجب أن أحذرك من أنها ستكون تجربة غير علمية للغاية ، لكنني ما زلت أريد مشاركتها. لقد التقطت صوراً لسلاسل الجبال الموازية لطائرة الصور لتجنب تشويه المنظور. ثم قسّمت الصور إلى أبيض وأسود ، ثم حولت سطح التلامس في السماء والجبال إلى إشارة 1D. ثم قمت بتفسيره كملف صوت WAV وحساب الرسم البياني للتردد ، كما هو الحال مع إشارات fBM () الاصطناعية التي قمت بتحليلها أعلاه. لقد اخترت الصور بدقة عالية بما فيه الكفاية بحيث تحتوي خوارزمية FFT على بيانات مهمة للعمل.


المصدر: مراسل يوناني


المصدر: ويكيبيديا







يبدو أن النتائج تشير حقًا إلى أن ملامح الجبل تتبع توزيع تردد -9 ديسيبل / أوكتاف ، والذي يتوافق مع B = -3 أو H = 1 أو G = 0.5 ، أو بمعنى آخر ، الضوضاء الصفراء.

بالطبع ، لم تكن التجربة صارمة ، لكنها تؤكد فهمنا البديهي وما نعرفه بالفعل من التجربة والعمل مع رسومات الكمبيوتر. لكنني آمل الآن أننا بدأنا نفهم هذا بشكل أفضل!

Source: https://habr.com/ru/post/ar470457/


All Articles