Rumore di quantizzazione per campionamento coerente - Rumore di fase?


9

Aggiornamento: vedi pensieri aggiunti in fondo a questo post.


In condizioni generali di campionamento non vincolate da quanto descritto di seguito (segnale non correlato al clock di campionamento), il rumore di quantizzazione viene spesso stimato come una distribuzione uniforme su un livello di quantizzazione. Quando due ADC sono combinati con i percorsi I e Q per creare il campionamento di un segnale complesso, il rumore di quantizzazione ha componenti sia di ampiezza che di rumore di fase come simulato di seguito. Come mostrato, questo rumore ha una distribuzione triangolare quando i componenti I e Q contribuiscono ugualmente all'ampiezza e alla fase, come quando un segnale ha un angolo di 45 ° e uniforme quando il segnale è sull'asse. Ciò è previsto poiché il rumore di quantizzazione per ogni I e Q non è correlato, quindi le distribuzioni si contorceranno quando entrambi contribuiranno al risultato di output.

La domanda che si pone è se questa distribuzione del rumore di fase cambia in modo significativo per i casi di campionamento coerente (supponiamo che l'orologio di campionamento stesso abbia un rumore di fase che è di gran lunga superiore, quindi non un fattore)? In particolare, sto cercando di capire se il campionamento coerente ridurrà significativamente il rumore di fase correlato alla quantizzazione. Ciò sarebbe direttamente applicabile alla generazione del segnale di clock, in cui la coerenza sarebbe facilmente mantenibile.

Considera sia segnali reali (un ADC) sia segnali complessi (due ADC; uno per I e uno per Q che descrivono insieme un singolo campione complesso). Nel caso di segnali reali, l'ingresso è un'onda sinusoidale a fondo scala e il termine della fase è derivato dal segnale analitico; il jitter correlato ai cambiamenti nell'attraversamento zero di un tono sinusoidale sarebbe un esempio del rumore di fase risultante per un segnale reale. Nel caso di segnali complessi, l'ingresso è una scala intera , in cui le componenti reali e immaginarie sarebbero ciascuna onde sinusoidali a fondo scala.Aejωt

Ciò è collegato a questa domanda in cui il campionamento coerente è ben descritto, ma in particolare il rumore di fase non è stato menzionato:

Campionamento coerente e distribuzione del rumore di quantizzazione

Per descrivere più chiaramente i componenti del rumore indotto AM e PM, ho aggiunto di seguito il seguente grafico per il caso di quantizzazione complessa che mostra un vettore complesso in tempo continuo in un dato istante di campionamento e il campione quantizzato associato come punto rosso, assumendo lineare distribuzione uniforme dei livelli di quantizzazione delle porzioni reali e immaginarie del segnale.

inserisci qui la descrizione dell'immagine

Zoom sulla posizione in cui si verifica la quantizzazione nel grafico sopra per illustrare l'errore di ampiezza indotto e l'errore di fase:

inserisci qui la descrizione dell'immagine

Quindi dato un segnale arbitrario

s(t)=a(t)ejωt=a(t)cos(ωt)+ja(t)sin(ωt)=i(t)+jq(t)

Il segnale quantizzato è il punto di distanza più vicino dato da

sk=ik+jqk

Dove eikqk rappresentano i livelli quantizzati I e Q ciascuno mappato secondo:

Q{x}=ΔxΔ+12

Dove rappresenta la funzione floor e Δ rappresenta un livello di quantizzazione discreto.()Δ

ik=Q{i(tk)}qk=Q{q(tk)}

L'errore di ampiezza è dove t k è il tempo in cui s ( t ) è stato campionato per generare s k .|s(tk)||sk|tks(t)sk

L'errore di fase è dove * rappresenta il coniugato complesso.arg{s(tk)}arg{sk}=arg{s(tk)(sk)}

La domanda per questo post è qual è la natura del componente di fase quando l'orologio di campionamento è commisurato al (un multiplo intero) del segnale di ingresso?

Per aiutare, ecco alcune distribuzioni simulate dell'ampiezza e degli errori di fase per il complesso caso di quantizzazione con quantizzazione a 6 bit su I e Q. Per queste simulazioni si presume che l'attuale segnale "verità" sia altrettanto probabile che si trovi ovunque in una quantizzazione settore definito come la griglia mostrata nel diagramma sopra. Notare che quando il segnale si trova lungo uno dei quadranti (tutti I o tutti Q), la distribuzione è uniforme come previsto nel singolo caso ADC con segnali reali. Ma quando il segnale è lungo un angolo di 45 °, la distribuzione è triangolare. Ciò ha senso in quanto in questi casi il segnale ha contributi I e Q uguali che sono distribuzioni uniformi non correlate; quindi le due distribuzioni si contendono per essere triangolari.

45 gradi con quantizzazione

Ingrandisci di 45 gradi con quantizzazione

istogramma dell'angolo

istogramma di grandezza

Dopo aver ruotato il vettore del segnale su 0 °, gli istogrammi di magnitudo e angolo sono molto più uniformi come previsto:

Angolo di 0 gradi con quantizzazione

istogramma dell'angolo a 0 °

istogramma di grandezza a 0 °


Aggiornamento: poiché abbiamo ancora bisogno di una risposta alla domanda specifica (la risposta di Olli di seguito offre un buon chiarimento sulle caratteristiche del rumore che ha portato al mio aggiornamento delle densità del rumore triangolare e uniforme, ma le caratteristiche del rumore di fase sotto condizioni di campionamento coerenti sono ancora inafferrabili), offro i seguenti pensieri che possono suscitare una risposta effettiva o ulteriori progressi (si noti che questi sono molti pensieri probabilmente errati ma nell'interesse di arrivare alla risposta che non ho ancora):

Si noti che in condizioni di campionamento coerenti, la frequenza di campionamento è un multiplo intero della frequenza di ingresso (e anche bloccato in fase). Ciò significa che ci sarà sempre un numero intero di campioni mentre ruotiamo una volta attraverso il piano complesso per un segnale e un campionamento complessi, o un numero intero di campioni di un ciclo di una sinusoide per un segnale e un campionamento reali (singolo ADC).

E come descritto stiamo assumendo il caso in cui l'orologio di campionamento stesso è di gran lunga superiore, quindi non considerato un contributo. Pertanto, i campioni atterreranno sempre nella stessa identica posizione.

Considerando il caso del segnale reale, se ci occupassimo solo dei passaggi per lo zero nel determinare il rumore di fase, il risultato del campionamento coerente sarebbe solo uno spostamento ritardato fisso ma coerente (sebbene i fronti di salita e di discesa possano avere ritardi diversi quando la coerenza è un numero intero dispari). Chiaramente nel complesso caso di campionamento ci occupiamo del rumore di fase in ogni campione, e sospetto che questo sarebbe lo stesso anche nel caso reale (il mio sospetto è il ritardo di un campione in qualsiasi istante da "verità" sarebbe il componente del rumore di fase ma poi mi confondo se conto due volte qual è anche la differenza di ampiezza ...) Se ho tempo lo simulerò poiché tutta la distorsione verrà mostrata alle armoniche intere del segnale di ingresso dato il modello ripetuto su uno ciclo, e il test di fase rispetto all'ampiezza sarebbe la fase relativa delle armoniche rispetto al fondamentale - ciò che sarebbe interessante vedere tramite simulazione o calcolo è se queste armoniche (che per un segnale reale avrebbero tutte controparti coniugate complesse) fossero in quadratura con il fondamentale o in fase, e quindi dimostrato di essere tutto rumore di fase, tutto il rumore di ampiezza o un composto di entrambi. (La differenza tra un numero pari di campioni e dispari può eventualmente influire su questo).

Nel caso del complesso, la grafica di Olli che è stata fatta con un numero commisurato di campioni, può aggiungere ulteriori approfondimenti se mostra la posizione del campione su "verità" che è associata a ciascun campione quantizzato mostrato. Ancora una volta vedo la possibilità di una differenza interessante se ci sono numeri pari o dispari di campioni (il suo grafico era pari e osservo la simmetria che ne risulta ma non vedo più da ciò che può fare per mettere in fase il rumore di ampiezza). Ciò che mi sembra chiaro, tuttavia, è che i componenti del rumore, sia in casi reali che complessi, esisteranno solo alle armoniche intere della frequenza fondamentale quando il campionamento è coerente. Quindi, anche se il rumore di fase può ancora esistere come sospetto, la sua posizione in armoniche intere è molto più favorevole all'eliminazione mediante il successivo filtraggio.

(Nota: questo è applicabile alla generazione di segnali di clock di riferimento di elevata purezza spettrale.)


2
Vorrei che tu potessi essere più matematicamente esplicito su quale sia la vera domanda.
robert bristow-johnson,

fS=NfSiogfSfSiog

Sono d'accordo con rbj. Cosa intendi per distribuzione fase-ampiezza? Credo una matematica. modello sul problema aiuterà a risolverlo. Inoltre, può essere più specifico, come si decompone il rumore di quantizzazione in ampiezza e fase?
Maximilian Matthé,

1
Si tratta di segnali arbitrari come indicato nel testo o di segnali sinusoidali impliciti nelle descrizioni matematiche? Il caso è notevolmente semplificato se si considerano solo i segnali sinusoidali, ma ciò potrebbe non riflettere il comportamento dei segnali del mondo reale. Nel caso commisurato per segnali sinusoidali, l'errore di quantizzazione è periodico e si traduce in un errore di fase periodica. Questo tipo di correlazione non si presenterebbe in un istogramma, ma è probabilmente importante in termini di descrizione della "natura della componente di fase" (con questo intendi l'errore di fase giusto?).
salta il

1
Ho anche aggiornato la domanda per chiarire che è per la generazione del segnale di clock, nel caso in cui desideri mantenere sincronizzato l'ultimo paragrafo (hai suggerito che fosse per la misurazione).
Dan Boschen,

Risposte:


5

Ho un dubbio su (Modifica: questo è stato successivamente rimosso dalla domanda):

Si può ragionevolmente supporre che la distribuzione di questi componenti di rumore AM e PM sia uniforme purché il segnale di ingresso non sia correlato al clock di campionamento

segnale(t)=cos(t)+jpeccato(t)
quun'ntiozed_Siognun'l(t)=il giro(Ncos(t))N+j×il giro(Npeccato(t))N

1/NN=5

Traccia di segnale e sua quantizzazione
N=5un'segnale(t)+(1-un')quun'ntiozed_Siognun'l(t)un'=[15,25,35,45].

L'errore nella fase dovuto all'errore di quantizzazione è:

phun'Se_error(t)=un'abbronzatura(Sono(quun'ntiozed_Siognun'l(t)),Ri(quun'ntiozed_Siognun'l(t)))-un'abbronzatura(Sono(segnale(t)),Ri(segnale(t)))=un'abbronzatura(il giro(Npeccato(t)),il giro(Ncos(t)))-un'abbronzatura(Npeccato(t),Ncos(t))=un'abbronzatura(il giro(Npeccato(t)),il giro(Ncos(t)))-mod(t-π,2π)+π

Sottrarre fasi avvolte è rischioso ma funziona in questo caso.

Errore di fase
phun'Se_error(t)N=5

tphun'Se_error(t),phun'Se_error(t)

NN,Nle distribuzioni degli errori I e Q sono uniformi e gli errori di fase e magnitudine sono numeri pseudocasuali provenienti da distribuzioni che dipendono dalla fase del segnale. La dipendenza dalla fase è lì perché la griglia di quantizzazione rettangolare ha un orientamento.

N,arcsinααα+π/2

[(1/2,1/2),(-1/2,1/2),(-1/2,-1/2),(1/2,-1/2)]

La rotazione di queste coordinate o la proiezione equivalente di esse sugli assi di errore proporzionale di fase e di errore di ampiezza proporzionale fornisce per entrambi la stessa funzione di densità di probabilità lineare a testa piatta con nodi:

[cos(α)2-peccato(α)2,cos(α)2+peccato(α)2,-cos(α)2+peccato(α)2,-cos(α)2-peccato(α)2]=[2cos(α+π/4),2peccato(α+π/4),-2cos(α+π/4),-2peccato(α+π/4)]

Nodi del PDF
αα{-π,-π/2,0,π/2,π}α{-3π/4,-π/4,π/4,3π/4}N2/22/2arcsin

A fasi intermedie il PDF si presenta come questo:

PDF intermedio
α=π/8.

|cos(α)||peccato(α)|cos2(α)/12+peccato2(α)/12=1/12,α

Potrebbero esserci alcune combinazioni "pseudolucky" di fase iniziale e un rapporto numerico razionale della frequenza della sinusoide complessa e della frequenza di campionamento che danno solo un piccolo errore per tutti i campioni nella sequenza ripetuta. A causa delle simmetrie degli errori osservati in Fig. 1, nel massimo senso di errore assoluto quelle frequenze sono a vantaggio del quale il numero di punti visitati sul cerchio è un multiplo di 2, perché è necessaria fortuna (errore basso) in solo la metà dei punti. L'errore nel resto dei punti sono duplicati di quello che sono ai primi, con lanci di segno. Almeno i multipli di 6, 4 e 12 hanno un vantaggio ancora maggiore. Non sono sicuro di quale sia la regola esatta, perché non sembra essere tutto un multiplo di qualcosa. E' s qualcosa sulle simmetrie della griglia combinate con l'aritmetica del modulo. Tuttavia, gli errori pseudocasuali sono deterministici, quindi una ricerca esaustiva rivela le migliori disposizioni. Trovare le migliori disposizioni nel senso dell'errore assoluto root-mean-square (RMS) è il più semplice:

Errore assoluto RMS nelle disposizioni pseudoluckyDettaglio
N1/6/N,N=2K-1,K+1

12

{(0,±112),(±112,0),(±97,±56),(±56,±97)}112,00297611139371

-91.5

[0,1,2,3,4,5,6,7,8,9,10,11]2π/121/125/12 volte la frequenza di campionamento passerà attraverso gli stessi punti ma in un ordine diverso: [0,5,10,3,8,1,6,11,4,9,2,7]2π/12. Penso che funzioni così come 5 e 12 sono coprimi .

A proposito di possibili disposizioni perfette, l'errore può essere esattamente zero in tutti i punti se la frequenza della sinusoide è un quarto della frequenza di campionamento (incremento di fase di π/2per campione). Sulla griglia quadrata, non ci sono altre disposizioni così perfette . Su una griglia esagonale o su una griglia rettangolare non quadrata con uno degli assi I o Q allungati di un fattore di3 (per cui è equivalente a ogni seconda riga sulla griglia a nido d'ape), un incremento di fase di π/3per campione funzionerebbe perfettamente. Tale ridimensionamento potrebbe essere eseguito nel dominio analogico. Ciò aumenta il numero di assi di simmetria della griglia, il che si traduce in cambiamenti per lo più favorevoli alle disposizioni pseudolucky:

Errore assoluto RMS nelle disposizioni pseudolucky per una griglia rettangolare non quadrata con coefficiente di scala sqrt (3)
Figura 6. Errori di quantizzazione assoluta RMS più bassi possibili nell'oscillatore IQ complesso per varie profondità di bit dell'oscillatore, utilizzando una griglia di quantizzazione rettangolare con uno degli assi scalato da3.

In particolare, per un oscillatore a 8 bit con 30 punti sul cerchio, l'errore assoluto RMS più piccolo possibile è -51,3 dB sulla griglia quadrata e -62,5 dB sulla griglia rettangolare non quadrata, dove l'errore assoluto RMS più basso sequenza pseudolucky ha errore:

Errore nella seconda sequenza
Figura 7. I valori dell'errore sul piano QI mediante una sequenza pseudolucky di 8 bit della lunghezza 30 sfruttano gli assi di simmetria presenti nella griglia di quantizzazione allungati di un fattore di 3orizzontalmente. I punti provengono da soli tre numeri complessi pseudolucky, ruotati attorno agli assi di simmetria.

Non ho esperienza pratica con i segnali di clock IQ, quindi non sono sicuro di ciò che conta. Con la generazione del segnale di clock, utilizzando un convertitore digitale-analogico (DAC), sospetto che, a meno che non vengano utilizzate buone disposizioni pseudolucky, è meglio avere un rumore di fondo bianco più basso di quello di avere uno spettro di rumore armonico con picchi che derivano da una sequenza ripetuta di errori di quantizzazione (vedi Campionamento coerente e distribuzione del rumore di quantizzazione ). Questi picchi spettrali, così come il rumore bianco, potrebbero fuoriuscire attraverso la capacità parassita e avere effetti indesiderati in altre parti del sistema o influire sulla compatibilità elettromagnetica (EMC) del dispositivo. Come analogia, la tecnologia a spettro diffuso migliora l'EMC trasformando i picchi spettrali in un rumore di fondo più basso.

Segue il codice sorgente per un'esaustiva ricerca di arrangiamenti pseudolucky in C ++. Puoi eseguirlo durante la notte per trovare le migliori disposizioni per oscillatori almeno fino a 16 bit per1M100.

// Compile with g++ -O3 -std-c++11

#include <stdio.h>
#include <math.h>
#include <complex>
#include <float.h>
#include <algorithm>

// N = circle size in quantization steps
const int maxN = 127;
// M = number of points on the circle
const int minM = 1; 
const int maxM = 100;
const int stepM = 1;
// k = floor(log2(N))
const int mink = 2;
const double IScale = 1; // 1 or larger please, sqrt(3) is very lucky, and 1 means a square grid

typedef std::complex<double> cplx;

struct Arrangement {
  int initialI;
  int initialQ;
  cplx fundamentalIQ;
  double fundamentalIQNorm;
  double cost;
};

int main() {
  cplx rotation[maxM+1];
  cplx fourierCoef[maxM+1];
  double invSlope[maxM+1];
  Arrangement bestArrangements[(maxM+1)*(int)(floor(log2(maxN))+1)];
  const double maxk(floor(log2(maxN)));
  const double IScaleInv = 1/IScale;
  for (int M = minM; M <= maxM; M++) {
    rotation[M] = cplx(cos(2*M_PI/M), sin(2*M_PI/M));
    invSlope[M] = tan(M_PI/2 - 2*M_PI/M)*IScaleInv;
    for (int k = 0; k <= maxk; k++) {
      bestArrangements[M+(maxM+1)*k].cost = DBL_MAX;
      bestArrangements[M+(maxM+1)*k].fundamentalIQNorm = 1;
    }
  }
  for (int M = minM; M <= maxM; M += stepM) {
    for (int m = 0; m < M; m++) {
      fourierCoef[m] = cplx(cos(2*M_PI*m/M), -sin(2*M_PI*m/M))/(double)M;
    }
    for (int initialQ = 0; initialQ <= maxN; initialQ++) {
      int initialI(IScale == 1? initialQ : 0);
      initialI = std::max(initialI, (int)floor(invSlope[M]*initialQ));
      if (initialQ == 0 && initialI == 0) {
    initialI = 1;
      }
      for (; initialI*(int_least64_t)initialI  <= (2*maxN + 1)*(int_least64_t)(2*maxN + 1)/4 - initialQ*(int_least64_t)initialQ; initialI++) {
    cplx IQ(initialI*IScale, initialQ);
    cplx roundedIQ(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
        cplx fundamentalIQ(roundedIQ*fourierCoef[0].real());
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
          fundamentalIQ += roundedIQ*fourierCoef[m];
    }
    IQ = fundamentalIQ;
    roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
    double cost = norm(roundedIQ-IQ);
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
      cost += norm(roundedIQ-IQ);
    }
    double fundamentalIQNorm = norm(fundamentalIQ);
    int k = std::max(floor(log2(initialI)), floor(log2(initialQ)));
    //  printf("(%d,%d)",k,initialI);
    if (cost*bestArrangements[M+(maxM+1)*k].fundamentalIQNorm < bestArrangements[M+(maxM+1)*k].cost*fundamentalIQNorm) {
      bestArrangements[M+(maxM+1)*k] = {initialI, initialQ, fundamentalIQ, fundamentalIQNorm, cost};
    }
      }
    }
  }
  printf("N");
  for (int k = mink; k <= maxk; k++) {
    printf(",%d-bit", k+2);
  }
  printf("\n");
  for (int M = minM; M <= maxM; M += stepM) {
    printf("%d", M);
    for (int k = mink; k <= maxk; k++) {
      printf(",%.13f", sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
    printf("\n");
  }

  printf("bits,M,N,fundamentalI,fundamentalQ,I,Q,rms\n");
  for (int M = minM; M <= maxM; M += stepM) {
    for (int k = mink; k <= maxk; k++) {
      printf("%d,%d,%.13f,%.13f,%.13f,%d,%d,%.13f\n", k+2, M, sqrt(bestArrangements[M+(maxM+1)*k].fundamentalIQNorm), real(bestArrangements[M+(maxM+1)*k].fundamentalIQ), imag(bestArrangements[M+(maxM+1)*k].fundamentalIQ), bestArrangements[M+(maxM+1)*k].initialI, bestArrangements[M+(maxM+1)*k].initialQ, sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
  }
}

Output di esempio che descrive la prima sequenza di esempio trovata con IScale = 1:

bits,M,N,fundamentalI,fundamentalQ,I,Q,rms
8,12,112.0029761113937,112.0029761113937,0.0000000000000,112,0,0.0000265717171

Output di esempio che descrive la seconda sequenza di esempio trovata con IScale = sqrt(3):

8,30,200.2597744568315,199.1627304588310,20.9328464782995,115,21,0.0007529202390

Codice di ottava per testare la prima sequenza di esempio:

x = [112+0i, 97+56i, 56+97i, 0+112i, -56+97i, -97+56i, -112+0i, -97-56i, -56-97i, 0-112i, 56-97i, 97-56i];
abs(fft(x))
20*log10(abs(fft(x)(6)))-20*log10(abs(fft(x)(2)))

Codice di ottava per testare la seconda sequenza di esempio:

x = exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i);
y = real(x)/sqrt(3)+imag(x)*i;
z = (round(real(y))*sqrt(3)+round(imag(y))*i)/200.2597744568315;
#Error on IQ plane
star = z-exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i)/200.2597744568315;
scatter(real(star), imag(star));
#Magnitude of discrete Fourier transform
scatter((0:length(z)-1)*2*pi/30, 20*log10(abs(fft(z))/abs(fft(z)(2)))); ylim([-120, 0]);
#RMS error:
10*log10((sum(fft(z).*conj(fft(z)))-(fft(z)(2).*conj(fft(z)(2))))/(fft(z)(2).*conj(fft(z)(2))))

Molto bella. Ogni asse I e Q in grandezza è ben approssimato come uniforme; Mi chiedo se stiamo assistendo a una convoluzione di due distribuzioni uniformi: hai provato a prendere un istogramma del tuo risultato? Suppongo anche con questa logica non verificata che sto usando che la distribuzione dell'ampiezza per il segnale complesso potrebbe anche essere triangolare? Hai qualche idea da ciò che può accadere quando l'orologio di campionamento è commisurato?
Dan Boschen,

Aggiornerò comunque la domanda per non suggerire che sia uniforme!
Dan Boschen,

vedi il mio aggiornamento - Ho simulato e confermato il mio sospetto con distribuzioni triangolari. Mi sembra che la distribuzione varierà tra uniforme e triangolare a seconda dell'angolo (vedi il mio aggiornamento per una spiegazione); quindi se il nostro angolo è distribuito uniformemente dobbiamo finire con una distribuzione arrotondata complessiva.
Dan Boschen,

1
@OlloNiemitalo Molto bello. Hai ulteriori informazioni su cosa accadrebbe (in particolare ai componenti dell'errore di fase) se limitassimo le posizioni sul cerchio unitario al campionamento commisurato? intendi un multiplo fisso della velocità di rotazione di un singolo tono complesso? Certamente all'aumentare della frequenza di campionamento questo si avvicinerebbe a ciò che hai mostrato. Ma come potremmo descrivere matematicamente le componenti di fase rispetto a quella velocità quando limitiamo le scelte per essere commisurate?
Dan Boschen,

1
Grazie per averci masticato e dato ulteriori indicazioni su dove potrebbe essere la risposta. Si noti che se il rapporto è un multiplo intero pari, il modello si ripeterà due volte per ciclo, quindi si moltiplica più rapidamente per multipli divisibili per una potenza maggiore di 2. Quel modello determinato dalla teoria dei numeri di modulo è dove la risposta potrebbe essere davvero
Dan Boschen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.