Гамма- и бета-функции
Гамма-функция
Интеграл несобственный дважды: на бесконечности (e^{-x} побеждает любую степень — сходится всегда) и около нуля (x^{s-1}, сходится при s - 1 > -1, то есть s > 0).
Главное свойство. По частям (u = x^s, dv = e^{-x}dx):
Поскольку \Gamma(1) = \int_0^\infty e^{-x}dx = 1, получаем
Гамма-функция — продолжение факториала на нецелые числа. Например, «\frac12!» = \Gamma\left(\frac32\right) = \frac{\sqrt\pi}{2}.
\Gamma\left(\frac12\right) = \sqrt\pi
Замена x = t^2:
Последнее равенство — интеграл Эйлера–Пуассона; мы докажем его в модуле о кратных интегралах. Дальше по формуле приведения: \Gamma\left(\frac32\right) = \frac12\sqrt\pi, \Gamma\left(\frac52\right) = \frac34\sqrt\pi.
Применение — интегралы вида \int_0^\infty x^ne^{-ax^k}dx. Заменой t = ax^k они сводятся к гамме:
import numpy as np
import vis
from math import gamma, factorial
x = np.linspace(0.05, 5, 500)
vis.line(x, {"Γ(x)": [gamma(v) for v in x]}, points=[(n + 1, factorial(n)) for n in range(5)],
title="Гамма-функция проходит через точки (n + 1, n!)", xlabel="x")
print("Γ(1/2) =", gamma(0.5), " √π =", np.sqrt(np.pi))
print("Γ(5) =", gamma(5), " 4! =", factorial(4))
Бета-функция
Связь с гаммой (доказывается двойным интегралом):
Например, B(2, 3) = \frac{1!\cdot2!}{4!} = \frac{1}{12}.
Тригонометрическая форма. Замена x = \sin^2\varphi:
Это обобщение интегралов Валлиса: \int_0^{\pi/2}\sin^m x\cos^n x\,dx = \frac12B\left(\frac{m + 1}{2}, \frac{n + 1}{2}\right) для любых m, n > -1, не обязательно целых.
Формула дополнения: \Gamma(s)\Gamma(1 - s) = \frac{\pi}{\sin\pi s}, 0 < s < 1. При s = \frac12 она снова даёт \Gamma\left(\frac12\right)^2 = \pi.
import sympy as sp
x, phi = sp.symbols("x phi", positive=True)
print("B(2, 3) =", sp.integrate(x * (1 - x)**2, (x, 0, 1)), "=", sp.gamma(2) * sp.gamma(3) / sp.gamma(5))
print("∫√(x(1−x)) =", sp.simplify(sp.gamma(sp.Rational(3, 2))**2 / sp.gamma(3)))
print("∫ sin³cos⁵ на [0, π/2] =", sp.integrate(sp.sin(phi)**3 * sp.cos(phi)**5, (phi, 0, sp.pi / 2)))
print("∫√tg x =", sp.nsimplify(sp.N(sp.gamma(sp.Rational(3, 4)) * sp.gamma(sp.Rational(1, 4)) / 2), [sp.pi, sp.sqrt(2)]))
Объём многомерного шара
Гамма-функция появляется повсюду. Например, объём шара радиуса R в n-мерном пространстве:
При n = 2: \pi R^2; при n = 3: \frac{\pi^{3/2}}{\Gamma(5/2)} = \frac{\pi^{3/2}}{\frac34\sqrt\pi} = \frac43\pi. А при росте n объём единичного шара стремится к нулю — почти весь объём многомерного куба сосредоточен в его углах. Это одна из причин «проклятия размерности» в машинном обучении.
from math import gamma, pi
import vis
ns = list(range(1, 21))
V = [pi ** (n / 2) / gamma(n / 2 + 1) for n in ns]
vis.bar([str(n) for n in ns], V, title="Объём единичного шара в n-мерном пространстве", fmt=".2f")
print("максимум при n =", ns[V.index(max(V))])
Формула Стирлинга
Для больших n:
Её выводят, оценивая интеграл \int_0^\infty e^{n\ln x - x}dx около максимума подынтегральной функции (метод Лапласа). Относительная ошибка примерно \frac{1}{12n}.
Итог
- \Gamma(s) = \int_0^\infty x^{s-1}e^{-x}dx, \Gamma(s + 1) = s\Gamma(s), \Gamma(n + 1) = n!, \Gamma\left(\frac12\right) = \sqrt\pi.
- B(a, b) = \int_0^1x^{a-1}(1 - x)^{b-1}dx = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a + b)}.
- Интегралы \int x^ne^{-x^k}, \int x^a(1 - x)^b, \int\sin^m\cos^n на [0; \frac\pi2] сразу выражаются через Γ и B.
Практика решено 0 из 12
Как вводить формулы
Степень —^ (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).
24Как вводить формулы
Степень —^ (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).
720\displaystyle\int_0^\infty x^3 e^{-2x}\,dx (замена t = 2x)
Как вводить формулы
Степень —^ (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/8Как вводить формулы
Степень —^ (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).
sqrt(pi)/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).
3sqrt(pi)/4Вычислите \displaystyle\int_0^\infty e^{-x^2}\,dx через гамма-функцию (замена t = 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).
sqrt(pi)/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).
sqrt(pi)/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).
1/12Как вводить формулы
Степень —^ (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).
pi/8\displaystyle\int_0^{\pi/2} \sin^3 x\cos^5 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).
1/24\displaystyle\int_0^{\pi/2} \sqrt{\operatorname{tg}x}\,dx. Подсказка: это \frac12B\left(\frac34,\frac14\right), а \Gamma(s)\Gamma(1 - s) = \frac{\pi}{\sin\pi s}.
Как вводить формулы
Степень —^ (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).
pi/sqrt(2)Формула Стирлинга. n! \approx \sqrt{2\pi n}\left(\frac ne\right)^n. Напишите функцию stirling(n)
и функцию rel_error(n) — относительную ошибку \frac{n! - \text{stirling}(n)}{n!}
(используйте math.factorial, а для больших n считайте через логарифмы, math.lgamma, чтобы не было переполнения).
Какие тесты проверяют код (1)
import math assert abs(stirling(10) - 3598695.6187) < 0.01 assert abs(rel_error(10) - 0.008295960443) < 1e-9 assert abs(rel_error(1000) - 1 / 12000) < 1e-7, "Ошибка ≈ 1/(12n)" assert 0 < rel_error(10**6) < 1e-6, "Для больших n нужно считать через логарифмы"
import math
def stirling(n):
return math.sqrt(2 * math.pi * n) * (n / math.e) ** n
def rel_error(n):
log_ratio = 0.5 * math.log(2 * math.pi * n) + n * (math.log(n) - 1) - math.lgamma(n + 1)
return 1 - math.exp(log_ratio)
Войдите, чтобы отмечать пройденные уроки.