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

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

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

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

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

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

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

۲ مطلب با کلمه‌ی کلیدی «معادلات دیفرانسیل معمولی» ثبت شده است


اولین مرحله در مطالعه یک فرایند با شبیه‌سازی کامپیوتری، توسعه یک مدل برای سیستم واقعی است.

هنگام مطالعه حرکت یک شیء کوچک که تحت تأثیر نیروی گرانش زمین قرار دارد، ما ممکن است که بتوانیم نیروی اصطکاک هوا را نادیده بگیریم. در این حالت، مدل ما یک تقریبی از سیستم واقعی خواهد بود. معمولاً این مدل این اجازه را به ما خواهد داد تا رفتار سیستم (به فرم تقریبی) را از طریق معادلات ریاضی بیان کنیم، که اغلب شامل معادلات دیفرانسیل معمولی (ODE) یا معادلات دیفرانسیل با مشتقات جزئی (PDE) هستند.

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

از سوی دیگر، در مواردی که نمی‌توان آن‌ها را به خوبی در چارچوب ریاضیات شرح داد و به رفتار اشیائی وابسته هستند که اقدام آن‌ها را نمی‌توان به طور قطعی پیش‌بینی نمود (مانند انسان‌ها)، یافتن یک مدل خوب برای توصیف واقعیت بسیار مشکل است. به عنوان یک قاعده کلی، در این رشته‌ها معادلات حاصله را ساده‌تر می‌توان حل نمود، اما یافتن آن‌ها سخت‌تر است و اعتبار یک مدل باید بیشتر مورد سوال قرار بگیرد. برخی از مثال‌های معمول عبارتند از تلاش برای شبیه‌سازی اقتصاد، استفاده از منابع طبیعی و غیره.

تا کنون، ما فقط در مورد توسعه مدل‌ها برای توصیف واقعیت بحث کرده‌ایم، و استفاده از این مدل‌ها لزوماً شامل کامپیوتر یا کار عددی نیست. در حقیقت، اگر معادله یک مدل بتواند به صورت تحلیلی حل شود، باید این کار را انجام داد و راه حل معادله را نوشت.

در عمل، تقریباً هیچ معادله مدل یک سیستم مورد نظر را نمی‌توان به صورت تحلیلی حل کرد، و این جایی است که کامپیوتر وارد می‌شود: با استفاده از روش‌های عددی، ما حداقل می‌توانیم مدل را برای یک مجموعه خاص از شرایط مرزی مطالعه کنیم.

به طور واضح مطلوب است که راه‌های تحلیلی را در هر کجا که امکان‌پذیر است پیدا کنید، اما تعداد مسائلی که این امکان وجود دارد کم هستند. معمولاً نتایج عددی یک شبیه‌سازی کامپیوتری بسیار مفید است (با وجود کاستی‌های نتایج عددی در مقایسه با روش تحلیلی)، زیرا این تنها راه ممکن برای مطالعه سیستم است.

نام مدلسازی کامپیوتری از دو مرحله برگرفته شده است: 1) مدلسازی؛ یعنی پیدا کردن توصیف مدل یک سیستم واقعی و 2) حل معادلات مربوط به مدل با استفاده از روش‌های محاسباتی، زیرا این تنها راه حل معادلات می‌باشد.

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

در یک محیط تحقیقاتی – هم در دانشگاه و هم در صنعت – اغلب به نقطه‌ای می‌رسند که پکیج‌های موجود قادر به انجام شبیه‌سازی مورد نظر نمی‌باشند. در این حالت، مهارت‌های برنامه‌نویسی مورد نیاز است.

درک نحوه ایجاد یک شبیه‌سازی کامپیوتری تقریباً به این صورت است: 1) یافتن مدل (اغلب به معنای یافتن معادلات درست می‌باشد)؛ 2) دانستن اینکه چگونه این معادلات را به صورت عددی حل کنیم؛ 3) پیاده‌سازی روش‌هایی برای محاسبه این راه حل‌ها (این برنامه‌نویسی است).

 

 

۰ نظر ۰۵ شهریور ۹۶ ، ۰۹:۲۱
صادق سلمانی

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

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

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

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


در اینجا قصد دارم به بررسی یک مثال به روش رانگ کاتا - 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


۰ نظر ۰۱ ارديبهشت ۹۶ ، ۰۱:۲۲
صادق سلمانی