SHADOW MATRICES © Nickolay Balonin, 5.01.2015

Shadow matrices S alow construct two circulant cores of Jacobsthal matrices Q: the latest are cores of two border two circulant C-matrices. They can consist of symmetric circulant A-block and B-block based on secuence [b;–Rb], R – reversed identity matrix.

Meander of Hadamard Family Matrices

% VISUAL MATLAB PROGRAM
% FIND TWO CIRCULANT MATRIX
% 8, 12, 16, [20], 24, 28, [32], 36, 40, 44, 48, 52, [56]
% 60, [64!], [68], 72, [76], 80, [84!], 88, [92], 96, 100
% SHADOW MATRIX
n=60, w=50000, v=n/2, e=1
matrices: k1, k2
% SHADOW MATRIX SDS
k2=v/2, k1=k2-1
For t do while e>0,
c=circfind([0;k1 k2 -2 4 w v]), e=c(3,1),
[t e k1 k2]=?
% c=?;
if e<8, a=c(1,:), b=c(2,:),
% if e>8, H=H(a,b), Optimization, end
end
% if e=0, H=H(a,b), e=maxabslsm(H-H'), end
end
play CLICK
S=[a;b], S=?J
A=circ(a), B=circ(b)
H=[A B; B' -A'], H=?C;
I=H'*H, I=?
% SDS LIBRARY
function: Optimization
% A, B, C, H, D, d, P, p, U, u, F, m, g
n=n+2, C=H, H=norms(C),
H=orth(H), m=max(abs(H)), u=line(n)
U=u, F=1, p=0.5, D=1/n, d=D/m/m, g=d
Do 50, if F=1, p=0.995*p+0.005
H=sat(H,p*m), % H=saz(H,0.01),
H=orth(H), P=permax(H), u=sortud(u,P),
H=sortlr(H,P), m=max(abs(H)), d=D/m/m,
if d>0.6, C=H, U=u, if d>0.8, F=0, end, end
g=[g;d] % det graph
end end
H=restlr(C,U), m=max(abs(H))
H=round(H/m), m=maxabslsm(H)
u=axis(50,1), [line(g) g]=?@
if m=0, % FOUND a, b
a=H(3,3:v+2), b=H(3,v+3:n), e=0
end
n=n-2
Shadow matrices noted by symbol "e": it is "younger family" of Euler matrices for orders n =4k ! Two-circulant three level (a ,–b ,d )-matrices constructed via conference matrices and their orthogonalised cores: a =1, b =1–2*d , d =(sqrt(2*n +1)–3)/(n –4) –diagonal entry (for n =4, d =b =1).

// MATRIX PORTRAITS TABLE
n=16;
S=shadow(n);
// ВЫВОД ПОСЛЕДОВАТЕЛЬНОСТЕЙ
k1=0; k2=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
puts("n="+n+"; k1="+k1+"; k2="+k2+";");
puts("a=["+a+"];"); puts("b=["+b+"];");
A=circul(a); B=circul(b);
if (n==4) { d=1; b=d; }else{
d=(sqrt(2*n+1)-3)/(n-4); b=(1-2*d); }
A=pluginto(A,[0,-1],[d,-b]);
B=pluginto(B,[0,-1],[d,-b]);
S=twocircul(A,B); plots(S,'XR');
{{X=S'*S}} putm(format(X,100));
function shadow(n) {
if (n==4) { // Shadow 8
a=[0, 1]; b=[1,-1];}
if (n==8) { // Shadow 8
a=[0, 1,-1, 1]; b=[-1,-1, 1, 1];}
if (n==12) { // Shadow 12
a=[0,-1, 1, 1, 1,-1]; b=[1,-1,-1, 1, 1,-1];}
if (n==16) { // Shadow 16
a=[0, 1, 1,-1,-1,-1, 1, 1];
b=[1, 1,-1, 1,-1, 1,-1,-1];
a=[0,-1, 1, 1,-1, 1, 1,-1];
b=[1, 1, 1,-1, 1,-1,-1,-1];}
if (n==24) { // Shadow 24
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[-1, 1,-1,-1,-1,-1, 1, 1, 1, 1,-1,1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[-1,-1,-1,-1, 1,-1, 1,-1, 1, 1, 1,1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[1,-1,-1,-1,-1, 1, 1, 1, 1,-1, 1,-1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[1,-1, 1, 1, 1, 1,-1,-1,-1,-1, 1,-1];}
if (n==28) { // Shadow 28
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[-1, 1, 1,-1, 1, 1, 1,-1,-1,-1, 1,-1,-1,1];
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[1,-1,-1, 1,-1,-1,-1, 1, 1, 1,-1, 1, 1,-1];
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[1, 1, 1,-1, 1, 1,-1, 1,-1,-1, 1,-1,-1,-1];}
if (n==36) { // Shadow 36
a=[0,-1,1,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1];
b=[1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1];}
if (n==40) { // Shadow 40
// lambda=8
a=[0,-1, 1,-1,-1,-1, 1, 1, 1, 1,-1, 1, 1, 1, 1,-1,-1,-1, 1,-1];
b=[1,-1,-1, 1,-1,-1, 1, 1, 1,-1, 1,-1,-1,-1, 1, 1,-1, 1, 1,-1];
a=[0,-1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1];
b=[-1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1];
// lambda=9 !
a=[0,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,1];
b=[1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1,1,1,-1];
}
if (n==48) { // Shadow 48
a=[0, 1, 1, 1,-1,-1,-1, 1,-1, 1, 1,-1,-1,-1, 1, 1,-1, 1,-1,-1,-1, 1, 1, 1];
b=[1,-1,-1, 1, 1,-1, 1, 1, 1, 1,-1, 1,-1, 1,-1,-1,-1,-1, 1,-1,-1, 1, 1,-1];}
if (n==52) { // Shadow 52
a=[0,-1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1];
b=[1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1];
a=[0,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1];
b=[1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1];}
if (n==60) { // Shadow 60
a=[0,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,-1];
b=[1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1];
a=[0,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,1];
b=[1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1];}
if (n==72) { // Shadow 72
a=[0,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,1];
b=[-1,1,1,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1];
a=[0,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1];
b=[-1,-1,-1,1,1,1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1]; }
return twocircul(a,b);
}

On Line Procedure Shadow matrices Family

// ORTHOGONAL SHADOW SEQUENCES
if (tick==0) {
n=16; k1=n/4-1; k2=n/4;
v=n/2; z=v/2; s1=v-2*k1; s2=v-2*k2; F=true;
w=20; m=2*w; e=zero(z); Q=one(w); Q2=minp(Q); }
// Генерируем массив из 1000 последовательностей
R=signm(rands(matrix(w,(v-2)/2))); P=fliplr(R);
M=colline(Q,P,Q2,R);
// M2=colline(Q,P,Q,R); M=rowline(M,M2);
R=signm(rands(matrix(w,(v-1)/2))); P=fliplr(R);
M2=colline(P,minp(R)); M=rowline(M,M2);
// M2=signm(rands(matrix(w,v))); M=rowline(M,M2);
// mesh(M);
s=absm(sums(M));
K1=0; K2=0;
// Перебираем пары (a,b) с учетом сумм элементов
for (i=0;i<m;i++) { if (F) if (s[i]==s1) { K1++;
a=M[i]; a[0]=0; // a=[0,1,-1,-1,1,1,-1,1,1,-1,-1,1];
for (ii=1;ii<z;ii++) { ss=2;
for (jj=0;jj<v;jj++) { d=jj-ii; if (d<0) d+=v;
ss+=a[d]*a[jj]; } e[ii]=ss; }
for (j=i;j<m;j++) if (F) if (s[j]==s2) { b=M[j]; K2++;
// if (0) { m=maxabslsm(circ(a),circ(b),-2); F=m>0; }else{
// тест на ортогональность с прерыванием по флагу
for (ii=1;ii<z;ii++) if (F) { ss=e[ii];
for (jj=0;jj<v;jj++) { d=jj-ii; if (d<0) d+=v;
ss+=b[d]*b[jj]; } F=ss==0; } F=!F; }}}
puts("n="+n+" tick="+tick+" pairs="+K1+"/"+K2);
if (F) { restart(0);}else{
putm("k1="+k1+" k2="+k2);
putm("a=["+a+"];"); putm("b=["+b+"];");
A=circ(a); B=circ(b); H=twocircul(A,B);
mesh(H); {{I=H'*H}} putm(I);
// sound("5th.wav");
}

// SEARCH PROCEDURE FOR CORES n=4t-3:
// 9, 13, 17, 25, 29, 37, 41, [45], 49, 53, 61, [65]
// 73?, 81?, [85], 89?, 97?, 101? NEED MORE TIME
if (tick==0) {
n=17; q=(n-1)/2; m=q/2; m1=m-1; z=1;
J=ones(q); I=eye(J); {{D=n*I-2*J}}
}
v=1000; // number of iterations
while (v>0) { v=v-1;
// VERSIONS OF SEQUENCES
a=signm(rand(m1)); b=signm(rand(m));
a=[0].concat(a).concat(z).concat(flip(a)); z=-z;
b=b.concat(minp(flip(b)));
x=circshift(a); y=circshift(b); {{x=x'*a+y'*b}}
if (x==-2) {
x=circshiftback(a); y=circshiftback(b); {{x=x'*a+y'*b}}
if (x==-2) {
A=circul(a); B=circul(b);
{{X=A'*A+B'*B-D}} x=maxm(X); if (x==0) v=-100;
}}
}
if (v!=-100) {
puts("tick="+tick+" x="+x); restart(0);
}else{
S=square(A,B,tr(B),minp(tr(A))); Q=border(S,0,-1,1);
{{X=Q'*Q}} if (X[0][1]>0) a=minp(a); A=circul(a);
S=square(A,B,tr(B),minp(tr(A))); Q=border(S,0,-1,1);
puts("a=["+a+"];"); puts("b=["+b+"];");
{{X=Q'*Q}} putm(X); plots(Q);
}
Euler matrices E alow construct two circulant cores of Jacobsthal matrices Q: the latest are cores of two border two circulant H-matrices. They can consist of the set of symmetric, asymmetric and skew circulant A, B-blocks.

// SEARCH PROCEDURE FOR CORES n=4t-1:
// 7, 11, 15, 19, 23, 27, 31, [35], 39, 43, 47, ..
if (tick==0) {
n=23; q=(n-1)/2; m=(q-2)/2; z1=1; z2=1;
J=ones(q); I=eye(J); {{D=(n+1)*I-2*J}}
}
v=1000; // number of iterations
while (v>0) { v=v-1;
// VERSIONS OF SEQUENCES
a=signm(rand(q)); a[0]=1;
// a=signm(rand(m));
// a=[1].concat(a).concat(minp(flip(a))); // z1=-z1;
b=signm(rand(q)); b[0]=0;
// b=signm(rand(m));
// b=[0].concat(b).concat(minp(flip(b))); // z2=-z2;
// a=[1].concat(a).concat(flip(a)); // z1=-z1;
// b=[1].concat(b).concat(flip(b)); // z2=-z2;
// b=[0,-1,-1,-1,1,-1,-1,1,1,-1,1,1,1]; // 27
// a=[1,-1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,-1]; // 31
// b=[0,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1];
x=circshift(a); y=circshift(b); {{x=x'*a+y'*b}}
if (x==-2) {
x=circshiftback(a); y=circshiftback(b); {{x=x'*a+y'*b}}
if (x==-2) {
A=circul(a); B=circul(b);
{{X=A'*A+B'*B-D}} x=maxm(X);
if (x==0) v=-100;
}}
}
if (v!=-100) { restart(0);
puts("tick="+tick+" x="+x);
}else{
Eu=square(A,B,tr(B),minp(tr(A))); M=border(Eu,0,-1,1);
{{X=M'*M}} if (X[0][1]>0) a=minp(a); A=circul(a);
Eu=square(A,B,tr(B),minp(tr(A))); M=border(Eu,0,-1,1);
puts("a=["+a+"];"); puts("b=["+b+"];");
{{X=M'*M}} putm(X); mesh(M);
}

СЛОЖНОСОСТАВНАЯ МАТРИЦА 44

Sh44=core(bsCore());
{{I=Sh44'*Sh44}} putm(I); plots(Sh44);
function bsCore() {
// BALONIN-SEBERRY MATRIX
var a,b,c,A,B,C; // Paley symbols
a=[0,1,1]; b=[-1,-1,1]; c=[-1,1,-1]; A=circul(a,b,c);
a=[1,1,-1]; b=[-1,1,1]; c=[1,-1,1]; // inversed
B=circul(circulback(a),circulback(b),circulback(c));
a=[1,-1,-1]; C=crossmatrix(a);
return circul(A,B,C,tr(C),tr(B));
}

CRETAN MATRICES a =1, b =1–2*d , d =(sqrt(2*n +1)–1)/n – diagonal entry Conference matrix C_{6} Ortagonalised core S_{5} and shadow matrix e_{4} Conference matrix C_{10} Ortagonalised core S_{9} and shadow matrix e_{8} following S_{9} Conference matrix C_{14} Ortagonalised core S_{13} and shadow matrix e_{12}

СВЯЗЬ С КОНФЕРЕНЦ-МАТРИЦАМИ (ЯДРА) Conference matrix C_{6} Ortagonalised core S_{5} and shadow matrix e_{4} =H_{4} Conference matrix C_{10} Ortagonalised core S_{9} and shadow matrix e_{8} Conference matrix C_{14} Ortagonalised core S_{13} and shadow matrix e_{12} Conference matrix C_{18} Ortagonalised core S_{17} and shadow matrix e_{16}

// SEIDEL MATRIX PORTRAIT BUILDER
n=4; S=shadow(n);
puts("a=["+a+"];"); puts("b=["+b+"];");
Q=border(S,0,-1,1);
puts('order='+rows(Q)); plots(Q,'XR');
{{X=Q'*Q}} putm(X);
function shadow(n) {
if (n==4) { // Shadow 8
a=[0, 1]; b=[1,-1];}
if (n==8) { // Shadow 8
a=[0, 1,-1, 1]; b=[-1,-1, 1, 1];}
if (n==12) { // Shadow 12
a=[0,-1, 1, 1, 1,-1]; b=[1,-1,-1, 1, 1,-1];}
if (n==16) { // Shadow 16
a=[0, 1, 1,-1,-1,-1, 1, 1];
b=[1, 1,-1, 1,-1, 1,-1,-1];
a=[0,-1, 1, 1,-1, 1, 1,-1];
b=[1, 1, 1,-1, 1,-1,-1,-1];}
if (n==24) { // Shadow 24
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[-1, 1,-1,-1,-1,-1, 1, 1, 1, 1,-1,1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[-1,-1,-1,-1, 1,-1, 1,-1, 1, 1, 1,1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[1,-1,-1,-1,-1, 1, 1, 1, 1,-1, 1,-1];
a=[0, 1,-1,-1, 1, 1,-1, 1, 1,-1,-1, 1];
b=[1,-1, 1, 1, 1, 1,-1,-1,-1,-1, 1,-1];}
if (n==28) { // Shadow 28
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[-1, 1, 1,-1, 1, 1, 1,-1,-1,-1, 1,-1,-1,1];
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[1,-1,-1, 1,-1,-1,-1, 1, 1, 1,-1, 1, 1,-1];
a=[0,-1,-1, 1, 1, 1,-1, 1,-1, 1, 1, 1,-1,-1];
b=[1, 1, 1,-1, 1, 1,-1, 1,-1,-1, 1,-1,-1,-1];}
if (n==36) { // Shadow 36
a=[0,-1,1,-1,-1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1];
b=[1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1];}
if (n==40) { // Shadow 40
// lambda=8
a=[0,-1, 1,-1,-1,-1, 1, 1, 1, 1,-1, 1, 1, 1, 1,-1,-1,-1, 1,-1];
b=[1,-1,-1, 1,-1,-1, 1, 1, 1,-1, 1,-1,-1,-1, 1, 1,-1, 1, 1,-1];
a=[0,-1,1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1];
b=[-1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1];
// lambda=9 !
a=[0,1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,1];
b=[1,-1,-1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,1,1,1,-1];
}
if (n==48) { // Shadow 48
a=[0, 1, 1, 1,-1,-1,-1, 1,-1, 1, 1,-1,-1,-1, 1, 1,-1, 1,-1,-1,-1, 1, 1, 1];
b=[1,-1,-1, 1, 1,-1, 1, 1, 1, 1,-1, 1,-1, 1,-1,-1,-1,-1, 1,-1,-1, 1, 1,-1];}
if (n==52) { // Shadow 52
a=[0,-1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1];
b=[1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1];
a=[0,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1];
b=[1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1];}
if (n==60) { // Shadow 60
a=[0,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,-1];
b=[1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1];
a=[0,1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,1,1];
b=[1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1];}
a=circul(a); b=circul(b);
return twocircul(a,b);
}

EULER MATRICES CATALOGUE | | MERSENNE MATRICES CATALOGUE