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

24.05.2019

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

سيكون الطلاب وطلاب الدراسات العليا والعلماء الشباب الذين يستخدمون قاعدة المعرفة في دراساتهم وعملهم ممتنين جدًا لك.

تم النشر على http://www.allbest.ru/

مؤسسة تعليمية حكومية اتحادية مستقلةالتعليم المهني العالي

"ولاية بيلغورود الوطنية

الجامعة البحثية"

معهد التقنيات الهندسية والعلوم الطبيعية

قسم نظم المعلومات الرياضية والبرمجيات

تنفيذ برمجي لحل نظام المعادلات التفاضلية العادية باستخدام طريقة رونج-كوتا من الدرجة الرابعة

عمل الدورة

في تخصص "طرق الحسابات"

طالب بدوام كامل

مجالات التدريب 010500.62

"الدعم الرياضي والإدارة

نظم المعلومات"

السنة الثالثة مجموعة 07001302

دانكوف نيكولاي ألكسيفيتش

بيلغورود 2016

مقدمة

1. الجزء النظري

1.1 المعادلة التفاضلية العادية من الدرجة الأولى. مشكلة كوشي

1.2 جوهر طريقة Runge-Kutta

1.3 اختيار بيئة التطوير

2. الجزء العملي

2.1 تنفيذ برمجي لطريقة Runge-Kutta من الدرجة الرابعة

3. الاختبار

3.1 مثال

خاتمة

طلب

مقدمة

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

= و(س، ص)،

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

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

الغرض من الدورة: دراسة طريقة رونج-كوتا من الدرجة الرابعة لحل المعادلات التفاضلية العادية.

بيان المشكلة: من الضروري إنشاء برنامج يسمح بحل المعادلات التفاضلية العادية باستخدام طريقة Runge-Kutta من الدرجة الرابعة.

يتكون عمل الدورة من 3 أقسام، ويحتوي على 6 رسومات و3 قوائم وملحق واحد و18 صفحة.

1. الجزء النظري

1.1 المعادلة التفاضلية العادية من الدرجة الأولى. مشكلة كوشي

من أجل التبسيط، فإننا نعتبر مساحة ثنائية الأبعاد للمتغيرين x وy وبعض المجموعة المفتوحة G التابعة لها. دع الدالة القابلة للتفاضل المستمر f(x, y) يتم تعريفها في هذه المجموعة المفتوحة وإعطاء المعادلة

= و(س، ص) (1)

وفقًا لنظرية الوجود والتفرد، لأي نقطة (x 0 ,y 0) ؟G هناك حل y = y(x)، محدد على فترة معينة (x 0 -d, x 0 +d)، مما يحقق المعادلة الشرط y(x 0) = y 0، بحيث تكون النقاط (x,y(x)) ?G و y` x ? f(x, y(x))، وسيكون هذا الحل فريدًا. مشكلة المعادلة (1) مع الشرط الأولي y(x 0) = y 0 (مشكلة كوشي) هي إيجاد الدالة y(x) التي تحول كل من المعادلة (1) والشرط الأولي إلى هوية. لنفترض أن القيم التي يأخذها المتغير المستقل x تنتمي إلى المجال (X 0, X N) ونكتب مسألة كوشي:

(2)

دعونا نقسم القطعة [X 0, X N] إلى أجزاء N بحيث يكون x n +1 - x n = h n،

ن = 0، …، ن-1. وفيما يلي، دون فقدان العمومية، سننظر في الحالة التي يكون فيها القسم موحدا، أي. كل ح ن = ح = = ثابت،

ن = 0 ,… ,ن-1.

1.2 جوهر طريقة Runge-Kutta

تستخدم طرق Runge-Kutta على نطاق واسع في حل المعادلات التفاضلية. لقد وجدت طريقة الترتيب الرابع أعظم تطبيق.

(3)

(4)

(5)

- معلمة تحدد قيمة الدالة بالقرب من نقطة في مجال التعريف.

طريقة الترتيب الرابع الشائعة:

(6)

(7)

(8)

(9)

(10)

خطأ الصيغة (10) يتناسب مع h 5 .

هذه الطريقة أكثر دقة من طرق أويلر، ولكنها تتطلب أيضًا المزيد من الحسابات: يتم تحديد موضع النقطة (x i +1, y i +1) عن طريق حساب قيمة الدالة f (x,y) 4 مرات. مع ظهور أجهزة الكمبيوتر، لم يعد هذا العيب كبيرا ويتم استخدام طريقة Runge-Kutta من الدرجة الرابعة على نطاق واسع للغاية في الممارسة العملية.

يتم تحديد عدد المقاطع الدقيقة التي تم تقسيم المقطع الأصلي إليها من خلال دقة الحساب المطلوبة. ولتحقيق الدقة المطلوبة، تم حل المشكلة عدة مرات مع مضاعفة عدد المقاطع الدقيقة n على التوالي. تعتبر الدقة متحققة إذا كانت قيم y i و y 2i (عند النقاط المتطابقة x) تختلف بما لا يزيد عن مقدار معين مع الرقم الأولي والمضاعف n:

، ط =0، ..،ن، (11)

حيث p هو ترتيب دقة الطريقة.

تتميز طريقة Rugne-Kutta بالخصائص التالية:

1. الطريقة هي خطوة واحدة (للبحث تحتاج إلى معلومات حول النقطة السابقة)

2. لا يتطلب حساب مشتقات f(x,y)، ولكنه يتطلب حساب الدالة نفسها

3. لديه خطأ صغير

1.3 اختيار بيئة التطوير

C++ Builder هو منتج برمجي، وأداة للتطوير السريع للتطبيقات (RAD)، وبيئة برمجة متكاملة (IDE)، وهو نظام يستخدمه المبرمجون لتطوير البرامج بلغة البرمجة C++. يتيح لك هذا المنتج إنشاء كل من تطبيقات وحدة التحكم والتطبيقات بواجهة رسومية.

Microsoft Visual Studio عبارة عن مجموعة من منتجات Microsoft تتضمن بيئة تطوير برامج متكاملة وعددًا من الأدوات الأخرى. باستخدام هذا المنتج، يمكنك تطوير تطبيقات وحدة التحكم، وتطبيقات واجهة المستخدم الرسومية، بالإضافة إلى مواقع الويب، وتطبيقات الويب، وخدمات الويب في كل من التعليمات البرمجية الأصلية والمدارة لجميع الأنظمة الأساسية التي يدعمها Windows، وWindows Mobile، وWindows CE، وNET Framework، وXbox، وWindows Phone .NET Compact Framework وSilverlight.

لإكمال المهمة، تم اختيار منتج برنامج C++ Builder. نظرًا لأنه أسهل في الاستخدام ويلبي جميع المتطلبات اللازمة لإنشاء تطبيق وحدة التحكم.

2. الجزء العملي

2.1 تنفيذ برمجي لطريقة Rknge-Kutta من الدرجة الرابعة

المعادلة التفاضلية برمجة كوشي

يبدأ تطوير البرنامج بوصف الوظائف. للقيام بذلك نستخدم بيان التبديل.

القائمة 1 "وصف الوظائف"

مزدوج ق = 0؛

التبديل (نصيحة)(

حالة 1: (

استراحة؛ )

الحالة 2: (

استراحة؛ )

الحالة 3: (

استراحة؛ )

الحالة 4: (

ث = أ*(ب*س+ج*ص)/(ه*و)*د;

استراحة؛ )

تقصير:

( ق =0؛ )

}

عائدات؛

}

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

عندما يتم الحصول على جميع البيانات اللازمة، ننتقل مباشرة إلى حل ODE باستخدام طريقة Runge-Kutta من الدرجة الرابعة.

القائمة 2 "تطبيق برمجي لحل ODE باستخدام طريقة Runge-Kutta

الترتيب الرابع"

من أجل (i=0;i<=n;i++) {

x=x[i]+h;

cout<<"y"<

}

3. الاختبار

وبعد إطلاق البرنامج سنرى المعادلات المعروضة للاختيار.

أرز. 1 "اختيار المعادلة"

إذا قمت بإدخال رقم لا يتوافق مع أرقام المعادلة المقدمة، فسوف يتفاعل البرنامج مع هذا.

أرز. 2 "إدخال معلمة غير صحيحة"

بعد تحديد المعادلة المطلوبة، أدخل المعاملات.

أرز. 3 "إدخال المعاملات"

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

أرز. 4 "إدخال المعلمات المطلوبة"

بعد الانتهاء من الحساب، يعرض البرنامج الحل.

أرز. 5 "مخرجات النتيجة"

3.1 مثال

حل مشكلة كوشي:

على الجزء. أوجد الحل على شبكة موحدة بخطوة 0.1

حل. بما أن f(x,y) = x + y، نحصل على

= + ,

= ++ ,

= ++ ,

= +ح+،

= +() ,

= +ح،

للقيم ط = 1، 2، 3، 4.

بافتراض = 0، = 1، نجد على التوالي:

لأني = 1

= 0,1(0 +1) = 0,1 ,

= 0,1(0 + 0,05 +1 + 0,05) = 0,11 ,

= 0,1(0 + 0,05 +1 + 0,055) = 0,1105 ,

= 0,1(0 + 0,1 +1 + 0,1105) = 0,121050 ,

= 1 + *(0,1 + 2*0,11+2*0,1105 + 0,12105) = 1,110342 ,

= 0+0,1=0.1 ,

في أنا = 2

= 0,1*(0 + 1,110342) = 0,121034 ,

= 0,1*(0,1 + 0,05 +1,110342 + 0,0605171) = 0,1320859 ,

= 0,1*(0,1 + 0,05+1,110342 + 0,06604295) = 0,1326385 ,

= 0,1*(0,1 + 0,1 + 1,110342 + 0,11326385)= 0,1442980 ,

= 1,110342 + *(0,121034 + 2*0,1320859+2*0,1326385 + 0,1442980) = 1,242805 ,

= 0,1+0,1 ,

التالي نحصل على:

مع ط = 3 = 0.3، =1.399717،

في ط = 4 = 0.4، = 1.583648.

خطأ الحل الذي تم الحصول عليه لا يتجاوز القيمة

|ص 4 - ف(× 4) | ؟ 0.000001.

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

الجدول 1: الحلول العددية لمسألة كوشي باستخدام طرق مختلفة

القيم التي وجدتها الطريقة

الحل الدقيق

ج(س ط)=2- س ط -1

أويلر - كوشي

رونج - كوتا

الآن دعونا نقارن النتائج التي تم الحصول عليها بحسابات برنامجنا.

أرز. 6 "نتيجة البرنامج"

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

خاتمة

خلال الدورة التدريبية، تم تنفيذ المهمة المعينة، وهي تجميع برنامج يسمح بحل المعادلات التفاضلية العادية باستخدام طريقة Runge-Kutta من الدرجة الرابعة.

أثناء اختبار البرنامج تم الحصول على نتائج تبين أن نتائج الحل بطريقة رونج-كوتا من الدرجة الرابعة تتطابق وبدقة كافية مع الحل التحليلي.

قائمة المصادر المستخدمة

1. Berezin I.S., Zhidkov N.P.، الأساليب الحسابية: T.2 - M.: GIFML، 1960. - 620 ص.

2. Bakhvalov N. S.، Zhidkov N. P.، Kobelkov G. M. الطرق العددية. - م: بينوم، 2001 - ص. 363-375.

3. Kopchenova N.V.، Maron I.A.، الرياضيات الحسابية في الأمثلة والمسائل - M.: Nauka، 1972. - 368 ص.

4. https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio

5. https://ru.wikipedia.org/wiki/C%2B%2B_Builder

المرفق 1

#يشمل

#يشمل

#يشمل

#يشمل

استخدام اسم للمحطة؛

شار * روس (نص ثابت شار *) (

char *buffRus=new char;

CharToOem(text, buffRus);

عودة بوفروس؛

}

وظيفة مزدوجة (تلميح int، مزدوج x، مزدوج y، مزدوج a، مزدوج b، مزدوج c، مزدوج d، مزدوج e، مزدوج f) (

مزدوج ق = 0؛

التبديل (نصيحة) (

حالة 1: (

s = a+b*(y*c*sin(d*x))-(e*y*f*y);

استراحة؛ )

الحالة 2: (

s =a*cos(b*x+c*y)+d*(e*x-f*y);

استراحة؛ )

الحالة 3: (

s=((a*cos(b*x)/(x+c))-(d*y*e*y)*f);

استراحة؛ )

الحالة 4: (

ث = أ*(ب*س+ج*ص)/(ه*و)*د;

استراحة؛ )

تقصير:

( ق =0؛ )

}

عائدات؛

}

انت مين() (

نصيحة int، i = 0، n = 0؛

مزدوج h=0.0، ot1=1.0، ot2=0.0، k1=0.0، k2=0.0، k3=0.0، k4=0.0، a=1.0، b=1.0، c=1.0، d=1.0، e=1.0، f =1.0, الدقة=0.0;

علامة منطقية = 0؛

cout<

cout<<" 1. y"=a+b*(y*c*sin(d*x))-(e*y*f*y)\n 2. y"=a*cos(b*x+c*y)+d*(e*x-f*y)\n 3. y"=((a*cos(b*x)/(x+c))-(d*y*e*y)*f)\n 4. y"=a*(b*x+c*y)/(e*f)*d\n";

بينما (!العلم) (

cout<

سين >> نصيحة ؛

إذا((نصيحة == 1) || (نصيحة == 2) || (نصيحة == 3) || (نصيحة == 4))(

العلم = 1؛ )

آخر(

cout<

}

}

cout<

cout<<" a= ";cin>>أ؛

cout<<" b= ";cin>> ب؛

cout<<" c= ";cin>>ج;

cout<<" d= ";cin>> د؛

cout<<" e= ";cin>>ه؛

cout<<" f= ";cin>>و؛

cout<

بينما (ot1>ot2) (

cout<

العودة 0؛

}

الملحق 2

تم النشر على موقع Allbest.ru

وثائق مماثلة

    تحليل مجال موضوع البرمجة الشيئية. اللغات دلفي، أوبجيكت باسكال - بيئة برمجة موجهة للكائنات. الحلول الخوارزمية الأساسية. حل معادلة تفاضلية باستخدام طريقة Runge-Kutta في برنامج Excel.

    تمت إضافة الدورة التدريبية في 04/02/2011

    تجميع برنامج باللغة الخوارزمية Turbo Pascal. تطوير مخطط كتلة لخوارزمية لحلها. تجميع برنامج باسكال الأولي وتنفيذ العمليات الحسابية باستخدام البرنامج المجمع. تطبيق أساليب Runge-Kutta و Runge-Kutta-Merson.

    تمت إضافة الدورة التدريبية في 17/09/2009

    جوهر طريقة Runge-Kutta وخصائصها. حل المعادلات التفاضلية من الدرجة الأولى. معين/Odesolve الكتلة الحسابية. وظائف مدمجة rkfixed وRkadapt وBulstoer. حلول المعادلات الجبرية الخطية في MathCad وMicrosoft Excel.

    تمت إضافة الدورة التدريبية في 06/02/2014

    مراجعة طرق الحل في برنامج Excel. الصيغ العودية لطريقة أويلر. طريقة رونج-كوتا من الدرجة الرابعة لحل المعادلات من الدرجة الأولى. طريقة أويلر مع الخطوة ح/2. حل المعادلات التفاضلية باستخدام Mathcad. طريقة أويلر المعدلة.

    تمت إضافة الدورة التدريبية في 18/01/2011

    الوصف الرياضي لمشكلة حل معادلة تفاضلية عادية باستخدام طريقة Runge-Kutta العددية الصريحة، وتطوير مخطط خوارزمي وكتابة برنامج في بيئة البرمجة Microsoft Visual Studio 2010.

    تمت إضافة الدورة التدريبية في 22/01/2014

    تنفيذ حل المعادلات التفاضلية العادية من الرتبة الأولى والثانية باستخدام طريقة رونج-كوتا. بناء نظام على الكمبيوتر لعرض النتائج في شكل جداول وفي شكل رسم بياني. البنية ومتطلبات البرمجيات المطورة.

    تمت إضافة الدورة التدريبية في 11/05/2011

    حل المعادلات التفاضلية من الدرجة الأولى. متغيرات طرق Runge-Kutta بأوامر مختلفة. الطرق الأساسية للحل العددي لمسألة كوشي. زيادة دقة الحسابات وطريقة التحسين التكراري. تسلسل رقمي منفصل.

    تمت إضافة العمل المخبري في 14/05/2012

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

    تمت إضافة الدورة التدريبية في 14/01/2014

    تحليل مزايا وعيوب الطرق العددية المختلفة لحل المعادلات التفاضلية ذات الرتبة الأعلى. مبررات اختيار طريقة Runge-Kutta من الدرجة الرابعة. تطوير برنامج يمثل السلوك الفيزيائي والرياضي للبندول.

    تمت إضافة الدورة التدريبية في 07/11/2012

    حل المعادلات التفاضلية باستخدام الخوارزميات الكلاسيكية للطرق العددية لأويلر ورونج كوتا من الدرجة الرابعة. الأوامر المستخدمة في حل المعادلات التفاضلية العادية في نظام الحوسبة. نتيجة البرنامج.

وعلوم الكمبيوتر

معهد الأورال التقني للاتصالات والمعلوماتية

قسم الفيزياء والرياضيات التطبيقية وعلوم الحاسوب.

عمل الدورة

في علوم الكمبيوتر:

تصور الطرق العددية.

حل المعادلات التفاضلية العادية.

أكمله: أرابوف

غرام. مي-71

تم الفحص بواسطة: Minina E. E.

ايكاترينبرج

2008

مقدمة ……………………………………………………………………….3

1. بيان المشكلة ………………………………………….4

2. وصف طرق الحل …………………………………………..5

2. 1. جوهر المهمة ……………………………………………….5

2. 2. المعنى الهندسي للمشكلة………………………………….5

2. 3. الطرق العددية لحل مسألة كوشي ...........................6

2. 4. طريقة أويلر ………………………………………………….6

2. 5. طريقة رونج-كوتا من الدرجة الرابعة.................................8

2. 6. حل المشكلة باستخدام طرق أويلر و

رونج-كوتا الترتيب الرابع ………………………………….9

2. 6. 1. طريقة أويلر ……………………………………… 9

2. 6. 2. طريقة رونج-كوتا من الدرجة الرابعة .......................... 10

3. خوارزمية حل المشكلة ...........................11

3. 1. خوارزميات الإجراءات الفرعية ........................................... 11

3. 1. 1. الروتين الفرعي لطريقة أويلر..................................................11

3. 1. 2. الروتين الفرعي لطريقة Runge-Kutta من الدرجة الرابعة ............12

3. 1. 3. روتين الحل العام ............ …………………1 3

3. 2. خوارزمية الوظيفة ………………………………………… 1 3

3. 3. خوارزمية البرنامج ........................................ 14

4. نموذج البرنامج................................................................................. 17

5. قائمة البرامج................................................................................................. 18

6. حل المشكلة في MathCad …………………………………………..20

الخلاصة ………………………………………………… 22


مقدمة

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

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

لتحقيق الهدف، حددت لنفسي المهام التالية:

  1. أكتب برنامج لحل هذه المعادلة التفاضلية باستخدام طريقتين عدديتين في البرنامجالبصرية الأساسية.
  2. التحقق من الحل باستخدام التطبيق MathCad.
  3. قارن النتائج التي تم الحصول عليها بطرق مختلفة مع الحل العام.


1. بيان المشكلة

حل طرق أويلر وطرق أويلر المعدلة لحل مشكلة كوشي لمعادلة تفاضلية من الدرجة الأولى على الفترة [ X0؛ X ك ] مع الخطوة ح والشرط الأولي:ص (س 0 ) = ص 0 .

وينبغي الحصول على الإجابة في شكل جدول النتائج:

نعم (1)

نعم (2)

ص 0 (1)

ص 0 (2)

ص(× 0)

ص 1 (1)

ص 1 (2)

ص(× 1)

واي ك (1)

واي ك (2)

ص (Xك)

حيث ص (1) ، ص (2) الحلول التي تم الحصول عليها بطرق عددية مختلفة،واي تي الحل الدقيق للمعادلة التفاضلية.

من الممكن عرض نتائج الحل ليس على شكل جدول، بل على شكل قوائم.

تصور بيانات الجدول في نموذج في شكل رسوم بيانية.

قبل حساب العمود الأخير من جدول النتائج، من الضروري طرح قيمة المعامل من الشروط الأوليةج ، تستخدم في الحل العام.

المعادلة التفاضلية

قرار مشترك

ص = - س·ص/(س+1)

1 ,2

0, 1

ص=ج (س+1) إكسب(-س)


2. وصف طرق الحل

2. 1. جوهر المشكلة

لحل معادلة تفاضلية عادية لا بد من معرفة قيم المتغير التابع و (أو) مشتقاته لقيم معينة للمتغير المستقل. إذا تم تحديد هذه الشروط الإضافية لقيمة واحدة من المتغير المستقل، فإن مثل هذه المشكلة تسمى مشكلة الشروط الأولية، أو مشكلة كوشي. في كثير من الأحيان في مشكلة كوشي، يلعب الزمن دور متغير مستقل.

ويمكن صياغة مسألة كوشي على النحو التالي:

دع المعادلة التفاضلية والحالة الأولية تعطىص (س 0 ) = ص 0 . نحن بحاجة إلى العثور على الدالة y(س ) ، محققًا كلاً من المعادلة المحددة والشرط الأولي.

يتم تقليل الحل العددي لمشكلة كوشي إلى جدولة الوظيفة المطلوبة.

يسمى الرسم البياني لحل المعادلة التفاضلية بالمنحنى التكاملي.

2. 2. المعنى الهندسي للمشكلة

ص = و (س، ص ) - ظل زاوية ميل المماس للرسم البياني للحل عند النقطة (x، y) إلى المحور 0X، - المعامل الزاوي (الشكل 1).

الشكل 1. المعنى الهندسي لمشكلة كوشي.

وجود الحل:

إذا كان الجانب الأيمنو(س، ص ) مستمر في بعض المناطقر ، والتي تحددها عدم المساواة

| س - س 0 |< а; | y - y 0 | < b ,

ثم هناك حل واحد على الأقل y = y(x)، محدد في الحي |x x 0 | < h , где h - رقم موجب، عدد إيجابي.

هذا الحل فريد من نوعه إذار تم استيفاء شرط Lipschitz

| و (س، ص)- و (س، ص)| ≥ ن | ص - ص |(س، ص)،

حيث N هو ثابت ما (ثابت Lipschitz)، ويعتمد، في الحالة العامة، على a وب. إذا و(س ، ذ) لديه مشتق محدود

و ذ (س، ذ) في ر ثم يمكننا وضع N = max |و ذ (س، ذ)| مع (x، y) التي تنتمي إلى R.

2. 3. الطرق العددية لحل مسألة كوشي

عند استخدام الطرق العددية، المقطع [x 0، اكس ] - مناطق التغيير المستمر للوسيطة x بواسطة مجموعة. تتكون من عدد محدود من النقاط x 0 < х 1 < ... < x n = Х - сеткой.

في هذه الحالة × ط تسمى العقد الشبكة.

تستخدم العديد من الطرق شبكات موحدة ذات مسافات متباعدة:

مشكلة كوشي، تم تعريفها مسبقًا على الفترة المستمرة [x 0، اكس ]، يتم استبداله بنظيره المنفصل - نظام المعادلات، الذي يمكنك من خلال حله العثور على القيم على التواليذ 1 , ص 2 ,…, ذ ن - القيم التقريبية للوظيفة في عقد الشبكة.

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

طرق من خطوة واحدة للعثور على النقطة التالية
منحنى ص =و(س ) مطلوب معلومات حول خطوة سابقة واحدة فقط.
طريقة أويلر وطرق رونج-كوتا هي خطوة واحدة.

طرق التنبؤ والتصحيح (متعددة الخطوات)، حيث يتم العثور على النقطة التالية من المنحنى y =و(س ) مطلوب معلومات عن أكثر من نقطة من النقاط السابقة. للحصول على قيمة عددية دقيقة بما فيه الكفاية، غالبا ما يتم استخدام التكرار. وتشمل هذه الأساليب أساليب ميلن وآدامز-باشفورث وهامينغ.

الطرق الصريحة التي لا تعتمد عليها الدالة Фص ن +1 .

الطرق الضمنية التي تعتمد عليها الدالة Фص ن +1 .

2.4 طريقة أويلر.

تسمى هذه الطريقة أحيانًا طريقة Runge-Kutta للدقة من الدرجة الأولى.

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

دعونا نعطي معادلة تفاضلية من الدرجة الأولى:

ص = و(س، ص)

مع الحالة الأولية

ص (س 0 ) = ص 0

دعونا نختار الخطوة ح وإدخال التدوين:

x i = x 0 + ih و y i = y (x i )، حيث i = 0، 1، 2، ...،

س ط - العقد الشبكة،

ذ ط - قيمة الدالة المتكاملة في العقد.

وتظهر الرسوم التوضيحية للحل في الشكل 2.

لنرسم خطًا مستقيمًا AB عبر النقطة (س ط، ذ ط ) في الزاوية α. حيثتيراغرام α = و (س ط، ص ط )

وفقًا للمعنى الهندسي للمسألة، يكون الخط المستقيم AB مماسًا للدالة التكاملية. دعونا نستبدل نقطة الدالة التكاملية بنقطة تقع على المماس AB.

ثم y i +1 = y i + Δy

دعونا نساوي الجانبين الأيمنتيراغرام α = و (س ط، ص ط) و. نحن نحصل

ومن ثم Δ у = h ∙ f (x i، y i).

دعونا نستبدل الصيغة في هذا التعبيرص ط +1 = ص ط + Δy ، ثم قم بتحويله. ونتيجة لذلك، نحصل على صيغة لحساب النقطة التالية من وظيفة التكامل:

الشكل 2. طريقة أويلر.

توضح الصيغة أنه لحساب كل نقطة تالية من الدالة التكاملية، من الضروري معرفة قيمة نقطة واحدة سابقة فقط. وبالتالي، بمعرفة الشروط الأولية، من الممكن بناء منحنى متكامل على فترة زمنية معينة.

يظهر الشكل 3 مخططًا تدفقيًا لإجراءات حل المعادلة التفاضلية باستخدام طريقة أويلر.

و(خ ، ذ) - يجب أن تكون الوظيفة المحددة

سيتم وصفها بشكل منفصل.

معلمات الإدخال:

اكس0، اكس كيه البداية والنهاية

قيم متغيرة مستقلة؛

ص 0 القيمة ص 0 من الحالة الأولية

ص (س 0 ) = ص 0 ;

معلمات الإخراج:

Y - مجموعة قيم الحل المطلوب

في العقد الشبكة.

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

تعد طريقة أويلر واحدة من أبسط الطرق لحل المعادلات التفاضلية العادية عدديًا. لكن عيبها الكبير هو الخطأ الكبير في الحساب. في الشكل 2، خطأ الحساب لانا اذهب يتم الإشارة إلى الخطوة بواسطة ε. ومع كل خطوة يزداد الخطأ الحسابي.

2.5 طريقة Runge-Kutta 4 أوامر

دع معادلة تفاضلية من الدرجة الأولى تعطى مع الشرط الأولي y (x 0 )= y 0. اختر الخطوة h وإدخال التدوين:

x i = x 0 + ih و y i = y (x i )، حيث i = 0, 1, 2, ... .

على غرار الطريقة الموصوفة أعلاه، يتم إجراء الحل

المعادلة التفاضلية. الفرق هو أن الخطوة مقسمة إلى 4 أجزاء.

وفقا لطريقة Runge-Kutta من الدرجة الرابعة، القيم المتعاقبة y i للوظيفة المطلوبة y يتم تحديدها بواسطة الصيغة:

y i+1 = y i +∆y i حيث i = 0, 1, 2 ...

∆y=(k1+2*k2+2*k3+k4)/6

أ الأرقام ك 1، ك 2، ك 3، ك يتم حساب 4 في كل خطوة باستخدام الصيغ:

ك 1 = ح * و (س ط , ص ط )

k2 = و (x i +h/2, y i +k1 /2)*h

k3 = F(x i +h/2, y i +k2 /2)*h

k4 = F(x i +h, y i +k3) * h

هذه طريقة واضحة من أربع خطوات مع 4 أوامر من الدقة.

يظهر الشكل 6 مخططًا تدفقيًا لإجراءات حل المعادلة التفاضلية باستخدام طريقة Runge-Kutta.

و(خ ، ذ) - وظيفة معينة - يجب

سيتم وصفها بشكل منفصل.

معلمات الإدخال:
×0، × ك - الابتدائي والنهائي

القيم المستقلة

عامل؛

ص 0 القيمة ص 0 من الحالة الأولية

ص (س 0 )= ذ 0 ;

ن - عدد أجزاء القسم؛

معلمات الإخراج:

ي - مجموعة قيم الحل المطلوب

في العقد الشبكة.

2. 6. حل المشكلة التي تطرحها طرق أويلر ورونجي-كوتا من الدرجة الرابعة

2. 6. 1. طريقة أويلر

1. بناء محاور الإحداثيات.

2. مارك أ (1،2؛ 1) النقطة الأولى من المنحنى التكاملي؛

4. نحن نبني الظلل 0 عند النقطة A عند الزاوية α 0 ;

5. أوجد x 1 باستخدام الصيغة: x i = x 0 + ih، حيث h خطوة التكامل

× 1 = 1.2 + 1 0.1 = 1.3

6. نقوم بتنفيذ مباشرس = س 1 = 0.1 إلى التقاطع مع الخطل 0، ضع علامة على النقطة B (x 1؛ y 1)؛

7. ابحث عن النقطة y B:

من المثلث الأيمن ABC,

Δ ص = ص 1 ذ 0 ,

Δس = س 1 × 0 = ح،

f (x 0 ; y 0 ) = (y 1 y 0 )/ h =>

y 1 = y 0 + h (f (x 0 ; y 0 )) = 1 + 0.1 f (1.2;1) = 1-0.545454 = 0.945

ولذلك النقطةب له إحداثيات (1.3؛ 0.945).

2. 6 .2. طريقة Runge-Kutta 4 أوامر

1. بناء محاور الإحداثيات.

2. ضع علامة A(1,2; 1) على النقطة الأولى للمنحنى التكاملي؛

3. نحن نبحث عن زاوية ميل المماس للرسم البياني عند هذه النقطةأ:

4. نحن نبني الظلل 0 عند النقطة A عند الزاوية α 0 ;

5. أوجد x 1 باستخدام الصيغة: x i = x 0 + ih

س 1 = 1,2 + 1 0, 1 = 1, 3;

  1. نجدها باستخدام الصيغ:

ك1=0.1·و(1.2;1)=0.1·(-0.545454)= - 0.0545

k2=0.1· f(1.2+0.1/2;1-0.0545/2)= -0.0540

K3=0.1· f(1.2+0.1/2;1-0.0540/2)= - 0.0540

K4=0.1· f(1.2+0.1;1-0.0540)= - 0.0535

∆ص 1 =(- 0.0545+2·(-0.0540)+2·(-0.0540) - 0.0535)/6= - 0.054

∆ ص 2 =1- 0.054=0.946

ولذلك، فإن النقطة التالية على الرسم البياني للحل لها إحداثيات (1.3؛ 0.946).

3. خوارزمية حل المشكلة

3. 1. خوارزميات الروتين الفرعي

3.1.1 روتين فرعي لطريقة أويلر

3.1.2 الروتين الفرعي لطريقة Runge-Kutta 4 أوامر

3. 1. 3. روتين الحل العام

3. 2. خوارزمية الوظيفة


3. 3. خوارزمية البرنامج

4. استمارة البرنامج

  1. قائمة البرنامج

Dim j() كمفردة

خافت x () كمفردة

خافت y() كمفردة

خافت o () كمفردة

خاص n، i كعدد صحيح

خاص xk، x0، kx، ky كفرد

خاص ك، ك1، ك2، ك3، ك4 كفرد

خاص h، max، min، y0 كمفرد

وظيفة خاصة f(a, b كمفردة) كمفردة

و = -أ * ب / (أ + 1)

وظيفة النهاية

وظيفة خاصة f1(x كمفردة) كمفردة

وظيفة النهاية

ايلر الفرعية الخاصة()

إعادة ديم س (ن)

رديم ي (ن)

ي(0) = ذ0

لأني = 0 إلى ن

س(ط) = س0 + ح * ط

بعدها انا

لأني = 0 إلى ن - 1

بعدها انا

نهاية الفرعية

رونج فرعي خاص ()

إعادة ديم ص (ن)

ص(0) = ذ0

لأني = 0 إلى ن

س(ط) = س0 + ح * ط

بعدها انا

لأني = 0 إلى ن - 1

k1 = ح * و(س(ط)، ص(ط))

ص(ط + 1) = ص(ط) + ك

MSFlexGrid1.TextMatrix(1, 2) = Str(y0)

بعدها انا

نهاية الفرعية

Obhee الفرعية الخاصة ()

إعادة ديم س (ن)

لأني = 0 إلى ن

س(0) = ص0

س(ط) = س0 + ح * ط

س(ط) = f1(س(ط))

بعدها انا

نهاية الفرعية

أمر فرعي خاص1_Click()

x0 = فال(نص1.نص)

xk = فال(Text2.Text)

ح = فال (نص 4. نص)

y0 = فال(Text3.Text)

ن = (xk - x0) / ح

Label6.Caption = Str(x0)

Label5.Caption = Str(xk)

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.TextMatrix(0, 1) = "صحيح"

MSFlexGrid1.TextMatrix(0, 2) = "الاستجابة"

MSFlexGrid1.TextMatrix(0, 3) = "نص آخر"

ايلر

رونج

أوبهي

الحد الأقصى = ص0

دقيقة = ص0

لأني = 0 إلى ن

إذا j (i)> الحد الأقصى ثم

الحد الأقصى = ي(ط)

إنهاء إذا

إذا ي(ط)< min Then

دقيقة = ي (ط)

إنهاء إذا

إذا y(i)> الحد الأقصى ثم

الحد الأقصى = ص (ط)

إنهاء إذا

إذا ذ (أنا)< min Then

دقيقة = ص (ط)

إنهاء إذا

إذا o(i)> الحد الأقصى ثم

الحد الأقصى = س (ط)

إنهاء إذا

إذا س (ط)< min Then

دقيقة = س (ط)

إنهاء إذا

بعدها انا

Label4.Caption = Str(max)

Label7.Caption = Str(min)

Picture1.Cls

لأني = 1 إلى ن - 1

X1 = 720 + جولة(kx * (x(i - 1) - x0))

X2 = 720 + جولة(kx * (x(i) - x0))

X1 = 720 + جولة(kx * (x(i - 1) - x0))

X2 = 720 + جولة(kx * (x(i) - x0))

بعدها انا

نهاية الفرعية

أمر فرعي خاص2_Click()

نهاية الفرعية

  1. حل المشكلة في MathCad

أويلر

رونج كوت

عام

خاتمة

ومن بين الطريقتين (أويلر ورونجي-كوتا)، وفقًا للنتائج التي تم الحصول عليها، تبين أن طريقة رونج-كوتا أكثر دقة (مقارنة بالحل العام). يتم تفسير ذلك بحقيقة أنه، على عكس طريقة أويلر، في طريقة Runge-Kutta، لا يتم تقسيم الخطوة إلى 4 أجزاء، ونتيجة لذلك يصبح خطأ الطريقة أصغر.

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


تيراغرام (α) = و (س، ص)

Y i+1 = Y i + h ∙ F(x, Y i )

س = X0 + أنا ∙ ح

ط = 0، …، ن - 1

ح = (Xk X0)/N

نهاية

MSFlexGrid1.TextMatrix(i + 2, 2) = Str(y(i + 1))

MSFlexGrid1.TextMatrix(1, 2) = Str(ص (0))

ك س = (6600 - 720) / (س ك - س 0)

كي = (6600 - 1120) / (الحد الأقصى - الحد الأدنى)

Label4.Caption = Str(max)

Label7.Caption = Str(min)

س(ط)=دقيقة

س (ط)

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(o(i))

ص (ط) = الحد الأقصى

آيلر (X0، Xk، Y0، N، Y)

س ط +1

× ط

ص ط+1

ص = ص (س)

ك2=ح*و(س+ح/2، ص ط +ك1/2)

K1=ح*F(س،ص ط)

ص (ط) > الحد الأقصى

ي(ط)=دقيقة

س = X0 + أنا ∙ ح

ط = 0، …، ن-1

ح = (Xk X0)/N

Rynge4(X0، Xk، Y0، N، Y)

الأمر2

س(ط)=الحد الأقصى

س (ط) > الحد الأقصى

ك=(ك1+2*ك2+2*ك3+ك4)/6

k4= ح*F(x+h، Y i +k3)

k3= ح*F(س+ح/2، ص ط +ك2/2)

ص ط+1 = ص ط +ك

k1 = ح * و(س(ط)، ص(ط))

k2 = ح * و(x(i) + ح / 2، ص(i) + k1 / 2)

k3 = ح * و(x(i) + ح / 2، ص(i) + k2 / 2)

k4 = ح * و(س(ط) + ح، ص(ط) + ك3)

ك = (ك1 + 2 * ك2 + 2 * ك3 + ك4) / 6

ص(ط + 1) = ص(ط) + ك

ط = 0، …، ن-1

س(ط) = س0 + ح * ط

ط = 0، …، ن

إعادة ديم ص (ن)

ز(0) = ص0

يبدأ

ص0،X0،XK،ح

ن = (xk - x0) / ح

الحد الأقصى = ص0

دقيقة = ص0

ي(ط) > الحد الأقصى

أنا = 0، ... ن

ايلر

رونج

اوبشي

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.TextMatrix(0, 0) = "x"

MSFlexGrid1.TextMatrix(0, 1) = "أويلر "

MSFlexGrid1.TextMatrix(0, 2) = "رونج- كوتا"

MSFlexGrid1.TextMatrix(0, 3) = "قرار مشترك"

Label6.Caption = Str(x0)

Label5.Caption = Str(xk)

ي(ط)=الحد الأقصى

X1 = 720 + جولة(kx * (x(i - 1) - x0))

X2 = 720 + جولة(kx * (x(i) - x0))

Y1 = 6600 - جولة(ky * (o(i - 1) - min))

Y2 = 6600 - جولة(ky * (o(i) - min))

نهاية

ي (ط)

X1 = 720 + جولة(kx * (x(i - 1) - x0))

X2 = 720 + جولة(kx * (x(i) - x0))

Y1 = 6600 - جولة(ky * (y(i - 1) - min))

Y2 = 6600 - جولة(ky * (y(i) - min))

X1 = 720 + جولة(kx * (x(i - 1) - x0))

X2 = 720 + جولة(kx * (x(i) - x0))

Y1 = 6600 - جولة(ky * (j(i - 1) - min))

Y2 = 6600 - جولة(ky * (j(i) - min))

أنا =1 ، …، ن-1

نهاية

f1 = y0 / ((x0 + 1) * إكسب(-x0)) * (س + 1) * إكسب(-x)

f1(خ)

MSFlexGrid1.TextMatrix(1, 0) = Str(x0)

MSFlexGrid1.TextMatrix(i + 2, 0) = Str(x(i + 1))

MSFlexGrid1.TextMatrix(i + 2, 1) = Str(j(i + 1))

MSFlexGrid1.TextMatrix(1, 1) = Str(j(0))

ي(i + 1) = ي(i) + ح * و(x(i)، ي(i))

ط = 0، …، ن-1

س(ط) = س0 + ح * ط

ط = 0، …، ن

إعادة ديم س (ن)

رديم ي (ن)

ي(0) = ذ0

ايلر

نهاية

س(ط) = س0 + ح * ط

س(ط) =f1(س (ط))

ط = 0، …، ن

إعادة ديمس(ن)

س(0) = ص0

أوبهي

نهاية

MSFlexGrid16

الصورة 1

و = -أ * ب / (أ + 1)

و(أ،ب)

رونج

لابي71

النص2

النص 1

لابي41

لابي31

التسمية1

النص3

لابي21

التسمية6

النص4

الأمر1

التسمية4

لابي51

لابي91

التسمية10

نهاية

Picture1.Line (X1، Y1)-(X2، Y2)، RGB (0، 200، 0)

Picture1.Line (X1، Y1)-(X2، Y2)، RGB (500، 70، 90)

Picture1.Line (X1، Y1)-(X2، Y2)، RGB (400، 100، 12)

ص (ط)

ذ(ط)=دقيقة

حل مشكلة كوشي لنظام ODE باستخدام طريقة Runge-Kutta من الدرجة الرابعة
خوارزمية تسلسلية
صعوبة تسلسلية 4 مليون
حجم بيانات الإدخال م+3
حجم الإخراج (م+1)ن
خوارزمية متوازية
ارتفاع الشكل المتوازي المتدرج على)
عرض النموذج المتوازي المتدرج يا (م)

المؤلفون الرئيسيون للوصف: أ.أ. فورستر (1.1،1.2،1.3،1.4،1.5،1.6،1.7،1.8،1.9)، د. عليموف (1.1,1.7,1.10,2.4,2.7)

1 خصائص وهيكل الخوارزمية

1.1 وصف عام للخوارزمية

طريقة Runge-Kutta من الدرجة الرابعة هي الطريقة الأكثر شيوعًا من عائلة طريقة Runge-Kutta للخوارزميات الرقمية لحل المعادلات التفاضلية العادية وأنظمتها. تم تطوير هذه الأساليب التكرارية للحسابات التقريبية الصريحة والضمنية حوالي عام 1900 على يد علماء الرياضيات الألمان K. Runge وM.V. Kutta.

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

y(x) = y_(0) + \int\limits_(x_(0))^(x)f(t,y)dt,

ومن ثم، باستخدام الصيغ العددية المختلفة لحساب التكامل على الجانب الأيمن من المعادلة، يمكن للمرء الحصول على طرق رونج-كوتا ذات الطلبات المختلفة.

عرض عام لصيغ طرق Runge-Kutta مع خطوة الشبكة h_(n):

ص = و(ر،ص)،\،\،\، ص(t_(0)) = ذ_(0)، y_(n+1) = y_(n) + h_(n+1)\sum\limits_(i=1)^(s)b_(i)K_(n)^(i), K_(n)^(i) = f(t_(n) + c_(i)h_(n+1), y_(n) + h_(n+1)\sum\limits_(j=1)^(i) -1)أ_(ي)ك_(ن)^(ي)).

يتم تحديد طريقة Runge-Kutta المحددة من خلال مجموعة من المعاملات ب_(ط)، ج_(ي)، أ_(ي)والتي يجب أن تلبي علاقات معينة.

1.2 الوصف الرياضي للخوارزمية

1.2.1 طريقة Runge-Kutta من الدرجة الرابعة لمسألة كوشي من الدرجة الأولى DE

دعونا نفكر في مشكلة كوشي، حيث يلبي الطرف الأيمن شروط الوجود ونظريات التفرد للحل.

y" = f(x,y),\ a \leq x \leq b;\ y(a) = y^0

دعونا نضع شبكة موحدة

x_i = a + ih,\ i = 1,\dots, n,\ h = \frac(b-a)(n)

دعونا نقدم الترميز y(x_i) = y_i. نحصل على صيغة الحساب:

\begin(cases) k_1 = hf(x_i,y_i)\\ k_2 = hf(x_i + h/2,y_i + k_1/2)\\ k_3 = hf(x_i + h/2,y_i + k_2/2)\ \ k_4 = hf(x_i + h,y_i + k_3)\\ y_(i+1) = y_i + [ k_1 + 2k_2 + 2k_3 + k_4 ]/6 \\ \end(حالات)

1.2.2 طريقة Runge-Kutta من الدرجة الرابعة لمسألة كوشي لنظام DE من الدرجة الأولى

تم البحث عن حل عددي لمسألة كوشي لأنظمة ODE من الدرجة الأولى باستخدام طرق Runge-Kutta باستخدام نفس الصيغ المستخدمة في ODEs من الدرجة الأولى. على سبيل المثال، يمكن إيجاد حل بطريقة Runge-Kutta من الدرجة الرابعة إذا وضعنا:

y_i\rightarrow\bar y_i f(x_i,y_i) \rightarrow \bar f(x_i,\bar y_i) k_l \rightarrow \bar k_l \bar k_l = \begin(pmatrix) k^i_(l,1)\\ \vdots\\ k^i_(l,m)\\ \end(pmatrix)

حيث m هو البعد للنظام، ل = 1، \النقاط، 4. ونتيجة لذلك نحصل

\begin(cases) \bar k_1 = h\bar f(x_i,\bar y_i)\\ \bar k_2 = h\bar f(x_i + h/2,\bar y_i + \bar k_1/2)\\ \ bar k_3 = h\bar f(x_i + h/2,\bar y_i + \bar k_2/2)\\ \bar k_4 = h\bar f(x_i + h,\bar y_i + \bar k_3)\\ \ bar y_(i+1) = \bar y_i + [ \bar k_1 + 2\bar k_2 + 2\bar k_3 + \bar k_4 ]/6 \\ \end(حالات)

1.3 النواة الحسابية للخوارزمية

1.4 البنية الكلية للخوارزمية

تتكون البنية الكلية للخوارزمية من حساب المعاملات k_(j),\,j=1,..,4 عند العثور على قيم الوظيفة المطلوبة في كل عقدة.

1.5 مخطط تنفيذ الخوارزمية المتسلسلة

دعونا نقدم تنفيذًا محتملاً لخوارزمية متسلسلة في Matlab (يتم إعطاء الجانب الأيمن من ODE كدالة func(x,y))

1 دالة = RungeKutta4 (y0, a, b, n) 2 h = (b - a) / n; 3 x = أ : ح : ب 4 5 ص (:, 1 ) = y0 ; 6 لـ i = 2 : n 7 k1 = h * func (x (i), y (:, i)) 8 k2 = h * func (x (i) + h / 2, y (:, i) + k1 / 2 ) 9 k3 = h * func (x (i ) + h / 2 , y (:, i ) + k2 / 2 ) 10 k4 = h * func (x (i ) + h , y (:, i ) + k3 ) 11 y (:, i + 1 ) = y (:, i ) + (k1 + 2 * k2 + 2 * k3 + k4 ) / 6 12 النهاية 13 النهاية

1.6 التعقيد المتسلسل للخوارزمية

تتكون كل خطوة من حلقة الخوارزمية من 4 استدعاءات للدالة \bar f و 11 عملية ضرب و 10 عمليات إضافة. نظرًا لأن استدعاء الدالة \bar f هو العملية الأكثر تعقيدًا، فيمكن تعريف مدى تعقيد التنفيذ الخطي للخوارزمية بـ 4mn.

1.7 الرسم البياني للمعلومات

دعونا نصف الرسم البياني الخوارزمي تحليليا ورسوميا.
دعونا نعطي نظام المعادلات التفاضلية أحادية البعد. يحتوي الرسم البياني على بنية ثلاثية الأبعاد تمثل المستويات (المستويات) المترابطة. في كل مستوى i، يتم حساب التقريب i لمتجه حل النظام. هناك n من هذه المستويات في المجموع، حيث n هو عدد العقد التي يتم فيها حساب الحل التقريبي لنظام المعادلات التفاضلية. بيانات الإخراج للمستوى i هي بيانات الإدخال للمستوى i + 1.
تنقسم رؤوس الرسم البياني للمعلومات إلى نوعين:

  • النوع الأول من القمم يتوافق مع حساب إحداثيات واحدة للدالة على الجانب الأيمن من المعادلة التفاضلية عند النقاط المقدمة لمدخل الرأس. نتيجة العملية هي إحداثيات متجهة واحدة ك_(ل),\,\,\,ل = 1,2,3,4. في كل مستوى، سيكون هناك 4 ملايين من هذه القمم، ويبلغ إجمالي عددها 4 ملايين.
  • النوع الثاني من القمم يتوافق مع العملية a + bc. ويمكن أيضًا تقسيم هذه القمم إلى مجموعتين. عند رؤوس المجموعة الأولى، يتم حساب التعبيرات، وسيتم توفير نتيجتها كوسائط للقمم من النوع الأول، وستكون البيانات المدخلة لهذه القمم هي نتائج إثارة رؤوس m من النوع الأول، الموجودة في نفس المستوى. في كل مستوى من رؤوس المجموعة الأولى سيكون هناك 3م، وسيكون عددهم الإجمالي 3مليون. ستكون البيانات المدخلة لرؤوس المجموعة الثانية نتيجة تشغيل قمة واحدة من النوع الأول وقمة مماثلة من النوع الثاني. ستكون نتيجة تشغيل هذا الرأس على المستوى i هي إحداثيات m لمتجه التقريب i لحل النظام. في كل مستوى سيكون هناك 4 ملايين من هذه القمم، ويبلغ إجمالي عددها 4 ملايين.

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

الشكل 1. الرسم البياني للمعلومات لنظام من معادلتين تفاضليتين.

1.8 موارد توازي الخوارزمية

نظرًا لأنه في المخطط الحسابي الموضح أعلاه، فإن العملية الأكثر كثافة في العمالة هي حساب الجوانب اليمنى من ODE عند الحساب k_i (i = 1، \dots، 4)، فيجب إيلاء الاهتمام الرئيسي لموازاة هذه العملية. هنا سوف نستخدم نهج تحليل معادلات نظام ODE إلى أنظمة فرعية. لذلك، للتهيئة، ضع في الاعتبار مخطط تحليل البيانات التالي لعناصر المعالج المتوفرة مع الذاكرة المحلية: لكل \mu - PE (عنصر المعالج) ( \mu = 0، \dots، p-1) يتم توزيعها بواسطة المعادلات التفاضلية n/p والمتجه \bar y_0 . يتم إجراء حسابات أخرى وفقًا للمخطط التالي:

  1. في كل PE، يتم حساب المكونات المقابلة n/p للمتجه \bar k_1 في وقت واحد باستخدام الصيغة [ \bar k_1 ]_(\mu) = h[ \bar f(x_i, \bar y_i) ]_(\mu)
  2. لضمان مرحلة الحساب الثانية، من الضروري تجميع المتجه \bar k_1 بالكامل على كل PE. ثم يتم حساب مكونات المتجه \bar k_2 بشكل مستقل باستخدام الصيغة [ \bar k_2 ]_(\mu) = h[ \bar f(x_i + h/2,\bar y_i + \bar k_1/2)]_(\mu);
  3. يتم تجميع المتجه \bar k_2 على كل PE، ويتم حساب مكونات المتجه \bar k_3:\ [ \bar k_3 ]_(\mu) = h [\bar f(x_i + h/2,\bar y_i + \bar k_2/2)]_(\mu);
  4. يتم تجميع المتجه \bar k_3 على كل PE، ويتم حساب مكونات المتجه \bar k_4:\ [ \bar k_4 ]_(\mu) = h [\bar f(x_i + h,\bar y_i + \bar k_3)]_(\mu);
  5. يتم حساب مكونات المتجهات بالتوازي التام \bar y_(i+1):\ [\bar y_(i+1)]_(\mu) = [\bar y_(i)]_(\mu) + ([ \bar k_1 ]_(\mu ) + 2[ \bar k_2 ]_(\mu) + 2[ \bar k_3 ]_(\mu) + [ \bar k_4 ]_(\mu))/6\ويتم تجميع المتجه \bar y_(i+1) على كل PE. إذا كان من الضروري مواصلة العملية الحسابية، فسيتم افتراض i = i + 1 ويتم الانتقال إلى الخطوة 1

لاحظ أن هذه الخوارزمية لها توازي محدود، ولكن ليس توازيًا هائلًا، نظرًا لأن دورات الخوارزمية تعتمد على المعلومات.

في كل مستوى في هذه الخوارزمية، ينفذ كل PE أربع عمليات لحساب الجوانب اليمنى من ODE، وستة عشر عملية لإضافة المتجهات وضرب المتجه برقم، بالإضافة إلى نقل البيانات p-1 بين PEs الأخرى، مما يؤدي إلى إبطاء كبير جدًا أسفل تنفيذ الخوارزمية وهو عبء عند موازاة الخوارزمية. في هذه الحالة، عدد تكرارات الحلقة يساوي طول المتجه x، أي n. مما سبق يترتب على ذلك أنه عند التصنيف حسب ارتفاع NAP، فإن الخوارزمية لها تعقيد O(n)، وعند التصنيف حسب عرض NAP - O(m) (بشرط أن p = m).

1.9 بيانات الإدخال والإخراج للخوارزمية

بيانات الإدخال للخوارزمية هي:

  1. المتجه y^0 للبعد m;
  2. حدود الفاصل الزمني أ و ب؛
  3. معدل أخذ العينات ن؛

إجمالي حجم بيانات الإدخال: م + 3

الإخراج هو

  1. n المتجهات \bar y_i للبعد m؛
  2. المتجه \bar x للبعد n

إجمالي حجم بيانات الإخراج: (م+1)ن

1.10 خصائص الخوارزمية

دعونا ندرج الخصائص الرئيسية للخوارزمية:

2 تنفيذ البرمجيات للخوارزمية

2.1 ميزات تنفيذ الخوارزمية التسلسلية

2.2 محلية البيانات والحسابات

2.2.1 مكان تنفيذ الخوارزمية

2.2.1.1 هيكل الوصول إلى الذاكرة والتقييم النوعي للمكان
2.2.1.2 تحديد المنطقة
2.2.1.3 التحليل بناءً على اختبار Apex-Map

2.3 الطرق والميزات الممكنة للتنفيذ المتوازي للخوارزمية

2.4 قابلية التوسع للخوارزمية وتنفيذها

2.4.1 قابلية التوسع في الخوارزمية

2.4.2 قابلية التوسع في تنفيذ الخوارزمية

دعونا نجري دراسة لقابلية التوسع في التنفيذ الموازي لطريقة Runge-Kutta وفقًا للمنهجية. تم إجراء البحث على الكمبيوتر العملاق Lomonosov التابع لمجمع الكمبيوتر العملاق بجامعة موسكو. لقد درسنا التنفيذ المتوازي الخاص بنا للخوارزمية، المكتوبة بلغة C++ باستخدام معيار MPI. تم تجميع البرنامج باستخدام الإصدار 15.0 من مترجم Intel (دون تحديد مفاتيح الترجمة) باستخدام إصدار مكتبة OpenMPI 1.8.4. تم إجراء الحسابات على العقد من مجموعة T-Blade2 مع معالجات Intel Xeon 5570 Nehalem بسرعة 2.93 جيجا هرتز، مع تخصيص نواة واحدة لكل عملية MPI.

مجموعة وحدود قيم المعلمات القابلة للتغيير لبدء تنفيذ الخوارزمية:

  • عدد المعالجات في خطوات القوى اثنين حتى 64، ثم في خطوات 10؛
  • البعد للنظام.

نتيجة للتجارب، تم الحصول على النطاق التالي من كفاءة تنفيذ الخوارزمية:

  • الحد الأدنى لكفاءة التنفيذ 0.0000032%؛
  • الحد الأقصى لكفاءة التنفيذ 0.0024%.

دعونا ندرج بعض ميزات التنفيذ الموازي الذي تم اختباره:

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

    دعونا نبني تقديرات لقابلية التوسع في التنفيذ المتوازي الذي تم اختباره لطريقة Runge-Kutta من الدرجة الرابعة:

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

    2.5 الخصائص الديناميكية وكفاءة تنفيذ الخوارزمية

    2.6 استنتاجات لفصول الهندسة المعمارية

    2.7 التطبيقات الحالية للخوارزمية

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

دعونا نعطي معادلة تفاضلية من الدرجة الأولى مع الشرط الأولي y(x 0)=y 0. دعونا نختار الخطوة h ونقدم الترميز:

x i = x 0 + ih و y i = y(x i)، حيث i = 0, 1, 2, ... .

على غرار الطريقة الموصوفة أعلاه، يتم إجراء الحل

المعادلة التفاضلية. الفرق هو أن الخطوة مقسمة إلى 4 أجزاء.

وفقًا لطريقة Runge-Kutta من الترتيب الرابع، يتم تحديد القيم المتعاقبة y i للدالة المطلوبة y بواسطة الصيغة:

ذ أنا+1 = ذ أنا +؟ص أنا

حيث أنا = 0، 1، 2 ...

ص=(ك1+2*ك2+2*ك3+ك4)/6

يتم حساب الأرقام k1، k2، k3، k4 في كل خطوة باستخدام الصيغ:

k1 = ح*و(س ط، ص ط)

k2 = و (x i +h/2, y i +k1 /2)*h

k3 = F(x i +h/2, y i +k2 /2)*h

k4 = F(x i +h, y i +k3)*h

هذه طريقة واضحة من أربع خطوات مع 4 أوامر من الدقة.

يظهر الشكل 6 مخططًا تدفقيًا لإجراءات حل المعادلة التفاضلية باستخدام طريقة Runge-Kutta.

F(x, y) - دالة معينة - يجب وصفها بشكل منفصل.

معلمات الإدخال:

X0، XK - الأولي والنهائي

القيم المستقلة

عامل؛

Y0 - القيمة y 0 من الشرط الأولي

ن - عدد أجزاء القسم؛

معلمات الإخراج:

Y - مجموعة قيم الحل المطلوب

في العقد الشبكة.

خوارزمية لحل المشكلة

الحل في MathCAD

قائمة البرامج بلغة Visual Basic

Dim xr(), yr(), xe(), ye(), xo(), yo() كمفردة

خاص x0، y0، h، xk، k1، k2، c، k3، k4، yd كفردي

خاص n، i كعدد صحيح

الوظيفة العامة f (ByVal a، ByVal b) كمفردة

و = -(أ - ب) / أ

الزر الفرعي الخاص 1_Click (مرسل ByVal كـ System.Object، ByVal e كـ System.EventArgs) يعالج Button1.Click

x0 = فال (TextBox1.Text)

xk = فال (TextBox2.Text)

y0 = فال (TextBox4.Text)

ح = فال (TextBox3.Text)

ن = (xk - x0) / ح

ج = y0 / x0 + Math.Log(x0)

DataGridView1.ColumnCount = 4

DataGridView1.RowCount = n + 2

DataGridView1.Item(0, 0).Value = "x"!}

DataGridView1.Item(1, 0).Value = "عام"!}

DataGridView1.Item(2, 0).Value = "Euler M"!}

DataGridView1.Item(3, 0).Value = "Runge Kutt"!}

لأني = 0 إلى ن - 1

xe(i) = Math.Round((xe(0) + i * h), 2)

انتم(i + 1) = انتم(i) + h * f(xe(i) + h / 2, ye(i) + h / 2 * f(xe(i), انتم(i)))

DataGridView1.Item(2, 1).القيمة = نعم(0)

DataGridView1.Item(0, 1).القيمة = xe(0)

DataGridView1.Item(0, i + 1).Value = xe(i)

DataGridView1.Item(2, i + 1).Value = Str(ye(i))

لأني = 0 إلى ن - 1

xr(i) = Math.Round((xe(0) + i * h), 2)

k1 = ح * و(xr(i)، سنة(i))

k2 = ح * و(xr(i) + ح / 2، سنة(i) + k1 / 2)

k3 = ح * و(xr(i) + ح / 2، سنة(i) + k2 / 2)

k4 = ح * و(xr(i) + ح، سنة(i) + k3)

ياردة = (k1 + 2 * k2 + 2 * k3 + k4) / 6

سنة (ط + 1) = سنة (أنا) + ياردة

DataGridView1.Item(3, 1).القيمة = سنة(0)

DataGridView1.Item(3, i + 1).Value = Str(yr(i))

لأني = 0 إلى ن - 1

xo(i) = Math.Round((xe(0) + i * h), 2)

yo(i) = xo(i) * (ج - Math.Log(xo(i)))

DataGridView1.Item(1, 1).القيمة = يو(0)

DataGridView1.Item(1, i + 1).Value = Str(yo(i))

Chart1.Series.Add("الحل العام")

Chart1.Series("الحل العام").ChartType = SeriesChartType.Line

لأني = 0 إلى ن - 1

Chart1.Series("الحل العام").Points.AddXY(xo(i), yo(i))

Chart1.Series("الحل العام").ChartArea = "ChartArea1"

Chart1.Series.Add("أويلر م")

Chart1.Series("أويلر M").ChartType = SeriesChartType.Point

لأني = 0 إلى ن - 1

Chart1.Series("أويلر M").Points.AddXY(xe(i), ye(i))

Chart1.Series("أويلر م").ChartArea = "ChartArea1"

Chart1.Series("Euler M").اللون = اللون.أزرق

Chart1.Series.Add("رونجي كوت")

Chart1.Series("Runge Kutt").ChartType = SeriesChartType.Line

لأني = 0 إلى ن - 1

Chart1.Series("رونجي كوت").Points.AddXY(xr(i), yr(i))

Chart1.Series("رونجي كوت").ChartArea = "ChartArea1"

Chart1.Series("Runge Kutt").اللون = اللون.أخضر

طريقة Runge-Kutta الكلاسيكية 4 أوامر

الموضوع 6.3. طريقة رونج-كوتجي

طرق رونج-كوتا- عائلة مهمة من الخوارزميات العددية لحل (أنظمة) المعادلات التفاضلية العادية. تم تطوير هذه الأساليب التكرارية للحسابات التقريبية الصريحة والضمنية حوالي عام 1900 على يد علماء الرياضيات الألمان K. Runge وM.V. Kutta.

رسميًا، طرق رونج-كوتا هي طريقة أويلر معدلة ومصححة، وهي تمثل مخططات دقة من الدرجة الثانية. هناك مخططات قياسية من الدرجة الثالثة لا يتم استخدامها على نطاق واسع. الأكثر استخدامًا وتنفيذًا في الحزم الرياضية المختلفة (Maple، MathCAD، Maxima) هو مخطط الترتيب الرابع القياسي (انظر أدناه). في بعض الأحيان، عند إجراء العمليات الحسابية بدقة متزايدة، يتم استخدام مخططات الترتيب الخامس والسادس.

إن طريقة Runge-Kutta من الدرجة الرابعة منتشرة على نطاق واسع لدرجة أنها غالبًا ما تسمى ببساطة طريقة Runge-Kutta.

خذ بعين الاعتبار مشكلة كوشي. ثم يتم حساب القيمة عند النقطة التالية باستخدام الصيغة:

حجم خطوة الشبكة هو .

هذه الطريقة لها الترتيب الرابع، أي. الخطأ في كل خطوة هو O(h5)، والخطأ الإجمالي في فترة التكامل النهائية هو O(h4).

عائلة طرق Runge-Kutta المباشرة هي تعميم لطريقة Runge-Kutta من الدرجة الرابعة. يتم تقديمه بواسطة الصيغ

يتم تحديد الطريقة المحددة من خلال الرقم s والمعاملات bi وaij وci. غالبًا ما يتم تنظيم هذه المعاملات في جدول