Гамма- и бета-функции

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

Гамма-функция

\Gamma(s) = \int_0^\infty x^{s-1}e^{-x}\,dx, \qquad s > 0.

Интеграл несобственный дважды: на бесконечности (e^{-x} побеждает любую степень — сходится всегда) и около нуля (x^{s-1}, сходится при s - 1 > -1, то есть s > 0).

Главное свойство. По частям (u = x^s, dv = e^{-x}dx):

\Gamma(s + 1) = -x^se^{-x}\Big|_0^\infty + s\int_0^\infty x^{s-1}e^{-x}dx = s\,\Gamma(s).

Поскольку \Gamma(1) = \int_0^\infty e^{-x}dx = 1, получаем

\Gamma(n + 1) = n! \qquad (n = 0, 1, 2, \dots).

Гамма-функция — продолжение факториала на нецелые числа. Например, «\frac12!» = \Gamma\left(\frac32\right) = \frac{\sqrt\pi}{2}.

\Gamma\left(\frac12\right) = \sqrt\pi

Замена x = t^2:

\Gamma\left(\tfrac12\right) = \int_0^\infty x^{-1/2}e^{-x}dx = 2\int_0^\infty e^{-t^2}dt = \sqrt\pi.

Последнее равенство — интеграл Эйлера–Пуассона; мы докажем его в модуле о кратных интегралах. Дальше по формуле приведения: \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 они сводятся к гамме:

\int_0^\infty x^ne^{-x}dx = n!, \qquad \int_0^\infty x^{2}e^{-x^2}dx = \frac12\Gamma\left(\tfrac32\right) = \frac{\sqrt\pi}{4}.
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(a, b) = \int_0^1x^{a-1}(1 - x)^{b-1}dx, \qquad a, b > 0.

Связь с гаммой (доказывается двойным интегралом):

B(a, b) = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a + b)}.

Например, B(2, 3) = \frac{1!\cdot2!}{4!} = \frac{1}{12}.

Тригонометрическая форма. Замена x = \sin^2\varphi:

\int_0^{\pi/2}\sin^{2a-1}\varphi\cos^{2b-1}\varphi\,d\varphi = \frac12B(a, b).

Это обобщение интегралов Валлиса: \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-мерном пространстве:

V_n = \frac{\pi^{n/2}}{\Gamma\left(\frac n2 + 1\right)}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:

n! = \Gamma(n + 1) \approx \sqrt{2\pi n}\left(\frac ne\right)^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

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Ввод формулы
\Gamma(5) = \;?
Как вводить формулы Степень — ^ (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_0^\infty x^6 e^{-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).
Задание 3 Ввод формулы

\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).
Задание 4 Ввод формулы
\Gamma\left(\frac32\right) = \;?
Как вводить формулы Степень — ^ (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 Ввод формулы
\Gamma\left(\frac52\right) = \;?
Как вводить формулы Степень — ^ (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_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).
Задание 7 Ввод формулы
\displaystyle\int_0^\infty x^2 e^{-x^2}\,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).
Задание 8 Ввод формулы
B(2, 3) = \displaystyle\int_0^1 x(1 - x)^2\,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_0^1 \sqrt{x(1 - x)}\,dx = B\left(\frac32, \frac32\right)
Как вводить формулы Степень — ^ (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_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).
Задание 11 Ввод формулы

\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).
Задание 12 Программа на Python

Формула Стирлинга. 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 нужно считать через логарифмы"

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