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); |
> | sch_ril(3,7); |
> |