ایجاد و به کار بردن توابع ریاضی در متلب

//ایجاد و به کار بردن توابع ریاضی در متلب

ایجاد و به کار بردن توابع ریاضی در متلب

گاهی اوقات شما مجبورید یه عبارت ریاضی مثل f(x)=tan(x)*cos(x)/sqrt(x)-x^2 و یا g(x,y)=sin(x)-exp(y)*log(x-y) را در چندین جای برنامه به کار ببرید پس بهتر است که  f  و یا g که یک رابطه صرفا ریاضی می باشد را به صورت تابع تعریف کنیم تا استفاده از آن راحتتر باشد. 3 راه برای این کار وجود دارد:

1- استفاده از function

2- استفاده از inline

3- استفاده از handle_function

راه اول: تابع را به صورت فانکشن می نویسید:

function out=f(x)

out= tan(x).*cos(x)./sqrt(x)-x.^2;

یا

function out=g(x,y)

out= sin(x)-exp(y).*log(x-y);

حال به راحتی می توانیم از f و g در برنامه های دیگه استفاده کنیم:

>>f(2)

>>g(5,1)

در این روش یک m فایلی به نام تابع ایجاد خواهد شد.

راه دوم: استفاده از inline : به کمک تابع inline می توان توابع ریاضی را تعریف کرد:

f(a)=sin(a)-a*cos(a-1)

>>f=inline(‘sin(a)-a*cos(a-1)’)

>>f(2)

در مورد توابع چند متغیره باید در نوشتن تابع inline دقت کنیم. اگر در هنگام نوشتن تابع inline متغیرها را به ترتیب ورودی مشخص ننمائیم خود متلب به طور پیش فرض بر اساس حروف الفبا متغیرها را ورودی می گیرد:

g(x,b)=sin(x)*cos(b)-log(b-x)/(x+b)

می خواهیم عبارت g را با inline بنویسیم. اگر به صورت زیر بنویسیم چون مشخص نکرده ایم که کدام متغیر به عنوان اولین ورودی باشد متلب به طور پیش فرض بین حروف b و x بر اساس حروف الفبا متغیر اول را b و دوم را x میگیرد یعنی g(b,x) در نظر میگیرد.

>>g=inline(‘ sin(x)*cos(b)-log(b-x)/(x+b)’)

 اما اگر بخواهیم واقعا g(x,b) شود باید خودمان در دستور inline پس از نوشتن تابع، ترتیب متغیرها را نیز اعلام کنیم:

>> g=inline(‘ sin(x)*cos(b)-log(b-x)/(x+b)’,’x’,’b’)

با این دستور مشخص می کنیم که متغیر اول ورودی x و بعدی b باشد.

نکته: اگر در دستور inline که تابع دو متغیره است خودتان اسم یک متغیر را به عنوان ورودی وارد کنید متلب گیر نمی دهد تا وقتیکه می خواهید مقدار دهی کنید که خطا خواهد داد:

>>g=inline(‘ sin(x)*cos(b),’x’)

>>g(2) – -> Error!

دیگر موارد:

>> g=inline(‘1’)

g =

     Inline function:

     g(x) = 1

>> g=inline(‘a’)

g =

     Inline function:

     g(a) = a

3- استفاده از handle_function : من نمی خواهم وارد مبحث handle_function بشم اما به طور ساده اگه بخوام بگم منظور نشانه @ می باشد:

f(x)=sin(x)*cos(x)-log(x+b)

>>f=@(x) (sin(x).*cos(x)-log(x+b))

>>f(2)

برای توابع چند متغیره:

g(x,y)=sin(x)*cos(y)-exp(sqrt(x-y))

>>g=@(x,y) (sin(x).*cos(y)-exp(sqrt(x-y)))

این 3 روش خیلی به درد می خوره. مثلا در بحث انتگرال عددی و حل معادله دیفرانسیل عددی راه اول و سوم به کار میاد. در بحث تبدیل حل معادله دیفرانسیل تحلیلی به تابع ریاضی روش دوم به کار میاد و دیگر موارد کاربردی که در جای خودش ان شاءالله گفته خواهد شد.

امیدوارم این پست هم تونسته باشه برای شما مفید باشه. نظر یادتون نره لطفا! مرسی.

۱۳۹۲-۶-۳۱ ۰۹:۴۰:۳۷ +۰۳:۳۰شهریور ۳۱ام, ۱۳۹۲|Categories: آموزش متلب|۱ ديدگاه

يك ديدگاه

  1. مسعود خرداد ۷, ۱۳۹۵ در ۶:۳۸ ب.ظ - پاسخ دادن

    عالی بود دوست عزیز

ثبت ديدگاه

پرداخت

1-پرداخت آنلاین
برای پرداخت آنلاین از لینک زیر استفاده کنید
پرداخت آنلاین
2- پرداخت آفلاین
برای پرداخت آفلاین مبلغ مورد نظر را به یکی از شماره کارت
6037997245888723بانک ملی