Сб. Окт 17th, 2026

Численные методы в информатике

Точное и приближённое решение задач

В математике и информатике мы часто сталкиваемся с задачами, которые не имеют точного аналитического решения или его нахождение слишком сложно. В таких случаях используют численные методы — алгоритмы для приближённого решения математических задач.

Точное решение

  • Аналитическая формула
  • Точный ответ
  • Не всегда существует

Приближённое решение

  • Численный метод
  • Оценка с заданной точностью
  • Применимо к широкому классу задач

Численное решение уравнений

Метод перебора

Постепенный перебор значений с заданным шагом до достижения нужной точности.

Алгоритм:

  1. Выбрать начальное значение x и шаг h
  2. Вычислить f(x)
  3. Сравнить с требуемой точностью
  4. Если не достигнута — увеличить x на h
  5. Повторять до достижения точности
def f(x):
    return x**2 - 4  # пример функции

def brute_force_method(f, a, b, step):
    x = a
    while x <= b:
        if abs(f(x)) < 0.001:  # точность
            return x
        x += step
    return None  # решение не найдено

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

Поиск корня функции путем последовательного деления интервала пополам.

Алгоритм:

  1. Выбрать интервал [a, b], где f(a)*f(b) < 0
  2. Вычислить середину интервала c = (a+b)/2
  3. Если f(c) ≈ 0 — корень найден
  4. Иначе выбрать подынтервал [a, c] или [c, b], где функция меняет знак
  5. Повторять до достижения точности
def bisection_method(f, a, b, epsilon):
    if f(a) * f(b) >= 0:
        return None  # нет корня на интервале
    
    while (b - a) >= epsilon:
        c = (a + b) / 2
        if abs(f(c)) < epsilon:
            return c
        elif f(a) * f(c) < 0:
            b = c
        else:
            a = c
    
    return (a + b) / 2
a
b
c

Визуализация метода половинного деления

Приближённое вычисление длин кривых и площадей фигур

Метод прямоугольников

Приближённое вычисление интеграла путем разбиения области на прямоугольники.

Формула: \( \int_a^b f(x)dx \approx \sum_{i=0}^{n-1} f(x_i) \cdot \Delta x \)

def rectangle_method(f, a, b, n):
    dx = (b - a) / n
    total = 0
    for i in range(n):
        x = a + i * dx
        total += f(x) * dx
    return total

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

Более точный метод вычисления интеграла путем разбиения области на трапеции.

Формула: \( \int_a^b f(x)dx \approx \frac{\Delta x}{2} \sum_{i=1}^{n} [f(x_{i-1}) + f(x_i)] \)

def trapezoidal_method(f, a, b, n):
    dx = (b - a) / n
    total = (f(a) + f(b)) / 2
    for i in range(1, n):
        x = a + i * dx
        total += f(x)
    return total * dx

Метод прямоугольников

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

Поиск экстремума функции методом половинного деления

Метод половинного деления можно адаптировать для поиска минимума или максимума функции.

Алгоритм поиска минимума:

  1. Выбрать интервал [a, b], содержащий минимум
  2. Вычислить две внутренние точки: c = a + (b-a)/3 и d = b - (b-a)/3
  3. Сравнить f(c) и f(d)
  4. Если f(c) < f(d), то минимум в [a, d]
  5. Иначе минимум в [c, b]
  6. Повторять до достижения точности
def find_minimum(f, a, b, epsilon):
    while (b - a) > epsilon:
        c = a + (b - a) / 3
        d = b - (b - a) / 3
        
        if f(c) < f(d):
            b = d
        else:
            a = c
            
    return (a + b) / 2

Сравнение методов

Метод Точность Скорость Применение
Метод перебора Низкая Медленная Простые задачи
Метод половинного деления Высокая Быстрая Решение уравнений
Метод прямоугольников Средняя Средняя Вычисление интегралов
Метод трапеций Высокая Средняя Вычисление интегралов

Заключение

Численные методы — мощный инструмент для решения математических задач, которые не имеют аналитического решения или оно слишком сложно. Понимание этих методов важно для успешной сдачи ЕГЭ по информатике и для дальнейшего изучения программирования и вычислительных наук.

При решении задач важно выбирать appropriate метод в зависимости от требуемой точности и эффективности.