Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (типовой расчет) / пример задания 5(Типовой расчет_часть1).ppt
Скачиваний:
29
Добавлен:
13.03.2016
Размер:
114.18 Кб
Скачать

ТИПОВОЙ РАСЧЕТ

Задача 1.7. Приближенное вычисление корня уравнения на отрезке [a,b] методом деления отрезка пополам. Типовой расчет. Часть 1

1

Приближенное решение уравнения на отрезке

Известно, что уравнение

F(x)=0 (*)

на отрезке [A,B] имеет ровно один корень.

Требуется найти приближенное значение корня с точностью :

|x*-xпр|< ,

где x* - точное значение корня, xпр – приближенное значение корня.

2

Приближенное решение уравнения на отрезке

y=F(x)

A

x*

B

x

 

 

 

 

 

 

 

 

 

Если уравнение (*) имеет на отрезке [A,B] ровно один корень, то F(A)*F(B) 0.

3

Метод деления отрезка пополам (дихотомии)

y=F(x)

A

x=(a+b)/2

x*

B

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

x2

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если F(x)*F(B) 0, то x* [x,B] корень надо искать на правой половине отрезка: A=x;

иначе x* [A,x] корень надо искать на левой половине отрезка: B=x.

Далее деление пополам нового отрезка. 4

Метод деления отрезка пополам (дихотомии)

i-ая итерация (цикл): вычисление xi - середины

i-го отрезка и выбор его левой или правой половины.

{xi} x* при i .

Условие продолжения цикла: B-A> .

5

Метод деления отрезка пополам (дихотомии)

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ввод A,B,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x=(A+B)/2

 

 

 

 

 

-

 

 

 

 

 

 

 

+

 

 

 

 

 

F(x)*F(B) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B=x

 

 

 

 

 

 

 

 

 

A=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B-A>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывод x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

Алгоритм для идеального случая: на [A,B] ровно один корень.

Более надежный алгоритм учитывает ограничение на число итераций: если число итераций больше некоторого предельного значения, то цикл завершается с выводом сообщения о некорректной постановке задачи.

6

Вариант-образец.

Задание. Вычислить значение корня уравнения Sin(x)-X+2=0

на отрезке [2,3] методом деления отрезка пополам.

7

Состав данных

true, при _ продолжении _ цикла Fl false, при _ завершении _ цикла _

8

 

 

начало

Блок-схема алгоритма

 

 

ввод A,B, ,Np

 

 

 

N=0

 

 

 

Fl=1

 

 

 

-

 

 

 

Fl +

 

 

 

N=N+1

 

 

 

x=(A+B)/2

 

 

-

F(x)*F(B) 0

+

 

B=x

 

A=x

-

-

+ Abs(B-A)<

+

N>Np

Fl=0

 

 

Fl=0

вывод x

 

 

вывод “N>Np

 

 

 

конец

9

Текст программы

program example17; SysUtils;

Var

A,B,E,x,y: real;

Np,N: integer; Fl: boolean; begin

writeln('Input A,B,E,Np:'); read(A,B,E,Np);

if (sin(A)-A+2)*(sin(B)-B+2)>0 then begin writeln('Interval [A, B] is invalid'); readln; end

10