آموزش برنامه نویسی متلب
موضوع:ماتریس ها در برنامه نویسی متلب
جلسه: هفتم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
در جلسه ششم آموزش برنامه نویسی متلب کار با آرایه ها را شروع کردیم، و گفتیم که آرایه ها همان بردارها یا ماتریس های یک بعدی هستند. بنابراین دستورات گفته شده در جلسه قبل برای ماتریس ها نیز صدق میکند ولی یک سری تفاوت هایی نیز وجود داشته که در یک جلسه جداگانه قصد داریم به آن بپردازیم.
به دو شکل میتوان یک ماتریس را مستقیما تعریف نمود:
>>m = [1 2 3;4 5 6;7 8 9] m = 1 2 3 4 5 6 7 8 9 >>m =[1 2 3 4 5 6 7 8 9] m = 1 2 3 4 5 6 7 8 9 |
حالت اول با استفاده از ";" و حالت دوم با فشردن Enter. در حالت دوم نیز میتوان با ایجاد چند tab درایه های هر ستون را زیر هم قرار داد، این کار صرفا به خوانایی و زیبایی دستور کمک میکند و در هر حالت تفاوتی در نتیجه ایجاد نمیکند:
>>m =[1 2 3 4 5 6 7 8 9] m = 1 2 3 4 5 6 7 8 9 |
بین درایه ها نیز میتوان به جای فاصله از "," استفاده کرد.
ترانهاده ی ماتریس m نیز بدین شکل خواهد بود:
>>m' ans = 1 4 7 2 5 8 3 6 9 |
برای جمع، تفریق، ضرب، تقسیم و حتی توان درایه ای(نه ماتریسی که در نظریه ماتریس ها مطرح می-شود) از عملگرهای +.، -.، *.، /. و ^. به ترتیب استفاده میشود.
مثال:
>>m = [1,2,3;1,2,3;1,2,3]; >>n = [1,0,0;0,1,0;0,0,1]; >>m,n m = 1 2 3 1 2 3 1 2 3 n = 1 0 0 0 1 0 0 0 1 >>m .* n ans = 1 0 0 0 2 0 0 0 3 >>m .^ 2 ans = 1 4 9 1 4 9 1 4 9 |
در این حالت باید ابعاد دو ماتریس دقیقاً برابر باشند. اما برای ضرب و تقسیم و توان ماتریسی نیازی به "." قبل از عملگر نیست. به شرط درست بودن ابعاد ماتریس ها این عملیات قابل انجام است.
مثال:
>>m = [1 2 3;4 5 6] m = 1 2 3 4 5 6 >>n = [1 1;2 2;3 3] n = 1 1 2 2 3 3 >>m * n ans = 14 14 32 32 >>n * m ans = 5 7 9 10 14 18 15 21 27 >>m = [1,2,3;1,2,3;1,2,3]; >>m * m ans = 6 12 18 6 12 18 6 12 18 >>m ^ 2 ans = 6 12 18 6 12 18 6 12 18 |
مثال: اگر A و B به صورت زیر تعریف شده باشد،معادله Ax = B را حل نمایید.
>>A = 4 1 4 1 2 1 1 4 2 >>B = 2 1 1 1 1 4 3 3 4 |
جواب:
برای حل معادله باید دو طرف را در A-1 ضرب نماییم. پس x = A-1B. بنابراین ابتدا معکوس A را به دست آورده سپس در B ضرب میکنیم. بهتر است قبل از انجام اینکار دترمینان ماتریس A را حساب کرده تا مطمئن شویم که مخالف صفر بوده و در نتیجه A معکوس پذیر است:
>>det(A) == 0 ans = 0 پس داریم: >>inv(A)*B ans = -1.0000 -1.0000 4.0000 0.2857 0.4286 2.1429 1.4286 1.1429 -4.2857 |
- سه ماتریس []، ones(m,n) و zeros(m,n) به ترتیب ماتریس های تهی، یکه با ابعاد m*n و صفر با ابعاد m*n هستند که به شکل زیر تعریف میگردند:
>>ones(2,3) ans = 1 1 1 1 1 1 >>zeros(3,3) ans = 0 0 0 0 0 0 0 0 0 |
مطالب گفته شده پیرامون استخراج آرایه در مورد ماتریس ها نیز صادق است. ماتریس زیر را در نظر بگیرید:
m = 1 2 3 4 5 6 7 8 9 |
اگر شمارش درایه ها را از ستون اول به صورت ستونی انجام دهیم درایه پنجم برابر خواهدبود با:
m(4) ans = 2 |
برای دسترسی به درایه ها میتوان اندیس مؤلفه های آن را نیز وارد کرد:
m(2,2) ans = 5 m(end) ans = 9 |
مثال های زیر را با دقت بررسی کنید. دستورات گفته شده در جلسه قبل این بار با ماتریس فوق بررسی شده اند.
>>m(:) ans = 1 4 7 2 5 8 3 6 9 >>m(1:3) ans = 1 4 7 >>m(1,2:3) ans = 2 3 >>m(2:3,2:3) ans = 5 6 8 9 >>m([1 3],[1 3]) ans = 1 3 7 9 |
تمرین: در مثال فوق جای سطر دوم و اول را در ماتریس m تعویض کنید.
جواب:
>>m([2 1 3],[1 2 3]) ans = 4 5 6 1 2 3 7 8 9 |
آرایه اول، مربوط به اندیس سطرها و آرایه دوم اندیس ستون هاست.
برای استخراج ستون دوم علاوه بر روش های گفته شده بدین ترتیب نیز میتوان عمل کرد:
>>m(:,2) ans = 2 5 8 |
نکته: علامت ":" معادل 1:end است.
دستور find در ماتریس ها به دوشکل قابل استفاده است. حالت اول مشابه قبل:
>>find(m>=5)' ans = 3 5 6 8 9 >>m(ans) ans = 7 5 8 6 9 |
توجه: از "’" برای تبدیل به بردار سطری استفاده شده است.
ابتدا اندیس ها و سپس درایه های مربوط به هر اندیس را استخراج کردیم.
اما حالت دوم، چنانچه اندیس های سطر و ستون مؤلفه های مربوطه را بخواهیم بدین شکل عمل میکنیم:
>>[a b] = find(m>=5) a = 3 2 3 2 3 b = 1 2 2 3 3 |
-دستور diag:
>>diag(m) ans = 1 5 9 |
این دستور اگر یک ماتریس را در آرگومان بگیرد عناصر قطر اصلی را برمی گرداند.(برای ماتریس های مستطیلی نیز امتحان کنید.)
اما چنانچه یک بردار را در آرگومان بگیرد یک ماتریس قطری(ماتریسی که در آن همه درایه ها به جز قطر اصلی صفر هستند) با درایه های بردار داده شده برمی گرداند:
>>diag(ans) ans = 1 0 0 0 5 0 0 0 9 |
-دستور sum:
مجموع عناصر ستون های یک ماتریس را برمی گرداند. اگر آرگومان آن یک بردار باشد، مجموع مؤلفه های آن بردار را میدهد:
>>sum(m) ans = 12 15 18 >>d = diag(m); >>sum(d) ans = 15 |
واضح است که برای به دست آوردن مجموع کل درایه های ماتریس میتوان نوشت:
>>sum( sum(m) ) ans = 45 |
-ماتریس جادویی:
ماتریسی مربعی است که مجموع سطرها یا ستون های آن یکسان خواهد بود. برای مثال برای حالت 3 در 3:
>>magic(3) ans = 8 1 6 3 5 7 4 9 2 >>sum(ans) ans = 15 15 15 |
مجموع عناصر قطر اصلی این ماتریس نیز برابر با 15 است:
>>sum( diag( magic(3) ) ) ans = 15 |
پیروز و موفق باشید
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه
جلسه هفتم | ماتریس ها در برنامه نویسی متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |