10.5. Yuqori darajali funksiyalar
Funksiya obyektlari – bu «kichik qavs» () operatsiya aniqlangan sinf nusxasi.
Ba’zi bir xolatlarda funksiyani obyekt – funksiyalarga almashtirish qulaydir. Obyekt -
funksiya funksiya sifatida ishlatilsa uni chaqirish uchun operator () foydalaniladi.
Misol:
class kub{
public:
double operator()(double x)
{return x*x*x;} };
Yuqori darajadagi algoritm bu shunday algoritmki bitta yoki bir nechta
argumentlar funksional tipga tegishlidir.
Dixotomiya usuli yerdamida ixtiyoriy funksiya uchun [a,b] oralikda f(x)=0
tenglamani yechish masalasi misolida yuqori darajali funksiyani ko‘rib o‘tamiz. Bu
maqsadda masalani yechadigan metodni tavsiflovchi sinf yaratamiz. Sinfni
tavsiflovchi dastur kodini ko‘ramiz:
template
class FunctionZero
{
public:
static double dihotom(double a, double b, double eps, T f)
};
template
double FunctionZero::dihotom(double a, double b, double eps, T f)
{
float x, x1=a, x2=b;
while (x2-x1)>eps
{x=(x1+x2)\2;
if (f(x)==0) return x;
if (f(x)>0) x1=x; else x2=x;
89
};
return x1;
}
Do'stlaringiz bilan baham: |