Интегрирование по частям
Формула
Из правила (uv)' = u'v + uv', проинтегрировав обе части, получаем uv = \int v\,du + \int u\,dv, то есть
Смысл формулы: интеграл \int u\,dv заменяется интегралом \int v\,du, который при удачном выборе u и dv проще. Порядок действий:
- Разбить подынтегральное выражение на u и dv (всё, что не u, включая dx, — это dv).
- Найти du = u'\,dx и v = \int dv (константу здесь можно не писать).
- Записать uv - \int v\,du и взять оставшийся интеграл.
Пример. \int x e^x dx: u = x, dv = e^x dx, тогда du = dx, v = e^x.
Если выбрать наоборот, u = e^x, dv = x\,dx, получится \frac{x^2}{2}e^x - \int\frac{x^2}{2}e^x dx — интеграл стал сложнее. Выбор важен.
Как выбирать u
Правило ЛИАТЭ — порядок, в котором функции выгоднее брать за u:
Логарифмы → Инверсные (обратные тригонометрические) → Алгебраические (многочлены, степени) → Тригонометрические → Экспоненты.
Логика: за u берём то, что упрощается при дифференцировании (\ln x \to \frac1x, \operatorname{arctg} x \to \frac{1}{1 + x^2}, x^n \to nx^{n-1}), а в dv — то, что легко интегрируется и не усложняется (e^x, \sin x).
| Тип интеграла | u | dv |
|---|---|---|
| \int P(x)\,e^{ax}dx, \int P(x)\sin ax\,dx, \int P(x)\cos ax\,dx | P(x) | остальное |
| \int P(x)\ln x\,dx, \int P(x)\operatorname{arctg} x\,dx, \int P(x)\arcsin x\,dx | \ln x, \operatorname{arctg} x, … | P(x)\,dx |
| \int \ln x\,dx, \int\operatorname{arctg} x\,dx | сама функция | dx |
Пример. \int\operatorname{arctg} x\,dx: u = \operatorname{arctg} x, dv = dx, du = \frac{dx}{1 + x^2}, v = x:
Повторное интегрирование
Для \int x^2\cos x\,dx одного раза мало: после первого шага остаётся \int x\sin x\,dx, после второго — табличный интеграл.
Удобно записывать повторное интегрирование таблицей: в левом столбце производные многочлена до нуля, в правом — последовательные первообразные второго множителя, знаки чередуются.
| знак | u и производные | dv и первообразные |
|---|---|---|
| + | x^2 | \cos x |
| - | 2x | \sin x |
| + | 2 | -\cos x |
| 0 | -\sin x |
Ответ — сумма произведений по диагонали: x^2\sin x - 2x(-\cos x) + 2(-\sin x) + C.
Циклические интегралы
Иногда после двух интегрирований по частям получается исходный интеграл. Тогда его находят из уравнения.
Важно в обоих шагах брать за u функцию одного типа (здесь — тригонометрическую), иначе второй шаг отменит первый.
Так же берутся \int\sqrt{a^2 - x^2}\,dx, \int\sqrt{x^2 + a}\,dx и \int\frac{dx}{\cos^3 x}.
import sympy as sp
x = sp.symbols("x", positive=True)
for f in [x * sp.exp(x), x**2 * sp.cos(x), sp.atan(x), x**2 * sp.log(x), sp.exp(x) * sp.cos(x), sp.sqrt(1 + x**2)]:
F = sp.integrate(f, x)
print(f"∫ {str(f):14} dx = {sp.simplify(F)}")
Итог
- \int u\,dv = uv - \int v\,du — из правила дифференцирования произведения.
- ЛИАТЭ: логарифм и обратные функции — в u; экспоненту и тригонометрию — в dv; многочлен — в u, если рядом экспонента или синус.
- Для многочлена степени n нужно n шагов (удобно таблицей); циклические интегралы решаются как уравнение.
Практика решено 0 из 14
Как вводить формулы
Степень —^ (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).
(x - 1)e^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).
x sin(x) + cos(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).
x ln(x) - 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).
x^3 ln(x)/3 - x^3/9Как вводить формулы
Степень —^ (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).
x arctg(x) - ln(1 + x^2)/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).
-(x^2 + 2x + 2)e^(-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).
-x cos(2x)/2 + sin(2x)/4Как вводить формулы
Степень —^ (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).
x arcsin(x) + sqrt(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).
e^x (sin(x) - cos(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).
x tg(x) + ln|cos(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).
x ln(x)^2 - 2x ln(x) + 2x\displaystyle\int x^3 e^{x^2}\,dx (сначала подведите под дифференциал x\,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).
(x^2 - 1)e^(x^2)/2Что выбрать за u?
| многочлен | другой множитель | |
|---|---|---|
| \int x^2 e^{3x}dx | ||
| \int x \ln x\,dx | ||
| \int (x + 1)\cos x\,dx | ||
| \int x\operatorname{arctg} x\,dx |
Табличное интегрирование. Для \int P(x)\,e^{ax}dx, где P — многочлен, интегрирование по частям повторяется столько раз, какова степень P, и ответ имеет вид Q(x)\,e^{ax}, где Q = \frac{P}{a} - \frac{P'}{a^2} + \frac{P''}{a^3} - \dots
Напишите функцию poly_exp(coeffs, a): coeffs — коэффициенты P от младшего к старшему
([c0, c1, c2] означает c_0 + c_1x + c_2x^2), верните коэффициенты Q в том же формате (список чисел той же длины).
Какие тесты проверяют код (1)
import math
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(poly_exp([0, 1], 1), [-1, 1]), "∫ x eˣ dx = (x − 1)eˣ"
assert close(poly_exp([0, 0, 1], -1), [-2, -2, -1]), "∫ x² e⁻ˣ dx = −(x² + 2x + 2)e⁻ˣ"
assert close(poly_exp([5], 2), [2.5]), "∫ 5e²ˣ dx = 2.5 e²ˣ"
# проверка дифференцированием: (Q e^{ax})' = (Q' + aQ) e^{ax} = P e^{ax}
P, a = [3, -1, 0, 2], 0.5
Q = poly_exp(P, a)
dQ = [k * Q[k] for k in range(1, len(Q))] + [0]
assert close([dq + a * q for dq, q in zip(dQ, Q)], P), "Производная ответа не совпадает с P(x)e^(ax)"
def poly_exp(coeffs, a):
def deriv(p):
return [k * p[k] for k in range(1, len(p))] + [0]
n = len(coeffs)
q = [0.0] * n
p = list(coeffs)
sign, power = 1, 1
for _ in range(n):
for i in range(n):
q[i] += sign * p[i] / a ** power
p = deriv(p)
sign, power = -sign, power + 1
return q
Войдите, чтобы отмечать пройденные уроки.