Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

Вид формы и полученные результаты представлены на рис. 6.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);

}

Рис. 6.1

Рис. 6.2





Дата публикования: 2015-02-22; Прочитано: 203 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...