Esiste un sistema dinamico non lineare x_n = f(x_n,eta)
la cui forma funzionale è x[n+1] = 2*x[n] mod 1
. Questo è un sistema dinamico caotico chiamato mappa di Sawtooth o Mappa di Bernoulli. Sto affrontando difficoltà nell'implementazione delle due rappresentazioni della mappatura inversa fornite da Eq (4) ed Eq (5). Di seguito è riportata una breve descrizione del problema.Matlab: impossibile ottenere razionali univoci quando si implementa una formula per la conversione da binario a numero reale Parte
cui la sequenza (s[n+k])_k=1 to N-1
è la descrizione simbolica dello x[n].
Questa descrizione deriva dal partizionamento dell'intervallo apparecchiatura descritta di seguito.
Let, il numero di partizioni M = 2 e lo spazio simbolo = {0,1} e la regola per l'assegnazione dei simboli è
s[n+1] = 1 if x[n] >= 0.5, otherwise s[n+1] = 0
autori di questo documento:
Linear, Random Representations of Chaos
Per Eq (5) Non ottengo le stesse serie temporali dopo l'inverso, alcuni valori differiscono dopo aver eseguito la conversione da binario a reale. Qualcuno può darmi la procedura corretta?
Ho provato a implementare la mappa Bijective per Eqs (4) e (5), ma non funziona.
Codice per Eq (5) - I binarizing in 2 modi. x
contiene i numeri reali; s
è l'equivalente binario 0/1 di ogni reale; y
è la risposta dopo la conversione di s
in real. s1 è l'equivalente binario + 1/-1 di x; b è la risposta dopo la conversione in real. In questo caso di + 1/-1, quando sto convertendo da rappresentazione simbolica a reale, cambio -1 con 0 e poi applico la formula in Eq (5). Dalle risposte, si può vedere che e b
non corrispondono a x
dopo aver eseguito la conversione. Ottengo anche i veri negativi per b quando i real originali sono tutti razionali senza segno !! Come posso implementare correttamente in modo che siano entrambi uguali?
N =10;
x(1) = 0.1;
for i =1 : N
x(i+1) = mod(x(i)*2, 1);
end
y = x;
s = (y>=0.5); %generate 0/1 logicals
for n = 1: N
y(n) = 0.5*s(n+1) + 0.5*y(n+1);
end
b=x;
s1 = 2*(b>=0.5)-1; %Generate +1/-1
for k =1: N
if s1(k)== -1
s1(k) = 0;
end
b(k) = 0.5*s1(k+1) + 0.5*b(k+1);
end
Let, x =
0.100000000000000 0.200000000000000 0.400000000000000 0.800000000000000 0.600000000000000 0.200000000000000 0.400000000000000 0.800000000000001 0.600000000000001 0.200000000000003 0.400000000000006
y =
0.100000000000000 0.200000000000000 0.900000000000000 0.800000000000000 0.100000000000000 0.200000000000000 0.900000000000000 0.800000000000001 0.100000000000001 0.200000000000003 0.400000000000006
b =
-0.400000000000000 0.700000000000000 0.900000000000000 -0.200000000000000 -0.400000000000000 0.700000000000000 0.900000000000000 -0.199999999999999 -0.399999999999999 -0.299999999999997 0.400000000000006
Secondo l'equazione 4, 'k' aumenta da' n' a 'n + N-1'. Quindi '\ beta_inverse (s_n)' usa 's_n'? Come? Inoltre non penso che usi 's (9), ..., s (1)'. Un'altra cosa, dobbiamo leggere l'intera domanda per rispondere? –
S_n è un vettore di n simboli e hai ragione, S_10 usa s_10, s_11 e così via. Ad esempio, S = beta (binary_of_x) = beta (0,101) = 0,01 – SKM
Ci sono troppe modifiche importanti nelle domande OP, spesso dopo che sono state fornite le risposte. Questo è il numero sei, se la memoria funziona correttamente. Cercherò di segnalarli a un moderatore quando avrò tempo - nel frattempo, per favore, desista da tali importanti modifiche. Ci piace conservare le domande nella forma in cui sono state poste, a meno che non ci siano circostanze attenuanti. – halfer