چیزی که مشاهده می کنید به هر چیزی شبیه است به جز نمودار tan. دلیل این امر میل کردن tan به بی نهایت در مضارب فرد pi/2 است.
برای حل این موضوع بسادگی میتوانیم از بردارهای منطقی استفاده کنیم. بنابراین خط زیر را قبل از دستور plot به برنامه اضافه می کنیم:
این عبارت جاهایی از بردار y را که مقدار زیادی دارند را صفر میکند و نمودار به درستی مقیاس می شود.
@MatlabTips
#Fo_beginner, #For_intermediate
#Logical_vectors
نویسنده: (A-1)
برای حل این موضوع بسادگی میتوانیم از بردارهای منطقی استفاده کنیم. بنابراین خط زیر را قبل از دستور plot به برنامه اضافه می کنیم:
y = y .* (abs(y) < 1e10); % remove the big ones
این عبارت جاهایی از بردار y را که مقدار زیادی دارند را صفر میکند و نمودار به درستی مقیاس می شود.
@MatlabTips
#Fo_beginner, #For_intermediate
#Logical_vectors
نویسنده: (A-1)
🔵رسم نمودارها با کارکترهای خاص🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیش نیاز: (تسلط به کدنویسی مقدماتی)
برای: (پیشرفته)
اکثر بچه ها در کلاس از رسم نمودارهایی با کاراکترهای خاص(مثل رادیکال، دایره، یورو، حروف یونانی و ...) سوال میپرسند.
از آنجایی که رعایت این نکات در کیفیت کار تاثیر بسزایی دارد در این پست به چگونگی این کار میپردازیم.
✔️فرض کنید یک سری دادههایی از دما داریم که میخواهیم رسم کنیم و در محور دما سمبول درجه را نیز نمایش دهیم.
✔️اضافه کردن یک برچسب با سمبل درجه:
در زیر شکل این نمودار آورده شده است:
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیش نیاز: (تسلط به کدنویسی مقدماتی)
برای: (پیشرفته)
اکثر بچه ها در کلاس از رسم نمودارهایی با کاراکترهای خاص(مثل رادیکال، دایره، یورو، حروف یونانی و ...) سوال میپرسند.
از آنجایی که رعایت این نکات در کیفیت کار تاثیر بسزایی دارد در این پست به چگونگی این کار میپردازیم.
✔️فرض کنید یک سری دادههایی از دما داریم که میخواهیم رسم کنیم و در محور دما سمبول درجه را نیز نمایش دهیم.
t1 = datetime(2014,1:12,1);
temp = [0 2 12 11 15 25 23 27 25 24 12 8];
✔️اضافه کردن یک برچسب با سمبل درجه:
h = plot(t1,temp,':*');
ax = h.Parent;
title('A Year of Temperatures on the 1st of the Month')
ylabel('Degrees Celcius ^{\circ}')
در زیر شکل این نمودار آورده شده است:
حالا می خواهیم تمام اعداد روی محور yها را با سمبل درجه نمایش دهیم:
چسباندن سمبل به اعداد محور y:
>> ytl = ax.YTickLabel
ytl =
'0'
'5'
'10'
'15'
'20'
'25'
'30'
چسباندن سمبل به اعداد محور y:
ytld = strcat(ytl,'^{\circ}');
ax.YTickLabel = ytld;
✔️ حالا فرض کنید محور y ها به جای دما پول باشد. ابتدا برچسب ها را با مقادیر اولیه جایگزین میکنیم(که سمبول درجه پاک شود) و برچسب محور y نیز بروزرسانی میکنیم:
✔️برای بروز رسانی اعداد بر روی محور y میتوانید مشابه حالت قبل عمل کنید:
ax.YTickLabel = ytl;
ylabel('Cost in $')
title('Income by Month')
✔️برای بروز رسانی اعداد بر روی محور y میتوانید مشابه حالت قبل عمل کنید:
ytld = strcat(ytl,' $');
ax.YTickLabel = ytld;
✔️رسم عبارات ریاضی بر روی نمودار
سعی کنید برای این کار حتما از عبارات لتک(latex) برای ریاضی استفاده کنید و پارامتر interpreter مربوط به Text را با latex تنظیم کنید.
کد زیر گویای همه چیز است:
@MatlabTips
#For_advance
#Plot
نویسنده:(A-1)
سعی کنید برای این کار حتما از عبارات لتک(latex) برای ریاضی استفاده کنید و پارامتر interpreter مربوط به Text را با latex تنظیم کنید.
کد زیر گویای همه چیز است:
plot(magic(3))
t1 = text(1.25,5,'$$\frac{a}{b}$$');
t1.FontSize = 18;
t1.Interpreter = 'latex';
t2 = text(2.2,8,'$$\sqrt{3}$$','FontSize',32,'Interpreter','latex');
@MatlabTips
#For_advance
#Plot
نویسنده:(A-1)
🔵سیستم های دینامیکی🔵
سطح پیچیدگی:🌕🌕🌕🌕🌑
پیشنیاز:(کد نویسی متوسط)
برای:(متوسط و پیشرفته)
اولین موفقیت چشمگیر علم تجربی در قرن 17 توسط آیزاک نیوتون با معرفی قوانین حرکت اجسام و حساب دیفرانسیل و انتگرال بدست آمد. در قلب این نظریات که تا سه قرن پادشاه بی منازع علم بود مفهوم سیستم های دینامیکی قرار دارد. سیستم دینامیکی مجموعه روابطی است که اندرکنش بین دو یا چند متغیر قابل اندازه گیری را بیان می کند. نکته ی مهم در مورد سیستم های دینامیکی آن است که در آن ها تغییرات بی نهایت کوچک با هم مرتبط می شوند. همین بازی کردن با بی نهایت کوچک ها و تغییرات (نرخ تغییر آنها) سنگ بنای حساب دیفرانسیل و انتگرال است. بنابراین معادلات حاکم بر طبیعت به صورت معادلات دیفرانسیل هستند و برای یافتن آینده سیستم باید زمان های بی نهایت کوچک را با هم جمع کرد که به این کار انتگرال گرفتن می گویند.بعد ازحل معادله با داشتن شرایط اولیه می توان مسیر(trajectory) را یافت.
برای درک کلی معادلات دیفرانسیل آنها را در فضای فاز رسم می کنیم. فضای فاز یک فضای ساختگی است که تحول سیستم دینامیکی را نشان می دهد. مثلا فرض کنید یک آونگ دارید که با دو متغیر مکان(x1) و سرعت(x2) مشخص می شود. اگر از یک مکان و سرعت مشخص شروع کنید. آونگ عقب و جلو می رود و سرعت آن زیاد و کم می شود. یعنی به صورت شکل زیر
سطح پیچیدگی:🌕🌕🌕🌕🌑
پیشنیاز:(کد نویسی متوسط)
برای:(متوسط و پیشرفته)
اولین موفقیت چشمگیر علم تجربی در قرن 17 توسط آیزاک نیوتون با معرفی قوانین حرکت اجسام و حساب دیفرانسیل و انتگرال بدست آمد. در قلب این نظریات که تا سه قرن پادشاه بی منازع علم بود مفهوم سیستم های دینامیکی قرار دارد. سیستم دینامیکی مجموعه روابطی است که اندرکنش بین دو یا چند متغیر قابل اندازه گیری را بیان می کند. نکته ی مهم در مورد سیستم های دینامیکی آن است که در آن ها تغییرات بی نهایت کوچک با هم مرتبط می شوند. همین بازی کردن با بی نهایت کوچک ها و تغییرات (نرخ تغییر آنها) سنگ بنای حساب دیفرانسیل و انتگرال است. بنابراین معادلات حاکم بر طبیعت به صورت معادلات دیفرانسیل هستند و برای یافتن آینده سیستم باید زمان های بی نهایت کوچک را با هم جمع کرد که به این کار انتگرال گرفتن می گویند.بعد ازحل معادله با داشتن شرایط اولیه می توان مسیر(trajectory) را یافت.
برای درک کلی معادلات دیفرانسیل آنها را در فضای فاز رسم می کنیم. فضای فاز یک فضای ساختگی است که تحول سیستم دینامیکی را نشان می دهد. مثلا فرض کنید یک آونگ دارید که با دو متغیر مکان(x1) و سرعت(x2) مشخص می شود. اگر از یک مکان و سرعت مشخص شروع کنید. آونگ عقب و جلو می رود و سرعت آن زیاد و کم می شود. یعنی به صورت شکل زیر
حالا به این نکته دقت کنید که شما می توانستید هر نقطه ی دیگری را هم به عنوان شرایط اولیه انتخاب کنید که قاعدتا مسیر متفاوتی را طی می کرد. پس کل فضا را می توانید با این خطوط پر کنید. به صورت شکل زیر:
در این جا با نرم افزار متلب سعی می کنیم معادله دیفرانسیل زیر را با استفاده از متلب حل کنیم:
که در آن دستور syms تعریف کننده متغیر است.نتیجه اعمال solve یک سلول است که جواب های f و g در آن قراردارند. این توابع بدست آمده در معادلات اولیه صدق می کنند. به این نحوه حل، حل تحلیلی می گویند. زیرا ما توانستیم نتایج را به صورت ترکیبی صریح از توابع مقدماتی(مانند مثلثاتی، نمایی و..) بدست آوریم.
سیستم های به صورت بالا را خطی می گویند. زیرا تمامی معادلات سمت راست fi ها به صورت خطی از x1 تا xn هستند. معادلات غیر خطی زیادی هم وجود دارد. به طور مثال معادله آونگ به صورت زیر است:
syms f(t) g(t)
eqn1 = diff(f) == 3*f + 4*g;
eqn2 = diff(g) == -4*f + 3*g;
S = dsolve(eqn1, eqn2)
fSol(t) = S.f
gSol(t) = S.g
که در آن دستور syms تعریف کننده متغیر است.نتیجه اعمال solve یک سلول است که جواب های f و g در آن قراردارند. این توابع بدست آمده در معادلات اولیه صدق می کنند. به این نحوه حل، حل تحلیلی می گویند. زیرا ما توانستیم نتایج را به صورت ترکیبی صریح از توابع مقدماتی(مانند مثلثاتی، نمایی و..) بدست آوریم.
سیستم های به صورت بالا را خطی می گویند. زیرا تمامی معادلات سمت راست fi ها به صورت خطی از x1 تا xn هستند. معادلات غیر خطی زیادی هم وجود دارد. به طور مثال معادله آونگ به صورت زیر است:
در اینجا سمت راست معادله دوم به صورت Sin(x1) است که دیگر خطی نیست. حل این نوع معادلات در حالت کلی بسیار دشوار هستند و در بسیاری از مواقع راه حل تحلیلی ندارند. در این موارد مجبوریم از راه حل های عددی استفاده کنیم. در پست های بعدی بیشتر در این مورد بحث می کنیم.
@MatlabTips
#For_intermediate, #For_advance, #Dynamical_systems, #Phase_space
نویسنده: (A-2)
@MatlabTips
#For_intermediate, #For_advance, #Dynamical_systems, #Phase_space
نویسنده: (A-2)