loading...
وبلاگ آموزشی مهدی
mahdi بازدید : 160 جمعه 17 شهریور 1391 نظرات (0)

 

گاهی اوقات شما مجبورید یه عبارت ریاضی مثل 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 روش خیلی به درد می خوره. مثلا در بحث انتگرال عددی و حل معادله دیفرانسیل عددی راه اول و سوم به کار میاد. در بحث تبدیل حل معادله دیفرانسیل تحلیلی به تابع ریاضی روش دوم به کار میاد

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • نظرسنجی
    بیشترین استفاده‌ای که از تلفن همراه‌تان می‌کنید مربوط به چه کاری است؟
    آمار سایت
  • کل مطالب : 1017
  • کل نظرات : 88
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • آی پی امروز : 100
  • آی پی دیروز : 85
  • بازدید امروز : 1,439
  • باردید دیروز : 1,502
  • گوگل امروز : 1
  • گوگل دیروز : 2
  • بازدید هفته : 4,015
  • بازدید ماه : 8,159
  • بازدید سال : 33,212
  • بازدید کلی : 427,236
  • کدهای اختصاصی