Интегрирование рациональных функций

⏱ 45 мин · 🧩 заданий: 12

Алгоритм

  1. Целая часть. Если дробь неправильная, делим числитель на знаменатель: \frac{P}{Q} = S(x) + \frac{R}{Q}.
  2. Разложение знаменателя на линейные множители и неразложимые трёхчлены.
  3. Запись разложения с неопределёнными коэффициентами: - каждому множителю (x - a) — дробь \frac{A}{x - a}; - каждому (x - a)^k — дроби \frac{A_1}{x - a} + \frac{A_2}{(x - a)^2} + \dots + \frac{A_k}{(x - a)^k}; - каждому x^2 + px + q — дробь \frac{Mx + N}{x^2 + px + q}, каждому (x^2 + px + q)^k — k таких дробей.
  4. Нахождение коэффициентов.
  5. Интегрирование простейших дробей (предыдущий урок).

Как найти коэффициенты

Приводим разложение к общему знаменателю и приравниваем числители. Получается тождество многочленов.

Способ 1 — подстановка корней. В тождество подставляем корни знаменателя: большинство слагаемых обнуляются.

Способ 2 — сравнение коэффициентов при одинаковых степенях x: получается система линейных уравнений.

Обычно их комбинируют: корни дают часть коэффициентов сразу, оставшиеся — из сравнения старших коэффициентов или подстановки удобных x.

Пример. \int\frac{2x^2 + 3}{x(x - 1)^2}\,dx.

\frac{2x^2 + 3}{x(x - 1)^2} = \frac{A}{x} + \frac{B}{x - 1} + \frac{C}{(x - 1)^2}, \qquad 2x^2 + 3 = A(x - 1)^2 + Bx(x - 1) + Cx.
  • x = 0: 3 = A.
  • x = 1: 5 = C.
  • коэффициент при x^2: 2 = A + B, значит B = -1.
\int = 3\ln|x| - \ln|x - 1| - \frac{5}{x - 1} + C.
import sympy as sp

x = sp.symbols("x")
f = (2*x**2 + 3) / (x * (x - 1)**2)
print("apart:", sp.apart(f))
print("∫ =", sp.integrate(f, x))

# Тот же расчёт методом неопределённых коэффициентов
A, B, C = sp.symbols("A B C")
identity = sp.expand(A*(x - 1)**2 + B*x*(x - 1) + C*x - (2*x**2 + 3))
print("система:", [sp.Eq(c, 0) for c in sp.Poly(identity, x).all_coeffs()])
print("решение:", sp.solve(sp.Poly(identity, x).all_coeffs(), [A, B, C]))

Комплексные корни

Если у знаменателя есть неразложимый трёхчлен, в разложении появляется дробь \frac{Mx + N}{x^2 + px + q}, и в ответе — логарифм и арктангенс.

Пример. \int\frac{dx}{x^3 + 1}. x^3 + 1 = (x + 1)(x^2 - x + 1).

\frac{1}{x^3 + 1} = \frac{1/3}{x + 1} + \frac{-\frac13 x + \frac23}{x^2 - x + 1}
\int\frac{dx}{x^3 + 1} = \frac13\ln|x + 1| - \frac16\ln(x^2 - x + 1) + \frac{1}{\sqrt3}\operatorname{arctg}\frac{2x - 1}{\sqrt3} + C.
import sympy as sp

x = sp.symbols("x")
f = 1 / (x**3 + 1)
print("apart:", sp.apart(f))
F = sp.integrate(f, x)
print("∫ =", F)
print("проверка:", sp.simplify(sp.diff(F, x) - f))

Что получается в ответе

Из алгоритма видно: интеграл от рациональной функции всегда выражается через рациональные функции, логарифмы и арктангенсы. Это важный теоретический результат: класс рациональных функций интегрируется полностью. Многие следующие методы (тригонометрические, иррациональные интегралы) работают так: подходящей заменой свести интеграл к рациональному.

Метод Остроградского

Если знаменатель имеет кратные множители высокой степени, разложение получается громоздким. Метод Остроградского выделяет рациональную часть интеграла без интегрирования:

\int\frac{P}{Q}dx = \frac{P_1}{Q_1} + \int\frac{P_2}{Q_2}dx,

где Q_1 = \text{НОД}(Q, Q'), Q_2 = Q / Q_1 (у Q_2 все корни простые), а коэффициенты P_1, P_2 находятся дифференцированием этого равенства. Интеграл в правой части уже даёт только логарифмы и арктангенсы.

Итог

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

Практика решено 0 из 12

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Ввод формулы

Разложите на простейшие: \dfrac{1}{x(x + 1)} = \;? Введите сумму дробей.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 2 Ввод формулы
\displaystyle\int \frac{dx}{x(x + 1)}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 3 Ввод формулы
\displaystyle\int \frac{(x + 5)\,dx}{(x - 1)(x + 2)}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 4 Ввод формулы
\displaystyle\int \frac{x^2 + 1}{x - 1}\,dx
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 5 Ввод формулы
\displaystyle\int \frac{dx}{x^2 (x - 1)}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 6 Ввод формулы
\displaystyle\int \frac{x\,dx}{(x + 1)^2}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 7 Ввод формулы
\displaystyle\int \frac{dx}{x^3 + x}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 8 Ввод формулы
\displaystyle\int \frac{3x^2 + 2x + 1}{(x + 1)(x^2 + 1)}\,dx
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 9 Ввод формулы
\displaystyle\int \frac{x^3\,dx}{x^2 - 1}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 10 Ввод формулы
\displaystyle\int \frac{dx}{x^4 - 1}
Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 11 Один вариант ответа

Как выглядит разложение \dfrac{2x + 3}{(x - 1)^2 (x^2 + 4)} на простейшие?

Задание 12 Программа на Python

Метод «закрывания». Если знаменатель — произведение различных линейных множителей (x - a_1)(x - a_2)\cdots(x - a_n), а числитель P имеет степень меньше n, то

\frac{P(x)}{\prod (x - a_i)} = \sum_i \frac{A_i}{x - a_i}, \qquad A_i = \frac{P(a_i)}{\prod_{j \ne i}(a_i - a_j)}.
Напишите функцию partial_fractions(P, roots): P — функция Python (числитель), roots — список различных корней знаменателя. Верните список коэффициентов A_i в том же порядке.

Какие тесты проверяют код (1)
def close(u, v):
    return len(u) == len(v) and all(abs(p - q) < 1e-9 for p, q in zip(u, v))
assert close(partial_fractions(lambda x: 1, [0, -1]), [1, -1]), "1/(x(x+1)) = 1/x − 1/(x+1)"
assert close(partial_fractions(lambda x: x + 5, [1, -2]), [2, -1])
roots = [0, 1, 2, -3]
P = lambda x: x**2 - 4*x + 7
A = partial_fractions(P, roots)
for x in [0.5, 1.7, -2.2, 3.3]:
    Q = 1
    for r in roots:
        Q *= x - r
    assert abs(sum(a / (x - r) for a, r in zip(A, roots)) - P(x) / Q) < 1e-9, "Сумма простейших дробей не совпадает с исходной дробью"

Войдите, чтобы отмечать пройденные уроки.