Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kozlov (1).doc
Скачиваний:
761
Добавлен:
18.03.2016
Размер:
15.9 Mб
Скачать

Метод хорд

Пусть корень уравнения f(x) = 0 локализован на отрезке [a;b]. Функцияf(x) на отрезке [a;b] должна быть дважды дифференцируема. Требуется найти значение корня с точностью ε.

Графическая интерпретация метода.

Строим исходную функцию y= f(x) и находим значения функции на концах отрезка f(a) и f(b). Проводим хорду М1M2 c концами в точках М1(a, f((a)) и M2(b, f(b)). Абсцисса точки пересечения хорды М1M2 с осью OX это и есть приближенный корень x1. Далее находим точку M31, f(x1)), строим следующую хорду, находим второй приближенный корень x2 и так далее.

В зависимости от поведения функции возможны два случая:

В одном случае за неподвижный конец хорд используется точка М1(a, f((a)), а в другом случае точка M2(b, f(b)).

Алгоритм метода

  1. Ввод исходных данных: a, b, ε.

  2. Расчет значений функции f(a), f(b) на концах отрезка и значения второй производной от функции f'' (a) и f'' (b).

  3. Проверяем условие f(a)·f''(a)>0. Если условие выполняется, то c=a, x=b, иначе проверяем условие f(b)·f''(b)>0 c= b, x=a. Если условие «быстрой» сходимости не выполняется, то принимаем c=a, x=b.

  4. x0=x.

  5. Рассчитываем абсциссу точки пересечения хорды с осью ОХ по формуле

  1. Проверка условия |x-x0|<= ε. Если условие выполняется, то переход к пункту 7, иначе переход к пункту 4.

  2. Расчет закончен. Корень х*=x.

Реализация метода в MS Excel

Постановка задачи. Дано ecos2(x)-3·sin(0,8·x)+0,5=0, корень локализован на отрезке [0,5;1,5]. Найти корень с точностью ε=0,0001.

Находим первую и вторую производные от функции ecos2(x)-3·sin(0,8·x)+0,5. f´(x)= (ecos2(x)-3·sin(0,8·x)+0,5)´= -ecos2(x)·sin(2·x)-2,4·cos(0,8·x)

f´´(x)=(-ecos2(x)·sin(2·x)-2,4·cos(0,8·x))´= ecos2(x) ·(sin2(2·x)-2·cos(2·x)) + 1,92·sin(0,8·x)

1 Формирование заголовка таблицы и расчеты по пунктам 1 и 2 алгоритма.

Адрес клетки

Содержание

Тип

А1

a

Текст

В1

b

Текст

C1

f(a)

Текст

D1

f(b)

Текст

E1

f'' (a)

Текст

F1

f'' (b)

Текст

А2

0,5

Число

В2

1,5

Число

С2

=EXP(COS(A2)^2)-3*SIN(0,8*A2)+0,5

Формула

D2

=EXP(COS(B2)^2)-3*SIN(0,8*B2)+0,5

Формула

Е2

=EXP(COS(A2)^2)*(SIN(2*A2)^2-2*COS(2*A2))+ 1,92*SIN(0,8*A2)

Формула

F2

=EXP(COS(B2)^2)*(SIN(2*B2)^2-2*COS(2*B2)) +1,92*SIN(0,8*B2)

Формула

Вид листа MS Excel:

2 В соответствии с пунктами 3 и 4 алгоритма рассчитываем значения переменных с, х и х0.

Адрес клетки

Содержание

Тип

А4

=ЕСЛИ(D2*F2>0;B2;A2)

Формула

В4

=ЕСЛИ(D2*F2>0;A2;B2)

Формула

C4

=B4

Формула

Вид листа MS Excel:

Вид листа MS Excel:

3 Расчет значений f(c) и f(x0).

Адрес клетки

Содержание

Тип

D4

f(c)

Текст

E4

f(x0)

Текст

D5

=EXP(COS(A4)^2)-3*SIN(0,8*A4)+0,5

Формула

E5

=EXP(COS(C4)^2)-3*SIN(0,8*C4)+0,5

Формула

Вид листа MS Excel:

4 Расчет по пункту 5 алгоритма.

Адрес клетки

Содержание

Тип

B5

=C4-E4*($A$4-C4)/($D$4-E4)

Формула

F4

|x-x0|

Текст

F5

=ABS(B5-C4)

Формула

Обратите внимание, что адреса $A$4 и $D$4 являются абсолютными, потому что в этом алгоритме значение с и f(с) остаются постоянными во всех итерациях.

Вид листа MS Excel:

5 Выделим диапазон ячеек С4:E4. Установим указатель мыши на маркер заполнения и переместим мышь на одну строку вниз.

Вид листа MS Excel после выполнения этих действий:

Первая итерация завершена. Графическая интерпретация выполненных действий приведена на рисунке:

6 Для выполнения второй и последующих итераций выделим диапазон клеток B5:F5. Установим указатель мыши на маркер заполнения, нажмем левую кнопку и переместим мышь на пятнадцатую строку.

Вид листа MS Excel после выполнения этих действий:

Требуемая точность достигнута в десятой строке, так как именно начиная с этой строки, соблюдается условие |x-x0|<= ε.

7 Выполняем пункт 7 алгоритма, рассчитаем искомый корень х* и значение f(x*).

Адрес клетки

Содержание

Тип

В17

х*

Текст

В18

=B10

Формула

C17

f(x*)

Текст

С18

=EXP(COS(C17)^2)-3*SIN(0,8*C17)+0,5

Формула

Вид листа MS Excel:

Решение получено за шесть итераций. Окончательно имеем х*=0,8980, f(x*)=0,0000 и n=6.

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