Matlab: It is impossible to obtain unique rational solutions when implementing a formula for converting binary numbers to real numbers. Part1

There is a nonlinear dynamical system x_n = f(x_n,eta) , the functional form of which is x[n+1] = 2*x[n] mod 1 . This is a chaotic dynamical system called the Savoto map or Bernoulli map. It is difficult for me to fulfill two representations of the inverse mapping given by formulas (4) and Eq (5). The following is a brief description of the problem.

description

where the sequence (s[n+k])_k=1 to N-1 is a symbolic description of the state x[n]. This description arises from the unit breakdown described below.

Let the number of partitions M = 2 and the symbol space = {0,1} and the symbol assignment rule

  s[n+1] = 1 if x[n] >= 0.5, otherwise s[n+1] = 0 

The authors of this article:

 Linear, Random Representations of Chaos 

For Eq (5), I do not get the same time series after the inversion, several values โ€‹โ€‹differ after the binary conversion. Can someone please give me the correct procedure?

I tried to implement a Bijective map for equations (4) and (5), but that didn't work.

Code for Eq (5) . I binarize in 2 ways. x contains real numbers; s is the binary equivalent of 0/1 of each real; y is the answer after converting s to real. s1 is the binary equivalent of x + 1 / -1; b - response after conversion to real. In this case, + 1 / -1, when I switch from character representation to real, I switch -1 from 0, and then apply the formula in Eq (5). From the answers it is clear that after the conversion, y and b do not coincide with x . I also get negative values โ€‹โ€‹for b when the source realities are all unsigned rationals !! How can I implement correctly so that they are the same?

 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 
+7
binary-data matlab nonlinear-functions quantization
source share
1 answer

this part of your code is completely wrong, you change s (k), but use s (k + 1), which means that changing s (k) has no effect!

  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 

true:

  for k =1: N+1 if s1(k)== -1 s1(k) = 0; end end for k =1: N b(k) = 0.5*s1(k+1) + 0.5*b(k+1); end 

y =

Columns 1 to 10

 0.1000 0.2000 0.9000 0.8000 0.1000 0.2000 0.9000 0.8000 0.1000 0.2000 

Column 11

 0.4000 

b =

Columns 1 to 10

 0.1000 0.2000 0.9000 0.8000 0.1000 0.2000 0.9000 0.8000 0.1000 0.2000 

Column 11

 0.4000 

x = 0.1 0.2 0.4 0.8

1) b = x => b = 0.1 0.2 0.4 0.8

2) s1 = 2 (b> = 0.5) -1 => s1 = -1 -1 -1 1

3) a cycle on s1 => s1 = 0 0 0 1

4) b (3) = 0.5 s (4) +0.5 (b4) = 0.5 + 0.4 = 0.9

therefore the code is correct, but your formula is correct! and one more thing,> step 3 and 4 cancel each other, I mean the result of step 3 and 4 together (b> 0.5) and as a conclusion! it follows from the formula that if x (i)> 0.5 and x (i-1) <0.5, then b (i-1) cannot be equal to x (i-1)

because b (i-1) = 0.5 * X (i) +0.5 * ((x (i)> 0.5))

and if we assume that x (i)> 0.5, we could write:

B (I-1) = 0.5 * X (I) + 0.5 * 1

and we know that x (i) = mod (2x (i-1), 1) = 2 * x (i-1) {because x (i-1) <0.5 so 2 * x (i- 1) <1}

therefore we have

b (i-1) = 0.5 * 2 * X (i-1) + 0.5 * 1 = X (i-1) +0.5 => b (i-1)> 0.5, but x (i-1) <0.5 !!!!!

therefore your formula is incorrect.

+2
source share

All Articles