In [22]:
%pylab inline
Populating the interactive namespace from numpy and matplotlib
In [23]:
from sympy import *
In [24]:
init_printing()
In [25]:
def krav(N):
    K=np.zeros((N+1,N+1),dtype=int)
    for i in range(N+1):
        K[i,N]=int(binomial(N,i)*(-1)**i)
        K[0,i]=1

    for i in range(1,N+1):
        for j in range(N,0,-1):
            K[i,j-1]=K[i-1,j-1]+K[i-1,j]+K[i,j]
    return K            
In [26]:
 for N in range(1,13):
     K =krav(N)
     y="K["+str(N)+"] = "
     print(y)
     print(K)
K[1] = 
[[ 1  1]
 [ 1 -1]]
K[2] = 
[[ 1  1  1]
 [ 2  0 -2]
 [ 1 -1  1]]
K[3] = 
[[ 1  1  1  1]
 [ 3  1 -1 -3]
 [ 3 -1 -1  3]
 [ 1 -1  1 -1]]
K[4] = 
[[ 1  1  1  1  1]
 [ 4  2  0 -2 -4]
 [ 6  0 -2  0  6]
 [ 4 -2  0  2 -4]
 [ 1 -1  1 -1  1]]
K[5] = 
[[  1   1   1   1   1   1]
 [  5   3   1  -1  -3  -5]
 [ 10   2  -2  -2   2  10]
 [ 10  -2  -2   2   2 -10]
 [  5  -3   1   1  -3   5]
 [  1  -1   1  -1   1  -1]]
K[6] = 
[[  1   1   1   1   1   1   1]
 [  6   4   2   0  -2  -4  -6]
 [ 15   5  -1  -3  -1   5  15]
 [ 20   0  -4   0   4   0 -20]
 [ 15  -5  -1   3  -1  -5  15]
 [  6  -4   2   0  -2   4  -6]
 [  1  -1   1  -1   1  -1   1]]
K[7] = 
[[  1   1   1   1   1   1   1   1]
 [  7   5   3   1  -1  -3  -5  -7]
 [ 21   9   1  -3  -3   1   9  21]
 [ 35   5  -5  -3   3   5  -5 -35]
 [ 35  -5  -5   3   3  -5  -5  35]
 [ 21  -9   1   3  -3  -1   9 -21]
 [  7  -5   3  -1  -1   3  -5   7]
 [  1  -1   1  -1   1  -1   1  -1]]
K[8] = 
[[  1   1   1   1   1   1   1   1   1]
 [  8   6   4   2   0  -2  -4  -6  -8]
 [ 28  14   4  -2  -4  -2   4  14  28]
 [ 56  14  -4  -6   0   6   4 -14 -56]
 [ 70   0 -10   0   6   0 -10   0  70]
 [ 56 -14  -4   6   0  -6   4  14 -56]
 [ 28 -14   4   2  -4   2   4 -14  28]
 [  8  -6   4  -2   0   2  -4   6  -8]
 [  1  -1   1  -1   1  -1   1  -1   1]]
K[9] = 
[[   1    1    1    1    1    1    1    1    1    1]
 [   9    7    5    3    1   -1   -3   -5   -7   -9]
 [  36   20    8    0   -4   -4    0    8   20   36]
 [  84   28    0   -8   -4    4    8    0  -28  -84]
 [ 126   14  -14   -6    6    6   -6  -14   14  126]
 [ 126  -14  -14    6    6   -6   -6   14   14 -126]
 [  84  -28    0    8   -4   -4    8    0  -28   84]
 [  36  -20    8    0   -4    4    0   -8   20  -36]
 [   9   -7    5   -3    1    1   -3    5   -7    9]
 [   1   -1    1   -1    1   -1    1   -1    1   -1]]
K[10] = 
[[   1    1    1    1    1    1    1    1    1    1    1]
 [  10    8    6    4    2    0   -2   -4   -6   -8  -10]
 [  45   27   13    3   -3   -5   -3    3   13   27   45]
 [ 120   48    8   -8   -8    0    8    8   -8  -48 -120]
 [ 210   42  -14  -14    2   10    2  -14  -14   42  210]
 [ 252    0  -28    0   12    0  -12    0   28    0 -252]
 [ 210  -42  -14   14    2  -10    2   14  -14  -42  210]
 [ 120  -48    8    8   -8    0    8   -8   -8   48 -120]
 [  45  -27   13   -3   -3    5   -3   -3   13  -27   45]
 [  10   -8    6   -4    2    0   -2    4   -6    8  -10]
 [   1   -1    1   -1    1   -1    1   -1    1   -1    1]]
K[11] = 
[[   1    1    1    1    1    1    1    1    1    1    1    1]
 [  11    9    7    5    3    1   -1   -3   -5   -7   -9  -11]
 [  55   35   19    7   -1   -5   -5   -1    7   19   35   55]
 [ 165   75   21   -5  -11   -5    5   11    5  -21  -75 -165]
 [ 330   90   -6  -22   -6   10   10   -6  -22   -6   90  330]
 [ 462   42  -42  -14   14   10  -10  -14   14   42  -42 -462]
 [ 462  -42  -42   14   14  -10  -10   14   14  -42  -42  462]
 [ 330  -90   -6   22   -6  -10   10    6  -22    6   90 -330]
 [ 165  -75   21    5  -11    5    5  -11    5   21  -75  165]
 [  55  -35   19   -7   -1    5   -5    1    7  -19   35  -55]
 [  11   -9    7   -5    3   -1   -1    3   -5    7   -9   11]
 [   1   -1    1   -1    1   -1    1   -1    1   -1    1   -1]]
K[12] = 
[[   1    1    1    1    1    1    1    1    1    1    1    1    1]
 [  12   10    8    6    4    2    0   -2   -4   -6   -8  -10  -12]
 [  66   44   26   12    2   -4   -6   -4    2   12   26   44   66]
 [ 220  110   40    2  -12  -10    0   10   12   -2  -40 -110 -220]
 [ 495  165   15  -27  -17    5   15    5  -17  -27   15  165  495]
 [ 792  132  -48  -36    8   20    0  -20   -8   36   48 -132 -792]
 [ 924    0  -84    0   28    0  -20    0   28    0  -84    0  924]
 [ 792 -132  -48   36    8  -20    0   20   -8  -36   48  132 -792]
 [ 495 -165   15   27  -17   -5   15   -5  -17   27   15 -165  495]
 [ 220 -110   40   -2  -12   10    0  -10   12    2  -40  110 -220]
 [  66  -44   26  -12    2    4   -6    4    2  -12   26  -44   66]
 [  12  -10    8   -6    4   -2    0    2   -4    6   -8   10  -12]
 [   1   -1    1   -1    1   -1    1   -1    1   -1    1   -1    1]]
In [27]:
N=5
K=krav(N)
B=np.diag([int(binomial(N,i)) for i in range(N+1)])
S=dot(K,B)
print(not numpy.any(S-S.T))
e=eig(S)
e[0]
True
Out[27]:
array([-40.63218034,  40.63218034, -19.10843053, -11.65734975,
        11.65734975,  19.10843053])
In [28]:
N=8
X=krav(N)
Y=np.multiply(X,X)
X,sum(Y,axis=0),sum(Y,axis=1)
Out[28]:
(array([[  1,   1,   1,   1,   1,   1,   1,   1,   1],
        [  8,   6,   4,   2,   0,  -2,  -4,  -6,  -8],
        [ 28,  14,   4,  -2,  -4,  -2,   4,  14,  28],
        [ 56,  14,  -4,  -6,   0,   6,   4, -14, -56],
        [ 70,   0, -10,   0,   6,   0, -10,   0,  70],
        [ 56, -14,  -4,   6,   0,  -6,   4,  14, -56],
        [ 28, -14,   4,   2,  -4,   2,   4, -14,  28],
        [  8,  -6,   4,  -2,   0,   2,  -4,   6,  -8],
        [  1,  -1,   1,  -1,   1,  -1,   1,  -1,   1]]),
 array([12870,   858,   198,    90,    70,    90,   198,   858, 12870]),
 array([    9,   240,  2016,  6768, 10036,  6768,  2016,   240,     9]))
In [29]:
rr=range(N+1)
[binomial(2*N-2*j,N-j)*binomial(2*j,j)/binomial(N,j) for j in rr]
Out[29]:
$$\left [ 12870, \quad 858, \quad 198, \quad 90, \quad 70, \quad 90, \quad 198, \quad 858, \quad 12870\right ]$$
In [30]:
mm=range(int(N/2)+1)
[sum(binomial(N+1,2*k+1)*binomial(2*k,k)*binomial(N-2*k,m-k) for k in range(m+1))for m in mm]
Out[30]:
$$\left [ 9, \quad 240, \quad 2016, \quad 6768, \quad 10036\right ]$$
In [31]:
binomial(8,4)
Out[31]:
$$70$$
In [33]:
krav(4)
Out[33]:
array([[ 1,  1,  1,  1,  1],
       [ 4,  2,  0, -2, -4],
       [ 6,  0, -2,  0,  6],
       [ 4, -2,  0,  2, -4],
       [ 1, -1,  1, -1,  1]])
In [ ]: