RILEVAMENTO RADAR

Il gruppo moltiplicativo di Z_p (p primo) e' ciclico. La seguente procedura trova una lista di generatori.

> gen:=proc(p)
local G,i,j,Pii;

G:=NULL;

for i to p-1 do

  Pii:={seq(i^j mod p,j=1..p-1)};

    if nops(Pii)=p-1 then

      G:=G,i;

    fi;

od;

[G];

end:

La seguente procedura disegna lo schema di rilevamento ottimale associato ad un numero primo p. g e' un generatore del gruppo moltiplicativo di Z_p (trovato, ad esempio, con la procedura precedente). Le righe della matrice sono indiciate sui tempi, le colonne sulle frequenze.

> sch_ril:=proc(g,p)
local R,i,Ri,j,A;

R:=NULL;

for i to p-1 do

  Ri:=NULL;

  for j to p-1 do

    if j=g^(i-1) mod p then

    Ri:=Ri,si;

    else

    Ri:=Ri,0;

    fi;

  od;

R:=R,[Ri];

od;

A:=matrix([R]);

print("ad ogni t fra 1 e",p-1,"e' lanciato un impulso di frequenza mi; la successione tempi-frequenze e' la seguente:",seq([i,g^(i-1) mod p],i=1..p-1),"; lo schema di rilevamento e':",evalm(A));

end:

> gen(7);

[3, 5]

> sch_ril(3,7);

>