Пример #1
0
def energy_inner_pjkpmn(j, k, m, n, lam=np.array([1])):
    '''
        Calculates energy inner product between monomials P_{j,k} and P_{m, n}.
        Uses the Gauss-Green formula so that 
        <P_{j,k}, P_{m,n}>_energy = <P_{j,k}, P_{m,n}>_L2 - lam*<P_{j-1,k}, P_{m,n}>_L2 + lam*sum_V0{P_{m,n}*d_n(P_{j,k})}

        Args:
            j, k, m, n: Represent monomial indices P_{j,k} and P_{m, n}
            lam: represents weight given to the energy part of the inner product
        
        Returns: 
            <P_{j,k}, P_{m,n}>_energy
    '''
    lam = lam[0]
    res = Polynomial.basis_inner(j, k, m, n, lam=np.array([0]))
    res -= lam * Polynomial.basis_inner(j - 1, k, m, n, lam=np.array([0]))
    for i in range(2):
        with HiddenPrints():
            res += lam * norm_p_jk(str(i), j, k) * p_jk(str(i), m, n)
    return res
Пример #2
0
def ints_vec(j):
    '''
        This function computes the integrals of {P_01, P_02, P_03, ..., P_j2, P_j3}.

        Args:
            j: maximum degree of polynomial
        
        Returns:
            np.array of integrals of {P_01, P_02, P_03, ..., P_j2, P_j3}


    '''
    res = np.zeros(3 * j + 3)
    for ind in range(3 * j + 3):
        jj = int(np.floor(ind / 3))
        kk = int(ind % 3 + 1)
        res[ind] = Polynomial.basis_inner(jj, kk, 0, 1)
    return res