" > آموزش برنامه نویسی متلب- خطا یابی | همیار پروژه| خطایابی در کد نویسی
با ما تماس بگیرید
ساعت : 8 الی 23
09117983709 - 09330859275
(مشاوره و سفارش پروژه)
totop

آموزش برنامه نویسی متلب- خطا یابیشنبه ۲۰, اردیبهشت ۱۳۹۹

آموزش متلب در همیارپروژه

آشنایی با محیط Matlab

در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را یاد خواهیم داد. با ما همراه باشید.

آموزش متلب در همیارپروژه

خطا یابی برنامه

به کمک راه حل هایی که در ادامه بیان می نماییم شما می توانید برنامه هایتان را خطا یابی (debugging) نمایید.

  • برنامه ی خود را به بخش های کوتاه تر بخش بندی نمایید و سپس هر بخش را به صورت جداگانه امتحان کنید در این صورت امکان یافتن خطا راحتتر می باشد.
  • نتایج محاسبات انجام شده را در مرحله های میانی در حین جریان برنامه یادداشت نمایید. برای انجام این کار به راحتی و تنها با برداشتن (;) سمیکالن  از انتهای دستورات خود و یا اینکه با نوشتن نام متغیر مورد نظر انجام دهید. همچنین  شما می توانید با قرار دادن disp در مان های مشخصی از برنامه ی خود متوجه شوید که برنامه تا کدام بخش پیش رفته است.
  • تا جایی که برای شما امکان دارد از عملیات ماتریسی استفاده کنید و سعی کنید از استفاده کردن از حلقه هایی که همان کار را انجام میدهند بپرهیزید.
  • خط ها و کد نویسی هایی که شک دارید به صورت جداگانه در محیط نرم افزار متلب اجرا نمایید ترجیحا سعی کنید کدی را که نوشته اید عینا کپی پیس نمایید تا درستی و یا نادرستی محاسبات خود را ببینید.
  • کاملا توجه خود را به پیغام خطا بدهید به این معنا که خطا روی چه سطری از برنامه داده شده و بویژه دقت کنید که خطا چیست و چه معنایی دارد.
  • از امکانات و قابلیت های خطایابی موجود در نرم افزار کمک بگیرید.

پیغامهای خطا

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

تصور کنید که می خواهیم سطح PVT را بر اساس قانون گاز کامل رسم نماییم. میدانیم که داده های ورودی به برنامه که مربوط به فشار و دما هستند به صورت برداری می باشند و برنامه باید حجم ویژه گاز را محاسبه نماید و سپس سطح را رسم نماییم. بهتر می باشد که محاسبه حجم در یک تابع به صورت جداگانه انجام شود تا اگر قصد دارید محاسبه به معادله حالت دیگری نیز تکرار نمایید نیاز نباشد که برنامه را دوباره بنویسید و تنها لازم باشد که تابع محاسبه حجم را تغییر دهید فرض نمایید که برنامه اصلی وتابع مورد نیاز را به صورت زیر بنویسیم:

برنامه اصلی را با عنوان main.m ذخیره می نماییم.

و تابع را به صورت ideal.m ذخیره می نماییم.

اکنون دقت کنید که اگر برنامه ی فوق را اجرا نماییم خطایی به صورت زیر خواهد داد:

 

اگر به خطای وارده دقت کنید می بینید که اشکال از سطر ۶ برنامه اصلی که مربوط به مراجعه به تابع است گرفته شده است و در حقیقت خطا مربوط به سطر ۴ تابع و مشخصا در نحوه تقسیم دو بردار t و p وجود دارد. اگر به خاطر داشته باشید می دانیم که در عملیات ماتریسی , ابعاد ماتریس ها باید اجازه انجام چنین عملی را بدهند . در این کد نویسی با دو بردار p,t این اجازه را نداریم که عمل تقسیم را انجام دهیم و در اصل در این مساله منظور از عبارت به کار برده شده برای محاسبه نمودن حجم گاز کامل انجام محاسبات به روش ماتریسی نمی باشد .به همین دلیل سطر ۴ تابع ideal.m را به صورت زیر تغییر می دهیم ( به کار بردن تقسیم عضو به عضو به جای نوشتن به صورت ماتریسی) با این هدف که محاسبات حجم به صورت ماتریسی انجام نشود.

اما اگر مجددا برنامه را اجرا کنیم متوجه میشویم که همچنان دچار مشکل هست.

اگر تعداد مولفه های موجود بردارهای t,p را در این کد نویسی ببینیم خواهیم دید که به صورت زیر می باشد:

همانطور که مشاهده می نمایید این دو بردار هم اندازه نمی باشند بنابراین به همین دلیل است که عملیات عضو به عضو نیز نمی تواند بر روی آنها انجام شود . بنابراین در این بخش چاره ای جز ایجاد یک حلقه برای انجام محاسبات نداریم بنابراین مقدارهای حجم ویژه را بر حسب دما , هر بار در یک فشار معین , محاسبه خواهیم کرد.

این بار نیز با پیغام خطا روبرو می شویم:

 

باید توجه کنید که بردار دمای ما یک بردار سطری می باشد و به همین دلیل در سمت راست محاسبه حجم یک بردار سطری داریم . این در حالی است که در سمت چپ همان عبارت یک بردار ستونی قرار می گیرد و همین دلیل پیغام خطای ما می باشد بنابراین باید تابع ideal.m خود را باید به صورت زیر اصلاح نماییم.

حال این بار نیز باز با اجرا کردن برنامه اصلی پیغام زیر را خواهیم دید:

باز هم پیغام خطا را دیدیم اما اینبار خطا برای چیست!!! اگر دقت کنیداین پیغام خطا مربوط به تابع ideal.m نمی باشد بلکه خطا از دستوری که مربوط به رسم داده ها می باشد گرفته شده است . این گواه این است که تابع ما کار خود را به درستی انجام داده است و رفع اشکال شده است . خطایی که این بار رخ داده مربوط می شود به اشتباهی که در نام متغیر رخ داده است . متغیری v را که قبلا تعریف نموده ایم اشتباها در دستور surf  با نام vol به کار برده شده است در صورتی که ما vol  را تعریف نکرده ایم و به همین دلیل نرم افزار متلب آنرا نمی شناسد و بنابراین دچار خطا شده ایم. بنابراین این خطا را اصلاح می کنیم و بنابراین برنامه اصلی به صورت زیر خواهد بود:

با اجرا نمودن این برنامه با پیغام زیر مواجه خواهیم شد

خطای این دفعه باز هم مربوط به دستور surf و نوع معرفی آرایه ها به آن می باشد. با مراجعه نمودن به توضیحات help این دستور مشخص می شود که آرگومانهای اول و دوم این دستور می توانند بردار باشند ولی آرگومان سوم باید به صورت ماتریسی تعریف شود و در این صورت طول آرگومانهای اول و دوم باید به ترتیب برابر با تعداد ستونها و سطرهای آرگومان سوم باشد . بنابراین با توجه به این توضیحات  متغیر v باید آرگومان سوم دستور surf باشد و ضمنا با مشاهده ابعاد این متغیر :

می توانیم بگوییم که آرگومان اول باید بردار t و آرگومان دوم بردار p باشد بنابراین برنامه اصلی باید به صورت زیر اصلاح شود:

در صورت اجرای برنامه نتیجه نهایی را با هم خواهیم دید که دیگر خطایی  وجود ندارد.

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

 

نویسنده: زهرا رستمی

 


پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

حق نشر برای همیارپروژه – مرجع اصلی پروژه های متلب و پایتون محفوظ است.