Пример выполнения задания

Написать программу поиска простых корней функции f (x) = 4 x – 7sin x на отрезке [ a, b ] c шагом h и точностью e методом деления отрезка пополам.

Вид формы и полученные результаты представленный на рис. 7.2.

Текст программы Unit 1. cpp может иметь следующий вид:

typedef double (*type_f)(double);

double fun(double);

double Metod_Del_2(type_f,double,double,double);

//--------------------- Текст функции-обработчика кнопки Расчет ----------------------

double a, b, x, eps, h, y, r;

int nom=0, iter;

a = StrToFloat(Edit1->Text); b = StrToFloat(Edit2->Text);

eps = StrToFloat(Edit3->Text);

h = StrToFloat(Edit4->Text);

Memo1->Lines->Add(" Функция 4*x - 7*sin(x)");

Chart1->Series[0]->Clear();

for(x = a-h; x< b+h; x+=h)

Chart1->Series[0]->AddXY(x,fun(x));

Memo1->Lines->Add("------ Корни ------");

for(x = a; x<=b; x+=h){

if(fun(x)*fun(x+h)<0){

nom++;

y = Metod_Del_2(fun,x,x+h,eps);

Memo1->Lines->Add(IntToStr(nom)+"-й = "+FloatToStrF(y,ffFixed,8,6));

}

}

if(nom==0) Memo1->Lines->Add("На отрезке корней НЕТ!");

//------------------------- Метод деления отрезка пополам ---------------------

double Metod_Del_2(type_f f,double x0,double x1,double eps) {

double x2,y0,y2;

y0=f(x0);

do {

x2=(x0+x1)/2; y2=f(x2);

if(y0*y2 > 0) {

x0 = x2; y0 = y2;

}

else x1 = x2;

} while (fabs(x1-x0)>eps);

return (x0+x1)/2;

}

//------------------------- Заданная функция f (x) ---------------------

double fun(double x) {

return 4*x - 7*sin(x);

}

Рис. 7.1

Рис. 7.2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: