Материал: ИТОГ 5

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

НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

им. Р.Е.АЛЕКСЕЕВА

Кафедра «Численное решение нелинейных уравнений»

Дисциплина «Информатика»

Лабораторная работа№5

Вариант№23

Выполнил: Федоров К.Р. Группа 19-Э-5 Проверил: Лапшин И.В.

Нижний Новгород

2020

Постановка задачи:

Численно решить нелинейное уравнение на промежутке [a, b] с числом разбиений n и точностью ε методами:

шаговый метод

метод половинного деления

метод Ньютона

метод хорд

метод простой итерации

Выполнить работу в C++ ; Exel ; Mathcad

#include <iostream> #include <iomanip> #include <math.h> //функция

double f(double x)

{

return (2 * x*sin(x*x) - cos(x));

}

//первая производная double f1(double z)

{

return 2 * sin(z*z) + sin(z) + 4 * z*z*cos(z*z);

}

//фи от х

double g(double x)

{

return sqrt(asin(cos(x) / (2 * x)));

}

using namespace std; int main()

{

setlocale(LC_ALL, "Russian");

double a = 0.4, b = 1, an, bn, x0 = 0.4, x1 = 1, c, x, eps; int i;

double h = (b - a) / 10; //шаговый

for (x = a; x <= b; x += h)

{

cout << "x=" << x << " f(x)=" << f(x) << endl; if (f(x)*f(x + h) < 0)

{

an = x;

bn = x + h;

}

}

cout << "Интервал изоляции корня [ " << an << " , " << bn << " ]" << "\n";

cout << "Метод половинного деления\n"; eps = 0.0001;

i = 0; a = an; b = bn; x = (a + b) / 2;

while (fabs(f(x)) > eps)

{

if (f(a)*f(x) < 0) b = x;

else

a = x; x = (a + b) / 2; i++;

}

cout << "Корень =" << x << " За " << i << " итераций\n"; cout << "Метод Ньютона\n";

eps = 0.000001; i = 0; x = an;

while (fabs(f(x)) > eps)

{

x = x - (f(x) / f1(x)); i++;

}

cout << "Корень =" << x << " За " << i << " итераций\n"; cout << "Метод хорд\n";

eps = 0.000001;

i = 0; a = an; b = bn;

x = a - ((b - a) / (f(b) - f(a)))*f(a); while (fabs(f(x)) > eps)

{

if ((f(a)*f(x)) < 0) b = x;

else

a = x;

x = a - ((b - a) / (f(b) - f(a)))*f(a); i++;

}

cout << "Корень =" << x << " За " << i << " итераций\n"; cout << "Метод простой интерации\n";

eps = 0.1; i = 0;

x = an;

while (fabs(f(x)) > eps)

{

x = (g(x)); i++;

}

cout << "Корень =" << x << " За " << i << " итераций\n";

}

a=

0,4

b=

1

n=

10

 

 

 

 

 

f(x) :=

2 x sin(x x) -

cos(x)

 

 

Шаговый метод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

x

f(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,06

0,4

-0,79361

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,46

-0,70283

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,52

-0,59002

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,58

-0,45356

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,64

-0,29235

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,7

-0,10597

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,76

0,105107

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,82

0,339278

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,88

0,593594

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,94

0,863504

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1,14264

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[a;b]

0,7

0,76

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Методы уточнения корня

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Метод половинного деления

 

 

eps=

 

 

 

 

 

 

 

 

0,001

 

 

 

 

 

 

a

x

b

f(a)

f(x)

 

f(a)*f(x)

 

|f(x)|<eps

 

 

 

 

 

 

 

 

0,7

0,73

0,76

-0,105966

-0,00345

0,000365

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

0,73

0,745

0,76

-0,003446

0,050089

-0,00017

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

0,73

0,7375

0,745

-0,003446

0,023135

 

-8E-05

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

метод Ньютона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверка условия сходимости

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 q sin(q 2) -

 

 

 

 

 

s

 

 

 

[a;b]

f(x)

f''(x)

f(x)*f''(x)

 

 

f(q)

 

cos(q)

 

 

 

 

 

 

 

0,7

-0,10597

6,885041

-0,72958

 

 

 

 

 

 

 

(

)

 

 

 

 

 

 

 

 

 

(

)

 

 

 

 

 

 

 

 

 

 

f1(q)

2 sin q2

 

+

sin(q) +

4 q

2 cos q

2

 

 

 

0,76

0,105107

6,447849

0,6777113

 

 

 

 

 

 

 

 

 

 

 

2

 

3

2

 

 

 

 

 

 

 

 

 

f2(q)

cos(q) +

 

 

12 q

cos(q

) -

8 q sin(q

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

f(x)

f'(x)

|f(x)|<eps

 

 

eps=

 

 

 

 

 

 

 

 

0,001

 

 

 

 

 

 

0,76

0,105107

3,716548

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,731719302

0,002614

3,530488

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,730978792

1,84E-06

3,525527

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Метод хорд

 

 

 

eps=

 

 

 

 

 

 

 

 

0,00001

 

 

 

 

 

 

a

x

b

f(a)

f(x)

 

f(b)

 

f(a)*f(x)

 

 

 

|f(x)|<eps

0,7

0,730122

0,76

-0,105966

-0,00302

0,105107

 

 

 

 

 

 

0,0003196

 

Нет

 

 

 

 

0,730122145

0,730956

0,76

-0,003016

-8E-05

0,105107

 

 

 

 

 

 

 

2,419E-07

 

Нет

 

 

 

 

0,730955521

0,730978

0,76

-8,02E-05

-2,1E-06

0,105107

 

 

 

 

 

 

 

1,707E-10

 

Да

 

 

 

 

Метод простой инттерации

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

f(x)

g(x)

|f(x)|<eps

 

 

eps=

 

 

 

 

 

 

 

 

 

0,1

 

 

 

 

 

 

0,7

-0,10597

0,760236

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,760236361

0,105985

0,704837

Нет

 

 

 

 

 

 

cos(x)

 

 

 

 

 

 

 

 

 

 

0,704836861

-0,08985

0,755548

Да

 

 

g(x) := asin

(

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a := 0.4

n := 10

 

b := 1

h :=

(b - a)

= 0.06

n

 

 

 

i := 0 n

xi := a + h i

 

 

 

 

f (xi) =

 

 

0

 

 

0

0.4

 

-0.794

 

1

0.46

 

-0.703

 

2

0.52

 

-0.59

 

3

0.58

 

-0.454

x =

4

0.64

 

-0.292

 

5

0.7

 

-0.106

 

6

0.76

 

0.105

 

7

0.82

 

0.339

 

8

0.88

 

0.594

 

9

0.94

 

0.864

 

10

1

 

1.143

 

 

 

 

 

f (x) := 2 x sin(x x) - cos(x)

 

 

1.5

 

 

 

1

 

 

 

f (xi) 0.5

 

 

 

0.4

0.6

0.8

1

- 0.5

 

 

 

- 1

 

 

 

 

xi

 

 

a := x5 = 0.7

b:= x6 = 0.76

Ме т о д ы у т о ч н е н и я к о р н я

Ме т о д п о л о в и н н о г о д е л е н и я

 

 

 

M1 :=

eps 0.0001

= 0.731

 

x

(a + b )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

while

 

f (x)

 

eps

 

 

 

 

 

 

 

b x

if

(f (a) f (x))

0

 

 

 

 

a x

if

(f (a) f (x))

0

 

 

x

(a + b )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M1 = 0.731

 

 

f (M1) = 6.284 10- 5

Источник: https://studfile.net/preview/16480747/