MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
بررسی نقطه تعادل در سیستم های مختلف بسیار پر اهمیت است. زیرا حتی اگر ما ندانیم چگونه معادلات را باید حل کنیم، یافتن نقطه تعادل به ما نشان می دهد عاقبت کار سیستم چه خواهد شد. در قسمت های بعدی به مثال های جالب تری میپردازیم. همچنین سعی میکنیم به مطالب کاربردی و جالب تری از مبحث سیستم های دینامیکی بپردازیم.

@MatlabTips
#For_intermediate, #For_advance
#Differential_equations, #Dynamical_systems, #Equilibrium_point
نویسنده:(#A-2)
🔵حساب بی نهایت کوچک ها🔵
سطح پیچیدگی:🌕🌕🌕🌕🌕
پیش‌نیاز:(کد نویسی متوسط و پیشرفته)
برای:(متوسط و پیشرفته)


همانطور که قبلا هم اشاره شد حساب دیفرانسیل و انتگرال به عنوان ابزاری برای حل معادلات مکانیک توسعه یافت. در آن زمان باور بر این بود که مکانیک سماوی و مکانیک زمینی از قوانین متفاوتی پیروی می کنند. آیزاک نیوتون با نشان دادن اینکه تمامی اجسام در طبیعت صرفنظر از اندازه و مکانشان از قوانین سه گانه او پیروی می کنند این باور کهن که از زمان ارسطو برجای مانده بود را باطل کرد. او این ادعا را با پیش بینی های دقیقی از حرکت اجرام و سیارات به اثبات رساند. اما نکته ای که کمتر به آن پرداخته شده است این است که حتی خود نیوتون به دشوار بودن حل معادلاتش برای سیارات منظومه شمسی پی برد به همین خاطر اثر سیارات بر هم را ناچیز درنظر گرفت و حرکت همه آن ها را متاثر از جرم خورشید محاسبه کرد. این ساده سازی لطمه ی چندانی به پیش بینی ها وارد نکرد.
پیچیدگی مساله در این بود که معادلات دیفرانسیل را می شد برای دو جسم به صورت تحلیلی حل کرد اما حل کردن آن برای سه جسم غیر ممکن به نظر می رسید! کاخ باشکوهی که نیوتون از معادلاتش ساخته بود به نظر شکننده تر از نگاه اول میرسید زیرا قادر به حل مساله برای حتی 3 جسم تقریبا هم جرم نبود!
اگر معادلات نیوتون را برای سه جسم بنویسیم به صورت زیر می شوند:
که در آن r با دو نقطه روی آن مشتق دوم r و به معنای شتاب است. M ها جرم اجسام هستند و G ثابت جهانی گرانش است. اگر بخواهم یکی از این معادلات را در متلب بنویسم می توانم به صورت زیر عمل کنم:

dx12=X2-X1;
dy12=Y2-Y1;
dz12=Z2-Z1;

r12=[dx12 dy12 dz12];
r13=[dx13 dy13 dz13];

rm12=(dx12^2+dy12^2+dz12^2)^(1/2);
rm13=(dx13^2+dy13^2+dz13^2)^(1/2);


rh12=r12/rm12;
rh13=r13/rm13;


a1=G*((m2/rm12^2)*rh12+(m3/rm13^2)*rh13);


چند نکته در مورد این نحوه ی کد زنی وجود دارد:
a نشان دهنده شتاب و برابر با همان مشتق دوم است.
rh ها فاصله نرمال شده هستند و بر rm تقسیم شده اند بنابراین در معادله آخر یکی از توان های مخرج در rh محاسبه شده است.
به جای فاصله معمول از نمادگذاری dx استفاده کرده ایم زیرا می خواهیم معادلات را در دیفرانسیل های کوچک حل کنیم.بنابراین dx ها در کد اصلی با اندیس c تغییر می کنند.(یک دنباله از دیفرانسیل ها!)


در اینجا این معادله را نمی خواهیم حل کنیم زیرا اصلا راه حل تحلیلی ندارد به جای آن به صورت عددی آن را حل می کنیم برای اینکار با هر بار محاسبه شتاب، سرعت و مکان بعدی را با فرمول های زیر(فیزیک دبیرستان) محاسبه کرده و به دیفرانسیل زمانی بعدی می رویم:

X1(c+1)=X1(c)+VX1(c)*dt+(1/2)*a1(1)*dt^2;
VX1(c+1)=VX1(c)+a1(1)*dt;


روح معادلات دیفرانسیل در درک معادلات در بی نهایت کوچک ها است. معادلات بالا همان معادلات حرکت هستند که برای زمانهای کوچک dt(دیفرانسیل t) نوشته شده اند.
برای درک کامل برنامه هایی که نوشته شده و چون حجم آن ها زیاد است رادر این جا نمی آوریم بلکه در فایل .m قرار می دهیم تا دانلود کنید و خودتان بررسی کنید.
برای راحتی شما حالت های مختلف از سه جسم با مکان ها و وزن های اولیه متفاوت قرار داده ایم که تست کنید. خودتان هم می توانید حالت های دلخواه را تنظیم کنید. به طور مثال حالت اول به صورت زیر می شود:
با دیدن این حالت برای سه جسم متوجه می شوید که تا چه حد سیستم سه جسم پیچیده و به چه دلیل به مدت 3 قرن دانشمندان را سرگرم خود کرده بود. پوانکاره ثابت کرد که معادلات حرکت سه جسم راه حل تحلیلی ندارند و فقط به صورت عددی حل می شوند. معادلات حرکت سه جسم اهمیت زیادی دارند و ما را به مباحث بعدی رهنمون می کنند.

@MatlabTips
#For_intermediate, #For_advance
#Differential_equations, #Dynamical_systems, #The_calculus
نویسنده:(#A_2)
🔵انیمیشن و خروجی ویدئو با متلب🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش‌نیاز:(کد نویسی پایه)
برای:(همه)


برای بسیاری از دوستانی که کانال را دنبال می کنند ممکن است این سوال پیش آمده باشد که چگونه ما خروجی هایی به صورت فیلم از متلب میگیریم. در این قسمت سعی میکنیم با مثال این تکنیک را به شما آموزش دهیم.

⚠️قبل از هر چیزی به این نکته توجه کنید که متلب در طول چند نسخه اخیر خود تغییرات زیادی برای خروجی ویدئو ایجاد کرده است بنابراین ممکن است کدهای زیر در نسخه های قدیمی تر اجرا نشود. از طرفی خروجی های انیمیشن متلب هنوز با حالت بهینه فاصله دارند بنابراین باید کارت گرافیک متوسطی داشته باشید تا تجربه خوبی از کار داشته باشید. برنامه های زیر بر روی متلب 2015 و با کارت گرافیک 512 قابل اجرا هستند.⚠️

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

v1 = VideoWriter('video.avi');
open(v1);

t = 0:pi/50:10*pi;
for i=1:500

st = sin(i*t/100);
ct = cos(i*t/100);
plot3(st,ct,t)

frame = getframe;
writeVideo(v1,frame);

end

close(v1)


حتما شما می توانید خروجی های زیباتری تولید کنید. در پایان برای تبدیل فایل avi به gif کافی است از یک نرم افزار converter استفاده کنید. این ابزار متلب می تواند برای مدتی شما را سرگرم کند.

@MatlabTips
#For_intermediate, #For_beginner
#Video_recording, #Video
نویسنده:(#A_2)
for more info, contact @jabbarkamali
🔵تبدیل لاپلاس🔵
سطح پیچیدگی:🌕🌕🌕🌕🌑
پیش‌نیاز:(کد نویسی متوسط و پیشرفته)
برای:(متوسط و پیشرفته)


هنگامی که ناپلئون به لاپلاس گفت:" چرا در کتابتان که سیستم سیارات و آسمان ها را به این شگرفی توضیح می دهد، نامی از خدا نبرده اید؟" لاپلاس پاسخ داد: "به آن فرض احتیاجی نداشتم!".
این روایت شاید اوج دورانی را نشان دهد که با تالیف کتاب "اصول ریاضی فلسفه طبیعی" توسط نیوتون شروع شد. ایده نیوتون آنقدر کارا بود که بسیاری از دیگر شاخه ها سعی در تقلید آن کردند. کانت سعی در سازماندهی مجدد فلسفه مانند کاری که نیوتون برای فیزیک انجام داد، کرد و مونتسکیو تفکیک پذیری قوا را در روح القوانین بر پایه ایده های نیوتون بنا نهاد. این افکار به سرعت تمام اروپا را در نوردید و به تدریج سیستم های فکری، فلسفی و در نهایت سیاسی را تغییر داد. حکومت های پادشاهی سرنگون، قدرت کلیسا محدود و مقدمات اولین حکومت های سکولار و جوامع انسان گرا در بسیاری از کشورهای اروپایی فراهم شد(ارنست کاسیرر/ فلسفه روشنگری/ یدالله موقن)
اما لاپلاس چه چیز جدیدی را در کتابش معرفی کرده بود. در واقع او نوآوری های زیادی داشت که فراتر از مکانیک پیش رفت و بعدها تحت عنوان نظریه کنترل معرفی شد. اما آنچه اینجا می خواهیم معرفی کنیم تبدیل لاپلاس است که نحوه ی جدیدی از نمایش علاوه بر نمایش فضای حالت که به آن پرداختیم را توسعه می دهد. اگر یک سیستم خطی را به صورت زیر در نظر بگیریم:
که در آن x(t) یک بردار n تایی است و وضعیت سیستم را در زمان t نشان می دهد، u(t) یک بردار m تایی است که ورودی را مشخص می کند و بردار p تایی y(t) هم خروجی است. به این ترتیب ماتریس A یک ماتریس n*n تایی است و به ماتریس سیستم شناخته می شود. و ماتریس های B، C و D هم به ترتیب اندازه های n*m ، p*n و p*m دارند. در واقع اگر معادله بالا را باز کنیم داریم:
این نحوه نمایش قدرتمند است و تمامی جنبه هایی که ما از یک سیستم خطی ( وتغییر ناپذیر نسبت به زمان) میخواهیم را دارد. به طور مثال اگر سیستم ساده جسم متصل به فنر را در نظر بگیریم معادلات آن به صورت زیر خواهند بود(این معادلات به صورت گسسته در آمده اند)( معادلات از قوانین نیوتون به دست آمده اند و با جزییات آنها در اینجا کاری نداریم)
که در آن x یک دوتایی به صورت x=(r,v) است که مکان و سرعت جسم را نشان می دهند. اگر بخواهیم در 50 فریم زمانی معادله بالا را در متلب حل کنیم کافی است مانند سابق دیفرانسیل های زمانی کوچکی گرفته و معادله را به صورت زیر حل کنیم. در این جا u ورودی به صورت یک ضربه است که در زمان صفر مقدار 1 دارد و پس از آن صفر است.
Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);

A = [cos(dt) sin(dt);-sin(dt) cos(dt)];
B = [1-cos(dt);sin(dt)];
C = [-1 0];
D = 1;

u = [1 zeros(1,N-1)];

x = [0;0];
for k = 1:N
y(k) = C*x + D*u(k);
x = A*x + B*u(k);
end

stem(t,y,'v','filled')
xlabel('t')


که خروجی آن به صورت زیر خواهد بود:
تبدیل لاپلاس روشی جالب برای ساده سازی مساله است به این صورت که شما معادلات دیفرانسیل مساله را به یک تابع به نام تابع تبدیل، تغییر می دهید و در آن ورودی شما(یک پالس به جسمِ متصل به فنر) یک خروجی (به صورت حرکت جسمِ متصل به فنر) خواهد داشت. در واقع هر سیستم دینامیکی (با شرایط LTI) را می توان به صورت زیر نشان داد: