Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф ответы 1-21.docx
Скачиваний:
61
Добавлен:
24.09.2019
Размер:
1.23 Mб
Скачать

7. Численное решение уравнения методом половинного деления (дихотомии). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.

Метод дихотомии имеет свое название от древнегреческого слова διχοτομία, что в переводе означает деление надвое. Именно поэтому данные метод имеет еще второе название: метод половинного деления. Его мы используем довольно часто. Допустим, играя в игру "Угадай число", где один игрок загадывает число от 1 до 100, а другой пытается его отгадать, руководствуясь подсказками "больше" или "меньше". Логично предположить, что первым числом будет названо 50, а вторым в случае если оно меньше - 25, если больше - 75. Таким образом, на каждом этапе (иттерации) неопределенность неизвестного уменьшается в 2 раза. Т.е. даже самый невезучий в мире человек отгадает загаданное число в данном диапазоне за 7 предположений вместо 100 случайных утверждений.

Метод половинного деления один из методов решения нелинейных уравнений и основан на последовательном сужении интервала, содержащего единственный корень уравнения F(x)=0 до того времени, пока не будет достигнута заданная точность Е. Метод используется при решении квадртных уравнений и уравнений высших степеней.

Пусть задан отрезок [а,b], содержащий один корень уравнения. Этот отрезок может быть предварительно найден с помощью шагового метода.

Дано нелинейное уравнение:

(4.1)

Найти корень уравнения, принадлежащий интервалу [a,b], с заданной точностью  .

Для уточнения корня методом половинного деления последовательно осуществляем следующие операции:

  1. Делим интервал пополам:

  1. В качестве нового интервала изоляции принимаем ту половину интервала, на концах которого функция имеет разные знаки (рис.4.4).

Рис. 4.4. 

Для этого:

a) Вычисляем значение функции f(x) в точках a и t.

b) Проверяем: если f(a)f(t) < 0, то корень находится в левой половине интервала [a,b] (рис.4.4.а). Тогда отбрасываем правую половину интервала и делаем переприсвоение b=t.

c) Если f(a)f(t) < 0 не выполняется, то корень находится в правой половине интервала [a,b] (рис.4.4.б). Тогда отбрасываем левую половину и делаем переприсвоение a=t. В обоих случаях мы получим новый интервал [a,b] в 2 раза меньший предыдущего.

  1. Процесс, начиная с пункта 1, циклически повторяем до тех пор, пока длина интервала [a,b] не станет равной либо меньшей заданной точности, т.е.

Схема алгоритма уточнения корней по методу половинного деления

Пример:

Решим уравнение   методом половинного деления. Графическим методом находим отрезок  , которому принадлежит искомый корень. Так как  , то принимаем  .

Ниже приведен пример программы на Си++, которая решает поставленную задачу.

Программа 1. Корень уравнения

#include <iostream>

#include <cmath>

using namespace std;

const double epsilon = 1e-2;

 

double f(double x)

{

return 4- exp(x) - 2*x^2;

}

 

int main()

{

double a, b, c;

a = 0;

b = 2;

while (b - a > epsilon){

c = (a + b) / 2;

if(f(b) * f(c) < 0)

a = c;

else

b = c;

}

cout << (a + b) / 2 << endl;

return 0;

}

Искомый корень  . Вычисления проводились с точностью  .

Промежуточные вычисления представлены в таблице ниже.

n

an

bn

cn

bn-cn

1

0

1

0.5

0.5

2

0.5

1

0.75

0.25

3

0.75

1

0.875

0.125

4

0.875

1

0.9375

0.0625

5

0.875

0.9375

0.90625

0.03125

6

0.875

0.90625

0.890625

0.015625

7

0.875

0.890625

0.8828125

0.0078125

Достоинство метода половинного деления : более быстрая сходимость к заданной точности, чем у шагового. Недостаток: если на отрезке [а,b] содержится более одного корня, то метод не работает.

8. Численное решение уравнения методом хорд. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]