7 Nisan 2018 Cumartesi

Kaos Teorisi: May'in Keşfi


Bu yazıda Robert May’in 1970’li yıllarda keşfettiği bir olaya değinilecek.
Lojik olan bu denklemde giriş, bir önceki çıkış oluyor. Ve makul bir başlangıç değeri belirleyip döngüye sokuluyor. Böylece oluşan x değerleri gözlemleniyor. Ben May’in denklemine gelmeden önce başka bir denklemden örnek vererek açıklamak istiyorum.
Bir denklem uyduralım ve bu denklem lineer olmasın. Mesela,
Şeklinde olsun.
Basit iterasyon ile köklerini bulacak olursam yakınsama kriterine en uygun ayırma şu şekilde olacaktır:
Basit olması açısından,  olsun. Ve iterasyonla ilgili indisleri de yerleştirirsem:
İterasyona hazır hale gelir. Aslında yakınsama kriterine uygun olup olmadığına (basit iterasyon yakınsama koşulu) bakmadan bu adıma geçtik. Doğruyu söylemek gerekirse yakınsadığını kriterler kontrol etmek o fonksiyonu kullanmaktan daha uzun sürecek. Her neyse. Yine de uygun olup olmadığına kısaca bakalım.
Elde edilen türevin pozitif reel kümede 1’den küçük olduğunu (grafik çizdirerek :/) görebilirsiniz.
İterasyona başlandığında, örneğin başlangıç x değerim  0 (sıfır) olsun.
Evet. Bu şekilde yapmaya devam ederek x’i bir sayıya yakınsatıyorum. Geometrik olarak yaşanan olay şu:
 
Birkaç adımdan sonra x’in 2’ye çok yaklaştığını ve 2’nin başlangıçtaki 3. Dereceden polinomun bir kökü olduğunu söyleyebiliriz nitekim öyledir de. Bu grafiği çizdirdiğim matlab scripti:
Function = @(x) (3*x+2).^(1/3);
StartValueofX = 0;
LoopStep = 15;
a = 0; %space
b = 5;
f = figure('name', 'Basit İterasyon');

x_vector = linspace(a,b);
figure(f);
plot(x_vector, Function(x_vector), x_vector, x_vector);
clear x_vector;
hold on;

X = zeros([1 LoopStep]);
X(1) = StartValueofX;
for step = 1:LoopStep-1;
    X(step+1) = Function(X(step));
    thisX = [ X(step) X(step) X(step+1) ];
    thisY = [ X(step) X(step+1) X(step+1)];
    plot(thisX, thisY, 'k');
end

clear step thisX thisY

May’in denkleminde yapacağımız şey de hemen hemen bu. Ancak amacımız bir fonksiyonun kökünü bulmaktan ziyade, lojik bağıntının B’ye göre nasıl davrandığını gözlemlemek olucak. Az önceki yaptığım her şeyi şimdi May’ın denklemine uyguluyorum. B değerim şimdilik 3 olsun. Başlangıcı da 0.5 alalım. Burayı biraz açalım. Başlangıcı 0 alırsam, aslında herhangi bir yere yakınsamaz, zaten 0 bir çözümdür. Yani 0, 0’a gider. Sanki 1’den büyük bir değer de herhangi bir sayıya yakınsatacak gibi değil. Dolayısıyla 0.5 ten başlatıyorum. B değerimin 3 olmasının aslında bir sebebi yok. Gözlemlemek istediğim şey ise denklemin B’ye göre nasıl bir davranış sergileyeceği.
 
B’nin bu değeri için az öncekinden farklı bir şey olduğu söylenemez. Şimdi de B = 3.2 için şansımızı deneyelim:
 
Şimdi ise iterasyon sürecinde x iki ayrı değere yakınsamaktadır.  Bu arada aynı B için x in farklı bir başlangıç değeri için de benzer bir sonuç elde ediliyor:
Şimdi, x eksenine B değerlerini ve y eksenine de yakınsadığı değerleri koyacak olursak acaba ne gibi bir grafik elde edilir.
Grafikte B = 2.9’a kadar olan kısım atlanıyor çünkü tek bir değere yakınsıyor. 8 civarından sonra ise genellikle yakınsanan sayı adedi sonsuza yakınsıyor. Benim programım ise 4 e kadar hesap yapmaya daha uygun olduğu için oraya kadar hesapladım. Bu grafiği çizdirdiğim script bir fonksiyondan oluşuyor:
function [ y ] = out(B)
    TD = 0.01;
    x_0 = 0.5;
    max_step = 2^10;
    x = zeros([1 max_step]);
    x_i = zeros([1 max_step]);
    for i=1:max_step;
        x_0 = B*x_0*(1-x_0);
        x(i) = x_0;
        if(i == 3)
           if(x_0 > 1)
               break;
           end
        end
    end

    x2 = fliplr(x);
    for i=1:max_step;
        if(abs(x2(1)-x2(i+1))<=TD)
            x_i = x2(1:i);
            break;
        end
    end
    y=x_i;
    clear i x x2;
end

ve script dosyası:
clear all;
for i = 2.9:0.001:4;
    B = i;
    Y = out(B);
    a = length(Y);
    X = ones([1 a])*B;
    plot(X,Y, '.k')
    hold on;
end

Aralıktaki her B için ayrı ayrı yakınsanan sayıları bulan bir algoritma. Yakınsadığından tatmin olma sınırı için TD = 0.01 gibi bir tolerans belirledim. Bu grafiğin çiziminde farklı algoritmalar da izleniyor olabilir.
Resimde, bilgisayar teknolojisi henüz yeteri kadar gelişmemişken May tarafından grafiğin oluşturulmuş bir kısmı. Resim James Gleick’in Kaos kitabından alınmıştır.
May'e göre: "Doğrusal olmayan sistemlerin mutlaka basit dinamik özellikleri olmadığını anlayan insan sayısı artarsa, yalnızca araştırmalarda değil aynı zamanda günlük politika ve ekonomi dünyasında da hepimiz için her şey daha iyi yürürdü" (J. Gleick, Kaos)
Periyot katlamaları ve daha fazla ayrıntı için Gleick'in kitabı ve ayrıca John Gribbin, Derin Basitlik kitabını tavsiye ederim. Bu hesaplamaları sürekli hale getirmiş ve gerçek zamanlı izleme şansı tanıyan bir videoyu da buraya eklemekte fayda görüyorum. 


Ayrıca daha kapsamlı bir iterasyon ile keşfedilebilecek araziler için:



Hiç yorum yok:

Yorum Gönder