Программу решения нелинейного уравнения методом бисекции

Задачи

Задача 1: Метод бисекций

Написать программу для нахождения решения нелинейного уравнения \( f (x) = 0 \) методом бисекций. С ее помощью найдите корни уравнения \( (1 + x^2)e^ <-x>+ \sin x = 0 \) на интервале \( [0,10] \).

Задача 2: Метод секущих

Напишите программу для решения нелинейного уравнения \( f (x) = 0 \) методом секущих. Используйте ее для решения уравнения \( 4 \sin x + 1 — x = 0 \) на интервале \( [-10,10] \).

Задача 3: Метод Ньютона для систем уравнений

Написать программу для нахождения решения системы нелинейных уравнений \( F(x) = 0 \) методом Ньютона. С ее помощью найдите приближенное решение системы $$ (3 + 2x_1)x_1 — 2x_2 = 3, $$ $$ (3 + 2x_i )x_i — x_ — 2x_ = 2, \quad i = 2, 3, \ldots, n — 1, $$ $$ (3 + 2x_n)x_n — x_ = 4. $$ при \( n = 10 \) и сравните его с точным решением \( x_i = 1 \), \( i = 1, 2, \ldots, n \).

Метод половинного деления (метод дихотомии или метод бисекции)

Теорема 2. Итерационный процесс половинного деления сходится к искомому корню ξ с любой наперед заданной точностью ε.
Доказательство: Рассмотрим последовательность чисел ξi являющихся приближением корня на i -ом шаге.
ξi=½(bi+ai), i=0,1.
где a0=a; b0=b; ai;bi — границы подынтервалов, в которых f(ai)f(bi) 0 мы ни задали, всегда можно найти такое n , что ч.т.д.
Графически метод дихотомии выглядит следующим образом

|f(c)|≤δ f(a)f(c) 10 = 1024 ≈ 10 3 раз. За 20 итераций (n=2) уменьшается в 2 20 ≈ 10 6 раз.

Пример №1 . Найти экстремум функции: y=5x 2 -4x+1 методом дихотомии, если ε=0.1, а исходный интервал [0,10].

  • Решение
  • Видео решение

Пример №3 . Методом бисекции найти решение нелинейного уравнения на отрезке [a,b] с точностью ε = 10 -2 . Выбрав полученное решение в качестве начального приближения, найти решение уравнения методом простой итерации с точностью ε = 10 -4 . Для метода простой итерации обосновать сходимость и оценить достаточное для достижения заданной точности число итераций.
sqrt(t)+x 2 = 10, a = 2.6, b = 3

Найдем корни уравнения:
Используем для этого Метод половинного деления (метод дихотомии)..
Считаем, что отделение корней произведено и на интервале [a,b] расположен один корень, который необходимо уточнить с погрешностью ε.
Итак, имеем f(a)f(b) 1 /2(a+b) и вычисляем f(c). Проверяем следующие условия:
1. Если |f(c)| 1 /2 n (b-a)
В качестве корня ξ. возьмем 1 /2(an+bn). Тогда погрешность определения корня будет равна (bn – an)/2. Если выполняется условие:
(bn – an)/2 1 /2(an+bn).
Решение.
Поскольку F(2.6)*F(3) 0, то a=2.8
Итерация 2.
Находим середину отрезка: c = (2.8 + 3)/2 = 2.9
F(x) = 0.113
F(c) = -0.487
Поскольку F(c)•F(x) 0, то a=2.825
Остальные расчеты сведем в таблицу.

Ncabf(c)f(x)
12.632.8-1.6275-0.4867
22.832.9-0.48670.1129
32.82.92.850.1129-0.1893
42.82.852.825-0.1893-0.3386
52.8252.852.8375-0.3386-0.2641
62.83752.852.8438-0.2641-0.2267

Ответ: x = 2.8438; F(x) = -0.2267
Решение было получено и оформлено с помощью сервиса Метод Ньютона онлайн

Пример №2 . Локализовать корень нелинейного уравнения f(x) = 0 и найти его методом бисекции с точностью ε1 = 0,01. Выбрав полученное решение в качестве начального приближения, найти решение уравнения методом простой итерации с точностью ε2 = 0,0001. Для метода простой итерации обосновать сходимость и оценить достаточное для достижения заданной точности ε2 число итераций.

Метод деления отрезка пополам

Метод бисекции или метод деления отрезка пополам – простой численный метод для решения нелинейного уравнения вида f(x) = 0.

Описание алгоритма

Метод применим для численного решения уравнения f(x) = 0 для действительной переменной x, где f(x) – непрерывная функция, определенная на интервале [a, b], а f(a) и f(b) имеют противоположные знаки. В этом случае говорят, что a и b заключают в скобки корень, поскольку по теореме о промежуточном значении непрерывная функция f(x) должна иметь хотя бы один корень в интервале (a, b).

На каждом шаге метод делит интервал на две части, вычисляя среднюю точку t = (a + b) / 2 интервала и значение функции f(t) в этой точке. Если только t не является корнем (что очень маловероятно, но возможно), теперь есть только две возможности: либо f(a) и f(t) имеют противоположные знаки и скобки для корня, либо f(t) и f(b) иметь противоположные знаки и заключать в скобки корень. Метод выбирает подинтервал, который гарантированно будет скобкой, в качестве нового интервала, который будет использоваться на следующем шаге. Таким образом, интервал, содержащий ноль f(x), уменьшается по ширине на 50% на каждом шаге. Процесс продолжается до тех пор, пока интервал не станет достаточно малым.

Если f(a) и f(t) имеют противоположные знаки, тогда метод устанавливает t как новое значение для b, а если f(b) и f(t) имеют противоположные знаки, то метод устанавливает t как новое значение а. Если f(t) = 0, то t может быть принято как решение, и процесс останавливается. В обоих случаях новые f(a) и f(b) имеют противоположные знаки, поэтому метод применим к этому меньшему интервалу.

Реализация алгоритма

Метод можно применять к любой функции f(x)=0, для этого достаточно изменить локальный метод double f(double x) в коде программы.


источники:

http://math.semestr.ru/optim/dichotomy.php

http://programm.top/c-sharp/algorithm/numerical-methods/bisection-method/