summaryrefslogtreecommitdiffstats
path: root/hw2/p1.py
blob: 682abc127b16e2bb5dbc733e3b39c0680c48c2b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from scipy.special import gamma
import numpy as np
from math import exp
import matplotlib.pyplot as plt
from scipy.stats import rv_continuous


def pdf(u, D):
    return 1 / (2 ** ((D / 2.) - 1.)
                * gamma(D / 2.)) * u ** (D - 1.) * exp(-u ** 2. / 2.)


class my(rv_continuous):

    def _pdf(self, u, D):
        return pdf(u, D)


def dist():
    a = np.linspace(0, 20, 1000)
    plt.figure(figsize=(9, 6))
    for D in [1, 2, 5, 10, 20, 50, 100]:
        b = [pdf(u, D) for u in a]
        plt.plot(a, b, label="D=" + str(D))
    plt.legend()
    plt.savefig("dist1.pdf")


def cdf():
    a = my(a=0, b=float("inf"))
    px = np.linspace(5, 15, 100)
    plt.figure(figsize=(9, 6))
    plt.plot(px, a.cdf(px, 100))
    plt.savefig("cumul.pdf")

if __name__ == "__main__":
    cdf()