You are on page 1of 15

‫الحل العددي للمعادالت التفاضلية‬

‫‪Numerical Solution Of‬‬


‫‪Differential Equations‬‬

‫تعتبر المعادالت التفاضلية من األدوات الرياضية الهامة في فهم‬


‫العديد من المسائل الفيزيائية والهندسية واإلجتماعية وقد إمتدت اهميتها‬
‫موخ ارً الي حقول العلوم اإلقتصادية وظهر ما يسمي بالنمذجة‬
‫الرياضية‪،‬وهناك نوعان من المعادالت التفاضلية‪:‬‬

‫‪ )1‬المعادالت التفاضلية العادية‬


‫‪Ordinary‬‬ ‫‪Differential Equations‬‬
‫)‪(ODEs‬‬
‫‪ )2‬المعادالت التفاضلية الجزئية‬

‫‪Partial Differential Equations‬‬


‫)‪(PDEs‬‬

‫فالمعادلة التفاضلية العادية تحتوي علي متغير مستقل واحد أما‬


‫المعادلة التفاضلية الجزئية تحتوي علي عدد من المتغيرات المستقلة‬
‫والزمن ‪.) t‬‬ ‫‪x‬‬ ‫حيث تعتمد علي الموضع‬ ‫) ‪u ( x, t‬‬ ‫(مثل درجة الحرارة‬

‫وحلها يكون بالصيغة‬ ‫‪dy‬‬


‫‪y‬‬ ‫)‪y (1‬‬ ‫نرمز للمعادلة التفاضلية بالرمز‬
‫‪dx‬‬
‫) ‪y  g ( x, c1 , c2 ,......, cn‬‬
‫حيث ‪ c‬عبارة عن ثوابت‪ ،‬ويشمل هذا النوع من المعادالت التفاضلية‬ ‫‪n‬‬

‫علي صنفين‪:‬‬
‫‪ )1‬مسائل القيم االبتدائية ‪:Initial Value Problem‬‬
‫في هذا النوع من المسائل تكون للمعادلة التفاضلية شرط إبتدائي‬
‫(‪ )initial Condition‬للمتغيرات والشرط اإلبتدائي يمثل‬
‫النقطة اإلبتدائية التي تمر بها الدالة التي تمثل حل المعادلة التفاضلية‪.‬‬

‫‪ )2‬مسائل القيم الحدية ‪: Boundary Value Problem‬‬


‫في هذه النوع من المسائل يكون للمعادلة التفاضلية شرط إبتدائي‬
‫وشرط معين عند نهاية الفترة للمتغير المستقل وتمثل هذه الشروط‬
‫نقطتين يجب أن تمر بهما الدالة التي تمثل حل المعادلة التفاضلية‪.‬‬
‫في هذا الجزء نتناول بعض الطرق العددية المستخدمة لحل‬
‫المعادلة التفاضلية العادية مقتصرين علي معادلة الدرجة األولي التي‬
‫تكون علي الصيغة‪:‬‬
‫‪dy‬‬
‫)‪ f ( x, y‬‬
‫‪dx‬‬

‫ذات الشرط اإلبتدائي‬

‫‪y ( x0 )  y0‬‬

‫ثم‬ ‫‪x0‬‬ ‫تعتمد الطرق العددية علي معرفة المتغير التابع ‪ y‬في لحظة البدء‬
‫‪y2‬‬ ‫و‬ ‫‪x0  h‬‬ ‫من أجل‬ ‫‪y1‬‬ ‫ننطلق من هذه النقطة خطوة خطوة إذ نحسب‬
‫التزائد الذي تأخذه ‪ x‬ويعرف بالصيغة‬ ‫‪h‬‬ ‫حيث تمثل‬ ‫‪x1  2h‬‬ ‫من أجل‬
‫‪.‬‬ ‫‪h‬‬
‫‪ba‬‬
‫‪M‬‬
‫‪ -‬طريقة أويلر‬
‫‪Euler's Method‬‬

‫قيماً صغيرة بحيث يمكن‬ ‫الثابت ‪h‬‬ ‫تعتمد هذه الطريقة علي إعطاء‬
‫من‬ ‫‪h2‬‬
‫) ‪y( x‬‬ ‫حذف حدود سلسلة تايلر إبتداءاً من الحد الذي يحوي‬
‫!‪2‬‬

‫سلسلة تايلر للنقطة )‪ ( x  h‬والذي يعرف كاألتي ‪:‬‬

‫‪y .‬‬
‫‪h2‬‬ ‫)‪hn (n‬‬
‫‪y ( x  h)  y ( x)  hy( x) ‬‬ ‫‪y( x)  .......... .... ‬‬
‫!‪2‬‬ ‫!‪n‬‬

‫ينتج أن‪:‬‬ ‫‪h2‬‬


‫) ‪y( x‬‬ ‫وبحذف الحدود إعتبا ارً من الحد‬
‫!‪2‬‬

‫)‪y( x  h)  y( x)  hy( x)  y( x)  hf ( x, y‬‬

‫وبالتعويض في العالقة أعاله ينتج أن‪:‬‬ ‫) ‪( x0 , y0‬‬ ‫نبدأ من النقطة‬


‫)‪y1  y ( x0  h‬‬
‫) ‪ y ( x0 )  hy( x0‬‬
‫)‪y2  y ( x0  2h‬‬
‫) ‪ y ( x0 )  2hy( x0‬‬
‫‪‬‬
‫‪‬‬
‫) ‪yn 1  yn  hf ( xn , yn‬‬ ‫‪n  0,1,2,3,.....,M  1‬‬

‫أي أن الصيغة العامة لقانون أويلر هي‪:‬‬


y n 1  y n  hf ( x n , y n )

when x n  x 0  nh n  0,1,2,3,.....,M  1

(1)

:‫مثال‬

y (0)  0 ‫حيث‬ y  x  y ‫أوجد الحل التقريبي للمعادلة التفاضلية‬


. [0,1] ‫في الفترة‬ h  0.2 ‫خذ‬

:‫الحل‬

x0  0 y0  0 ‫ينتج‬ y (0)  0 ‫الشرط‬ ‫ومن‬ (1) ‫بإستخدام القانون‬

‫وبالتعويض في القانون نجد أن‬

f ( xn , yn )  xn  yn xn  x0  nh  nh
y1  y0  0.2( x0  y0 )  0
y2  y1  0.2( x1  y1 )  0  0.2(0.2  0)  0.4
y3  y2  0.2( x2  y2 )  0.4  0.2(0.4  0.04)  0.128
y4  y3  0.2( x3  y3 )  0.128  0.2(0.6  0.128)  0.274
y5  y4  0.2( x4  y4 )  0.48  0.2(0.8  0.489)  1.747

n xn  0.2n yn 1  yn  0.2( xn  yn )
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪1‬‬ ‫‪0.2‬‬ ‫‪0.04‬‬

‫‪2‬‬ ‫‪0.4‬‬ ‫‪0.128‬‬

‫‪3‬‬ ‫‪0.6‬‬ ‫‪0.271‬‬

‫‪4‬‬ ‫‪0.8‬‬ ‫‪0.489‬‬

‫‪5‬‬ ‫‪1‬‬ ‫‪1.747‬‬

‫مثال‪:‬‬

‫أوجد الحل التقريبي لمسالة الشرط اإلبتدائي‬

‫‪y   y  x  1‬‬ ‫‪0  x  1 and‬‬ ‫‪y(0)  1‬‬

‫‪y  x  ex‬‬ ‫ثم قارنه بالحل الصحيح‬

‫(نقصد بالمقارنة إيجاد الخطأ المرتكب ويمثل القيمة المطلقة للفرق بين‬
‫‪E  yn 1  zn 1‬‬ ‫الحل الصحيح والحل التقريبي ) أي أن‬

‫‪xn  x0  nh‬‬ ‫‪h‬‬


‫‪b  a 1 0‬‬
‫‪‬‬ ‫‪ 0.1‬‬ ‫الحل‪:‬‬
‫‪n‬‬ ‫‪10‬‬
‫‪f ( x n , y n )   y n  xn  1‬‬
‫)‪yn 1  yn  0.1( yn  xn  1‬‬
‫‪y1  y1  0.1( y0  x0  1)  1  0.1(1  0  1)  1‬‬
‫‪y2  y1  0.1( y1  x1  1)  1  0.1(1  0.1  1)  1.01‬‬

‫وهكذا نتحصل علي القيم التقريبية الموضحة في الجدول أدناه‬

‫‪n‬‬ ‫‪xn‬‬ ‫) ‪yn 1  yn  0.2( xn  yn‬‬


0 0 1

1 0.1 1.01

2 0.2 1.029

3 0.3 1.016100

4 0.4 1.90490

5 0.5 1.131441

6 0.6 1.78297

7 0.7 1.230467

8 0.8 1.287420

9 0.9 1.348578

‫وللمقارنة بين الحل التقريي والحل الصحيح‬

z n 1  xn  e (  xn )

z1  x0  e x0  0  e 0  1
z 2  x1  e x1  0.1  e 0.1  1.04837
z3  x2  e x2  0.2  e ( 0.2 )  1.018731
z 4  x3  e  x3  0.3  e ( 0.3)  10.40818

‫وهكذا نتحصل علي بقية القيم الصحيحة‬

n y n 1 Error  yn 1  zn 1
z n 1
‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0.00000‬‬

‫‪1‬‬ ‫‪1.01‬‬ ‫‪1.04837‬‬ ‫‪0.03837‬‬

‫‪2‬‬ ‫‪1.029‬‬ ‫‪1.048731‬‬ ‫‪0.0217631‬‬

‫‪3 1.016100 1.040818‬‬ ‫‪0.024718‬‬

‫‪4‬‬ ‫‪1.90490 1.070320‬‬ ‫‪0.16542‬‬

‫‪5 1.131441 1.06531‬‬ ‫‪0.066131‬‬

‫‪6‬‬ ‫‪1.78297 1.148812‬‬ ‫‪0.634158‬‬

‫‪7 1.230467 1.196585‬‬ ‫‪0.033883‬‬

‫‪8 1.287420 1.249329‬‬ ‫‪0.038091‬‬

‫‪9 1.348578 1.306570‬‬ ‫‪0.042008‬‬

‫طريقة رنج كوتا من الرتبة الرابعة‬

‫)‪Runge-Kutta Method of order 4 (R.k.4‬‬


‫إن طريقة أويلر ال تستعمل عملياً لكونها تحتاج الي خطوة صغيرة‬
‫يجب أن تكون صغيرة) للحصول علي دقة معقولة‪ ،‬وطريقة‬ ‫‪h‬‬ ‫(قيمة‬
‫تايلر من الرتب العليا غير مرغوبة كاسلوب عام لحل المعادالت التفاضلية‬
‫ألنها تحتاج الي مشتقات كثيرة للدالة )‪ y(x‬أما طريقة رنج كوتا فتعتبر من‬
‫أهم الطرق المستخدمة في إيجاد الحل التقريبي للمعادالت التفاضلية فهي‬
‫تمكنا من الحصول علي دقة عالية مع تجنب الحاجة الي إشتقاق للدالة‬
‫)‪ y(x‬وتعتمد علي تعويض الدالة )‪ f ( x, y‬في نقاط مختارة‬

‫معادالت طريقة رنج كوتا من الرتبة الرابعة )‪(R.k.4‬تُ ّعرف بالصورة‬


‫األتية‪:‬‬
‫‪1‬‬
‫‪yn 1‬‬ ‫) ‪ yn  (k1  2kn  2kn  k4‬‬
‫‪6‬‬
‫(‪)1‬‬

‫حيث‬
‫) ‪k1  hf ( xn , yn‬‬
‫‪h‬‬ ‫‪1‬‬
‫) ‪k2  hf ( xn  , yn  k1‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪h‬‬ ‫‪1‬‬
‫) ‪k3  hf ( xn  , yn  k2‬‬
‫‪2‬‬ ‫‪2‬‬
‫) ‪k4  hf ( xn  h, yn  hk3‬‬

‫مثال‪:‬‬

‫بإستخدام طريقة ‪ R.K.4‬أوجد الحل التقريبي لمسالة الشرط‬


‫اإلبتدائي‬

‫‪y   y  x  1‬‬ ‫‪0  x 1‬‬

‫‪y(0)  1‬‬ ‫‪h  0.1‬‬

‫الحل‪:‬‬
:‫يمكن كتابة معادالت رنج كوتا بالصورة األتية‬
h
yn 1  yn  (k1  2k2  2k3  k4 ) (2)
6

‫بتطبيق معادالت رنج كوتا حيث‬

f ( x, y)   y  x  1

k1  f ( xn , yn )
h h
k2  f ( x2  , yn  k1 )
2 2 ‫ينتج‬
h h
k3  f ( xn  , yn  k2 )
2 2
k4  f ( xn  h, yn  hk3 )

k1   yn  xn  1
h h
k2  f ( xn  , yn  ( yn  xn  1)
2 2
h h h h
k3  f ( xn  , yn  [(  1) yn  (1  ) xn  1])
2 2 2 2
h h h
 (1  ) yn  (1  ) x  1
2 2 2
h h
 (1  )(1  )( xn  yn )  1
2 2

k4  ( xn  h, yn  hk3 )
‫‪h‬‬ ‫‪h‬‬
‫‪ k4   yn  h(1  (1  ))( xn  yn )  1  xn  h  1‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪for each n  0,1,2,3,......, 9‬‬

‫‪n0‬‬ ‫مثالً عند‬


‫‪k1   y0  x0  1  0‬‬
‫‪k2  (0.95 yn  0.95 xn  1)  0.05‬‬
‫‪k3  0.9525( xn  yn )  1  0.09525‬‬
‫‪k4  1  0.19525  0.0525‬‬

‫وبتعويض هذه القيم في المعادلة‬


‫‪h‬‬
‫) ‪yn 1  yn  (k1  2k2  2k3  k4‬‬
‫‪6‬‬

‫‪h‬‬
‫) ‪y1  y0  (k1  2k 2  2k3  k 4‬‬ ‫نتحصل علي‬
‫‪6‬‬
‫‪0.1‬‬
‫‪ 0‬‬ ‫)‪(0  2  0.05  2  (1.09525)  0.09525‬‬
‫‪6‬‬
‫‪ 1.0048375009‬‬

‫هكذا نستطيع أن نتحصل علي القيم والجدول أدناه يمثل بعض القيم‬
‫المحسوبة حاول إيجاد بقية القيم‬

‫‪xn‬‬ ‫‪y n 1‬‬

‫‪0‬‬ ‫‪1.00000‬‬

‫‪0.1 1.0048375000‬‬

‫‪0.2 1.187309014‬‬

‫‪0.3‬‬ ‫……‪.‬‬
‫هو‬ ‫‪y  3 x ‬‬
‫‪y‬‬
‫مثال‪ :‬الحل الصحيح للمعادلة التفاضلية‬
‫‪2‬‬

‫‪y(0)  1‬‬ ‫جد الحل التقريبي للمعادلة بالقيمة اإلبتدائية‬ ‫‪y  13e x / 2  6 x  12‬‬

‫واثبت أن الدقة تزداد بنقصان الفترة‪.‬‬ ‫‪0  x 1‬‬ ‫للفترة‬ ‫‪h  0.1‬‬ ‫وبأخذ‬

‫الحل‬

‫تصبح‪:‬‬ ‫‪f ( x, y)  3x  y / 2‬‬ ‫بتطبيق معادالت رنج كوتا حيث‬

‫‪k1  hf ( x0 , y0 )  hf (0,1)  0.05‬‬


‫‪h‬‬ ‫‪1‬‬
‫‪k2  hf ( x0  , y0  k1 )  hf (0.05,1.025 )  0.06625‬‬
‫‪2‬‬ ‫‪2‬‬

‫‪h‬‬ ‫‪1‬‬
‫‪k3  hf ( x0  , y0  k2 )  hf (0.05,1.033125 )  0.6665625‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪k4  hf ( x0  h, y0  k3 )  hf (0.1,1.06665625 )  0.0833328‬‬

‫وبتعويض هذه القيم في معادلة رنج كوتا‬


‫‪h‬‬
‫) ‪yn 1  yn  (k1  2k2  2k3  k4‬‬
‫‪6‬‬
‫‪1‬‬
‫)‪y1  y0  (0.05  2  0.06625  2  0.6665625  0.083328‬‬
‫‪6‬‬
‫‪ 1.06652421856‬‬

‫‪y1‬‬ ‫نجد القيمة الصحيحة للنقطة‬ ‫‪y  13e x / 2  6 x  12‬‬ ‫ومن الحل الصحيح‬
‫أي تصل الدقة الي ثمانية‬ ‫‪y(0.1)  1.06652424866‬‬ ‫هي‬ ‫‪x1‬‬ ‫بتعويض قيمة‬
‫وبمقارنة قيمة ‪ y‬الناتجة من الحل الصحيح مع‬ ‫‪h  0.1‬‬ ‫أرقام معنوية بأخذ‬
‫قيمة ‪ y‬الناتجة من الحل العددي بإزدياد قيمة الفترة ‪ h‬نالحظ أن قيمة‬
‫الخطأ يزداد كم موضح في الجدول أدناه‬

‫الفترة‬
‫قيمة ‪ y‬من الحل الصحيح المختا‬ ‫قيمة ‪ y‬بطريقة رنج كوتا‬
‫رة‬

‫‪h‬‬

‫‪h  0.1‬‬ ‫‪Z(0.1)=1.066652424 y(0.1)=1.06652421‬‬


‫‪86‬‬ ‫‪856‬‬

‫‪h  0.2‬‬ ‫‪Z(0.2)=1.16722193 y(0.2)=1.16722083‬‬


‫‪718‬‬ ‫‪33‬‬

‫‪h  0.4‬‬ ‫‪Z(1.4)=1.478235859 y(0.4)=1.4782‬‬


‫‪39‬‬

‫مثال‪:‬‬

‫إستخدم طريقة رنج كوتا من الرتبة الرابعة لحل المعادلة التفاضلية‬


‫)‪( x  y‬‬
‫‪y ‬‬
‫‪2‬‬
‫ ثم‬، h  1, 1 , 1 , 1 ‫ وبقيم‬y(0)=1 ‫[ والشرط اإلبتدائي‬0,3] ‫في الفترة‬
2 4 8

. y  3e x / 2
2 x ‫قارن النتيجة بالحل الصحيح‬

:‫الحل‬

‫بتطبيق معادالت رنج كوتا‬


h
yn 1  yn  (k1  2k2  2k3  k4 )
6

k1  f ( xn , yn ) ‫حيث‬
h h
k 2  f ( xn  , yn  k1 )
2 2

h h
k 3  f ( xn  , y n  k 2 )
2 2
k 4  f ( xn  h, yn  hk3 )

:‫نتحصل علي‬

0.0  1.0
k1   0.5
2
0.125  (1  0.25(0.5)(0.5))
k2   0.40625
2
0.125  (1  0.25(0.5)(0.5))
k3   0.4121094
2
0.25  (1  0.25(0.4121094))
k4   0.3234863
2
‫‪n0‬‬ ‫وعند‬
‫‪0.25‬‬
‫‪y1  y0 ‬‬ ‫) ‪(k1  2k2  2k3  k4‬‬
‫‪6‬‬
‫)‪y1  1.0  0.04167(0.5  2(0.40625)  2(0.4121094‬‬
‫‪ 0.3234863)  0.8974915‬‬

‫وهكذا نتحصل علي بقية القيم والجدول أدناه يوضح القيم المحسوبة‪:‬‬

‫‪y n 1‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬


‫‪xn‬‬ ‫‪h 1‬‬ ‫‪h‬‬ ‫‪h‬‬ ‫‪h‬‬ ‫‪z n 1‬‬
‫‪2‬‬ ‫‪4‬‬ ‫‪8‬‬

‫‪0‬‬ ‫‪1.0‬‬ ‫‪1.0‬‬ ‫‪1.0‬‬ ‫‪1.0‬‬ ‫‪1.0‬‬

‫‪1.12‬‬ ‫‪0.94323 0.94323‬‬


‫‪5‬‬ ‫‪92‬‬ ‫‪92‬‬

‫‪0.25‬‬ ‫‪0.897491 0.89749 0.89749‬‬


‫‪5‬‬ ‫‪08‬‬ ‫‪17‬‬

‫‪0.37‬‬ ‫‪0.86208 0.86208‬‬


‫‪5‬‬ ‫‪74‬‬ ‫‪74‬‬

‫‪0.50‬‬ ‫‪0.83642 0.836440 0.83640 0.83640‬‬


‫‪58‬‬ ‫‪37‬‬ ‫‪24‬‬ ‫‪23‬‬

‫‪0.75‬‬ ‫‪0.811869 0.81186 0.81186‬‬


‫‪6‬‬ ‫‪79‬‬ ‫‪78‬‬
1.00 0.82031 0.81962 0.819594 0.81959 0.81959
25 85 0 21 20

1.50 1.91714 0.917102 0.91709 0.91709


23 1 98 97

2.00 1.10451 1.10368 1.103640 1.10363 1.10363


25 26 8 85 83

2.50 1.35955 1.359516 1.35951 1.35951


75 8 45 44
3.00 1.67018 1.66943 1.669392 1.66939 1.66939
60 08 8 06 05

You might also like