Перейти к основному содержимому

4. Нахождение корней нелинейного уравнения

Алиас: 3 метода.

Цель работы

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

Задание

  1. Найти корень уравнения xcos(x)=0x - \cos(x) = 0 простой итерацией (метод №1), половинным делением (метод №2) и методом Ньютона (метод №3) с погрешностью eps<0.000001eps < 0.000001 и для каждого из трех методов определить количество шагов алгоритма.
  2. Выполнить п.1 для eps<0.00000001eps < 0.00000001.
  3. Выполнить п.1 для уравнения xkcos(x)=0x - k*\cos(x) = 0 для k=5k = 5 и k=10k = 10 и объяснить результаты.

Результат представить в виде таблицы (без рамок), которая содержит три столбца № метода, x и N, где N - количество итераций.

Ширина столбца: 16 символов.

предупреждение

Последний столбец пробелами не заполняется!

Требуемая точность: 8 знаков после запятой

Пример вывода в консоли

Уравнение: x - cos(x) = 0. Погрешность: 0.000001
№ метода x N
1 0.00000000 0
2 0.00000000 0
3 0.00000000 0

Уравнение: x - cos(x) = 0. Погрешность: 0.00000001
№ метода x N
1 0.00000000 0
2 0.00000000 0
3 0.00000000 0

Уравнение: x - k * cos(x) = 0, k = 5. Погрешность: 0.000001
№ метода x N
1 0.00000000 0
2 0.00000000 0
3 0.00000000 0

Уравнение: x - k * cos(x) = 0, k = 10. Погрешность: 0.000001
№ метода x N
1 0.00000000 0
2 0.00000000 0
3 0.00000000 0

Указания по выполнению работы

осторожно

Методы нахождения корней нелинейного уравнения требуется оформить в виде функций. В случае игнорирования данного требования, код будет отправлен на доработку.

Численному решению уравнения

f(x)=0(1)f(x) = 0 \quad (1)

должно предшествовать хотя бы грубое исследование вопросов существования и положения корней.

Итерационные методы

Заданное уравнение f(x)=0f(x) = 0 приводят к виду

x=φ(x)(2)x = \varphi(x) \quad (2)

Выбирая некоторое начальное приближение X0X_0, вычисляют последовательные приближения

Xj+1=φ(Xj),(j=0,1,2,...)X_{j+1} = \varphi(X_j),\quad (j = 0, 1, 2, ...)

Сходимость таких приближений к искомому решению XX требует отдельного исследования. Сходимость зависит прежде всего от вида функции, а также от начального приближения. В данной лабораторной работе такие исследования не делаются, но в пункте 3 задания приведена функция, для которой решения методом Ньютона и методом простой итерации расходятся. Для того, чтобы программа нахождения корней этими методами не зацикливалась, следует ограничивать максимальное число итераций NmaxN_{max}.

предупреждение

Для выполнения задания использовать Nmax<100000N_{max} < 100000. В противном случае ваша программа при тестировании будет останавливаться по таймауту, а тест будет считаться провалившимся.

Возможны различные способы приведения уравнения (1)(1) к виду (2)(2).

Простая итерация

Xj+1=Xjf(Xj).X_{j+1} = X_j - f(X_j).

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

Xj+1=Xjf(Xj)/f(Xj).X_{j+1} = X_j - f(X_j)/ f'(X_j).

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

Для использования этого метода нужно задать границы интервала на оси абсцисс, содержащего ровно один корень [xl,xr][xl, xr] и требуемую точность вычислений.

Суть метода заключается в следующем. Выбирают XX на середине интервала [xl,xr][xl, xr] и определяют f(X)f(X). Если f(X)<epsf(X) < eps, то середина интервала считается корнем функции, иначе корень ищется на том интервале из двух полученных, для которого значения функции на концах имеют разные знаки.

Проверка задания

Подготовленная программа для решения задания проверяется вручную преподавателем (визуальный контроль).

Методический материал

  1. Требования к отчету
  2. Контрольные вопросы:
    1. Для потока на С
    2. Для потока на С++