# std::beta, std::betaf, std::betal

< cpp‎ | numeric‎ | special functions

定义于头文件 `<cmath>` |  |
double beta( double x, double y ); float betaf( float x, float y ); long double betal( long double x, long double y ); | (1) | (C++17 起)
Promoted beta( Arithmetic x, Arithmetic y ); | (2) | (C++17 起)

1) 计算 `x` 与 `y` 的 Β 函数。
2) 所有 (1) 所不覆盖的算术类型参数组合的重载集或函数模板。若任何参数拥有整数类型，则它被转型到 double 。若任何参数为 long double ，则返回类型 `Promoted` 亦为 long double ，否则返回类型始终是 double 。

### 参数

x, y | - | 浮点或整数类型值

### 返回值

若无错误发生，则返回 `x` 与 `y` 的 beta 函数值，即 \(\int_{0}^{1}{ {t}^{x-1}{(1-t)}^{y-1}\mathsf{d}t}\)∫1
0tx-1
(1-t)(y-1)
dt ，或等价地为 \(\frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}\)

Γ(x)Γ(y)
Γ(x+y)

。

### 错误处理

可能报告 `math_errhandling` 中指定的错误。

- 若任一参数是 NaN ，则返回 NaN 且不报告定义域错误
- 仅要求函数在 `x` 与 `y` 均大于零的情况有定义，并且允许其他情况下报告定义域错误。

### 注解

不支持 C++17 ，但支持 ISO 29124:2010 的实现会提供此函数，若实现定义了 `__STDCPP_MATH_SPEC_FUNCS__` 为至少 201003L 的值，且用户在包含任何标准库头文件前定义了 `__STDCPP_WANT_MATH_SPEC_FUNCS__` 。

不支持 ISO 29124:2010 但支持 TR 19768:2007 (TR1) 的实现，在头文件 `tr1/cmath` 及命名空间 `std::tr1` 中提供此函数。

此函数的一种实现亦可用于 boost.math

beta(x, y) 等于 beta(y, x)

当 `x` 与 `y` 为正整数时， beta(x,y) 等于 \(\frac{(x-1)!(y-1)!}{(x+y-1)!}\)

(x-1)!(y-1)!
(x+y-1)!

。

二项式系数可用 Β 函数表示： \(\binom{n}{k} = \frac{1}{(n+1)B(n-k+1,k+1)}\)⎛
⎜
⎝n
k⎞
⎟
⎠=

1
(n+1)Β(n-k+1,k+1)

。

### 示例

    #include <cmath>
    #include <string>
    #include <iostream>
    #include <iomanip>
    double binom(int n, int k) { return 1/((n+1)*std::beta(n-k+1,k+1)); }
    int main()
    {
        std::cout << "Pascal's triangle:\n";
        for(int n = 1; n < 10; ++n) {
            std::cout << std::string(20-n*2, ' ');
            for(int k = 1; k < n; ++k)
                std::cout << std::setw(3) << binom(n,k) << ' ';
            std::cout << '\n';
        }
    }

输出：

    Pascal's triangle:

                      2
                    3   3
                  4   6   4
                5  10  10   5
              6  15  20  15   6
            7  21  35  35  21   7
          8  28  56  70  56  28   8
        9  36  84 126 126  84  36   9

### 参阅

tgamma tgammaf tgammal (C++11)(C++11)(C++11) | gamma 函数 (函数)

### 外部链接

Weisstein, Eric W. “ Β 函数。” 来自 MathWorld--A Wolfram Web Resource 。