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

01.04.2019

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

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

ص(س 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 - موقع المكونات الرئيسية في النافذة العامة



يتم استخدام مكون Picture Box() كحاوية للتخطيط. وهي عبارة عن مصفوفة من النقاط (البكسلات)، ويمكن التحكم في لون كل نقطة على حدة. يتم تحديد إحداثيات أي نقطة بواسطة زوج من الأعداد الصحيحة - رقمها التسلسلي في الصف X والرقم التسلسلي للصف داخل الكائن Y، وبالتالي فإن إحداثيات الزاوية اليسرى العليا للمكون هي (0، 0). . يتم تحديد عدد النقاط في كل سطر وعدد الخطوط حسب حجم المكون.

الشكل 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).القيمة = يو(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 مثال

خاتمة

طلب

مقدمة

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

= و(س، ص)،

حيث 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

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