Entropia de informações do caos



1. Introdução


Existem muitas publicações sobre Habr nas quais o conceito de entropia é considerado, aqui estão apenas algumas delas [1]. As publicações foram recebidas positivamente pelos leitores e despertaram grande interesse. É suficiente dar a definição de entropia dada pelo autor da publicação [1]: “entropia é quanta informação você não conhece sobre o sistema”. Publicações sobre o fenômeno do caos em Habr também são suficientes [6–9]. No entanto, a relação de entropia e caos em ambos os grupos de publicações não foi considerada.

Isso se deve ao fato de que diferentes áreas do conhecimento distinguem diferentes tipos de medidas de caos:

  • informativo;
  • termodinâmico;
  • diferencial;
  • cultural.

As medidas de caos também são descritas levando em consideração sua especificidade, mesmo em uma dessas áreas é bastante difícil.

Tentando simplificar ao máximo a tarefa, decidi considerar a relação entre entropia informacional e caos usando o exemplo da semelhança das regiões de passagem da ordem ao caos nos diagramas na forma de mapeamentos de pontos e nos gráficos do coeficiente de entropia para essas regiões.

O que veio disso você aprenderá olhando sob o gato.

Os mecanismos de transição da ordem para o caos


Uma análise dos mecanismos de transição da ordem para o caos em sistemas reais e vários modelos revelou a universalidade de relativamente poucos cenários de transição para o caos. A transição para o caos pode ser representada na forma de um diagrama de bifurcação (o termo “bifurcação” é usado para denotar rearranjos qualitativos do sistema com o surgimento de um novo modo de comportamento).

A entrada do sistema no modo imprevisível é descrita por uma cascata de bifurcações após uma após a outra. A cascata de bifurcações leva sequencialmente a uma escolha entre duas soluções, depois quatro e assim por diante, o sistema começa a oscilar em um modo caótico e turbulento de duplicar sequencialmente o número de valores possíveis.

Consideramos as bifurcações da duplicação de períodos e o aparecimento do caos nos mapeamentos de pontos. Display é uma função que mostra a dependência dos seguintes valores dos parâmetros do sistema em relação aos valores anteriores:

xn+1=f(xn)= lambdaxn(1xn)

Considere também a segunda função comumente usada:

xn+1=f(xn)= lambda cdotxn cdot(1x2n)

Usando mapeamentos de pontos, os objetos são estudados não com contínuo, mas com tempo discreto . Após a transição para a tela, a dimensão do sistema em estudo pode diminuir.

Ao alterar o parâmetro externo \ lambda, os mapeamentos de pontos exibem um comportamento bastante complicado, que se torna caótico com \ lambda suficientemente grande. O caos é uma recessão muito rápida de trajetórias no espaço de fase.

A bifurcação é uma reestruturação qualitativa do filme. Os valores do parâmetro de controle no qual ocorrem as bifurcações são chamados de valores críticos ou de bifurcação.

Para criar os diagramas, usaremos as duas listagens a seguir:

No. 1. Para função: xn+1=f(xn)= lambdaxn(1xn)

Listagem do programa
# -*- coding: utf8 -*- import matplotlib.pyplot as plt from numpy import * def f(a,x0): x1=(a-1)/a#     def ff(x):#  return a*x*(1-x) def fl(x): return x x=x0;y=0;Y=[];X=[] for i in arange(1,1000,1): X.append(x) Y.append(y) y=ff(x) X.append(x) Y.append(y) x=y plt.title('   \n\ $x_{n+1}=\lambda \cdot x_{n}\cdot (1-x_{n})$  $\lambda$ =%s  x0=%s '%(a,x0)) plt.plot(X,Y,'r') x1=arange(0,1,0.001) y1=[ff(x) for x in x1] y2=[fl(x) for x in x1] plt.plot(x1,y1,'b') plt.plot(x1,y2,'g') plt.grid(True) plt.show() 

No. 2. Para função xn+1=f(xn)= lambda cdotxn cdot(1x2n)

Listagem do programa
 # -*- coding: utf8 -*- import matplotlib.pyplot as plt from numpy import * def f(a,x0): x1=((a-1)/a)**0.5 def ff(x):#  return a*x*(1-x**2) def fl(x): return x x=x0;y=0;Y=[];X=[] for i in arange(1,1000,1): X.append(x) Y.append(y) y=ff(x) X.append(x) Y.append(y) x=y plt.title('   \n\ $x_{n+1}=\lambda \cdot x_{n}\cdot (1-x_{n}^{2})$  $\lambda$ =%s  x0=%s '%(a,x0)) plt.plot(X,Y,'r') x1=arange(0,1,0.001) y1=[ff(x) for x in x1] y2=[fl(x) for x in x1] plt.plot(x1,y1,'b') plt.plot(x1,y2,'g') plt.grid(True) plt.show() 


Avaliar o impacto da natureza da função logística em valores críticos  lambda considere diagramas com uma função xn+1=f(xn)= lambdaxn(1xn) Para fazer isso, usaremos a listagem nº 1:

Para 0 <\ lambda <1 para  lambda=$0,9 e x0 = 0,47, obtemos o diagrama:



Nesse caso, o mapa possui um único ponto fixo x=0
que é sustentável.

At 1< lambda<3 para  lambda=$2, x0 = 0,7, obtemos o diagrama:



No segmento [0, 1], outro ponto fixo fixo aparece x1=11/ lambda

At 1< lambda<3 para  lambda=$2, e x0 = 0,01, obtemos o diagrama:



Ponto fixo x=0 perde estabilidade.

At 3< lambda<3,45 para  lambda=$3,4 e x0 = 0,7, obtemos o diagrama:



O mapeamento sofre uma bifurcação: ponto fixo x1 torna-se instável e um ciclo duplo é exibido.

At 3,45< lambda<4,0 para  lambda=$3,5
e x0 = 0,2, obtemos o diagrama:



Ao passar um parâmetro  lambda através do valor  lambda=3,45 , Um ciclo de duas vezes se torna quatro vezes e além.

No valor final  lambda=4 o sistema possui ciclos instáveis ​​de todos os pedidos possíveis:



Avaliar o impacto da natureza da função logística em valores críticos  lambda considere diagramas com uma função xn+1=f(xn)= lambda cdotxn cdot(1x2n) , para isso, usaremos a listagem nº 2.

At 0< lambda<=1,0 para  lambda=0,5 e x0 = 0,2:



O mapeamento possui um único ponto fixo x=0 que é sustentável.

At 1< lambda<=1.998... para  lambda=$1, e x0 = 0,55:



Ponto x=0 perde a estabilidade, um novo ponto estável aparece x1

At 1,99< lambda<=2,235... para  lambda=US$2, e x0 = 0,2:



Bifurcação da duplicação do período ocorre, um ciclo de 2 vezes aparece. Aumento adicional  lambda leva a uma cascata de períodos de duplicação de bifurcações.

At 2,235< lambda2.5980... para  lambda=2,287 e x0 = 0,2:



Aumentar  lambda levou a uma cascata de período dobrando bifurcações.

At  lambda=2,59 o sistema possui ciclos instáveis ​​de todos os períodos possíveis:



Como foi mostrado nos diagramas, com um aumento na ordem da função logística, o intervalo de mudanças  lambda diminui.

Usando diagramas, traçamos o caminho do pedido ao caos, enquanto definimos os valores  lambda para diferentes funções logísticas. Resta responder à pergunta: como medir o caos? A resposta para alguns dos tipos de caos listados no início do artigo é conhecida
- entropia é uma medida do caos. Esta resposta pode ser totalmente atribuída ao caos da informação, no entanto, que entropia é aplicada aqui e como comparar com o valor numérico já considerado  lambda - Tentarei responder a essa pergunta na próxima parte do artigo.

Entropia de informação e coeficiente de entropia


Consideraremos a entropia binária de informações para eventos aleatórios independentes. x c n possíveis estados distribuídos com probabilidades pi(i=1,..,n) . A entropia binária de informações é calculada pela fórmula:

H(x)= sumni=1pi cdotlog2(pi)

Esse valor também é chamado de entropia média da mensagem. Valor Hi=log2(pi) chamada entropia privada, caracterizando apenas o i- ésimo estado. No caso geral, a base do logaritmo na definição de entropia pode ser maior que 1; sua escolha determina a unidade de medida da entropia.

Usaremos logaritmos decimais nos quais a entropia e as informações são medidas em bits. A quantidade de informações em bits será calculada corretamente quando, por exemplo, variáveis X e  Delta será substituído nas expressões correspondentes por entropia, não importa em qual, mas sempre nas mesmas unidades. De fato:

q=H(x)H( Delta)=log10 left(X2X1 right)log10(2 Delta)=log10( fracX2X12 Delta)

onde X e  Delta deve estar nas mesmas unidades.

Uma estimativa do valor da entropia de uma variável aleatória a partir de dados experimentais é encontrada em um histograma da seguinte relação:

 Deltae= frac12eH(x)= fracd2 prodmi=1( fracnni) fracnin= fracdn210 frac1n summi=1nilog10(ni)

onde: d –Largura de cada coluna do histograma; m - número de colunas; n quantidade total de dados; ni - quantidade de dados em i essa coluna.

O coeficiente de entropia é determinado a partir da razão:

ke= frac Deltae sigma

onde:  sigma desvio padrão.

Entropia da informação como uma medida do caos


Para analisar os fenômenos do caos da informação usando o coeficiente de entropia, primeiro criamos um diagrama de ramificações para a função xn+1=f(xn)= lambdaxn(1xn) com a aplicação de áreas de transição obtidas durante a construção de histogramas:

Diagrama de ramificação
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt from numpy import* N=1000 y=[] y.append(0.5) for r in arange(3.58,3.9,0.0001): for n in arange(1,N,1): y.append(round(r*y[n-1]*(1-y[n-1]),4)) y=y[N-250:N] x=[r ]*250 plt.plot( x,y, color='black', linestyle=' ', marker='.', markersize=1) plt.figure(1) plt.title("   3,6<= $\lambda$ <=3,9") plt.xlabel("r") plt.ylabel("$\lambda$ ") plt.axvline(x=3.63,color='black',linestyle='--') plt.axvline(x=3.74,color='black',linestyle='--') plt.axvline(x=3.83,color='black',linestyle='--') plt.axvline(x=3.9,color='black',linestyle='--') plt.show() 


Temos:



Traçamos o coeficiente de entropia para as mesmas áreas  lambda :

O gráfico para o coeficiente de entropia
 import matplotlib.pyplot as plt from numpy import* data_k=[] m='auto' for p in arange(3.58,3.9,0.0001): q=[round(p,2)] M=zeros([1001,1]) for j in arange(0,1,1): M[0,j]=0.5 for j in arange(0,1,1): for i in arange(1,1001,1): M[i,j]=q[j]*M[i-1,j]*(1-M[i-1,j]) a=[] for i in arange(0,1001,1): a.append(M[i,0]) n=len(a) z=histogram(a, bins=m) if type(m) is str: m=len(z[0]) y=z[0] d=z[1][1]-z[1][0] h=0.5*d*n*10**(-sum([w*log10(w) for w in y if w!=0])/n) ke=round(h/std(a),3) data_k.append(ke) plt.title("  ke  3,6<= $\lambda$ <=3,9") plt.plot(arange(3.58,3.9,0.0001),data_k) plt.xlabel("$\lambda$ ") plt.ylabel("ke") plt.axvline(x=3.63,color='black',linestyle='--') plt.axvline(x=3.74,color='black',linestyle='--') plt.axvline(x=3.83,color='black',linestyle='--') plt.axvline(x=3.9,color='black',linestyle='--') plt.grid() plt.show() 


Temos:



Comparando o diagrama e o gráfico, vemos uma exibição idêntica das regiões no diagrama e no gráfico para o coeficiente de entropia para a função xn+1=f(xn)= lambdaxn(1xn) .

Para uma análise mais aprofundada dos fenômenos do caos da informação usando o coeficiente de entropia, criamos um diagrama de ramificações para a função logística: xn+1=f(xn)= lambda cdotxn cdot(1x2n) com a aplicação de áreas de transição:

Diagrama de ramificação
 import matplotlib.pyplot as plt from numpy import* N=1000 y=[] y.append(0.5) for r in arange(2.25,2.56,0.0001): for n in arange(1,N,1): y.append(round(r*y[n-1]*(1-(y[n-1])**2),4)) y=y[N-250:N] x=[r ]*250 plt.plot( x,y, color='black', linestyle=' ', marker='.', markersize=1) plt.figure(1) plt.title("   2.25<=$\lambda$ <=2.56") plt.xlabel("$\lambda$ ") plt.ylabel("y") plt.axvline(x=2.34,color='black',linestyle='--') plt.axvline(x=2.39,color='black',linestyle='--') plt.axvline(x=2.45,color='black',linestyle='--') plt.axvline(x=2.49,color='black',linestyle='--') plt.axvline(x=2.56,color='black',linestyle='--') plt.show() 


Temos:



Traçamos o coeficiente de entropia para as mesmas áreas  lambda :

Gráfico de coeficiente de entropia
 import matplotlib.pyplot as plt from numpy import* data_k=[] m='auto' for p in arange(2.25,2.56,0.0001): q=[round(p,2)] M=zeros([1001,1]) for j in arange(0,1,1): M[0,j]=0.5 for j in arange(0,1,1): for i in arange(1,1001,1): M[i,j]=q[j]*M[i-1,j]*(1-(M[i-1,j])**2) a=[] for i in arange(0,1001,1): a.append(M[i,0]) n=len(a) z=histogram(a, bins=m) if type(m) is str: m=len(z[0]) y=z[0] d=z[1][1]-z[1][0] h=0.5*d*n*10**(-sum([w*log10(w) for w in y if w!=0])/n) ke=round(h/std(a),3) data_k.append(ke) plt.figure(2) plt.title("  ke  2.25<= $\lambda$ <=2.56") plt.plot(arange(2.25,2.56,0.0001),data_k) plt.xlabel("$\lambda$ ") plt.ylabel("ke") plt.axvline(x=2.34,color='black',linestyle='--') plt.axvline(x=2.39,color='black',linestyle='--') plt.axvline(x=2.45,color='black',linestyle='--') plt.axvline(x=2.49,color='black',linestyle='--') plt.axvline(x=2.56,color='black',linestyle='--') plt.grid() plt.show() 


Temos:



Comparando o diagrama e o gráfico, vemos uma exibição idêntica das regiões no diagrama e no gráfico para o coeficiente de entropia para a função xn+1=f(xn)= lambda cdotxn cdot(1x2n)

Conclusões:


O problema educacional é resolvido no artigo: a entropia informacional é uma medida do caos, e a resposta dessa pergunta é afirmativamente dada por Python.

Referências


  1. Entropia? É fácil!
  2. Introdução ao conceito de entropia e suas múltiplas faces.
  3. Árvores de entropia e decisão.
  4. Um tratado sobre entropia.
  5. Entropia e WinRAR.
  6. Modelos matemáticos do caos.
  7. Um pouco sobre o caos e como criá-lo.
  8. Um olhar crítico sobre o atrator Lorenz.
  9. Geradores de caos em FPGA.

Source: https://habr.com/ru/post/pt447874/


All Articles