براكيستوكروين ومعادلة أويلر-لاغرانج باستخدام حساب المتغيرات

براكيستوكروين ومعادلة أويلر-لاغرانج باستخدام حساب المتغيرات

حساب المتغيرات في الميكانيكا الكلاسيكية ومعادلة أويلر-لاغرانج

ملخص:
في هذه الحصة، سنراجع كيفية اشتقاق معادلة أويلر-لاغرانج من الميكانيكا التحليلية باستخدام تقنيات حساب المتغيرات، ومن خلال ذلك سنوضح بتفصيل كيفية تطبيقها في حل مشكلة البراكيستوكروين.


أهداف التعلم:
عند الانتهاء من هذه الحصة، سيكون الطالب قادرًا على:

  1. فهم مبدأ هاميلتون للفعل الأدنى
  2. إثبات معادلة أويلر-لاغرانج
  3. حل مشكلة البراكيستوكروين باستخدام معادلة أويلر-لاغرانج.

فهرس المحتويات:
لماذا حساب المتغيرات في الميكانيكا الكلاسيكية؟
صياغة المشكلة المتغيرة
معادلة أويلر-لاغرانج
مشكلة البراكيستوكروين
مستودع GitHub مع خوارزمية ولفرام



لماذا حساب المتغيرات في الميكانيكا الكلاسيكية؟

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

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

صياغة المشكلة المتغيرة

يركز حساب المتغيرات على إيجاد الدالة y(x) التي تزيد أو تقلل من قيمة التابع:

J(x,y(x))=\displaystyle \int_{x_1}^{x_2} f\left(x,y(x),\frac{dy(x)}{dx}\right)dx,

من أجل إيجاد قيمته القصوى أو الدنيا. في هذه المعادلة، يعتمد التابع J على الدالة y(x) ومشتقتها dy(x)/dx, بينما تظل حدود التكامل ثابتة. لتعظيم التكامل أو تصغيره، تُطبق تغييرات على الدالة y(x)، بهدف إيجاد الدالة التي تجعل قيمة التابع في حالة قصوى. على سبيل المثال، إذا تم تحقيق الحد الأدنى من التكامل، فإن أي دالة داخل محيطها، بغض النظر عن مدى قربها من y(x)، ستزيد من قيمة التابع.

لتحديد مفهوم الدالة المجاورة، يمكننا تخصيص تمثيل باراميتري y=(\alpha,x) لجميع الدوال الممكنة y، بحيث إذا كان \alpha=0، فإن y(0,x)=y(x) هي الدالة التي تزيد أو تقلل من التابع J. يمكن التعبير عن هذا بالطريقة التالية:

y(\alpha, x) = y(x) + \alpha \eta(x),

حيث \eta(x) هي دالة من النوع \mathcal{C}^1 وتلغي نفسها عند x_1 وx_2، بحيث تكون الدالة y(\alpha,x) التي تتضمن هذا التغيير مماثلة للدالة y(x) عند النقاط الابتدائية والنهاية لمسار التكامل.

عند استبدال الدالة y(\alpha,x) التي تتضمن التغيير \eta(x) بدلاً من y(x) في التكامل الذي يحدد التابع J، يتم الحصول على تابع جديد يعتمد على المعلمة \alpha:

J(x,y(\alpha, x)) = \displaystyle \int_{x_1}^{x_2} f\left(x,y(\alpha,x), \dfrac{d}{dx}y(\alpha,x)\right)dx

لكي تكون هناك حدود محلية، يجب تحقيق الشرط التالي:

\left.\dfrac{\partial J(x,y(\alpha,x))}{\partial \alpha}\right|_{\alpha=0} = 0

لأي دالة \eta(x)

.

معادلة أويلر-لاغرانج

عند تحليل المشتقة \partial J(x,y(\alpha,x))/\partial \alpha، نحصل على:

\begin{array}{rll} {}\dfrac{\partial J(x,y(\alpha,x))}{\partial \alpha} &=&\dfrac{\partial}{\partial \alpha} \displaystyle \int_{x_1}^{x_2} f\left(x,y(\alpha,x),\dfrac{dy(\alpha, x)}{dx}\right)dx \\ \\ &=&\displaystyle \int_{x_1}^{x_2} \left(\dfrac{\partial f}{\partial x}\dfrac{\partial x}{\partial \alpha} + \dfrac{\partial f}{\partial y(\alpha, x)}\dfrac{\partial y(\alpha, x)}{\partial \alpha} + \dfrac{\partial f }{ \partial \frac{dy(\alpha,x)}{dx}} \dfrac{\partial \frac{dy(\alpha,x)}{dx}}{\partial \alpha}\right)dx \\ \end{array}

من هذه النقطة، من المهم ملاحظة أن:

\begin{array}{rll} \dfrac{\partial x}{\partial \alpha} &=& 0 \\ \\ \dfrac{\partial y(\alpha,x)}{\partial \alpha} &=& \dfrac{\partial}{\partial \alpha} \left(y(x) + \alpha \eta(x) \right) = \eta(x) \\ \\ \dfrac{\partial}{\partial \alpha}\left( \dfrac{dy(\alpha, x)}{dx} \right)&=& \dfrac{\partial}{\partial \alpha} \left(\dfrac{dy(x)}{dx} + \alpha\dfrac{d\eta(x)}{dx} \right) = \dfrac{d\eta}{dx} \end{array}

وبالتالي، يمكن تبسيط التعبير كما يظهر أدناه:

\begin{array} {} \dfrac{\partial J(x,y(\alpha,x))}{\partial \alpha} &=& \displaystyle \int_{x_1}^{x_2} \left(\dfrac{\partial f}{\partial y(\alpha,x)}\eta(x) + \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \dfrac{d\eta(x)}{dx} \right)dx \\ \\ &=&\displaystyle \int_{x_1}^{x_2} \dfrac{\partial f}{\partial y(\alpha,x)}\eta(x) dx + \int_{x_1}^{x_2} \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \dfrac{d\eta(x)}{dx} dx \end{array}

ثم إذا لاحظنا التكامل الثاني، سنرى أنه يمكن تبسيطه باستخدام التكامل بالأجزاء:

\begin{array}{rll} \displaystyle \int_{x_1}^{x_2} \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \dfrac{d\eta}{dx} dx &=& \left. \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \eta(x)\right|_{x_1}^{x_2} - \displaystyle \int_{x_1}^{x_2}\eta(x) \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(\alpha, x)}{dx}} \right) dx\\ \\ &=& - \displaystyle \int_{x_1}^{x_2}\eta(x) \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(\alpha, x)}{dx}} \right)dx \end{array}

وبالتالي

\begin{array}{rll} {} \dfrac{\partial J(x,y(\alpha,x))}{\partial \alpha} &=& \displaystyle \int_{x_1}^{x_2} \left[ \eta(x) \dfrac{\partial f}{\partial y(\alpha, x)} - \eta(x) \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \right) \right]dx \\ \\ &=& \displaystyle \int_{x_1}^{x_2} \left[ \dfrac{\partial f}{\partial y(\alpha, x)} - \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(\alpha,x)}{dx}} \right) \right] \eta(x) dx \end{array}

وبما أن الشرط هو أن \left.\dfrac{\partial J (x,y(\alpha, x))}{\partial \alpha}\right|_{\alpha=0} = 0, وبما أن \eta(x) هي دالة عشوائية تخضع للشرط الوحيد المتمثل في إلغاء نفسها عند x_1 وx_2, لدينا:

\dfrac{\partial f}{\partial y(0, x)} - \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(0,x)}{dx}}\right) = \dfrac{\partial f}{\partial y(x)} - \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial \frac{dy(x)}{dx}}\right) = 0.

وأخيرًا، بإسقاط الترميز في هذا التعبير الأخير، نصل إلى ما يعرف باسم معادلة أويلر-لاغرانج:

\boxed{\dfrac{\partial f}{\partial y}= \dfrac{d}{dx}\left( \dfrac{\partial f}{\partial y^\prime} \right)},

وهذا يمثل بشكل أكثر بساطة الشرط اللازم لكي يصل التابع J إلى قيمة قصوى.

مشكلة البراكيستوكرون

صياغة المشكلة

مشكلة البراكيستوكرون هي مشكلة كلاسيكية في الفيزياء الميكانيكية تُحل باستخدام حساب المتغيرات. الوضع المطروح هو كالتالي: لنفترض أن لدينا جسمًا ماديًا يتحرك تحت تأثير مجال قوى ثابت ويتحرك من نقطة ابتدائية (x_1,y_1) إلى نقطة نهائية (x_2,y_2)، حيث تقع النقطة الابتدائية على ارتفاع أعلى من النقطة النهائية. السؤال الذي يُطرح هو: ما هي المسار الذي يجب أن يسلكه الجسم للوصول إلى النقطة النهائية في أقصر وقت ممكن؟

صياغة الحل

لحل مشكلة البراكيستوكرون، من المفيد النظر إلى الوضع بشكل بسيط. لذلك، يمكن تحديد نقطة البداية (x_1, y_1) في أصل الإحداثيات، بينما تقع نقطة النهاية (x_2,y_2) على يمين الأصل وأسفل المحور \hat{x}.

الحساب المتغيري - مشكلة البراكيستوكرون

في هذا الوضع، يمكن اعتبار وجود مجال قوة يعمل نحو الأسفل (في اتجاه -\hat{y}) تم توليده بواسطة الجاذبية، وافتراض أن الحركة تتم بدون احتكاك. في هذا السياق، يتم تقييد الجسم باتباع مسارات مختلفة تربط بين نقاط الانطلاق والوصول بهدف إيجاد المسار الذي يقلل زمن السفر.

فحص الطاقة

لحل هذه المشكلة، يمكننا الاستفادة من حفظ الطاقة في النظام الجاذبي. ستظل الطاقة الكلية للنظام ثابتة، مع الأخذ في الاعتبار كل من الطاقة الحركية E_{cin}=\frac{1}{2}mv^2 والطاقة الجاذبية المحتملة E_{pot,g}، حيث m هي كتلة الجسيم وv هي سرعته. بالنسبة للطاقة الجاذبية المحتملة، تم اعتبار الأصل كمرجع، بحيث E_{pot,g}(y=0)=0، بينما في أي ارتفاع آخر y يكون E_{pot,g}(y)=mgy.

بما أن الجسيم يبدأ من الأصل بسرعة صفر، فإن طاقته الكلية تساوي صفرًا. إذن، لدينا:

E_{cin} + E_{pot,g}=0

بما أن الجسيم يسقط أسفل النقطة المرجعية، فإن طاقته الجاذبية المحتملة ستكون سلبية وطاقته الحركية ستكون إيجابية. بهذه الطريقة، يمكننا فصل السرعة v من معادلة حفظ الطاقة والحصول على:

\begin{array}{rl} {} &\dfrac{1}{2}mv^2 + (-mgy) = 0 \\ \\ \vdash &\dfrac{1}{2}mv^2 = mgy \\ \\ \vdash &v^2 = 2gy \\ \\ \vdash &v = \sqrt{2gy} \end{array}

بهذه الطريقة، يمكننا حساب سرعة الجسيم في أي نقطة من مساره بناءً على الارتفاع y الذي يوجد عنده.

فحص زمن الرحلة

بمجرد الحصول على سرعة الحركة، يمكننا بناء عنصر الزمن للرحلة باستخدام عنصر الإزاحة ds=\sqrt{dx^2 + dy^2} بالطريقة التالية:

\begin{array}{rl} {} dt &= \dfrac{ds}{v} = \dfrac{\sqrt{dx^2 + dy^2}}{\sqrt{2gy}}\\ \\ &= \sqrt{\dfrac{dx^2 + dy^2}{2gy} } \end{array}

بحيث يمكن الحصول على زمن الإزاحة بين النقطتين (x_1,y_1) و(x_2,y_2) من خلال التكامل

\begin{array}{rl} {} t &= \displaystyle \int_{(x_1,y_1)}^{(x_2,y_2)} dt \\ \\ &= \displaystyle \int_{(x_1,y_1)}^{(x_2,y_2)} \sqrt{\dfrac{dx^2 + dy^2}{2gy}} \\ \\ &= \displaystyle \dfrac{1}{\sqrt{2g}}\int_{y_1}^{y_2} \sqrt{\dfrac{1+ \left(\dfrac{dx}{dy}\right)^2 }{y}}dy \\ \\ \end{array}

صياغة المشكلة المتغيرة

مع هذا التعبير الأخير، تمكنا من التعبير عن الزمن كدالة بالشكل

{}t = J(y,x(y)) = \displaystyle \int_{y_1}^{y_2} f\left(y,x(y),\dfrac{dx(y)}{dy} \right) dy

حيث

f\left(y,x(y), \dfrac{dx(y)}{dx}\right) = \sqrt{\dfrac{1+ \left(\dfrac{dx(y)}{dy} \right)^2}{y}}

في هذه المرحلة، يمكننا تجاوز العامل \sqrt{2g}, لأن تحسين J هو نفسه تمامًا مثل تحسين \sqrt{2g}J.

مع ما سبق، يمكننا الآن بناء معادلة أويلر-لاغرانج باتباع نفس الإجراء المستخدم سابقًا، لنصل في النهاية إلى:

\dfrac{\partial f}{\partial x} = \dfrac{d}{dy} \dfrac{\partial f}{\partial x^\prime}

ومع ذلك، هنا يمكننا أن نرى أن \dfrac{\partial f}{\partial x} = 0, لذلك سيكون لدينا

\dfrac{d}{dy}\dfrac{\partial f}{\partial x^\prime} = 0,

أو بمعنى آخر

\dfrac{\partial f}{\partial x^\prime} = \dfrac{1}{\sqrt{2a}},

حيث a هي ثابتة عشوائية مكتوبة بهذه الطريقة لأنها “ملائمة” للتطويرات اللاحقة.

حل المشكلة المتغيرة

عند استبدال الدالة f في هذا التعبير الأخير نحصل على:

\begin{array}{rl} {} &\dfrac{\partial }{\partial x^\prime} \sqrt{\dfrac{1+ x^{\prime 2}}{y}} = \dfrac{1}{\sqrt{2a}} \\ \\ \vdash & \dfrac{1}{2}\left( \dfrac{1 + x^{\prime 2} }{y} \right)^{-1/2} \left(\dfrac{2x^\prime}{y} \right) = \dfrac{1}{\sqrt{2a}} \\ \\ \vdash & \dfrac{1}{2}\sqrt{\dfrac{y}{1 + x^{\prime 2}}} \left(\dfrac{2x^\prime}{y} \right) = \dfrac{1}{\sqrt{2a}} \\ \\ \vdash & \sqrt{\dfrac{4x^{\prime 2} y}{4y^2 (1 + x^{\prime 2})} } = \sqrt{\dfrac{1}{2a}} \\ \\ \vdash & \dfrac{y x^{\prime 2} }{y^2 (1 + x^{\prime 2})} = \dfrac{1}{ 2a} \\ \\ \vdash & 2ayx^{\prime 2} = y^2 + y^2 x^{\prime 2} \\ \\ \vdash & x^{\prime 2} (2ay - y^2) = y^2 \\ \\ \vdash & \left(\dfrac{dx}{dy}\right)^2 = \dfrac{y^2}{2ay - y^2} \\ \\ \vdash & \dfrac{dx}{dy} = \pm \sqrt{\dfrac{y^2}{2ay - y^2}} \\ \\ \vdash & dx = \pm \dfrac{ydy}{\sqrt{2ay - y^2}} \\ \\ \vdash & x = \displaystyle \pm \int \dfrac{y}{\sqrt{2ay - y^2}}dy \end{array}

لحل هذا التكامل، خيار يجب مراعاته هو القيام بالاستبدال التالي

\begin{array} {} y &=& a[1-\cos(\theta)] \\ dy &=& a\sin(\theta) d\theta \end{array}

وبذلك نحصل على:

\begin{array}{rl} {} x= & \pm \displaystyle \int \dfrac{y}{\sqrt{2ay - y^2}}dy = \displaystyle \int \dfrac{a[1-\cos(\theta)]a\sin(\theta)}{\sqrt{2a^2[1-\cos(\theta)] - a^2[1-\cos(\theta)]^2 }}d\theta \\ \\ & {} = \pm \displaystyle \int \dfrac{a^2[1-\cos(\theta)]\sin(\theta)}{\sqrt{a^2[1-\cos(\theta)]\left\{ 2 - [1-\cos(\theta)] \right\} }}d\theta \\ \\ & {} = \pm \displaystyle \int \dfrac{a[1-\cos(\theta)]\sin(\theta)}{\sqrt{[1-\cos(\theta)] [1 + \cos(\theta)] }}d\theta \\ \\ & {} = \pm \displaystyle \int \dfrac{a[1-\cos(\theta)]\sin(\theta)}{\sqrt{ 1-\cos^2(\theta)}}d\theta \\ \\ & {} = \pm \displaystyle \int \dfrac{a[1-\cos(\theta)]\sin(\theta)}{\sin(\theta)}d\theta \\ \\ & {} = \pm \displaystyle \int a[1-\cos(\theta)] d\theta \\ \\ & {} = \pm a(\theta - \sin(\theta)) + C \end{array}

يمكننا ملاحظة أن منحنى البراكيستوكرون يمكن التعبير عنه كمنحنى بارامتري في الإحداثيات القطبية، الذي يتوافق مع حلقة دائرية تبدأ من الأصل.

\begin{array} {} & x(\theta) &=& \pm a(\theta - \sin(\theta)) \\ & y(\theta) &=& a(1-\cos(\theta)) \end{array}

تم إلغاء ثابت التكامل C لتلبية الشرط الابتدائي بأن المسار يبدأ من الأصل. بالإضافة إلى ذلك، يمكننا ملاحظة أن هناك مجموعة من المعادلات التي تقدم حلولًا ممكنة للمشكلة، حيث يمكن ضبط الثابت a لجعل المنحنى يمر بالنقطة (x_2,y_2) في نهاية المسار. هذه المعادلات هي:

الخيار 1:\boxed{\begin{array} {} & x(\theta) &=& a(\theta - \sin(\theta)) \\ & y(\theta) &=& a(1-\cos(\theta)) \end{array}}

الخيار 2:\boxed{\begin{array} {} & x(\theta) &=& - a(\theta - \sin(\theta)) \\ & y(\theta) &=& a(1-\cos(\theta)) \end{array}}

الحل الصالح لهذه المشكلة يأتي من الخيار الثاني، وبضبط الثابت a كقيمة سالبة، نحصل على منحنى يلبي الشروط اللازمة ليكون حلاً.

مثال على حل ممكن، قوس من حلقة دائرية

التعديل النهائي للحل

بعد التعديلات الأخيرة، يحتوي منحنى البراكيستوكرون على الشكل البارامتري:

\begin{array} {} x(\theta) &= b(\theta - \sin(\theta)) \\ y(\theta) &= -b(1-\cos(\theta)) \end{array}

تم استبدال a=-b, حيث 0\lt b. يحتوي المنحنى على فترة 2b\pi ويجب أن يحقق الشرط x_2 \in ]0,2b\pi[ وy_2 \in ]-2b,0[. هذا الأمر مهم للغاية، لأنه يتطلب أن يتم تمثيل منحنى البراكيستوكرون كقوس واحد فقط من حلقة دائرية، حيث يصبح الحل غير صالح إذا عاد الجسم إلى السكون عند العودة إلى نقطة ارتفاع صفر.

لضبط هذه المعادلات مع المشكلة، نحتاج إلى إيجاد قيم \theta وb التي تحقق النظام:

\begin{array} {} x_2 &= b(\theta - \sin(\theta))\\ y_2 &= - b(1-\cos(\theta)) \end{array}

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


الخطوة 1: إنشاء النظام

إنشاء المعادلات التي تشكل النظام المراد حله

eq1 = x2 == b*(theta - Sin[theta])
eq2 = y2 == -b*(1 - Cos[theta])


الخطوة 2: تحديد نقطة الوصول

تحديد النقطة التي سيصل إليها الجسم في نهاية مساره. في هذه الحالة، سنحددها عند (x_2,y_2)=(1,-2). يمكنك تعديل هذه القيم لاختبار تكوينات أخرى مماثلة.

x2val = 1; y2val = -2;

الخطوة 3: حساب القيم المطلوبة عددياً

استخدام دالة “FindRoot” لحساب الحل العددي للمشكلة

sol = FindRoot[{eq1, eq2} /. {x2 -> x2val, y2 -> y2val}, {{b,1}, {theta, 1}}]

هنا تم استخدام القيم b=1 و\theta=1 كنقطة بداية للتقريب العددي للحل. بهذا، نحصل على الحل b\approx 2.4056 و\theta \approx 1.40138


الخطوة 4: تأكيد النتائج

نتذكر أنه لكي تكون هذه الإجابات ذات معنى فيزيائي، من الضروري أن x_2 \in ]0,2b\pi[ وy_2 \in ]-2b, 0[. يمكننا التحقق من حدوث ذلك بسرعة من خلال الإجراء التالي

أولاً نستخرج قيم b و\theta التي تم الحصول عليها كحل

bval = sol[[1, 2]]; thetaval = sol[[2, 2]];

ثم نطلب إجراء التأكيد

If[0 < x2val < 2*Pi*bval && -2*bval < y2val < 0 "Valores válidos", "Valores inválidos"]

إذا تم كل شيء بشكل صحيح، يجب أن نحصل على "قيم صالحة" في النتيجة. هذا الجزء من الكود سيساعدك في التحقق مما إذا كان الوضع الفيزيائي قد تم نمذجته بشكل صحيح.

مع هذه الإجراءات، لدينا في النهاية منحنى الحل مضبوط تمامًا، والذي يربط بين النقطتين (x_1,y_1)=(0,0) و(x_2,y_2)=(1,-2). المنحنى الناتج هو:

\begin{array} {} x(\theta) &\approx 2.4056(\theta - \sin(\theta)) \\ y(\theta) &\approx -2.4056(1-\cos(\theta)) \end{array}\;\;;\theta\in [0, 1.40138]

والذي يبدو هكذا بيانيًا:

مستودع Github مع خوارزمية Wolfram

الكود الكامل لحل مشكلة البراكيستوكرون، بما في ذلك الخوارزمية المطورة في Wolfram Mathematica، متاح للتحميل والمراجعة في مستودعي على GitHub. يتضمن هذا المستودع ملف `.nb` يحتوي على الكود في شكل دفتر تفاعلي، بالإضافة إلى نسخة نصية بسيطة `.m` لأولئك الذين يفضلون رؤية الكود مباشرة.

يمكنك تنزيل المستودع من GitHub هنا.

بالإضافة إلى الكود، يحتوي المستودع على ملف "README" مع تعليمات مفصلة حول كيفية استخدام وفهم الخوارزمية، بالإضافة إلى شرح خطوة بخطوة لحل مشكلة البراكيستوكرون. آمل أن تجده مفيداً!

Views: 3

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *