Смекни!
smekni.com

Нахождение корней уравнения методом простой итерации (ЛИСП-реализация) (стр. 2 из 2)

ЗАМЕЧАНИЕ 2.2: В качестве константы q обычно берут оценку сверху для величины

.

2.2 Геометрическая интерпретация

Рассмотрим график функции

. Это означает, что решение уравнения
и
- это точка пересечения
с прямой
:

Рисунок 3.

И следующая итерация

- это координата x пересечения горизонтальной прямой точки
с прямой
.

Рисунок 4.

Из рисунка наглядно видно требование сходимости

. Чем ближе производная
к 0, тем быстрее сходится алгоритм. В зависимости от знака производной вблизи решения приближения могут строится по разному. Если
, то каждое следующее приближение строится с другой стороны от корня:

Рисунок 5.


3. Функциональные модели и блок-схемы решения задачи

Функциональные модели и блок-схемы решения задачи представлены на рисунке 6, 7.

Используемые обозначения:

·FN, F – уравнение для поиска корня;

·X, START – начальное значение;

·E, PRECISION – точность вычисления;

·N, COUNT_ITER –количество итераций.

Рисунок 6 – Функциональная модель решения задачи для функции SIMPLE_ITER


Рисунок 7 – Функциональная модель решения задачи для поиска корня уравнения методом простой итерации


4. Программная реализация решения задачи

Файл SIMPLE_ITER.txt

;ФУНКЦИЯ, РЕАЛИЗУЮЩАЯ МЕТОД ПРОСТЫХ ИТЕРАЦИЙ

(DEFUN SIMPLE_ITER (N E X FN)

(COND

((AND (<= N 0) (> (ABS (- (FUNCALL FN X) X)) (* E (FUNCALL FN X)))) X)

(T (SIMPLE_ITER (- N 1) E (FUNCALL FN X) FN))

)

)

;ПОДГРУЖАЕМУРАВНЕНИЕ

(LOAD "D:&bsol;FUNCTION.TXT")

;РАССЧИТЫВАЕМ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ К КОРНЮ

(SETQSTART (/ (- (CADRINTERVAL) (CARINTERVAL)) 2))

;ВЫЧИСЛЯЕМКОРЕНЬ

(SETQ ROOT (SIMPLE_ITER COUNT_ITER PRECISION START (FUNCTION F)))

;ОТКРЫВЕМФАЙЛДЛЯЗАПИСИ

(SETQ OUTPUT_STREAM (OPEN "D:&bsol;ROOT.TXT" :DIRECTION :OUTPUT))

;ПЕЧАТАЕМВФАЙЛКОРЕНЬ

(PRINT 'ROOT OUTPUT_STREAM)

(PRINT ROOT OUTPUT_STREAM)

;ЗАКРЫВАЕМФАЙЛ

(TERPRI OUTPUT_STREAM)

(CLOSE OUTPUT_STREAM)

Файл FUNCTION.txt (пример 1)

;ФУНКЦИЯ

(DEFUN F (X)

(/ (+ (- (* X X) (* 5 (COS X))) 3.25) 3)

)

;КОЛИЧЕСТВО ИТЕРАЦИЙ

(SETQ COUNT_ITER 100)

;ПРОМЕЖУТОК, НА КОТОРОМ ИЩЕМ КОРЕНЬ

(SETQ INTERVAL '(-0.4 0))

;ТОЧНОСТЬ ВЫЧИСЛЕНИЯ

(SETQ PRECISION 0.0001)

Файл FUNCTION.txt (пример 2)

;ФУНКЦИЯ

(DEFUN F (X)

(- (* X X) (COS X))

)

;КОЛИЧЕСТВО ИТЕРАЦИЙ

(SETQ COUNT_ITER 60)

;ПРОМЕЖУТОК, НА КОТОРОМ ИЩЕМ КОРЕНЬ

(SETQ INTERVAL '(1 1.5))

;ТОЧНОСТЬ ВЫЧИСЛЕНИЯ

(SETQ PRECISION 0.0001)


5. Пример выполнения программы

Пример 1.

Рисунок 8 – Входные данные

Рисунок 9 – Выходные данные

Пример 2.

Рисунок 10 – Входные данные


Рисунок 11– Выходные данные


ЗАКЛЮЧЕНИЕ

Проблема повышения качества вычислений, как несоответствие между желаемым и действительным, существует и будет существовать в дальнейшем. Ее решению будет содействовать развитие информационных технологий, которое заключается как в совершенствовании методов организации информационных процессов, так и их реализации с помощью конкретных инструментов – сред и языков программирования.

Итогом работы можно считать созданную функциональную модель нахождения корней уравнения методом простой итерации. Данная модель применима к детерминированным задачам, т.е. погрешностью экспериментального вычисления которых можно пренебречь. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ и литературы

1. Бронштейн, И.Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И.Н.Бронштейн, К.А.Семендяев. – М.: Наука, 2007. – 708 с.

2. Кремер, Н.Ш. Высшая математика для экономистов: учебник для студентов вузов. [Текст] / Н.Ш.Кремер, 3-е издание – М.:ЮНИТИ-ДАНА, 2006. C. 412.

3. Калиткин, Н.Н. Численные методы. [Электронный ресурс] / Н.Н. Калиткин. – М.: Питер, 2001. С. 504.

4. Поиск минимума функции [Электронный ресурс] – Режим доступа: http://solidbase.karelia.ru/edu/meth_calc/files/12.shtm

5. Семакин, И.Г. Основы программирования. [Текст] / И.Г.Семакин, А.П.Шестаков. – М.: Мир, 2006. C. 346.

6. Симанков, В.С. Основы функционального программирования [Текст] / В.С.Симанков, Т.Т.Зангиев, И.В.Зайцев. – Краснодар: КубГТУ, 2002. – 160 с.

7. Степанов, П.А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П.А.Степанов, А.В. Бржезовский. – М.: ГУАП, 2003. С. 79.

8. Хювенен Э. Мир Лиспа [Текст] / Э.Хювенен, Й.Сеппянен. – М.: Мир, 1990. – 460 с.