Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Написать программу поиска простых корней функции 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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.