دعونا نعطي معادلة تفاضلية من الدرجة الأولى
مع الحالة الأولية
ص(س 0) = ص 0.
دعنا نختار الخطوة h ونقدم الترميز التالي:
س ط = س 0 + ط . ح و ص أنا = ذ(س أنا) ,
حيث أنا = 0، 1، 2، ...
س ط - العقد الشبكة،
y i - قيمة الدالة المتكاملة في العقد .
يتم حل المعادلة التفاضلية بشكل مشابه للطرق الموضحة أعلاه. الفرق هو أن الخطوة مقسمة إلى 4 أجزاء.
وفقا لطريقة Runge-Kutta من الدرجة الرابعة، القيم المتعاقبة ذ أنا الوظيفة المطلوبة ذيتم تحديدها بواسطة الصيغة:
, ط = 0، 1، 2، ...
والأرقام ك 1 (ط) , ك 2 (ط) , ك 3 (ط) , ك 4 (ط)في كل خطوة يتم حسابها باستخدام الصيغ:
هذه طريقة واضحة من أربع خطوات بدقة من الدرجة الرابعة.
تعتبر طرق Runge–Kutta سهلة البرمجة وتتمتع بقدر كبير من الدقة والثبات في التعامل مع نطاق واسع من المشكلات.
ويبين الشكل 6 مخططا انسيابيا لهذا الإجراء رونج (X0، XK، Y0، N، Y)لحل مسألة كوشي باستخدام طريقة رونج-كوتا الموضحة أعلاه.
ط = 0، …، ن-1
K1 = ح * و(س، يي)
K2 = ح * F(س + ح/2، يي + K1 / 2)
K3 = ح * و(س + ح/2، يي + K2 / 2)
K4 = ح * F(س + ح، يي + K3)
ك = (ك1 + 2*ك2 + 2*ك3 + ك4) / 6
الشكل 6 - مخطط انسيابي لإجراء RUNGE
يوضح الشكل 7 رسمًا تخطيطيًا لخوارزمية البرنامج الرئيسية لحل مشكلة كوشي والحصول على نتائج بعدد ثابت من مقاطع القسم N. في البرنامج الرئيسي، يسمى الإجراء رونج (X0، XK، Y0، N، Y)،حساب قيمة الوظيفة المطلوبة ذ يفي النقاط س يبطريقة رونج-كوتا.
البيانات الأوليةفي هذه المشكلة هي:
X0، XK - القيم الأولية والنهائية للمتغير المستقل؛
Y0 - القيمة ص 0من الحالة الأولية ص(س 0) = ص 0;
N - عدد أجزاء القسم.
نتائج البرنامجيتم عرضها في عمودين:
X - مجموعة من قيم عقدة الشبكة؛
Y - مجموعة قيم الحل المطلوب في عقد الشبكة المقابلة.
الإدخال X0، XK، Y0، N
رونج (X0،XK،Y0،N،Y)
ط=0…ن
الإخراج X، Y ط
الشكل 7 - رسم تخطيطي لخوارزمية البرنامج الرئيسية لحل مشكلة كوشي مع عدد ثابت من مقاطع القسم N
حل المعادلات التفاضلية في MathCad
الشكل 8 - مثال على حل معادلة تفاضلية باستخدام الطريقة
أوامر Runge-Kutta 4 في بيئة MathCad.
وظائف الرسوم البيانية في بيئة Visual Basic
تعد مهمة جدولة الدوال وإنشاء الرسوم البيانية الخاصة بها إحدى المهام الرئيسية في عملية حل المعادلات التفاضلية العادية. دعونا نفكر في هذه المهمة بمزيد من التفصيل.
مهمة.
أنشئ رسمًا بيانيًا للدالة y=sin(x) على القطعة. خذ خطوة الجدولة التي تساوي h.
حل.
لرسم رسم بياني للدالة في بيئة Visual Basic، من المناسب استخدام بعض المكونات الرسومية.
الشكل 9 - موقع المكونات الرئيسية في النافذة العامة
|
الشكل 10 - إحداثيات كائن PictureBox
في التين. يوضح الشكل 10 موقع المحاور وإحداثيات نقاط زاوية الكائن.
يتم استخدام مكون Line() لرسم محاور وأجزاء الرسم البياني متعدد الخطوط للدالة.
يتلخص جوهر إنشاء الرسم البياني في حقيقة أنه يجب تقديم الوظيفة في شكل جدول (مجدول)، ثم تحديد النقاط في قالب الرسم البياني وربطها معًا.
يظهر الشكل 12 خوارزمية إنشاء الرسم البياني للوظيفة. يمكن تعديل الخوارزمية. وعلى وجه الخصوص، قد يتم الجمع بين بعض الإجراءات وقد يتم تغيير الإجراء في بعض الحالات.
دعونا نلقي نظرة على الخوارزمية بمزيد من التفصيل.
قبل تنفيذ الخوارزمية، من الضروري وصف وظيفة الروتين الفرعي لرسم الرسم البياني. وهذا ضروري لتسهيل تعديل البرنامج. إذا كنت بحاجة إلى رسم رسم بياني لوظيفة أخرى، ما عليك سوى تغيير الروتين الفرعي.
وأيضًا، قبل رسم رسم بياني، تحتاج إلى إنشاء نموذج وتحريره. يظهر في الشكل 11 مثال لتطوير نموذج. في النموذج، تحتاج إلى وضع مكونات لإدخال البيانات الأولية، ومكون لطباعة جدول، وزر أمر، وحاوية لوضع رسم بياني (PictureBox). داخل PictureBox، تحتاج إلى رسم محاور الإحداثيات باستخدام الخطوط المستقيمة ووضع التسميات لتسجيل حدود مقطع قيم وسيطة الدالة والدالة القصوى على المقطع المعني.
يتم إدخال البيانات الأولية في البرنامج المعني عن طريق الضغط على زر الأمر. في كثير من الأحيان، يتم تنفيذ إدخال البيانات باستخدام مكون TextBox.
من السهل تنفيذ إجراء جدولة الدالة في حلقة تحتوي على معلمة، نظرًا لأن عدد نقاط الرسم البياني التي سيتم حسابها معروف. قبل تنفيذ الإجراء، يجب عليك تعيين عدد صفوف الجدول.
يتم حساب عدد الأسطر بواسطة الصيغة k=n+2، حيث k هو عدد الأسطر، وn هو عدد أقسام الجدولة. يجب أن يكون عدد الأسطر أكبر من عدد المقاطع بمقدار 2، حيث من الضروري مراعاة نقطة البداية (صفر) وخط تسجيل عناوين أعمدة الصفحة.
في إجراء الجدولة نفسه، يمكنك الجمع بين إجراءين - الجدولة وحساب التطرف. يظهر هذا الحل في قائمة البرامج في الشكل 13.
تتمثل الصعوبة الرئيسية في التخطيط في الانتقال من القيمة الرياضية للدالة والوسيطة إلى إحداثيات الشاشة المستخدمة لرسم المخطط. عند حل هذه المشكلة، من الضروري مراعاة الاتجاه المعاكس للمحاور على الرسم البياني الرياضي وعلى كائن PictureBox والحاجة إلى تغيير حجم الصورة.
يتم حساب عوامل قياس المخطط باستخدام الصيغ التالية:
حيث kx هو عامل القياس على طول محور OX،
NPX – عدد وحدات البكسل الخاصة بكائن PictureBox المخصصة لرسم الرسم البياني الأفقي،
أ - القيمة الأولية لقطعة وسيطة الدالة،
ب - القيمة النهائية لقطعة وسيطة الدالة.
,
حيث Ky هو عامل القياس على طول محور OY،
NPY – عدد وحدات البكسل في كائن PictureBox المخصصة لإنشاء رسم بياني عمودي،
دقيقة - الحد الأدنى لقيمة الوظيفة،
ماكس – الحد الأقصى لقيمة الوظيفة.
تتم ترجمة الإحداثيات الرياضية للنقطة الحالية إلى إحداثيات الشاشة باستخدام الصيغ:
zx = جولة (الثور + (x(i) - أ) * kx)،
zy = Round(oy - (y(i) - Min) * ky)،
حيث zx، zy - إحداثيات الشاشة للنقطة الحالية،
ox, oy - إحداثيات نقطة تقاطع المحاور في مكون PictureBox،
x(i), y(i) – الإحداثيات الرياضية للنقطة الحالية،
kx، ky – عوامل القياس.
في صيغة حساب إحداثيات الشاشة للنقطة الحالية، يتم استخدام علامة الطرح لمراعاة الاتجاه المعاكس للمحاور (على الشاشة وعلى الرسم البياني).
تظهر قائمة البرنامج لرسم دالة في الشكل 13.
تظهر أمثلة النماذج مع نتائج البرنامج لمختلف البيانات الأولية في الشكلين 14 و 15.
الشكل 11 - مثال على تطوير النموذج
الشكل 12 - خوارزمية رسم الرسم البياني للدالة
وصف المتغيرات
Dim x() كمفرد، y() كمفرد
خاصة كمفردة
دعونا نعطي معادلة تفاضلية من الدرجة الأولى مع الشرط الأولي 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).القيمة = yo(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").اللون = اللون.أخضر
سيكون الطلاب وطلاب الدراسات العليا والعلماء الشباب الذين يستخدمون قاعدة المعرفة في دراساتهم وعملهم ممتنين جدًا لك.
تم النشر على 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 مثال
خاتمة
طلب
عند دراسة مجموعة واسعة من الظواهر في العالم المحيط، المتعلقة بكل من العلوم الدقيقة والعلوم الإنسانية، يواجه الباحثون في عدد من الحالات حقيقة أن التبعيات الوظيفية بين الكميات يتم العثور عليها من المعادلات التي تكون فيها مشتقات الوظائف المطلوبة حاضر. أبسطها هي تلك التي تحتوي على مشتقات من الدرجة الأولى فقط ويمكن كتابتها على الصورة
وفقًا لنظرية الوجود والتفرد، لأي نقطة (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) ونكتب مسألة كوشي:
يتم تحديد عدد المقاطع الدقيقة التي تم تقسيم المقطع الأصلي إليها من خلال دقة الحساب المطلوبة. ولتحقيق الدقة المطلوبة، تم حل المشكلة عدة مرات مع مضاعفة عدد المقاطع الدقيقة n على التوالي. تعتبر الدقة متحققة إذا كانت قيم y i و y 2i (عند النقاط المتطابقة x) تختلف بما لا يزيد عن مقدار معين مع الرقم الأولي والمضاعف n:
1. الطريقة هي خطوة واحدة (للبحث تحتاج إلى معلومات حول النقطة السابقة)
2. لا يتطلب حساب مشتقات f(x,y)، ولكنه يتطلب حساب الدالة نفسها
3. لديه خطأ صغير
Microsoft Visual Studio عبارة عن مجموعة من منتجات Microsoft تتضمن بيئة تطوير برامج متكاملة وعددًا من الأدوات الأخرى. باستخدام هذا المنتج، يمكنك تطوير تطبيقات وحدة التحكم، وتطبيقات واجهة المستخدم الرسومية، بالإضافة إلى مواقع الويب، وتطبيقات الويب، وخدمات الويب في كل من التعليمات البرمجية الأصلية والمدارة لجميع الأنظمة الأساسية التي يدعمها Windows، وWindows Mobile، وWindows CE، وNET Framework، وXbox، وWindows Phone .NET Compact Framework وSilverlight.
القيم التي وجدتها الطريقة |
الحل الدقيقج(س ط)=2- س ط -1 |
|||||
أويلر - كوشي |
رونج - كوتا |
|||||
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
تحليل مجال موضوع البرمجة الشيئية. اللغات دلفي، أوبجيكت باسكال - بيئة برمجة موجهة للكائنات. الحلول الخوارزمية الأساسية. حل معادلة تفاضلية باستخدام طريقة 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
حل المعادلات التفاضلية باستخدام الخوارزميات الكلاسيكية للطرق العددية لأويلر ورونج كوتا من الدرجة الرابعة. الأوامر المستخدمة في حل المعادلات التفاضلية العادية في نظام الحوسبة. نتيجة البرنامج.