Задания
Задание 1. Указатели
Решите уравнение указанным в варианте методом. Функцию передать как параметр с помощью указателя.
Численные методы решения уравнений
Довольно часто на практике приходится решать уравнения вида:
![]() |
( 2) |
![F(x)](/sites/default/files/tex_cache/d76f2c4d6bdf142af5106c3f36e9e970.png)
![\alpha < x < \beta](/sites/default/files/tex_cache/42904eac33dc3a58b398403706f73a65.png)
Всякое значение такое, что
, называется корнем уравнения, а нахождение этого значения и есть решение уравнения.
На практике в большинстве случаев найти точное решение возникшей математической задачи не удается. Поэтому важное значение приобрели численные методы, позволяющие найти приближенное значение корня. Под численными методами подразумеваются методы решения задач, сводящиеся к арифметическим и некоторым логическим действиям над числами, т.е. к тем действиям, которые выполняет компьютер.
Существует множество численных методов решения уравнений вида (1). Рассмотрим только три из них:
Метод итераций
Представим уравнение в виде:
![]() |
( 2) |
Это уравнение получается выделением из уравнения
и переносом того, что осталось, т.е.
, в левую часть уравнения. Иначе можно получить уравнение (2) следующим способом: левую и правую часть уравнения (1) умножить на произвольную константу
и прибавить к левой и правой части
, т.е. получаем уравнение вида:
![]() |
( 3) |
![f(x)=x+\lambda F(x)](/sites/default/files/tex_cache/72e9b4cfaf8cef8b4b22ef4464658ccc.png)
На заданном отрезке выберем точку
– нулевое приближение – и найдем
![x_1=f(x_0),](/sites/default/files/tex_cache/74f23c2de3e45356f03d2bf052c8085d.png)
![x_2=f(x_1),](/sites/default/files/tex_cache/b2d847064a4b0ee44628083b0eb0a1f0.png)
Таким образом, процесс нахождения корня уравнения сводится к последовательному вычислению чисел:
![x_n=f(x_{n-1})\quad n=1,2,3 \ldots .](/sites/default/files/tex_cache/e62791c2946290e27c09627ed4584d1d.png)
Если на отрезке выполнено условие:
![|f'(x_0)|\leq q<1,](/sites/default/files/tex_cache/9df3be1bd96ff2f6a8f27a939a4fede7.png)
![\lim_{n\rightarrow\infty}x_n=\overline{x}](/sites/default/files/tex_cache/0a480f6d6ded36e8f0a1a8eed260785b.png)
Процесс итераций продолжается до тех пор, пока
![|x_n-x_{n-1}|\leq\varepsilon,](/sites/default/files/tex_cache/faee9277f3e2154a868004103f8c742d.png)
![\varepsilon](/sites/default/files/tex_cache/f8b1c5a729a09649c275fca88976d8dd.png)
![x](/sites/default/files/tex_cache/9dd4e461268c8034f5c8564e155c67a6.png)
![|\overline{x}-x_n|\leq\varepsilon,](/sites/default/files/tex_cache/8629ee5f83a0d14aed3d174f6c16e9c6.png)
Метод Ньютона
Пусть уравнение имеет один корень на отрезке
, причем
и
определены, непрерывны и сохраняют постоянные знаки на отрезке
.
Выберем на отрезке произвольную точку
– нулевое приближение. Затем найдем:
![x_1=x_0-\frac{F(x_0)}{F'(x_0)}](/sites/default/files/tex_cache/35b888269debee0a86910f46058485fd.png)
![x_2=x_1-\frac{F(x_1)}{F'(x_1)}](/sites/default/files/tex_cache/04774ff77a6265bd892f61ce1c3ff933.png)
Таким образом, процесс нахождения корня уравнения сводится к вычислению чисел по формуле:
![x_n=x_{n-1}-\frac{F(x_{n-1})}{F'(x_{n-1})},\quad n=1,2,3\ldots](/sites/default/files/tex_cache/d872f3b78a1052dc42a0c03b1eb81fa8.png)
Этот процесс называется методом Ньютона.
Процесс вычисления продолжается до тех пор, пока не будет выполнено условие:
![|x_n-x_{n-1}|\leq\varepsilon,](/sites/default/files/tex_cache/faee9277f3e2154a868004103f8c742d.png)
![\varepsilon](/sites/default/files/tex_cache/f8b1c5a729a09649c275fca88976d8dd.png)
![x](/sites/default/files/tex_cache/9dd4e461268c8034f5c8564e155c67a6.png)
Точку необходимо выбирать так, чтобы выполнялось условие:
![F(x_0)\dot F'(x_0)>0,](/sites/default/files/tex_cache/4d0e84592727ced7c751203b37653c6b.png)
Метод половинного деления
Пусть уравнение имеет один корень на отрезке
. Функция непрерывна на отрезке
.
Метод половинного деления заключается в следующем:
Сначала выбираем начальное приближение, деля отрезок пополам, т.е.
![x_0=(a+b)/2.](/sites/default/files/tex_cache/7cc3b259107d5b01e8719e5fd4aa2643.png)
Если , то
является корнем уравнения. Если
то выбираем тот из отрезков, на концах которого функция имеет противоположные знаки. Полученный отрезок снова делим пополам и выполняем действия сначала и т.д.
Процесс деления отрезка продолжаем до тех пор, пока длина отрезка, на концах которого функция имеет противоположные знаки, не будет меньше заданной точности , т.е. пока не будет выполняться условие:
![|x_n-x_{n-1}|\leq\varepsilon.](/sites/default/files/tex_cache/37dc31514033f66ac162148808a5fde2.png)
Варианты задания