![]() |
ترفند متلب: چگونگی حل معادلات دیفرانسیل معمولی در متلب
ترفند متلب: چگونگی حل معادلات دیفرانسیل معمولی در متلب
یکی از مهم ترین مسائلی که احتمالا شما در ریاضیات کاربردی و علوم مهندسی با آن مواجه شوید، نیاز به حل معادلات دیفرانسیل به صورت عددی است. این کار برای شبیه سازی و تحلیل سیستم های دینامیکی بسیار حیاتی است. بارها از طریق ایمیل ها با نظراتی که به متلب سایت ارسال شده است، در خصوص حل معادلات دیفرانسیل با مرتبه بیشتر از یک سئوالاتی توسط مراجعین محترم مطرح شده است. در این پست قصد داریم تا مطالبی در خصوص چگونگی حل معادلات دیفرانسیل با مرتبه بیش از یک توسط نرم افزار متلب، ارائه نماییم. در ادامه مطلب با ما همراه باشید. یک معادله ساده سیستمی که در این مقاله قصد حل معادله دیفرانسیلی مربوط به آن را داریم، سیستم جرم و فنر خطی است که یک سیستم درجه دو خطی و تغییر ناپذیر با زمان است. فرض بر این است که محور حرکت سیستم مورد بررسی افقی است و از این رو نیروی گرانش تاثیری بر روی عملکرد سیستم ندارد. اگر m جرم و k نشان دهنده ضریب سختی فنر باشد، معادله حرکت سیستم با توجه به قوانین فیزیکی نیوتون و خواص ذاتی جرم و فنر، به صور زیر خواهد بود:http://www.matlabsite.com/wp-content...5f51b69f30.png که در آن f نشان دهنده نیروی خارجی وارد شونده به سیستم جرم و فنر است. ما برای حل این معادله دیفرانسیل بایستی مقادیر عددی پارامترهای m وk و همچنین تابع نیروی خارجی f(t را داشته باشیم. همچنین باید مکان اولیه و سرعت اولیه نیز بایستی معلوم و معین باشند. فرض می کنیم که مقدار نیروی خارجی وارد شده بر سیتسم در تمام زمان ها برابر با صفر باشد؛ یعنی f=0 همچنین فرض می کنیم که مکان اولیه برابر با صفر و سرعت اولیه برابر با یک باشد. به عبارت دیگر سیستم مورد بررسی به صورت زیر توصیف می شود: http://www.matlabsite.com/wp-content...0f2dcb90df.png http://www.matlabsite.com/wp-content...9bb74442d4.pnghttp://www.matlabsite.com/wp-content...6456ae7e7b.png کاهش درجه معادله دیفرانسیل برای حل معادله دیفرانسیل درجه دو می بایست ابتدا آن را به دستگاهی از دو معاله درجه یک تبدیل کنیم. در حالت کلی برای حل معادله دیفرانسل درجه می بایست آن را به صورت دستگاهی از معادلات درجه یک با n معادله تبدیل نمود. فرض کنیم که متغیر جدیدی به صورت زیر تعریف شده باشد: http://www.matlabsite.com/wp-content...18d25ddfbc.png به عبارت دیگر y نشان دهنده سرعت حرکت جرم است. می توان به راحتی نشان داد که: http://www.matlabsite.com/wp-content...b6e9e9eab2.png حال معادله دیفرانسیل مورد بررسی را با استفاده از متغیرهای جدید بازنویسی می کنیم. نتیجه بازنویسی در ادامه آمده است: http://www.matlabsite.com/wp-content...46884152b4.png http://www.matlabsite.com/wp-content...10fc620f89.png که همان فرم فضای حالت سیستم جرم فنر ساده است. شرایط اولیه این سیتم نیز عبارتند از: http://www.matlabsite.com/wp-content...d2404768c4.png و http://www.matlabsite.com/wp-content...acff88c564.png . برای راحتی کار و همچنین ملموس تر کردن معادلات به دست آمده، متغیر برداری جدیدی را به صورت زیر تعریف می کنیم. http://www.matlabsite.com/wp-content...281d7c916d.png در این حال معادلات فضای حال به صورت زیر قابل بازنویسی هستند: http://www.matlabsite.com/wp-content...17a34498e7.png پیاده سازی با استفاده از متلب مقادیر جرم و ضریب فنری را وارد می کنیم: كد:
m = 1; كد:
springmass = @(t,z) [z(2); -k/m*z(1)]; كد:
z0 = [0; 1]; كد:
tspan = [0 10]; كد:
[t, z] = ode23(springmass,tspan,z0); كد:
plot(t,z(:,1)); و در ادامه سرعت متحرک را ترسیم می نماییم. كد:
plot(t,z(:,2)); مشاهده می شود که سیستم از شرایط اولیه داده شده شروع به حرکت کرده است و با یک رفتار نوسانی نا میرا (به دلیل عدم وجود اصطکاک و دمپر) به کار خود ادامه داده است. نحوه شبیه سازی سیستم های مرتبه بالاتر و همچنین سیستم های غیر خطی نیز کم و بیش مشابه با کاری است که در مورد سیستم جرم و فنر انجام دادیم. در واقع مطالبی که در این پست به آن ها اشاره نمودیم، یک الگوی کلی برای حل و شبیه سازی معادلات دیفرانسلی معمولی یا Ordinary Differential Equations و یا به اختصار ODE ها را فراهم می آورند. امیدواریم این مطلب برای شما مفید باشد و پاسخگوی سئوالات و مشکلات شما در زمینه شبیه سازی سیستم های دینامیکی و حل عددی معادلات دیفرانسیلی باشد. منبع: چگونگی حل معادلات دیفرانسیل معمولی در متلب |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۴۲ بعد از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.