Материал: Larin_Anton_8383_cm_21_5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Тогда 0 = √21 = 0.178268.

2

Проведем вычисление корня функций ( ), ′( ) при помощи программы,

приведенной в приложении А. Программа вычисляет корень уравнения методом Ньютона. На вход ей подаются следующие параметры: X – начальное приближение корня, eps – требуемая точность вычисления корня, delta

погрешность вычисления значений функции, a, b – отрезок [ , ], локализующий корень. В табл. 1 приведены расчеты корня при различных значениях eps, и

представлены значения количества итераций.

Таблица 1 – Расчет корня методом Ньютона с варьированием значения eps

Значение

Значение

Значение

Значение

Значение

Значение

 

 

 

 

 

 

 

 

 

 

 

 

0.1

0.00001

0.5

1

0.872045

2

 

 

 

 

 

 

0.01

0.00001

0.5

1

0.867107

3

 

 

 

 

 

 

0.001

0.00001

0.5

1

0.867107

3

 

 

 

 

 

 

0.0001

0.00001

0.5

1

0.867107

3

 

 

 

 

 

 

0.00001

0.00001

0.5

1

0.867086

4

 

 

 

 

 

 

Имея экспериментальное значение скорость сходимости метода видим, что скорость сходимости метода хорд выше линейной. Действительно, согласно теории порядок сходимости метода равен 2, т.е. квадратичный.

Теперь, имея приближение корня, примем ≈ 0.867086. С помощью

данного приближения вычислим = | − |, и оценим с

его помощью

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

будем

считать, что задача хорошо обусловлена – хор., иначе пл. – плохо. Результаты эксперимента занесены в табл. 2. Теперь, имея значение количества итераций,

необходимое для локализации корня, сравним метод Ньютона с методом бисекции и методом хорд. Из проведенного ранее исследования известно, что порядок сходимости метода бисекции и метода хорд линейны

6

Таблица 2 – Обусловленность задачи при различных и

Значение

Значение

 

 

Значение

Значение

Значение

 

 

Значение

 

k

 

 

 

 

 

 

 

 

 

 

 

 

0.1

0.01

0.87243

 

2

0.005344

хор.

 

 

 

 

 

 

 

 

 

0.01

0.01

0.866566

 

3

0.00052

хор.

 

 

 

 

 

 

 

 

 

0.001

0.01

0.866566

 

3

0.00052

хор.

 

 

 

 

 

 

 

 

 

0.0001

0.01

0.866566

 

3

0.00052

пл.

 

 

 

 

 

 

 

 

 

0.00001

0.01

0.866566

 

3

0.00052

пл.

 

 

 

 

 

 

 

 

 

0.000001

0.01

0.866566

 

3

0.00052

пл.

 

 

 

 

 

 

 

 

 

0.1

0.001

0.872102

 

2

0.005016

хор.

 

 

 

 

 

 

 

 

 

0.01

0.001

0.867114

 

3

0.000028

хор.

 

 

 

 

 

 

 

 

 

0.001

0.001

0.867114

 

3

0.000028

хор.

 

 

 

 

 

 

 

 

 

0.0001

0.001

0.867114

 

3

0.000028

хор.

 

 

 

 

 

 

 

 

 

0.00001

0.001

0.867114

 

3

0.000028

пл.

 

 

 

 

 

 

 

 

 

0.000001

0.001

0.867114

 

3

0.000028

пл.

 

 

 

 

 

 

 

 

 

0.1

0.0001

0.872037

 

2

0.004951

хор.

 

 

 

 

 

 

 

 

 

0.01

0.0001

0.867108

 

3

0.000022

хор.

 

 

 

 

 

 

 

 

 

0.001

0.0001

0.867108

 

3

0.000022

хор.

 

 

 

 

 

 

 

 

 

0.0001

0.0001

0.867108

 

3

0.000022

хор.

 

 

 

 

 

 

 

 

 

0.00001

0.0001

0.867078

 

4

0.000008

хор.

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

В табл. 3 приведено сравнение методов хорд, бисекции и метода Ньютона для расчета корня. - корень, высчитанный по методу ‘*’, – количество итераций, затраченное на приближение корня методом ‘*’, где ‘*’ принимает значения: H – метод хорд, B – метод бисекции и N – метод Ньютона.

Выводы.

Проанализировав результаты применения метода Ньютона, можно сказать,

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

По результатам эксперимента по определению обусловленности метода Ньютона можно оценить абсолютную обусловленность как значение примерно равное 0.1, что говорит об очень хорошей обусловленности метода.

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

8

Таблица 3 – Сравнение методов Ньютона, хорд и бисекции

Значение

Значение

Значение

Значение

Значение

Значение

Значение

Значение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.1

0.001

0.875

0.858529

0.872102

2

3

2

 

 

 

 

 

 

 

 

0.01

0.001

0.863281

0.865001

0.867114

6

4

3

 

 

 

 

 

 

 

 

0.001

0.001

0.867676

0.867002

0.867114

9

5

3

 

 

 

 

 

 

 

 

0.0001

0.001

0.866943

0.867002

0.867114

9

5

3

 

 

 

 

 

 

 

 

0.00001

0.001

0.866943

0.867002

0.867114

9

5

3

 

 

 

 

 

 

 

 

0.000001

0.001

0.866943

0.867002

0.867114

9

5

3

 

 

 

 

 

 

 

 

0.1

0.0001

0.875

0.858435

0.872037

2

3

2

 

 

 

 

 

 

 

 

0.01

0.0001

0.863281

0.864908

0.867108

6

4

3

 

 

 

 

 

 

 

 

0.001

0.0001

0.867676

0.866953

0.867108

9

6

3

 

 

 

 

 

 

 

 

0.0001

0.0001

0.867126

0.867086

0.867108

12

8

3

 

 

 

 

 

 

 

 

0.00001

0.0001

0.867081

0.867086

0.867078

13

8

4

 

 

 

 

 

 

 

 

0.000001

0.0001

0.876081

0.867086

0.867078

13

8

4

 

 

 

 

 

 

 

 

0.1

0.00001

0.875

0.858425

0.872045

2

3

2

 

 

 

 

 

 

 

 

0.01

0.00001

0.863281

0.864907

0.867107

6

4

3

 

 

 

 

 

 

 

 

0.001

0.00001

0.867676

0.866949

0.867107

9

6

3

 

 

 

 

 

 

 

 

0.0001

0.00001

0.867126

0.867075

0.867107

12

8

3

 

 

 

 

 

 

 

 

0.00001

0.0001

0.867092

0.867084

0.86786

16

9

4

 

 

 

 

 

 

 

 

0.000001

0.0001

0.867084

0.867084

0.86786

17

9

4

 

 

 

 

 

 

 

 

9

ПРИЛОЖЕНИЕ А

ИСХОДНЫЙ КОД ПРОГРАММЫ

#include <stdio.h> #include <math.h> #include <stdlib.h> #include <iostream> #include <conio.h>

double delta;

#ifndef __NEWTON #define __NEWTON #endif

#ifndef M_PI

#define M_PI 3.14159265358979323846 #endif // !M_PI

#ifndef FF(x)

#define FF(x) ( (M_PI * pow(x, M_PI + 7) + 2 * M_PI*pow(x, M_PI + 3) + M_PI * pow(x, M_PI - 1) + 4 * pow(x, 3)) / (pow(x, 8) + 2 * pow(x, 4) + 1) )

#define FFF(x) ( (PI2*pow(x, M_PI + 10) - M_PI * pow(x, M_PI + 10) + 3 * PI2*pow(x, M_PI + 6) - 3 * M_PI*pow(x, M_PI + 6) + 3 * PI2*pow(x, M_PI + 2) - 3 * M_PI*pow(x, M_PI + 2) - 20 * pow(x, 6) + PI2 * pow(x, M_PI - 2) - M_PI*pow(x,M_PI-2) + 12 * pow(x, 2)) / (pow(x, 12) + 3 * pow(x, 8) + 3 * pow(x, 4) + 1) )

#endif

extern double F(double); /******************************************************************/

/* Функция F(X) , задаваемая пользователем */

/******************************************************************/

#ifdef __NEWTON

extern double F1(double); /******************************************************************/

/* Производная функции F(X) , задаваемая пользователем */

/******************************************************************/

#endif

#ifdef __ITER

extern double PHI(double); /******************************************************************/

10