Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
integraly_uravnenia_optim_fayly.doc
Скачиваний:
15
Добавлен:
09.04.2015
Размер:
552.45 Кб
Скачать

4. Метод касательных.

Метод Ньютона, или метод касательных основан на вычислении не только значений функции, но и значений ее производной. Разложим f(x) в ряд Тейлора и отбросим члены ряда выше второго порядка:

В этом приближении корень функции легко найти по формуле:

f(x) = 0

Для нелинейных функций это, конечно, не точное равенство, но

способ получить значение, более близкое к корню. Таким образом,

метод Ньютона состоит в построении последовательности итераций:

На какой итерации завершить процесс нахождения корня? Возможны два варианта: либо когда значение функции станет достаточно маленьким по абсолютной величине: , либо когда практически перестанет меняться значение x :

  1. Порядок выполнения работы

  1. Получить у преподавателя вариант задания, включающий в себя трансцендентное уравнение (f(X)=0), отрезок для поиска решения (a,b), точность вычисления значения корня ( eps )

  2. Исследовать существование корня на заданном отрезке. ( требования к функции: разные знаки на концах отрезка, непрерывность и FI(x)<>0)

  3. Построить график функции на заданном отрезке с помощью пакета Eureka. И найти точное значение корня уравнения.

  4. Выяснить с какой стороны отрезка строить начальное приближение к решению уравнения методом Ньютона: если знак второй производной совпадает со знаком функции (f(x)·f''(x)>), то приближение строим с левой стороны отрезка, в противном случае - с правой стороны.

  5. Написать подпрограмму функцию для вычисления функции f(x)

  6. Написать подпрограмму для метода «половинного деления»

  7. Написать подпрограмму для метода «Касательных» или Ньютона

  8. Найти первую производную функции f'(x) и оформить ее вычисление процедурой- функцией

  9. Написать головной модуль

  10. Отладить программу и получить результаты

  11. Сравнить полученные результаты, с полученными в пакете Eureka и сделать вывод о том, какой метод наиболее точный.

  1. Содержание отчета

    1. Содержательная постановка задачи

    2. Исходные данные

    3. Краткое описание методов.

    4. Блок схема подпрограмм и блок схема головного ( или управляющего) модуля.

    5. Листинг подпрограмм и управляющего модуля.

    6. Распечатка полученных результатов

    7. Распечатка результатов в Eureka

    8. Сравнительный анализ результатов, полученных разными методами и в Eureka.

  1. Литература

  1. Лекции по курсу «Информатика»

  2. Г.Зельднер «Quick-basic для носорогов».Из-во «Март», Москва, 1996

  3. Бахвалов С.А. «Численные методы математического анализа», т. 1, «Высшая школа», Москва, 1976

Пример решения поставленной задачи в Basic

Уравнение соответствующего варианта приводится к виду

f(x)=0

Все исследования на существование и единственность корня проводятся с функцией f(x).

Головной или управляющий модуль. Напоминаем, что переход от головного модуля к подпрограммам осуществляется через диалоговое окно, вызываемое нажатием клавиши ALT + F1 или ALT + F2.

DECLARE SUB kas (x!, e!, kast!)

DECLARE FUNCTION f1! (x!)

DECLARE SUB dih (a!, b!, e!, rdih!)

DECLARE FUNCTION f! (x!)

REM Численные методы решения нелинейных уравнений

CLS

REM Ввод отрезка с проверкой на существование решения

DO

INPUT "Введите отрезок для поиска решения (a,b)"; a, b

INPUT "Введите точность поиска решения eps="; e

LOOP WHILE f(a) * f(b) > 0

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

CALL dih(a, b, e, rdih)

PRINT "Корень уравнения, найденный по методу дихотомии - "; rdih

PRINT : PRINT

REM Метод касательных

INPUT "Введите начальное приближение x0 для корня на отрезке (a,b)";x

CALL kas( x, e, kast)

PRINT "Корень уравнения, найденный по методу касательных - "; kast

END

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

FUNCTION F(X)

F= < функция соответствующего варианта >

END FUNCTION

Используя и в дальнейшем меню оболочки Quick-Basic пишем подпрограмму для метода половинного деления

SUB dih (a, b, e, rdih)

x = (b + a) / 2

DO

IF f(x) * f(a) < 0 THEN

b = x

ELSE

a = x

END IF

x = (b + a) / 2

LOOP UNTIL abs(b - a) < e

rdih = (b + a) / 2

END SUB

Перед тем как написать подпрограмму для метода Ньютона, организуем вычисление производной функции в процедуре-функции F1(х)

FUNCTION F1(X)

F= < производная функции соответствующего варианта >

END FUNCTION

Теперь пишем подпрограмму для метода Ньютона

SUB kas (x, e, kast)

DO

x= x - f(x) / f1(x)

LOOP UNTIL ABS(f(x) / f1(x)) < e

kast = x

END SUB

Программу осталось только набрать и отладить. Полученные результаты подклеить в отчет.

Пример решения поставленной задачи в Eureka

  1. Esc - вход в меню

  2. EDIT - окно редактирования для записи функций. В нем необходимо записать следующее:

Y=f(x)

f(x)= <функция соответствующего варианта>

f(x)=0

x>=a

x<=b

a и b левая и правая границы отрезка существования корня.

  1. Solve – окно решения, где выводятся результаты вычислений. Их необходимо записать.

  2. Graph-Plot-левая граница отрезка – правая граница отрезка. Окно, где выводится график функции, чтобы просмотреть график на весь экран нажмите F5.

В пакете Eureka необходимо получить точное значение корня уравнения (значение Y в окне Solve) и зарисовать график функции (Graph-Plot).

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