存在一个x_n = f(x_n,eta)
函数形式为的非线性动态系统x[n+1] = 2*x[n] mod 1
。这是一个混沌动力系统,称为锯齿图或伯努利图。我在实现 Eq(4) 和 Eq(5) 给出的逆映射的两种表示时遇到了困难。以下是该问题的简要说明。
其中序列(s[n+k])_k=1 to N-1
是状态的符号描述x[n].
这个描述来自下面描述的单位区间的划分。
令,分区数 M = 2,符号空间 = {0,1},分配符号的规则为
s[n+1] = 1 if x[n] >= 0.5, otherwise s[n+1] = 0
本文作者:
Linear, Random Representations of Chaos
对于 Eq(5),我在逆运算后没有得到相同的时间序列,在进行二进制到实数转换后几乎没有值不同。有人可以让我正确的程序吗?
我尝试为 Eqs(4) 和 (5) 实现双射映射,但它不起作用。
Eq(5) 的代码- 我将二值化为 2 种方式。x
包含实数;s
是每个实数的 0/1 二进制等价物;是转换为真实y
后的答案。s
s1 是 x 的 +1/-1 二进制等价物;b 是转换为实数后的答案。在这种 +1/-1 的情况下,当我从符号表示转换为实数表示时,我将 -1 与 0 切换,然后应用 Eq(5) 中的公式。从答案可以看出,y
和做转换后b
的不一样。x
当原始实数都是无符号有理数时,我也得到了 b 的负数!!如何正确实施以使它们都相同?
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
让 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