Знаходження коренів рівняння методом Ньютона ЛИСП-реалізація

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

ЗМІСТ

Введення

1. Постановка завдання

2. Математичні та алгоритмічні основи рішення задачі

2.1 Опис методу

2.2 Недоліки методу

3. Функціональні моделі та блок-схеми виконання завдання

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

5. Приклад виконання програми

Висновок

Список використаних джерел та літератури

ВСТУП

Метод Ньютона (також відомий як метод дотичних) - це ітераційний чисельний метод знаходження кореня (нуля) заданої функції. Метод був вперше запропонований англійським фізиком, математиком і астрономом Ісааком Ньютоном (1643-1727), під ім'ям якого і знайшов свою популярність.

Метод був описаний Ісааком Ньютоном в рукописі De analysi per aequationes numero terminorum infinitas (лат. Про аналіз рівняннями нескінченних рядів), адресованій в 1669 році Барроу, і в роботі De metodis fluxionum et serierum infinitarum (лат. Метод флюксій і нескінченні ряди) або Geometria analytica (лат. Аналітична геометрія) у зборах праць Ньютона, яка була написана в 1671 році. У своїх роботах Ньютон вводить такі поняття, як розкладання функції в ряд, нескінченно малі і флюксии (похідні в нинішньому розумінні). Зазначені роботи були видані значно пізніше: перша вийшла у світ в 1711 році завдяки Вільяму Джонсону, друга була видана Джоном Кользоном в 1736 році вже після смерті творця. Однак опис методу істотно відрізнялося від його нинішнього викладу: Ньютон застосовував свій метод виключно до поліномами. Гадав не послідовні наближення x n, а послідовність поліномів і в результаті отримував наближене рішення x.

Вперше метод був опублікований в трактаті Алгебра Джона Валліса в 1685 році, на прохання якого він був коротко описаний самим Ньютоном. У 1690 році Джозеф Рафсона опублікував спрощений опис в роботі Analysis aequationum universalis (лат. Загальний аналіз рівнянь). Рафсона розглядав метод Ньютона як чисто алгебраїчний і обмежив його застосування поліномами, однак при цьому він описав метод на основі послідовних наближень x n замість більш важкою для розуміння послідовності поліномів, використаної Ньютоном. Нарешті, в 1740 році метод Ньютона був описаний Томасом Сімпсоном як ітеративний метод першого порядку вирішення нелінійних рівнянь з використанням похідної в тому вигляді, в якому він викладається тут. У тій же публікації Сімпсон узагальнив метод на випадок системи з двох рівнянь і відзначив, що метод Ньютона також може бути застосований для вирішення завдань оптимізації шляхом знаходження нуля похідної або градієнта.

У 1879 році Артур Келі в роботі The Newton-Fourier imaginary problem (англ. Проблема комплексних чисел Ньютона-Фур'є) був першим, хто відзначив труднощі в узагальненні методу Ньютона на випадок уявних коренів поліномів ступеня вище другий і комплексних початкових наближень. Ця робота відкрила шлях до вивчення теорії фракталів.

Метою даної курсової роботи є Лісп - реалізація знаходження коренів рівняння методом Ньютона.

1. Постановка завдання

Дано рівняння:

.

Потрібно вирішити це рівняння, точніше, знайти один з його коренів (передбачається, що корінь існує). Передбачається, що F (X) неперервна і диференційовна на відрізку [A; B].

Вхідним параметром алгоритму, крім функції F (X), є також початкове наближення - деякий X 0, від якого алгоритм починає йти.

Нехай вже обчислено X i, обчислимо X i +1 наступним чином. Проведемо дотичну до графіка функції F (X) в точці X = X i, і знайдемо точку перетину цієї дотичної з віссю абсцис. X i +1 покладемо рівним знайденої точці, і повторимо весь процес від початку.

Неважко отримати такий вираз:

X i +1 = X i - F (X i) / F '(X i)

Інтуїтивно ясно, що якщо функція F (X) достатньо "хороша", а X i знаходиться досить близько від кореня, то X i +1 буде перебувати ще ближче до шуканого кореня.

Приклад 1.

Потрібно знайти корінь рівняння , З точністю .

Похідна функції дорівнює

.

Візьмемо за початкову точку , Тоді

-9.716215;

5.74015;

3.401863;

-2.277028;

1.085197;

0.766033;

0.739241.

Таким чином, корінь рівняння

дорівнює 0.739241.

Приклад 2.

Знайдемо корінь рівняння функції методом Ньютона

cosx = x 3.

Це завдання може бути представлена ​​як задача знаходження нуля функції

f (x) = cosx - x 3.

Маємо вираз для похідної

.

Так як для всіх x і x 3> 1 для x> 1, очевидно, що рішення лежить між 0 і 1. Візьмемо в якості початкового наближення значення x 0 = 0.5, тоді:

1.112141;

0.90967;

0.867263;

0.865477;

0.865474033111;

0.865474033102.

Таким чином, корінь рівняння функції

cosx = x 3 дорівнює 0.86547403.

Приклад 3.

Потрібно знайти корінь рівняння , З точністю .

Похідна функції

дорівнює .

Візьмемо за початкову точку , Тоді

-2.3;

-2.034615;

-2.000579;

-2.0.

Таким чином, корінь рівняння

дорівнює -2.

2. Математичні та алгоритмічні основи рішення задачі

2.1 Опис методу

Нехай корінь x рівняння відділений на відрізку [a, b], причому і безупинні і зберігають певні знаки при . Якщо на деякому довільному кроці n знайдено наближене значення кореня

,

то можна уточнити це значення за методом Ньютона. Покладемо

, (1)

де вважаємо малою величиною. Застосовуючи формулу Тейлора, отримаємо:

.

Отже,

.

Внісши цю поправку до формули (1), знайдемо наступне (по порядку) наближення кореня

. (2)

Геометрично метод Ньютона еквівалентний заміні дуги кривої дотичній, проведеної в деякій точці кривої. Справді, покладемо для визначеності, що при і (Рисунок 1).

Виберемо, наприклад, , Для якого . Проведемо дотичну до кривої в точці B 0 з координатами .

Малюнок 1. Геометрично показаний метод Ньютона

В якості першого наближення кореня x візьмемо абсцису точки перетину дотичної з віссю Ox. Через точку знову проведемо дотичну, абсциса точки перетину якої дасть другий наближення кореня x і т.д.

Формулу для уточнення кореня можна отримати з прямокутного трикутника , Утвореного дотичній, проведеної в точці B 0, віссю абсцис і перпендикуляром, відновленим з точки .

Маємо

.

Так як кут утворений дотичній і віссю абсцис, його тангенс чисельно дорівнює величині похідної, обчисленої точці, що відповідає абсциссе точки дотику, тобто

.

Тоді

або для будь-якого кроку n

.

В якості початкової точки можна прийняти або один з кінців відрізка [a, b], або точку всередині цього інтервалу. У першому випадку рекомендується вибирати ту межу, де виконується умова

,

тобто функція і її друга похідна у точці повинні бути одного знака.

В якості найпростіших умов закінчення процедури уточнення кореня рекомендується виконання умови

.

Як випливає з останнього нерівності, потрібно при розрахунку запам'ятовувати три значення аргументу . У практичних інженерних розрахунках часто застосовують порівняння аргументів на поточному і попередньої ітераціях:

.

При складанні програми вирішення рівняння методом Ньютона слід організувати багаторазовий розрахунок наближень для кореня . Якщо вдається отримати аналітичний вираз для похідної, то її обчислення, а також обчислення можна оформити у вигляді функцій.

2.2 Недоліки методу

Нехай

.

Тоді

.

Візьмемо нуль в якості початкового наближення. Перша ітерація дасть в якості наближення одиницю. У свою чергу, друга знову дасть нуль. Метод зациклиться, і рішення не буде знайдено. У загальному випадку побудова послідовності наближень може бути дуже заплутаним.

Малюнок 2. Ілюстрація розбіжності методу Ньютона, застосованого до функції з початковим наближенням в точці

Якщо похідна не неперервна у точці кореня, то метод може розходитися в будь-який околиці кореня.

Якщо не існує друга похідна у точці кореня, то швидкість збіжності методу може бути помітно знижена.

Якщо похідна у точці кореня дорівнює нулю, то швидкість збіжності не буде квадратичної, а сам метод може передчасно припинити пошук, і дати невірне для заданої точності наближення.

Нехай

.

Тоді і отже . Таким чином збіжність методу не квадратична, а лінійна, хоча функція всюди нескінченно диференційована.

3. Функціональні моделі та блок-схеми виконання завдання

Функціональні моделі та блок-схеми виконання завдання представлені на рисунку 3, 4.

Умовні позначення:

  • FUNCTN, FX - функція;

  • DFUNCTN, DFDX - похідна функції;

  • A - робоча мінлива;

  • START, X0 - початкове значення;

  • PRES, E-точність обчислення.

Рисунок 3 - Функціональна модель вирішення задачі для пошуку кореня рівняння методом Ньютона

Малюнок 4 - Блок-схема рішення задачі для функції NEWTOM

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

Файл FUNCTION. Txt (Приклад 1)

; ФУНКЦІЯ COSX - X 3

(DEFUN F (X)

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

)

; ПОХІДНА-sinx-3x2

(DEFUN DFDX (X)

(- (* -1 (SIN X)) (* 3 XX))

)

(SETQ X0 0.5)

(SETQ E 0.0001)

Файл FUNCTION.txt (Приклад 2)

; ФУНКЦІЯ x-cosx

(DEFUN F (X)

(- X (COS X))

)

; ПОХІДНА 1 + sinx

(DEFUN DFDX (X)

(+ 1 (SIN X))

)

(SETQ X0 -1)

(SETQ E 0.0001)

Файл FUNCTION. Txt (Приклад 3)

; ФУНКЦІЯ X2 +2 X

(DEFUN F (X)

(+ (* XX) (* 2 X))

)

; ПОХІДНА 2X +2

(DEFUN DFDX (X)

(+ 2 (* 2 X))

)

(SETQ X0 -2.3)

(SETQ E 0.0001)

Файл NEWTON.txt

; Довантажує ФУНКЦІЮ

(LOAD "D: \ \ FUNCTION.TXT")

; РЕАЛІЗАЦІЯ МЕТОДУ НЬЮТОНА

(DEFUN NEWTOM (START PRES FUNCTN DFUNCTN)

; ОГОЛОШЕННЯ ЗМІННИХ

(DECLARE (SPECIAL X))

(DECLARE (SPECIAL A))

; Задаються початкові значення

(SETQ X START)

(SETQ A (/ (FUNCALL FUNCTN X) (FUNCALL DFUNCTN X)))

(LOOP

(SETQ X (- XA))

(SETQ A (/ (FUNCALL FUNCTN X) (FUNCALL DFUNCTN X)))

; ЯКЩО досягла необхідного ТОЧНОСТІ Вихід з циклу

(IF (<= (ABS A) PRES) (RETURN X))

)

)

; ВІДКРИВАЄМО ФАЙЛ

(SETQ OUTPUT_STREAM (OPEN "D: \ KOREN.TXT": DIRECTION: OUTPUT))

; Викликає метод НЬЮТОНА ДЛЯ РОЗРАХУНКУ КОРЕНЯ

(SETQ KOREN (NEWTOM X0 E (FUNCTION F) (FUNCTION DFDX)))

; ВИВОДИТЬ КОРІНЬ У ФАЙЛ

(PRINT 'KOREN OUTPUT_STREAM)

(PRINT KOREN OUTPUT_STREAM)

; ЗАКРИВАЮТЬ ФАЙЛ

(TERPRI OUTPUT_STREAM)

(CLOSE OUTPUT_STREAM)

5. Приклад виконання програми

Приклад 1.

Малюнок 5 - Вхідні дані.

Малюнок 6 - Вихідні дані.

Приклад 2.

Малюнок 7 - Вхідні дані.

Малюнок 8 - Вихідні дані.

Приклад 3.

Рисунок 9 - Вхідні дані.

Рисунок 10 - Вихідні дані.

ВИСНОВОК

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

Підсумком роботи можна вважати створену функціональну модель знаходження коренів рівняння методом Ньютона. Дана модель може бути використана для вирішення завдань оптимізації, в яких потрібно визначити нуль першої похідної або градієнта у випадку багатовимірного простору. Створена функціональна модель і її програмна реалізація можуть служити органічною частиною вирішення більш складних завдань.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ та літератури

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

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

  3. Каліткін, М.М. Чисельні методи. [Електронний ресурс] / М.М. Каліткін. - М.: Питер, 2001. С. 504.

  4. Метод Ньютона - Вікіпедія [Електронний ресурс] - Режим доступу: http://ru.wikipedia.org/wiki/Метод_Ньютона

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

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

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

  8. Хювенен Е. Світ Ліспу [Текст] / Е. Хювенен, Й. Сеппянен. - М.: Світ, 1990. - 460 с.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
59.2кб. | скачати


Схожі роботи:
Знаходження коренів рівняння методом простої ітерації ЛИСП-реалізація
Методи знаходження коренів поліномів
Знаходження коренів рівнянь різними методами
Програма для знаходження нижньої та верхньої межі дійсних коренів
Обробка результатів психологічних тестів ЛИСП-реалізація
ЛИСП-реалізація основних операцій над нечіткими множинами
Розробка програмного забезпечення для пошуку коренів біквадратні рівняння
Проект програмного модуля для знаходження кореня рівняння
Інтерполяція функції однієї змінної методом Ньютона
© Усі права захищені
написати до нас