数学公式及 Python 实现

2020-12-1 19:07

求和

$$\sum_{i=0}^{5}x_{i}*2$$

        x = [1, 2, 3, 4, 5, 6]
        result = 0
        for i in range(len(x)):
            result += x[i]*2
      

乘积

$$\prod_{i=0}^5x_i*2$$

        x = [1, 2, 3, 4, 5, 6]
        result = 1
        for i in range(len(x)):
            result *= x[i]*2
      

阶乘

$$5!$$

        result = 1
        for i in range(1,6):
            result *= i
      

矩阵相乘

$$y= \begin{bmatrix} 1&2\\ 3&4\\ 5&6\\ \end{bmatrix} * \begin{bmatrix} 7\\ 8\\ \end{bmatrix} $$

        a = [[1,2],[3,4],[5,6]]
        b = [[7], [8]]
        y = [[0], [0], [0]] # y 的形状为 len(a) 行 len(b) 列
        for i in range(len(a))
            for j in range(len(b)):
                y[i][j] = np.dot(a[i], b[:, j])
      

矩阵 Hadamard 乘积

$$z= \begin{bmatrix} 1&2\\ 3&4 \end{bmatrix} \bigodot \begin{bmatrix} 4&3\\ 2&1 \end{bmatrix} $$

        x = [[4,3],[2,1]]
        y = [[1,2],[3,4]]
        z = [[0,0],[0,0]]

        for i in range(len(x)):
            for j in range(len(y[0])):
                z[i][j] = x[i][j] * y[i][j]
      

一次函数

$$y=kx+b$$

二次函数

$$y=ax^2+bx+c$$

极值:$$y=\frac{4ac-b^2}{4a}$$

对称轴:$$x=-\frac{b}{2a}$$

指数函数

$$y=a^x$$

过点:$$(0,1)$$

        y = math.pow(a,x)
        real = math.exp(2) == math.pow(math.e,2)
      

$$f(x)=e^x$$ 导数为 $$f'(x)=e^x$$

对数

假设 $$y=a^x$$ 那么 $$x=\log_ay$$

        x = math.log(y,a)
        real = math.log(y) == math.log(y,math.e)
        # 特殊底数
        ln = math.log(y,math.e)
        lg = math.log(y,10)
      

$$log_a(m*n)=log_am+log_an$$

$$log_a(\frac{m}{n})=log_am-log_an$$

$$log_am^n=n*log_am$$

$$log_ab=\frac{1}{log_ba}$$

三角函数

a b 为直角边,c 为斜边

$$sin(a)=\frac{a}{c}$$

$$cos(a)=\frac{b}{c}$$

$$tan(a)=\frac{a}{b}$$

$$sin(\theta)^2+cos(\theta)^2=1$$

向量内积

$$\vec a=[a_1,a_2,a_3]$$,$$\vec b=[b_1,b_2,b_3]$$

$$\vec a\cdot \vec b=a_1b_1+a_2b_2+a_3b_3$$

标准差

$$\sigma=\sqrt[2]{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n}}$$

标准差系数$$=\frac{\sigma}{\bar{x}}$$

方差

$$\sigma^2$$

协方差

$$Cov(a,b)=\sum_{i=1}^n(a_i-\bar{a})(b_i-\bar{b})$$

相关系数

$$\rho(a,b)=\frac{Cov(a,b)}{\bar{a}*\bar{b}}$$

应用:相关系数热力图

EMA

        a=[1,2,3,4,5,6,7]

        deno = 0
        for i in range(1,len(a)+1):
          deno += i

        ema = 0
        j = len(a)
        for i in a:
          ema += j/deno*i
          j -= 1
      

伯努利分布

$$f(x;p)=p^x*(1-p)^{1-x}$$

x 表示投硬币的结果,可以是 0 或 1,p 表示出现正面或反面的概率 0.5。

ELO

用来做排名,应用场景:游戏天梯、体育比赛排名等

A 对 B 的期望胜率:$$E_A=\frac{1}{1+10^{(Rb-Ra)/400}}$$,B 对 A 的期望胜率:$$E_B=\frac{1}{1+10^{(Ra-Rb)/400}}$$

Ra 表示 A 当前的 Rank 分,Rb 表示 B 当前的 Rank 分

设 $$D=Ra-Rb$$ 即 A 与 B 的 Rank 分差,则:$$P(D)=\frac{1}{1+10^{-\frac{D}{400}}}$$

修正 Rank 分:$$R=R+k*(W-P(D))$$

W 为结果(胜 1 负 0 平 0.5),k 为常数