2016-04-06 13 views
0

MATLAB'a yeniyim ve [0,4] 'de λ için x = λx (1-x) ve başlangıç ​​koşulu [0,1] logistik haritayı çizmeye çalışıyorum. Ama bir sebepten dolayı gerçekten tuhaf bir arsa almaya devam ediyorum.Lojistik Harita Çizimi Sorunları

Weird plot

Ben böyle olması gerekiyor sanmıyorum. Kodum yanlış olabilir mi?

Herhangi bir yardım yapacak, teşekkürler!

Kodum:

startL = 0; # The starting value of lambda 
finalL = 4; # The final value of lambda 
N = 1000; # The number of values of lambda points 
      # between starting value and final value 
      # of lambda. (optional) 


L = linspace(startL,finalL,N); # A row vector of N lambda 
           # points between startL and finalL. 
M = 1000; # The number of iterations 

# Loop trough the values of lambda 
for k = 1:length(L) 

    # allocate memory for x 
    x = zeros(1,M+1); 
    x(1) = 0.3; # Initial condition: x_0, from [0,1]. 

    results = zeros(1,M+1); 
    # Iteration scheme for current lamda 
    for m = 1:M 
     x(m+1) = L(k)*x(m)*(1 - x(m)); 
     results(k,m) = x(m+1); 
    end; 
end; 

plot(L, results, 'b.'); 
xlabel('\lambda'); 
ylabel('x_n'); 
title('Logistic Map'); 
+0

'results' ki bu bir 1D vektörüymiş gibi bir 2D matrisidir. @ben_Heo tarafından önerilen düzeltme kesinlikle işe yarıyor ve havalı bir komplo yapıyor, ancak bunu çizmek için bu şekilde mi? –

cevap

2
results=zeros(1, M+1); 

döngü

için her k değerleri için başlatılır çalışacak döngü önce başlatılamıyor: Sen komplo

results = zeros(N, M+1); 
for k = 1:length(L) 

    % allocate memory for x 
    x = zeros(1,M+1); 
    x(1) = 0.3; % Initial condition: x_0, from [0,1]. 


    % Iteration scheme for current lambda 
    for m = 1:M 
     x(m+1) = L(k)*x(m)*(1 - x(m)); 
     results(k,m) = x(m+1); 
    end; 
end