توابع در Matlab (بخش اول)
در زندگی روزمره ماشینها، لوازم خانگی و صنعتی مختلفی مورد استفاده قرار میگیرند. انسانها جهت کاهش هزینههای زمانی و سهولت در انجام اعمال مختلف از ابزاری استفاده میکنند که پیشتر خود آنها را خلق کردهاند. برای هرکدام از این ابزار و ادوات وظیفه مشخص با توجه به توان سیستم تعریف میشود. تمامی این سیستمها ورودی و خروجی مشخصی را شامل میشوند. بطور مثال یک چرخ گوشت ورودی گوشت را میپذیرد و در خروجی گوشت چرخ شده را تحویل میدهد.
در زبانهای برنامه نویسی هم این گونه چرخ گوشتها پیدا میشود که توانایی کار سریعتر و آسانتری را به ما میدهند. بطور کلی استفاده از توابع، چه آنهایی که در کتابخانهها از پیش تعیین شدهاند و یا اینکه خود کاربر تعیین کند منجر به افزایش دقت و سهولت در امر برنامه نویسی میشود. همانطور که گفته شده یک تابع همانند یک ماشین رفتار میکند و پیش نیازهایی همچون آن دارد. برای مثال تابع قدر مطلق را درنظر بگیرید. اول اینکه این تابع از ساختاری مشخص ساخته شده است و توانایی مشخصی دارد (تولید مقدار مثبت). دوم این که ورودی مشخصی میپذیرد. و سوم اینکه خروجی قابل انتظار و مشخصی را تحویل میدهند. همچنین میتوان از این تابع بطور مکرر استفاده کرد و به سرعت پاسخ را دریافت نمود. پس تابع قدر مطلق نیز یک چرخ گوشت است!
اما هر سیستم و دستگاهی با روشی خاص تولید و تهیه میشود، لذا انتظار میرود که روشهای متعددی برای تولید توابع در متلب وجود داشته باشد.
روشهای مختلفی جهت تعریف توابع وجود دارد که هرکدام در جای خود بسیار کاربردی و مفید واقع میشوند.
تعریف تابع با دستور inline
از جمله سادهترین و سریعترین روشها برای ساخت و استفاده از یک تابع، خواه تک متغیره و خواه چند متغیر، استفاده از دستور inline است.
برای مثال چنانچه بخواهیم تابع F را متغیری از x بنامیم خواهیم داشت:
f =inline('x^2+2*x+4')
پس از اجرا قابل مشاهده است که در ابتدا نوع تابع f معرفی شد، سپس وابستگی تابع و همچنین فرمول آن به ترتیب از چپ به راست در خط دوم نمایش داده شد. چنانچه به هر دلیلی نیاز باشد تا نوع تابع، متغیرها و فرمول آن نمایش داده شود از دستورات زیر استفاده میشود.
arg=argnames(f) form=formula(f)
برای تعریف تابع وابسته به دو یا چند متغیر نیز کافیست که تابع را همانند قبل تعریف کنیم.
f =inline('x^2+y^2+2*x+4'); arg=argnames(f) form=formula(f)
اگر همانند قبل متغیرها و رابطه ی اصلی تابع را مورد بررسی قرار دهیم، متوجه خواهیم شد که تابع از دو متغیر x و y تبعیت میکند.
چنانچه دستور inline متغیرهای مورد نظر را برنمیگرداند و یا اینکه متغیر های تابع به اشتباه قرار میگیرند، میتوان برای تعریف تابع از روش زیر با تفکیک متغیرها استفاده نمود.
f =inline('x^2+y^2+2*x+4','x','y');
در نهایت تابع با تفکیک متغیرها تعریف شده است و قابل استفاده میباشد.
برای استفاده از توابع تعریف شده بوسیله inline باید این نکته را درنظر گرفت که ورودی تابع چه نوع متغیری است.
۱- عدد
در صورتی که ورودی عددی برای تابع تعریف شده داشته باشیم به شکل زیر عمل میکنیم.
f =inline('x^2+2*x+4') f(1)
در خروجی خواهیم داشت:
اگر تعداد متغیرهای تابع از یک بیشتر باشد نیز به شکل زیر عمل میکنیم.
f =inline('x^2+y^2+2*x+4','x','y'); f(1,2)
ترتیب متغیر ها نیز بر اساس نوع تعریف آن ها در متن تابع inline میباشد.
۲-ماتریس
اگر ورودی مد نظر برای تابع تعریف شده توسط inline ماتریس باشد آنگاه یا باید در تعریف اولیه توسط تابع inline تغییراتی صورت گیرد ویا اینکه قبل از هر اپراتور اعمال ریاضی همچون ضرب،تقسیم، توان و… از علامت ”.” استفاده کنیم.
چنانچه قصد استفاده از روش اول را داشته باشیم باید از دستور vectorize به شکل زیر استفاده نماییم.
f =inline(vectorize('x^2+2*x+4'),'x') a=[1 2 3 4]; f(a)
در محیط Command Window نتایج را مشاهده خواهیم کرد.
اگر به خط سوم دقت کنیم، خواهیم دید که قبل از اپراتورهای اعمال ریاضی بجز عمل جمع یک نقطه قرار گرفته است. هنگامی که در تعریف، دستور vectorize استفاده میشود، بطور خودکار تابع برای استفاده از ماتریس ها آماده میشود و شکل کلی رابطه اصلی دستخوش تغییرات خواهد شد.
این توانایی برای کاربر هم وجود دارد که بدون استفاده از دستور vectorize رابطه را برای ورودی ماتریسی آماده سازی کند.
f =inline('x.^2+y.^2+2.*x+4'); a=[1 2 3 4]; f(a,a)
کاربر میتواند ساختار تابع را نیز به کاراکتر (Char) تغییر دهد.
f =inline('x.^2+y.^2+2.*x+4'); char(f)
بطور کلی در این مقاله پیرامون توابع و نحوه تعریف آنها با استفاده از تابع inline صحبت شد. تابع مذکور ورودی های عدد و ماتریس را میپذیرد که هر کدام را با تعریف مخصوص خود میتوان دریافت نمود. در ادامه با تعریف دسته دیگر از توابع در Matlab با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.