سایت شخصی صادق سلمانی

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

مطالبی که در این سایت نوشته می‌شود به منزله تخصص من در آن‌ها نمی‌باشد، بلکه صرفاً آغازی است در مسیری طولانی برای یادگیری بهتر و عمیق‌تر.

آخرین نظرات
  • ۱۶ خرداد ۹۸، ۰۰:۲۳ - محمد
    عالی
  • ۱۴ آذر ۹۷، ۱۸:۰۶ - خ
    عالی
  • ۸ آذر ۹۷، ۲۰:۰۷ - محمد علی
    احسنت

پایتون: روش رانگ کاتا مرتبه چهارم (Runge-Kutta 4th Order)

جمعه, ۱ ارديبهشت ۱۳۹۶، ۰۱:۲۲ ق.ظ

در مسائل مقدار اولیه، مقدار تابع در نقطه شروع داده می‌شود و با استفاده از روش‌های موجود مقدار آن را در سایر نقاط بدست می‌آوریم. در این صورت منحنی تغییرات متغیر تابع بر حسب متغیر مستقل قابل رسم خواهد بود.

از جمله روش‌های حل مسائل مقدار اولیه می‌توان به روش‌های تیلور، اویلر و رانگ کاتا مرتبه دوم، سوم و چهارم اشاره نمود. در کلیه این روش‌ها مختصات هر نقطه با استفاده از مختصات نقطه ماقبلش بدست می‌آید. اساس کلیه این روش‌ها، استفاده از سری تیلور است.

تذکر: برای مطالعه توضیحات بیشتر به کتاب «کاربرد ریاضیات در مهندسی شیمی - روش‌های عددی» نوشته دکتر خراط مراجعه کنید.

خلاصه روش رانگ کاتا مرتبه چهارم:


در اینجا قصد دارم به بررسی یک مثال به روش رانگ کاتا - 4 بپردازم. قبلاً این مثال را به روش‌های اویلر و رانگ کاتا-2 نیز حل کرده‌ام (+ و +)

مثال:

معادله دیفرانسیل زیر را با استفاده از روش رانگ کاتا مرتبه چهارم و برای حالت h = 0.5 حل کنید و مقدار تابع را تا x = 3.5 محاسبه کنید.


حل با استفاده از زبان برنامه نویسی پایتون (کدنویسی در محیط Spyder):
import numpy as np
from matplotlib import pyplot as plt
x0=1
y0=1
xf=3.5
n=6
h=(xf-x0)/(n-1)
x=np.linspace(x0,xf,n)
y=np.zeros([n])
y[0]=y0
for i in range(1,n):
    k1=h*x[i-1]*y[i-1]**(1/3)
    k2=h*(x[i-1]+0.5*h)*(y[i-1]+0.5*k1)**(1/3)
    k3=h*(x[i-1]+0.5*h)*(y[i-1]+0.5*k2)**(1/3)
    k4=h*(x[i-1]+h)*(y[i-1]+k3)**(1/3)
    y[i]=y[i-1]+(1/6)*(k1+2*k2+2*k3+k4)
for i in range(n):
    print(x[i],y[i])
plt.plot(x,y,'o')
plt.xlabel('value of x')
plt.ylabel('value of y')
plt.title('Approximate Solution with RK-4 Method')
plt.show()
نتایج:

1.0      1.0
1.5       1.6860902679
2.0     2.82824535285
2.5     4.56006327111
3.0     7.02071665246
3.5     10.3518481736


نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی