コード例 #1
0
def test_eig_dyn():
    v = 0
    for i in xrange(5):
        n = 1 + int(mp.rand() * 5)
        if mp.rand() > 0.5:
            # real
            A = 2 * mp.randmatrix(n, n) - 1
            if mp.rand() > 0.5:
                A *= 10
                for x in xrange(n):
                    for y in xrange(n):
                        A[x, y] = int(A[x, y])
        else:
            A = (2 * mp.randmatrix(n, n) -
                 1) + 1j * (2 * mp.randmatrix(n, n) - 1)
            if mp.rand() > 0.5:
                A *= 10
                for x in xrange(n):
                    for y in xrange(n):
                        A[x,
                          y] = int(mp.re(A[x, y])) + 1j * int(mp.im(A[x, y]))

        run_hessenberg(A, verbose=v)
        run_schur(A, verbose=v)
        run_eig(A, verbose=v)
コード例 #2
0
def test_eighe_randmatrix():
    N = 5

    for a in xrange(10):
        A = (2 * mp.randmatrix(N, N) - 1) + 1j * (2 * mp.randmatrix(N, N) - 1)

        for i in xrange(0, N):
            A[i,i] = mp.re(A[i,i])
            for j in xrange(i + 1, N):
                A[j,i] = mp.conj(A[i,j])

        run_eighe(A)
コード例 #3
0
def test_eighe_randmatrix():
    N = 5

    for a in xrange(10):
        A = (2 * mp.randmatrix(N, N) - 1) + 1j * (2 * mp.randmatrix(N, N) - 1)

        for i in xrange(0, N):
            A[i, i] = mp.re(A[i, i])
            for j in xrange(i + 1, N):
                A[j, i] = mp.conj(A[i, j])

        run_eighe(A)
コード例 #4
0
def test_svd_c_rand():
    for i in xrange(5):
        full = mp.rand() > 0.5
        m = 1 + int(mp.rand() * 10)
        n = 1 + int(mp.rand() * 10)
        A = (2 * mp.randmatrix(m, n) - 1) + 1j * (2 * mp.randmatrix(m, n) - 1)
        if mp.rand() > 0.5:
            A *= 10
            for x in xrange(m):
                for y in xrange(n):
                    A[x, y] = int(mp.re(A[x, y])) + 1j * int(mp.im(A[x, y]))

        run_svd_c(A, full_matrices=full, verbose=False)
コード例 #5
0
def test_svd_c_rand():
    for i in xrange(5):
        full = mp.rand() > 0.5
        m = 1 + int(mp.rand() * 10)
        n = 1 + int(mp.rand() * 10)
        A = (2 * mp.randmatrix(m, n) - 1) + 1j * (2 * mp.randmatrix(m, n) - 1)
        if mp.rand() > 0.5:
            A *= 10
            for x in xrange(m):
                for y in xrange(n):
                    A[x,y]=int(mp.re(A[x,y])) + 1j * int(mp.im(A[x,y]))

        run_svd_c(A, full_matrices=full, verbose=False)
コード例 #6
0
def test_gauss_quadrature_dynamic(verbose = False):
    n = 5

    A = mp.randmatrix(2 * n, 1)

    def F(x):
        r = 0
        for i in xrange(len(A) - 1, -1, -1):
            r = r * x + A[i]
        return r

    def run(qtype, FW, R, alpha = 0, beta = 0):
        X, W = mp.gauss_quadrature(n, qtype, alpha = alpha, beta = beta)

        a = 0
        for i in xrange(len(X)):
            a += W[i] * F(X[i])

        b = mp.quad(lambda x: FW(x) * F(x), R)

        c = mp.fabs(a - b)

        if verbose:
            print(qtype, c, a, b)

        assert c < 1e-5

    run("legendre", lambda x: 1, [-1, 1])
    run("legendre01", lambda x: 1, [0, 1])
    run("hermite", lambda x: mp.exp(-x*x), [-mp.inf, mp.inf])
    run("laguerre", lambda x: mp.exp(-x), [0, mp.inf])
    run("glaguerre", lambda x: mp.sqrt(x)*mp.exp(-x), [0, mp.inf], alpha = 1 / mp.mpf(2))
    run("chebyshev1", lambda x: 1/mp.sqrt(1-x*x), [-1, 1])
    run("chebyshev2", lambda x: mp.sqrt(1-x*x), [-1, 1])
    run("jacobi", lambda x: (1-x)**(1/mp.mpf(3)) * (1+x)**(1/mp.mpf(5)), [-1, 1], alpha = 1 / mp.mpf(3), beta = 1 / mp.mpf(5) )
コード例 #7
0
def test_eigsy_randmatrix():
    N = 5

    for a in xrange(10):
        A = 2 * mp.randmatrix(N, N) - 1

        for i in xrange(0, N):
            for j in xrange(i + 1, N):
                A[j, i] = A[i, j]

        run_eigsy(A)
コード例 #8
0
def test_eigsy_randmatrix():
    N = 5

    for a in xrange(10):
        A = 2 * mp.randmatrix(N, N) - 1

        for i in xrange(0, N):
            for j in xrange(i + 1, N):
                A[j,i] = A[i,j]

        run_eigsy(A)
コード例 #9
0
def test_svd_r_rand():
    for i in xrange(5):
        full = mp.rand() > 0.5
        m = 1 + int(mp.rand() * 10)
        n = 1 + int(mp.rand() * 10)
        A = 2 * mp.randmatrix(m, n) - 1
        if mp.rand() > 0.5:
            A *= 10
            for x in xrange(m):
                for y in xrange(n):
                    A[x, y] = int(A[x, y])

        run_svd_r(A, full_matrices=full, verbose=False)
コード例 #10
0
def test_svd_r_rand():
    for i in xrange(5):
        full = mp.rand() > 0.5
        m = 1 + int(mp.rand() * 10)
        n = 1 + int(mp.rand() * 10)
        A = 2 * mp.randmatrix(m, n) - 1
        if mp.rand() > 0.5:
            A *= 10
            for x in xrange(m):
                for y in xrange(n):
                    A[x,y]=int(A[x,y])

        run_svd_r(A, full_matrices = full, verbose = False)
コード例 #11
0
ファイル: test_eigen.py プロジェクト: ethanhelfman/InstaGet
def test_eig_dyn():
    v = 0
    for i in xrange(5):
        n = 1 + int(mp.rand() * 5)
        if mp.rand() > 0.5:
            # real
            A = 2 * mp.randmatrix(n, n) - 1
            if mp.rand() > 0.5:
                A *= 10
                for x in xrange(n):
                    for y in xrange(n):
                        A[x,y] = int(A[x,y])
        else:
            A = (2 * mp.randmatrix(n, n) - 1) + 1j * (2 * mp.randmatrix(n, n) - 1)
            if mp.rand() > 0.5:
                A *= 10
                for x in xrange(n):
                    for y in xrange(n):
                        A[x,y] = int(mp.re(A[x,y])) + 1j * int(mp.im(A[x,y]))

        run_hessenberg(A, verbose = v)
        run_schur(A, verbose = v)
        run_eig(A, verbose = v)
コード例 #12
0
def test():

    PF1,PF2 = mp.matrix(2, 1) 
    J1,J2 = mp.randmatrix(2,1)+1j*mp.randmatrix(2,1) 
    j1,j2 = mp.exp(-J1),mp.exp(-J2)
    basis = spin_basis(3)
    for i in range(len(basis)):
        Z1,Z2,Z3 = basis[i]
        PF1 += mp.exp(J1*Z1*Z2+J2*Z2*Z3)
    
    jp,dF = L_transform(j1,j2)   
    Jp = -mp.log(jp)
    basis = spin_basis(2)
    for i in range(len(basis)):
        Z1,Z2 = basis[i]
        PF2 += mp.exp(dF+Jp*Z1*Z2)
     
    print("--------------------------------------")
    print("L-transform test:")
    print("Original:    ", PF1)
    print("Renormalized:", PF2)
    print("--------------------------------------")
    
    PF1,PF2 = mp.matrix(2, 1) 
    J0,J1,J2,J3 = mp.randmatrix(4,1)+1j*mp.randmatrix(4,1) 
    j0,j1,j2,j3 = mp.exp(-J0),mp.exp(-J1),mp.exp(-J2),mp.exp(-J3) 
    j1p,j2p,j3p,dF = Y_transform(j0,j1,j2,j3)
    J1p,J2p,J3p = -mp.log(j1p),-mp.log(j2p),-mp.log(j3p)
    basis = spin_basis(4)
    for i in range(len(basis)):
        Z1,Z2,Z3,Z4 = basis[i]
        PF1 += mp.exp(J0*Z1*Z2+J1*Z1*Z3+J2*Z2*Z3+J3*Z3*Z4)
        PF2 += mp.exp(dF+J1p*Z1*Z3+J2p*Z2*Z3+J3p*Z3*Z4)
        
    print("--------------------------------------")
    print("Y-transform test:")
    print("Original:    ", PF1)
    print("Renormalized:", PF2)
    print("--------------------------------------")
    
    PF1,PF2 = mp.matrix(2, 1) 
    J0,J1,J2 = mp.randmatrix(3,1)+1j*mp.randmatrix(3,1) 
    j0,j1,j2 = mp.exp(-J0),mp.exp(-J1),mp.exp(-J2)
    j1p,j2p,dF = D_transform(j0,j1,j2)
    J1p,J2p = -mp.log(j1p),-mp.log(j2p)
    basis = spin_basis(3)
    for i in range(len(basis)):
        Z1,Z2,Z3 = basis[i]
        PF1 += mp.exp(J0*Z1*Z2+J1*Z1*Z3+J2*Z2*Z3)
        PF2 += mp.exp(dF+J1p*Z1*Z3+J2p*Z2*Z3)
        
    print("--------------------------------------")
    print("D-transform test:")
    print("Original:    ", PF1)
    print("Renormalized:", PF2)
    print("--------------------------------------")
    
    #------------------------------------------------------------------------------
    
    PF1,PF2 = mp.matrix(2, 1)   
    J0,J1,J2,J3,J4 = mp.randmatrix(5,1)+1j*mp.randmatrix(5,1)
    J1=0
    j0,j1,j2,j3,j4 = mp.exp(-J0),mp.exp(-J1),mp.exp(-J2),mp.exp(-J3),mp.exp(-J4)
    j1p,j2p,j3p,j4p,j5p,dF = X_transform(j0,j1,j2,j3,j4)
    J1p,J2p,J3p,J4p,J5p = -mp.log(j1p),-mp.log(j2p),-mp.log(j3p),-mp.log(j4p),-mp.log(j5p)
    basis = spin_basis(5)
    for i in range(len(basis)):
        Z1,Z2,Z3,Z4,Z5 = basis[i]
        PF1 += mp.exp(J0*Z1*Z2+J1*Z1*Z3+J2*Z2*Z3+J3*Z3*Z5+J4*Z3*Z4)
        PF2 += mp.exp(dF+J1p*Z1*Z3+J2p*Z2*Z3+J3p*Z3*Z5+J4p*Z3*Z4+J5p*Z4*Z5)
    
    print("--------------------------------------")
    print("X-transform test:")
    print("Original:    ", PF1)
    print("Renormalized:", PF2)
    print("--------------------------------------")
    
    return 0
コード例 #13
0
# reajuste 0
d0 = np.identity(100)
d0[d0 == 1.0] = abs(-0.00000062521499573893501604735293439538)
d2 = mp.matrix(d0)
BBT1 = BBT0 + d2
E1 = mp.eig(BBT1, left=False, right=False)
E1 = mp.eig_sort(E1)

# choslesky
B0 = mp.cholesky(BBT0)
B1 = mp.cholesky(BBT1)

# el modelo
x_ant = Feb_80W.T[0, :].T
x0 = x_ant - M_Feb
alea = mp.randmatrix(100, 1)
med_sim = M_Mar
mes_sim = ((A * x0) + (B1 * alea)) + med_sim

s0 = mp.chop(BBT0 - B1 * B1.H)
s1 = mp.chop(BBT1 - B1 * B1.H)

Z_ant = np.array(x_ant, dtype=float)
Z_sim = np.array(mes_sim, dtype=float)
SK = st.ks_2samp(Z_ant, Z_sim)

# funciones


def parametros(Y, X):
    M0_act = ((Y * Y.T) / 100)