MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
کد برنامه:
v = -2:0.2:2;
[x,y] = meshgrid(v);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(x,y,z)
hold on
quiver(v,v,px,py)
hold off
بردار گرادیان به همراه کانتور
Forwarded from هفشمبه
نوروز بمانید که ایّام شمایید!
آغاز شمایید و سرانجام شمایید!

آن صبح نخستین بهاری که ز شادی
می آورد از چلچله پیغام، شمایید!

خورشید گر از بام فلک عشق فشاند،
خورشید شما، عشق شما، بام شمایید!

عشق از نفس گرم شما تازه کند جان
افسانه ی بهرام و گل اندام شمایید!

ایّام ز دیدار شمایند مبارک
نوروز بمانید که ایّام شمایید!

#مولانا
@hafshambe
🔵دستوری به نام quiver🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
پیش نیاز: (آشنایی با توابع ساده در متلب)
برای: متوسط
📝هدف از این پست: (تشریح دستوری برای رسم میدان های برداری)

این یه دستور خیلی پرکاربرد توی بحث رسم مسائل مربوط به میدان های برداری است. مثل بردارهای سرعت، بردارهای میدان مغناطیسی، گرادیان، مشتقات جهتی و ... . همه ما میدونیم که برای رسم یه پیکان بر روی کاغذ به دو تا نقطه نیاز داریم. نقطه ابتدایی پیکان و نقطه انتهایی آن. این دستور هم متناسب با نقاطی که میگیرد یک سری پیکان رسم میکند. پس این دستورباید در حالت عادی 4 ورودی داشته باشد:
Quiver(x,y,u,v)

نقاط ابتدایی پیکان x,y و u,v اندازه بردارها در دو جهت x و y هستند. برای مثال دستور زیر را وارد کنید:
Quiver(1,1,1,0.5)

همچین دستوری یک بردار که از نقطه 1,1 شروع میشود و اندازه مولفه افقی آن 1 و اندازه مولفه عمودی آن 0.5 است را رسم میکند.
ممکن است براتون این سوال پیش بیاد که چرا در مولفه افقی به اندازه 0.9 رفتیم جلو و در راستای قائم 0.45؟؟ قرار ما این نبود که؟
واقعیت اینه که متلب در حالت پیش فرض این بردارها را بصورت خودکار مقیاس میکنه. در هر صورت نسبت دو مولفه یکسان خواهد بود. برای اینکه مقیاس را خودتان به صورت دستی وارد کنید، ورودی پنجمی نیاز است.
Quiver(1,1,1,0.5,1)
شما می توانید عدد 2 را به جای مقیاس قرار دهید تا طول بردار دو برابر اندازه واقعی شود.
ورودی های quiver می توانند اسکالر، بردار یا ماتریس باشند(لازم به ذکر نیست که باید ابعادشان برابر باشد). معمولا این دستور در کنار دستور meshgrid می آید. برای مثال کد زیر بردارهایی از یک میدان را میسازد که مولفه های افقی و قائم آن از توابع مثلثاتی است.
x = 0:0.1:2*pi;

y = 0:0.1:2*pi;

[x,y] = meshgrid(x,y);

u = sin(x) .* x;

v = cos(y) .* y;

l = sqrt(v.^2+u.^2);

quiver(x,y,u./l,v./l)

axis tight

در این کد l طول هر بردار است که بخش بر مولفه های بردار شده است. تا در تمام صفحه بردارها به یک اندازه دیده شوند(نرمالیزه شده اند).

سوال؟ اگر در کد بالا خط آخر را کامنت کنیم، چه اتفاقی می افتد؟
#For_intermediate , #quiver, #Gradient , #directional_field
@MatlabTips
🔵اندیس دهی با استفاده از بردارهای منطقی🔵
سطح پیچیدگی: 🌓🌑🌑🌑🌑
پیش نیاز: آشنایی اندک با بردار منطقی
برای: مبتدی
📝هدف از این پست:(یادگیری استفاده از ابزار قدرتمند بردارهای منطقی در متلب)

اگر بخواهید به عناصر یک بردار دسترسی پیدا کنید، چه کار میکنید؟ همه میدانیم که با یک عدد صحیح مثبت می توانیم به خانه های یک بردار اشاره کنیم.
a =1:10
a =
1 2 3 4 5 6 7 8 9 10
>> a(2)
ans =
2
>> a([1 3 2])
ans =
1 3 2

اما دستور زیر به چه معناست؟
>> a(logical([1 0 0 1]))
ans =
1 4

در اینجا با استفاده از یک بردار منطقی، المان های خاصی از این بردار را جدا کردیم. جاهایی که بردار منطقی 1 هست یعنی عنصر را بگیر و در غیر اینصورت نه.
شما میتوانید با استفاده از همین تکنیک روشی فوق العاده زیبا برای حذف یکسری المان از بردار استفاده کنید.
a(a>3)
ans =
4 5 6 7 8 9 10

با این کار توانستیم عناصر بیشتر از 3 را از بردار a جدا کنیم. حتما a>3 را در متلب اجرا کنید و با استفاده از دستور whos ببینید خروجی از چه کلاسی است.
#Logical_vectors, #For_beginner
@MatlabTips
🔵 معادلات دیفرانسیل - قسمت اول: تاریخچه‌ای مختصر 🔵
سطح پیچیدگی: 🌑🌑🌑🌑🌑
پیش نیاز: علاقه
برای: همه
📝هدف از این پست: (چگونگی به وجود آمدن چند معادله دیفرانسیل معروف)

معادلات دیفرانسیل برای اولین بار توسط نیوتن و لایب ‌نیتز و با ابداع حسابان پا به عرصه‌ وجود گذاشت. نیوتن در بخش دوم از کارش در سال 1672 میلادی سه نوع از معادلات دیفرانسیل را لیست کرد:
او این مسائل را حل کرد و بقیه با استفاده از سریهای نامتناهی این کار را انجام دادند و بحث‌هایی روی نایکتا بودن جواب‌ها نیز به وجود آمد.
ژاکوب برنویی (یا برنولی) معادله دیفرانسیل برنویی را در سال 1695 میلادی مطرح کرد. این معادله یک معادله دیفرانسیل معمولی به شکل
می باشد که لایب نیتز سال بعد آن را با ساده سازی حل نمود.
از لحاظ تاریخی، مسئله ارتعاش سیم مانند ارتعاش سیم‌های آلات موسیقی توسط دالامبر، اویلر، دانیل برنویی و لاگرانژ مورد بررسی قرار گرفت. در سال 1746 میلادی دالامبر معادله موج 1- بعدی را کشف کرد و در مدت 10 سال اویلر معادله موج 3- بعدی را کشف نود.
معادله اویلر- لاگرانژ در سال‌های 1750 توسط این دو ریاضی‌دان در ارتباط با مطالعاتشان روی مسئله tautochrone کشف گردید. این مسئله مربوط به مشخص کردن منحنی است به طوری که ذره‌های وزن‌دار روی آن به سمت نقطه ثابت در زمانی ثابت بدون توجه به نقطه آغازی سقوط کنند.
لاگرانژ این مسئله را در 1755 حل کرد و راه‌ حل خود را برای اویلر فرستاد. هردو متد لاگرانژ را توسعه بخشیدند وآن را در مکانیک به کار بستند که باعث پیدایش مکانیک لاگرانژی شد.
فوریه کارهایش را در زمینه جریان گرما در کتاب نظریه تحلیلی گرما منتشر کرد که در آن استدلال‌های خود را برپایه قانون یرمایش نیوتن گذاشته بود، یعنی جریان گرما بین دو مولکول مجاور متناسب با تغییر بسیار ناچیز دمایشان است علاوه بر این او طرح پیشنهادی خود را برای انتشار گرما در رسانا‌ها آورده است، این معادله دیفرانسیل جزئی در حال حاضر به تمامی دانشجویان فیزیکِ ریاضی تدریس می شود.
🔵توابعی با تغییرات زیاد🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش نیاز: آشنایی اندک با رسم توابع
برای: همه
📝هدف ازاین پست: آشنایی با روشی بهینه برای رسم توابع خاص

در مثال هایی که تا به اینجا در باب رسم نمودار زدیم، دارای محور x بودند که نقاط آن بصورت یکنواخت تعریف شده بود(برای مثال x=0:0.1:1). اگر بخش هایی از تابع دارای تغییرات خیلی شدید باشد، این روش به طور قطع بهینه نخواهد بود و ممکن است منجر به تولید نموداری گول زننده شود. به عنون مثال نمودار زیر را در نظر بگیرید:
x = 0.01:0.001:0.1;
plot(x, sin(1./x))

اگر من گام های x را به 0.0001 تقلیل دهم، نمودار بهتری خواهم داشت. به هرحال این دو تابع در محدوده هایx<0/04 ظاهری متفاوت دارند.
متلب تابعی به نام fplot دارد که از روشی بسیار زیبا استفاده میکند. در حالی که دستورplot تابع مورد نظر را در بازه هایی یکسان رسم میکرد، fplot در نواحی که تغییرات زیادی دارد، نقاط بیشتری را صرف میکند. کد زیر روش استفاده از این دستور را نشان میدهد.
fplot(’sin(1/x)’, [0.01 0.1])

#For_all , #Fplot
@MatlabTips
🔵پدیده‌ای به نام گیبس🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
پیش نیاز: آشنایی با سری فوریه
هدف از این پست: آشنایی با پدیده گیبس

یک موج مربعی با دوره T با استفاده از تابع زیر قابل تعریف است.