Örümcek Ağı (Cobweb) Grafikleri
Örümcek ağı grafikleri, bir boyutlu ayrık dinamik sistemlerin (haritaların) davranışını analiz etmek için güçlü bir görselleştirme aracıdır. Bir fonksiyonun iterasyonlarının zaman içinde nasıl geliştiğini anlamak için sezgisel bir yol sağlarlar ve sabit noktalar, periyodik yörüngeler ve kaotik davranış gibi önemli dinamik özellikleri belirlemeye yardımcı olurlar.
Örümcek Ağı Grafikleri Nasıl Çalışır?
Bir örümcek ağı grafiği, bir fonksiyonu tekrar tekrar uygulama (iterasyon) sürecini görselleştirir. Bir \(f(x)\) fonksiyonu için, \(x_0\) başlangıç değerinden başlayarak, iterasyon şu diziyi oluşturur:
Örümcek ağı grafiği bu iterasyonu geometrik olarak şu şekilde temsil eder:
- Fonksiyon eğrisi: \(y = f(x)\) çizilir.
- Birim (Identity) doğrusu: \(y = x\) çizilir (kesikli çizgi olarak gösterilir).
- İterasyon yolu: Her iterasyonun \((x_n, x_n)\) noktasından \((x_n, x_{n+1})\) noktasına, oradan da \((x_{n+1}, x_{n+1})\) noktasına nasıl hareket ettiğini gösteren bir "merdiven" çizilir.
Merdiven yapısı şu şekilde oluşturulur: - \((x_n, x_n)\) noktasından \((x_n, f(x_n))\) noktasına dikey bir çizgi çizilir. - \((x_n, f(x_n))\) noktasından \((f(x_n), f(x_n))\) noktasına yatay bir çizgi çizilir.
Bu işlem, fonksiyon eğrisi ile birim doğrusu arasında zikzak çizen ve iterasyon sürecini görsel olarak temsil eden bir yol oluşturur.
Temel Kullanım
from dynlib.plot import cobweb
# Basit bir fonksiyon kullanarak
def logistic(x, r=4.0):
return r * x * (1 - x)
cobweb(
f=logistic,
x0=0.1, # başlangıç koşulu
steps=50, # iterasyon sayısı
xlim=(0, 1), # x-ekseni sınırları
)
Dynlib Modelleriyle Çalışma
Örümcek ağı grafikleri dynlib modelleriyle sorunsuz çalışır:
from dynlib import setup
from dynlib.plot import cobweb
model = """
inline:
[model]
type="map"
name="Logistic Map"
[states]
x=0.1
[params]
r=4.0
[equations.rhs]
x = "r * x * (1 - x)"
"""
sim = setup(model, stepper="map")
cobweb(
f=sim.model, # Modeli doğrudan iletin
x0=0.1,
xlim=(0, 1),
steps=50,
)
setup() (veya build()) fonksiyonuna satır içi (inline) olarak iletirken, dynlib'in bunu bir dosya yolu yerine gömülü bir model tanımı olarak algılaması için dizenin başına inline: ekleyin.
Temel Parametreler
Fonksiyon Belirtimi
f: İterasyon yapılacak fonksiyon veya model. Şunlar olabilir:- Çağrılabilir bir fonksiyon
f(x)veyaf(x, r) map()metoduna sahip bir dynlib Model nesnesi- Bir Sim nesnesi (
sim.modelkullanılır)
İterasyon Kontrolü
x0: İterasyon için başlangıç değeristeps: Çizilecek iterasyon adımı sayısı (varsayılan: 50)t0: Başlangıç zaman indeksi (varsayılan: 0.0)dt: Zaman adımı boyutu (varsayılan: 1.0)
Modele Özgü Seçenekler
state: Çok boyutlu modeller için, hangi durum değişkeninin kullanılacağını belirtir (isim veya indeks ile)fixed: Sabit parametre/durum değerleri sözlüğü (dictionary)r: 'r' parametresi için geçersiz kılma değeri (çatallanma analizinde yaygındır)
Çizim Stili
xlim/ylim: Eksen sınırları (belirtilmezse otomatik hesaplanır)color: Fonksiyon eğrisinin rengiidentity_color: Birim doğrusunun (y=x) rengistair_color: İterasyon merdiveninin rengilw: Fonksiyon eğrisinin çizgi genişliğistair_lw: Merdivenin çizgi genişliğialpha: Şeffaflık
Etiketler ve Görünüm
xlabel/ylabel: Eksen etiketlerititle: Grafik başlığılegend: Lejandın gösterilip gösterilmeyeceği (varsayılan: True)
Örümcek Ağı Grafiklerini Yorumlama
Sabit Noktalar
Sabit noktalar \(x = f(x)\) eşitliğinin sağlandığı yerlerde oluşur. Örümcek ağı grafiğinde bunlar, fonksiyon eğrisi ile birim doğrusunun kesişim noktaları olarak görünür.
Kararlılık (Stabilite)
- Kararlı sabit noktalar: Merdiven, sabit noktaya doğru içeriye spiraller çizer.
- Kararsız sabit noktalar: Merdiven, sabit noktadan dışarıya doğru spiraller çizer.
Periyodik Yörüngeler
Periyodik davranış, örümcek ağı grafiğinde kapalı döngüler olarak görünür. Örneğin, periyot-2 yörüngesi, merdivenin tekrar tekrar takip ettiği dikdörtgen bir yol oluşturur.
Kaos
Kaotik davranış, merdivenin düzenli bir desene oturmaması ve genellikle grafiğin bölgelerini yoğun bir şekilde doldurmasıyla kendini gösterir.
İleri Seviye Örnekler
Çoklu Parametre Analizi
# Farklı r değerlerini analiz etme
r_values = [2.5, 3.2, 3.5, 4.0]
for r in r_values:
cobweb(
f=logistic,
x0=0.1,
r=r, # r parametresini geçersiz kıl
xlim=(0, 1),
title=f"Lojistik Harita (r={r})",
)
Çok Durumlu Modeller (tek bir değişkeni yineleme)
Örümcek ağı grafikleri, altta yatan harita (map) birçok duruma sahip olsa bile tek bir durum yörüngesini görselleştirir. Takip etmek istediğiniz değişkeni state ile ayarlayın ve geri kalanını fixed aracılığıyla sabit tutun. Bu, diğer durumlar sağlanan değerlerde sabitlenirken sistemi seçilen durum için etkili bir şekilde 1B haritaya indirger.
from dynlib import setup
multi_state_model = """
inline:
[model]
type = "map"
name = "Two-State Map"
[states]
x = 0.5
y = 1.0
[params]
a = 3.0
[equations.rhs]
x = "a * x * (1 - x) + 0.1 * y"
y = "0.9 * y"
"""
sim = setup(multi_state_model, stepper="map")
cobweb(
f=sim.model,
x0=sim.state["x"],
state="x",
fixed={"y": 1.0},
steps=100,
)
Grafik hala yalnızca seçilen state değişkenini gösterdiğinden, örümcek ağı grafikleri tek boyutlu haritalarla sınırlı kalır; çok durumlu sistemler her seferinde bir koordinat kesiti alınarak görselleştirilir.
Özel Stil Tanımlama
cobweb(
f=sim.model,
x0=0.1,
xlim=(0, 1),
color="blue",
identity_color="red",
stair_color="green",
stair_lw=1.5,
alpha=0.8,
title="Özel Stilli Örümcek Ağı Grafiği",
)
Sınırlamalar
- Örümcek ağı grafikleri yalnızca 1B haritalar için tasarlanmıştır; çok durumlu modeller
state/fixedkullanılarak tek bir iterasyon durumuna indirgenmelidir. lag()fonksiyonlarını kullanan modeller desteklenmez (güvenli bir şekilde değerlendirilemez).- Ayrık harita modelleri gerektirir (
spec.kind == 'map').
İlgili Fonksiyonlar
plot.return_map(): Dönüş haritalarını çizer (\(x_n\)'e karşı \(x_{n+1}\))plot.series(): İterasyonun zaman serisini çizerplot.phase(): Daha yüksek boyutlu sistemler için faz uzayı grafikleri