U svetlu preživljavanja, svaka tvorevina — od suncokreta do školjke, od šišarke do galaksije — mora da se izbori za prostor, za svetlost, za energiju. Mora da se uklopi u svet u kome je sve već zauzeto, i da to učini tako da ne ugrozi sebe, ali ni druge. I baš u tom izazovu opstanka, priroda ne bira ni silu ni nasilje — bira raspored. Bira oblik.
Fibonacci je odgovor na pitanje: Kako postojati, a ne smetati? Kako rasti, a ne rušiti? Kako zauzeti prostor, a ne isključivati?
To je obrazac u kome svaki novi deo zna svoje mesto. Nema ponavljanja, nema preklapanja, nema gubitka. Svaki novi element poštuje prethodni, ali i stvara uslove za naredni. To je lekcija iz harmonije među razlikama.
U tom poretku, nema diktata, nema centra koji komanduje. Ipak, sve deluje kao da neko vodi računa o celini. Baš kao u društvu koje funkcioniše kada svaki član zna svoju ulogu i deluje u skladu sa celinom, tako i suncokret postavlja svaku svoju semenku tačno tamo gde će doneti najviše koristi, bez da ijednu drugu ugrozi.
U svetu prepunom entropije, raspada i borbe, Fibonacci je tiho prisećanje da postoji red koji ne nameće, već prožima. Red koji ne dominira silom, već opstaje zahvaljujući ravnoteži. U tom redu nema krajnosti — samo večna tranzicija, spiralno kretanje koje ne vodi u krug, već napred, u širinu i u dubinu.
Zato je Fibonacci više od matematičkog niza. On je arhetip prirodnog zakona, iskonska mapa rasta koji poštuje svet u kome se odvija. On nas uči da je preživljavanje najuspešnije ne kada pobeđujemo druge, već kada nalazimo svoje mesto u širem sistemu.
Suncokret i Fibonacci niz — matematička harmonija prirode
Suncokret je jedan od najlepših primera kako se u prirodi pojavljuje matematička struktura — i to kroz Fibonacci niz, zlatni ugao i spiralni raspored semenki.
1. Spiralni raspored semenki
Na glavici suncokreta možeš uočiti dve vrste spirala:
- Spirale koje idu ulevo
- Spirale koje idu udesno
Brojevi spirala najčešće su uzastopni brojevi iz Fibonacci niza:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Na primer: 34 spirale ulevo i 55 udesno.
2. Kako biljka „zna“ gde da postavi semenku?
Biljka ne zna, ali svaka nova semenka se postavlja pod stalnim uglom u odnosu na prethodnu. Taj ugao se zove zlatni ugao:
\[ \theta = 360^\circ \cdot \left(1 – \frac{1}{\varphi} \right) \]gde je zlatni rez (grčko slovo φ — phi):
\[ \varphi = \frac{1 + \sqrt{5}}{2} \approx 1.618 \]Računica daje:
\[ \theta \approx 360^\circ \cdot 0.382 \approx 137.5^\circ \]To znači da se svaka semenka postavlja pod uglom od približno 137.5° u odnosu na prethodnu — i uvek u istom smeru.
3. Geometrijski raspored (polarno koordinatni sistem)
Svaka semenka ima svoje polarne koordinate:
\[ r = \sqrt{n}, \quad \theta_n = n \cdot \theta \]koje se zatim pretvaraju u kartezijanske (x, y):
\[ x_n = r_n \cdot \cos(\theta_n), \quad y_n = r_n \cdot \sin(\theta_n) \]Ovaj raspored formira prirodne spirale bez preklapanja i praznina.
4. Zašto Fibonacci brojevi?
Broj spirala u levo i desno su Fibonacci brojevi jer:
- Ugao 137.5° je iracionalan — nikad se ne poklapa
- Raspored je kvazi-periodičan i vodi do optimalnog pakovanja
I zato se pojavljuju 13, 21, 34, 55 spirala i tako dalje.
Matematički:
\[ \lim_{n \to \infty} \frac{F(n+1)}{F(n)} = \varphi \]što znači da odnosi između uzastopnih Fibonacci brojeva teže zlatnom rezu.
5. Biološki razlog: Efikasnost
Priroda nije slučajna. Evolucija favorizuje oblike koji su:
- Efikasni u pakovanju
- Optimalni u pristupu svetlosti i hranljivim materijama
- Strukturno stabilni
Raspored semenki po zlatnom uglu i Fibonacci brojevima obezbeđuje upravo to.
Suncokret koristi čisto matematičko pravilo za raspored svojih semenki:
- 137.5° zlatni ugao
- Spirale po Fibonacci brojevima
- Geometrijski optimalan, estetski savršen obrazac
Priroda, na svom jeziku, koristi matematiku da bi postigla savršenstvo.
Evo jednostavnog Python 3 koda koji simulira suncokret korišćenjem zlatnog ugla i rasporeda semenki prema Fibonacci principu:
Suncokret — Spiralni raspored semenki i kupola napravljena na osnovu njih

Instalacija svih zavisnosti:
python3 -m pip install numpy matplotlib
Programski kod za suncokret.py
#suncokret.py
# The MIT License (MIT)
# Copyright (c) 2025 Aleksandar Maričić
#
# Ovim se omogućava bilo kome da koristi, kopira, menja, spaja, objavljuje,
# distribuira, daje podlicencu i/ili prodaje kopije ovog softverskog programa,
# uz uslov da u svim kopijama ili značajnim delovima softverskog programa bude
# uključena sledeća obavest:
#
# Copyright (c) 2025 Aleksandar Maričić
#
# Ovaj softverski program je pružen "takav kakav jeste", bez bilo kakvih garancija,
# izričitih ili impliciranih, uključujući, ali ne ograničavajući se na, garancije o
# prikladnosti za prodaju ili pogodnosti za određenu svrhu. U svakom slučaju, autori
# ili nosioci prava nisu odgovorni za bilo kakvu štetu ili druge obaveze koje mogu nastati
# usled upotrebe ovog softverskog programa.
# instalacija svih zavisnosti: python3 -m pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D # neophodno za 3D plotove
num_seeds = 2000
golden_angle = np.pi * (3 - np.sqrt(5)) # ≈ 2.39996 rad = 137.5°
x = []
y = []
for n in range(num_seeds):
r = np.sqrt(n)
theta = n * golden_angle
x.append(r * np.cos(theta))
y.append(r * np.sin(theta))
x = np.array(x)
y = np.array(y)
# Normalizuj radijus da kupola bude u okviru poluprečnika R=1
r_vals = np.sqrt(x**2 + y**2)
r_max = np.max(r_vals)
x_norm = x / r_max
y_norm = y / r_max
r_norm = r_vals / r_max
R = 1 # poluprečnik kupole
# Izračunaj z koordinate na sferi poluprečnika R (gornja polulopta)
z = np.sqrt(np.maximum(0, R**2 - r_norm**2))
# Prikaz 3D kupole
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x_norm, y_norm, z, c='gold', edgecolors='brown', s=20)
ax.set_box_aspect([1,1,0.5]) # omjer osa za lepši izgled
ax.axis('off')
plt.title(f"3D Kupola napravljena na osnovu {num_seeds} semenki suncokreta", fontsize=14)
plt.show()
Ovaj program vizuelno prikazuje formiranje suncokretne spirale koristeći matematičku strukturu poznatu kao Fibonacci raspored i zlatni ugao (oko 137,5°), što rezultira elegantnom i prirodno efikasnom raspodelom tačaka. Animacija simulira postepeno nicanje semenki, pri čemu se svaka nova tačka smešta na osnovu svog rednog broja, udaljenosti od centra (koren rednog broja) i ugla rotacije. Vizuelni efekat pojačan je postepenim povećanjem veličine i promenom boje tačaka kako bi se istakla dinamika rasta. Program koristi biblioteku matplotlib i FuncAnimation za glatku animaciju, dok jasno podešene granice prikaza i pravilna inicijalizacija garantuju ispravno funkcionisanje bez grešaka. Rezultat je vizuelno privlažna i matematički zasnovana animacija koja odražava način na koji priroda organizuje prostor.
Instalacija svih zavisnosti:
python3 -m pip install numpy matplotlib
Programski kod za suncokret_animacija.py
#suncokret_animacija.py
#Instalacija svih zavisnosti: python3 -m pip install numpy matplotli
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# Broj semenki
num_seeds = 2000
# Zlatni ugao (≈ 137,5°)
golden_angle = np.pi * (3 - np.sqrt(5))
# Koordinate, boje i veličine
n = np.arange(num_seeds)
r = np.sqrt(n)
theta = n * golden_angle
x = r * np.cos(theta)
y = r * np.sin(theta)
colors = np.linspace(0, 1, num_seeds)
sizes = 10 + 15 * colors # tačke malo veće ka spolja
# Figura i osa
fig, ax = plt.subplots(figsize=(8, 8))
ax.set_facecolor('white')
ax.axis('off')
ax.set_aspect('equal')
# >>> Кључно: прошири границе тако да укључе све тачке <<<
margin = 1 # мала резерва око најдаље тачке
ax.set_xlim(x.min() - margin, x.max() + margin)
ax.set_ylim(y.min() - margin, y.max() + margin)
# Почетни празан scatter
scatter = ax.scatter([], [], s=[], c=[], cmap='plasma',
alpha=0.8, edgecolors='none')
def init():
scatter.set_offsets(np.empty((0, 2)))
scatter.set_sizes([])
scatter.set_array([])
return scatter,
def update(frame):
scatter.set_offsets(np.column_stack((x[:frame], y[:frame])))
scatter.set_sizes(sizes[:frame])
scatter.set_array(colors[:frame])
return scatter,
anim = FuncAnimation(fig, update,
frames=range(1, num_seeds + 1),
init_func=init,
interval=20, blit=False, repeat=False)
plt.title(f"Animacija suncokretne spirale: {num_seeds} semenki",
fontsize=14)
plt.show()
