به دستهای از مهمترین روشهای حل عددی معادلات دیفرانسیل عادی گفته میشود که توسط دو دانشمند آلمانی، رونگه و کوتا ابداع شده است. این روش شامل روش مرتبه اول (اویلر)، روش اویلر اصلاح شده یا هیون (Heun) که به روش پیشگو نیز معروف است، نقطه میانی، مرتبه دوم، رالستون، مرتبه سوم و مرتبه چهارم می باشد. همانطور که در ادامه خواهیم دید، سایر روشهای حل معادلات دیفرانسیل معمولی مانند اویلر، هیون و نقط میانی، حالات خاصی از روش رانگ-کوتا به ویژه از مرتبه دوم هستند. یکی از پرکاربردترین این روشها رانگ−کوتای مرتبه چهارم میباشد.
فرمول کلی روش رانگ-کوتا
[ویرایش]
معادله دیفرانسیل معمولی زیر را با شرط اولیه داده شده را در نظر بگیرید.
![{\displaystyle y'=f(x,y),\quad y(x_{0})=y_{0}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/97debf1589ce2a08ef04d29baa1de4af01dc9d6f)
فرمول کلی روش رانگ-کوتا به صورت زیر است.
![{\displaystyle y_{i+1}=y_{i}+\phi (x_{i},y_{i},h)h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/88ac825bbe07692bf803e994335db023197afd2b)
![{\displaystyle \phi =a_{1}k_{1}+a_{2}k_{2}+...a_{n}k_{n}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cc2477d5fa7d5c47d40c978910bb06a4c603fb59)
که مقادیر a مقادیر ثابت و مقادیر kها به صورت زیر هستند و h مقدار گام است.
![{\displaystyle k_{1}=f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d57966900f99df4fb07e16a9f8f2835507fd76f7)
![{\displaystyle k_{2}=f(x_{i}+p_{1}h,y_{i}+q_{11}k_{1}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/722c2e6f8d0c1b1b43cc119c6630fc7c85afb7a3)
![{\displaystyle k_{3}=f(x_{i}+p_{2}h,y_{i}+q_{21}k_{1}h+q_{22}k_{2}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8b2481d5606c1f74985a1b5952645b0dc44cd4a6)
![{\displaystyle .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1e44e5c7036d244e546db1167ed820d947fcd63a)
![{\displaystyle .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1e44e5c7036d244e546db1167ed820d947fcd63a)
![{\displaystyle .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1e44e5c7036d244e546db1167ed820d947fcd63a)
![{\displaystyle k_{n}=f(x_{i}+p_{n-1}h,y_{i}+q_{{n-1},1}h+q_{{n-1},2}k_{2}h+...+q_{{n-1},{n-1}}k_{n-1}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4351b575d60401a49d678f6712935bba1755418c)
که در آن ضرایب p و q ضرایب ثابت هستند. لازم به ذکر است که این معادلات، روابط بازگشتی هستند یعنی در محاسبه هر k، از k قبلی استفاده می شود.
رانگ-کوتای مرتبه اول (روش اویلر)
[ویرایش]
در روش رانگ-کوتای مرتبه اول از تقریب دوجمله ای بسط تیلور استفاده می شود.
![{\displaystyle y'=f(x,y),\quad y(x_{0})=y_{0}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/97debf1589ce2a08ef04d29baa1de4af01dc9d6f)
![{\displaystyle y_{i+1}=y_{i}+{h}f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5dc163fc3e871b358026cc7da1f3ff379cf98354)
خطای تخمین روش اویلر نیز از رابطه زیر محاسبه می شود.
![{\displaystyle E_{a}={f'(x_{i},y_{i}) \over 2!}h^{2}=O(h^{2})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dfb949c7321d847e3a09d1a5a4456f8f0dcbda22)
در فرمول کلی رانگ-کوتا به ازای
فرمول روش اویلر حاصل می شود.
در این روش به ازای
و هر مقدار
دلخواه در فرمول کلی، حاصل می شود. لازم به ذکر است که این روش به خاطر دلخواه بودن مقدار
بی شمار فرمول برای این روش وجود دارد. در ادامه خواهیم دید که با انتخاب مقادیر خاصی برای
، معادلات روشهای دیگر به دست می آید.
رانگ−کوتا( اویلر) اصلاح شده (هیون)
[ویرایش]
در این روش ابتدا یک مقدار برای
پیشگویی (حدس زده) می شود و سپس در معادله اصلاح گر (Corrector) قرار داده می شود و مقدار آن اصلاح می شود.
![{\displaystyle y_{i+1}^{0}=y_{i}+{h}f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a58ecce610248a8170d8ebd7bf31858b1fc0ffd9)
![{\displaystyle y'_{i+1}=f(x_{i+1},y_{i+1}^{0})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/22901cf5ebd552c9af1ffdf527cbd0386e4f488a)
معادله بالا، معادله پیشگو (Predictor) نامیده می شود.
سپس میانگین شیب جدید و شیب اولیه در معادله اویلر قرار داده می شود.
![{\displaystyle y_{i+1}=y_{i}+{{f(x_{i},y_{i})+f(x_{i+1},y_{i+1}^{0})} \over 2}h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0a2f90cbb3c6e311f352bde1f5b849c2851bd25e)
معادله بالا، معادله اصلاح گر (Corrector) نامیده می شود.
این روش همان روش انتگرال گیری عددی ذوزنقه ای است که در آن:
![{\displaystyle h=x_{i+1}-x_{i}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2bcbeb15d1bffb9c684d57b6e44ab13758a8e44b)
خطای این روش نیز دقیقا همان خطای روش ذوزنقه ای است.
![{\displaystyle E_{t}=-{f''(\xi ) \over 12}h^{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/de0e44c0f872fb50f0ecb9f7b7ae1e82b9cf75f9)
در فرمول کلی به ازای
و
فرمول روش هیون حاصل می شود. می توان در روش رانگ-کوتای مرتبه دوم نیز تنها
را قرار داد.
این روش مشابه همان روش اویلر است با این تفاوت که به جای مقدار گام، به اندازه نصف گام محاسبه می شود.
![{\displaystyle k_{1}=f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d57966900f99df4fb07e16a9f8f2835507fd76f7)
![{\displaystyle k_{2}=f(x_{i}+{1 \over 2}h,y_{i}+{1 \over 2}k_{1}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dab268f21f68019133d69eda969557487b1b48cb)
![{\displaystyle y_{i+1}=y_{i}+k_{2}h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a66d0d4a114a3be29ab9d8f8c99702e3c67e4555)
در فرمول کلی، به ازای
فرمول روش نقطه میانی حاصل می شود. می توان در روش رانگ-کوتای مرتبه دوم نیز تنها
را قرار داد.
در فرمول کلی به ازای
فرمول روش رالستون حاصل می شود. این روش نیز از روش های رانگ-کوتای مرتیه دوم است که معادله آن به صورت زیر است.
![{\displaystyle k_{1}=f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d57966900f99df4fb07e16a9f8f2835507fd76f7)
![{\displaystyle k_{2}=f(x_{i}+{3 \over 4}h,y_{i}+{3 \over 4}k_{1}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a6e82a6157de0e696de40a02b42025959421a95f)
![{\displaystyle y_{i+1}=y_{i}+({{1 \over 3}k_{1}+{2 \over 3}k_{2}})h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/70ecece214418361a200d11cbf616400c838d471)
این روش بسیار کم کاربردتر از مرتبه چهارم می باشد. فرمول این روش به صورت زیر است.
![{\displaystyle k_{1}=f(x_{i},y_{i})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d57966900f99df4fb07e16a9f8f2835507fd76f7)
![{\displaystyle k_{2}=f(x_{i}+{1 \over 2}h,y_{i}+{1 \over 2}k_{1}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dab268f21f68019133d69eda969557487b1b48cb)
![{\displaystyle k_{3}=f(x_{i}+h,y_{i}-k_{1}h+2k_{2}h)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f7f6985c28e40ba9caa397b05a956231764d5990)
![{\displaystyle y_{i+1}=y_{i}+{1 \over 6}({k_{1}+4k_{2}+k_{3}})h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/75075c7ee5d83135b6a1d28310ab90ff4a7e7845)
رانگ-کوتای مرتبه چهارم
[ویرایش]
برای بدست آوردن مقدار تابع y در یک واحد زمان جلوتر از رابطه زیر استفاده میشود.
![{\displaystyle y_{i+1}=y_{i}+{h \over 6}(k_{1}+2k_{2}+2k_{3}+k_{4})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/45d930533e9930534a29cacab6ceb1bbfcd0c689)
که در آن:
![{\displaystyle {\begin{aligned}k_{1}&=f\left(x_{i},y_{i}\right)\\k_{2}&=f\left(x_{i}+{h \over 2},y_{i}+{h \over 2}k_{1}\right)\\k_{3}&=f\left(x_{i}+{h \over 2},y_{i}+{h \over 2}k_{2}\right)\\k_{4}&=f\left(x_{i}+h,y_{i}+hk_{3}\right)\\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cd29450a4a0710f6c3f74f299423a5e4df0805ab)
رانگ-کوتای مرتبه چهار متعلق به خانواده رانگ-کوتاهای صریح می باشد.
حل معادلات دیفرانسیل درجات بالاتر به روش رانگ-کوتا
[ویرایش]
برای حل معادلات درجه بالاتر به روش رانگ-کوتا از دستگاه معادلات استفاده می کنیم به این ترتیب که هر مرتبه از معادله را به صورت یک متغیر جدید تعریف کرده و به این صورت، با کاهش هر مرتبه، یک معادله دیفرانسیل درجه اول به صورت مفروض در روش رانگ-کوتا تعریف می شود. سپس دستگاه معادلات درجه اول را به روش رانگ-کوتا می توان حل نمود.
![{\displaystyle p_{n+1}y^{(n)}+p_{n}y^{(n-1)}+...p_{3}y''+p_{2}y'+p_{1}y+p_{0}=0}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae2a2e442158b1934cbd915d1e2c54efeebfbb57)
![{\displaystyle e_{1}:y'=z_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b5cfa74f2e9a99b6fd2fb02ed201bd4542ec6037)
![{\displaystyle e_{2}:z'_{1}=z_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b22b0813405c9267825758a213e15b34f7ed94ae)
![{\displaystyle e_{3}:z'_{2}=z_{3}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1f5dd7d0a8ffd2bf39c5788c4c7aca8fa29283ea)
![{\displaystyle .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1e44e5c7036d244e546db1167ed820d947fcd63a)
![{\displaystyle .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1e44e5c7036d244e546db1167ed820d947fcd63a)
![{\displaystyle e_{n}:z'_{n-1}=z_{n}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/65a216f93f8fa1fcb4f1e58e0a0939bc84278f52)
حل یک نمونه معادله دیفرانسیل به روش رانگ-کوتای مرتبه چهارم
[ویرایش]
مثال: معادله دیفرانسیل زیر را به روش مرسوم رانگ-کوتای مرتبه چهارم حل می کنیم.
![{\displaystyle y'={{5x^{2}-y} \over {e^{x+y}}},y(0)=1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b1fd64c1a221ad868708f1dcac622f518ef24443)
![{\displaystyle k_{1}=hf(x,y)=0.1{{5(0)^{2}-1} \over {e^{0+1}}}=-0.03678794411}](https://wikimedia.org/api/rest_v1/media/math/render/svg/59ff4b7631fe7b1282dbd1171bd103186e45e7e2)
![{\displaystyle k_{2}=h{f(x+{h \over 2},y+{k_{1} \over 2})}=-0.03454223937}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b94c3d35617e3f884b8a0dcbd8f3a835663877b3)
![{\displaystyle k_{3}=h{f(x+{h \over 2},y+{k_{2} \over 2})}=-0.03454345267}](https://wikimedia.org/api/rest_v1/media/math/render/svg/44023c015ecbf983d3f07b791ac2f4d3152e45a7)
![{\displaystyle k_{4}=h{f(x+h,y+k_{3})}=-0.03154393258}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8a27d7a81e49c39fcc825d55d226423db760beaf)
![{\displaystyle y(x+h)=y(x)+{1 \over 6}(k_{1}+2k_{2}+2k_{3}+k_{4})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fa65c924bee65b1a04f9c68ad7e9b05b264b4838)
![{\displaystyle =1+{1 \over 6}(-0.03678794411+2(-0.03454223937)+2(-0.03454345267)-0.03154393258)=0.9655827899}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cbf52ca3a8c3295839909776b9bb514727e2a061)
با تکرار روش بالا سایر مقادیر تابع نیز به ازای سایر xها به دست می آید.
این روش برای افزایش دقت محاسبات استفاده می شود. در این روش ابتدا با استفاده از روش رانگ-کوتا یک بار با گام
و یک بار با گام
مقدار
محاسبه شده و سپس به جای
مقدار
را جایگذاری می کنیم که در آن:
و سپس مقدار خطای تخمین را با آن جمع می کنیم. به این صورت دقت محاسبات افزایش می یابد.
1- Press et al. 2007, p. 907
2-Steven Chapra, Applied Numerical Methods with MATLAB for Engineers and Scientists, 7th Edition, McGraw-Hill Science Engineering, 2017