Метод дихотомии (половинного деления)

Данный метод основывается на утверждении, что если на отрезке [a;b] содержится корень уравнения, то значения f(a) и f(b) имеют разные знаки, т.е. f(a)·f(b)<0.

Схема метода

Отрезок делится пополам – середина обозначается через точку c (рис.14). Если |a-b|>=eps, то вычисле-ния продолжаются. Эта проверка означает, что если |a-b|<eps, то длина отрезка, на котором находится корень уравнения, достаточна мала и вычисления можно прекратить, а за значение корня можно взять середину этого отрезка, т.е. корень уравнения вычислен с заданной точность eps. Происходит проверка f(a)·f(c)<0 или нет. Если да, то значение c присваивается перемен-ной b, иначе значение c присваива-ется переменной a. Если |a-b|>=eps, то опять происходит проверка f(a)·f(c)<0 или нет. Если да, то значение c присваивается переменной b, иначе значение c присваивается перемен- ной a и т.д. Графически этот метод изображен на рис.14.

Опишем алгоритм и соответствующую программу для нахождения корней уравнения ln(x-3)=0 на отрезке [3.5;5] с помощью этого метода:

Алгоритм Программа
объявление вещ: fa, fb, fc, a, b, c, eps ввод а ввод b fa=ln(a-3) fb=ln(b-3) если fa*fb<0 ввод eps c=(a+b)/2 fc=log(c-3) пока (|a-b|>=eps ) если (fa*fc<0) b=c иначе a=c; всё если c=(a+b)/2 fa=ln(a-3) fb=ln(b-3) fc=ln(c-3) всё пока печать c печать fc иначе печать “на отрезке нет корня” все_если   #include "stdio.h" #include "math.h" #include "iostream.h" #include "iomanip.h" int main() { float fa, fb, fc, a, b, c, eps; cout<<"a="; cin>>a; cout<<"b="; cin>>b; fa=log(a-3); fb=log(b-3); if(fa*fb<0) { cout<<"eps="; cin>>eps; c=(a+b)/2; fc=log(c-3); while(fabs(a-b)>=eps) { if(fa*fc<0) b=c; else a=c; //вычисляется новая середина //отрезка c=(a+b)/2; //вычисляются значения //функций в новых точках fa=log(a-3); fb=log(b-3); fc=log(c-3); } cout<<"корень уравнения х*="<<c<<endl; cout<<"значение f(x*)="<<fc<<endl; } else cout<<"неверно введены концы" <<"отрезка"<<endl; return 1; }







Дата добавления: 2015-08-08; просмотров: 497;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.