Volim da se igram sa Python-om
- elenaburan
- Sep 3
- 5 min read

Zovem se Vuk, maturant sam iz Podgorice i volim da se igram sa Python-om.
Ideja mi je pala na času fizike: napraviti „modulator fizičkih procesa“ za trkača na skijama, da vidim kolikoj se stvarnoj sili i opterećenju izlaže na našoj valovitoj stazi iznad grada, sa kratkim usponima prema Medunu i dugim spuštanjima ka Zeti.
Prvo sam nacrtao problem na tabli: sila gravitacije na usponu, otpor klizanja skija po snegu (ili točkova na roler-skijama), vazdušni otpor, plus male promene ubrzanja kad ritmično ubrzam iz zavoja. Pojednostavio sam sve u funkciju snage: koliko vati mora da proizvede telo da bi održalo brzinu na određenom nagibu.
Onda sam to zapisao u Python-u. Uzeo sam ulaze: masa (skijaš + oprema), CdA kao približan frontalni presek (manji u niskom stavu), koeficijent otpora klizanja Crr, temperaturu (hladnije = gust vazduh), vetar i profil staze po segmentima (dužina, nagib, visina). Izlazi: potrebna snaga po segmentu, procena pulsa i laktata, i moj interni „indeks zamora“ za trening.
Moj „modulator“ radi tako što pomera klizače (slidere) za svaki parametar i odmah preračuna šta se dešava. Ako povećam CdA jer skijaš uspravi torzo, vazdušni otpor skoči i snaga na istoj brzini ode u crveno. Ako pojačam Crr (loš vosak ili točkovi), ravnica iznenada postane teška kao blagi uspon.
Najzanimljiviji je bio deo sa usponima. Na našoj trening-ruti imam tri brda: jedno kratko i strmo (6–7%), jedno srednje (3–4%) i jedno dugačko „lažno ravno“ (1–2%). U Python-u sam simulirao tri taktike: (A) ravnomeran tempo, (B) blagi „push“ na početku uspona pa stabilizacija, (C) čuvanje snage do poslednje trećine. Modulator mi je pokazao da (B) najčešće drži laktat u „zoni dogovora“ — kratko se digne, ali ne prelije; srce se popne, pa se zadrži ispod crvenog.
Za puls i laktat nisam glumio laboratoriju. Napravio sam jednostavan model: srce reaguje sa zakašnjenjem (kao filter prvog reda), a laktat raste sa snagom iznad „kritične“ i opada kad padnem ispod nje. Nije savršeno, ali je dovoljno da vidiš trend: gde će doći do „drifta“ i kad je vreme da skratiš interval.
Ujutru sam izveo probu na roler-skijama. Pre polaska sam probao dve postavke u modulatoru: „hladno i vlažno“ (gušći vazduh, veći otpor) naspram „toplo i suvo“. Alat je predvideo da ću u prvom slučaju morati 10–15 W više na ravnici da bih držao istu brzinu. Na terenu — puls je zaista bio 3–4 otkucaja viši po segmentu, a osećaj nogu je potvrdio brojke.
Najveći „wow“ trenutak je bio kad sam promenio tehniku. U modulator sam ubacio opciju „sniži CdA“ (dublji, aerodinamičniji stav na blagom spustu) i „povećaj kadencu“ (brži ciklus zaveslaja) na kratkim hupserima. Simulacija je pokazala da tako štedim energiju na spustu i vraćam je u poslednjih 30–40 sekundi sledećeg uspona. Kad sam to probao u stvarnosti, osećaj je bio kao da sam „zaključao“ ritam staze — manje šiljaka u pulsu, više kontrole u glavi.
Da ne ostane samo na matematici, uveo sam i „menadžment treninga“. Svaka vožnja dobija TRIMP-like broj (moj indeks zamora), a sedmica se planira tako da se indeksi slažu: ponedeljak dugi Z2 po ravnici pored Morače; sreda 6×3 min na srednjem usponu sa kratkim spuštanjem kao aktivni odmor; petak snaga i tehnika (double-poling drill); subota „proba trke“ od 20 min po talasima. Ako indeks pređe prag, modulator predlaže zamenu: umesto intervala — tehnika + mobilnost.
Na kraju, shvatio sam da je Python za mene postao lupa: ne menja stvarnost, ali je uvećava taman toliko da vidim mehaniku. Kroz taj „modulator fizičkih procesa“ naučio sam da je optimalnost treninga manje u herojskim naporima, a više u pametnoj raspodeli: malo snage na pravom mestu, pravi stav na vetru, i dovoljno strpljenja da pustiš brdu da radi za tebe. Sledeći korak? Da povežem modulator sa GPX-om telefona i da posle svakog treninga dobijem automatski predlog za sledeći — kao lični trener koji govori jezikom fizike.
___
Nastavnik: Vuk, možeš li ukratko objasniti svoj „modulator fizičkih procesa“?
Teacher: Vuk, can you briefly explain your “physical processes modulator”?
Vuk: To je Python skripta koja računa potrebnu snagu na svakom segmentu staze koristeći nagib, CdA, Crr, vetar i brzinu.
Vuk: It’s a Python script that computes required power on each course segment using gradient, CdA, Crr, wind, and speed.
Mila: Odakle ti podaci o stazi?
Mila: Where do you get the course data?
Vuk: Učitam GPX sa telefona, parsiram visinu i udaljenost, pa računam nagib po tačkama.
Vuk: I load a GPX from my phone, parse elevation and distance, then compute gradient point by point.
Nikola: A kako modeliraš otpor vazduha?
Nikola: And how do you model air resistance?
Vuk: Koristim formulu ½·ρ·CdA·v²; ρ menjam prema temperaturi da simuliram hladan i topao dan.
Vuk: I use the ½·ρ·CdA·v² formula; I vary ρ by temperature to simulate cold and warm days.
Nastavnik: Da li meriš i subjektivni napor, recimo RPE?
Teacher: Do you measure subjective effort too, like RPE?
Vuk: Da, unosim RPE posle svake sesije i kalibrišem pragove snage za zone.
Vuk: Yes, I log RPE after each session and calibrate power thresholds for zones.
Mila: Šta ti modulator predloži kad preteraš sa intervalima?
Mila: What does the modulator suggest if you overdo intervals?
Vuk: Daje “crvenu zastavicu” i predlaže zamenu za dan tehnike ili mobilnosti.
Vuk: It raises a “red flag” and suggests swapping to a technique or mobility day.
Nikola: Može li to da radi i za bicikl, ne samo skije?
Nikola: Can it work for cycling, not just skiing?
Vuk: Da, samo promenim Crr i odnos kadence; profil i fizika ostaju isti.
Vuk: Yes, I just change Crr and cadence parameters; the profile and physics stay the same.
Nastavnik: Kojim bibliotekama vizualizuješ rezultate?
Teacher: Which libraries do you use for visualization?
Vuk: Pandas za tabelu segmenata i matplotlib za graf snage, pulsa i visinskog profila.
Vuk: Pandas for segment tables and matplotlib for power, heart rate, and elevation plots.
Mila: Kako procenjuješ puls, to je ipak biološki sistem?
Mila: How do you estimate heart rate—it’s a biological system after all?
Vuk: Aproksimiram ga kao sistem prvog reda koji prati ciljnu snagu sa malim kašnjenjem.
Vuk: I approximate it as a first-order system tracking target power with a small delay.
Nikola: A laktat?
Nikola: And lactate?
Vuk: Raste kad pređem kritičnu snagu i opada u Z1–Z2; to je jednostavan eksponencijalni model.
Vuk: It rises above critical power and decays in Z1–Z2; it’s a simple exponential model.
Nastavnik: Kako proveravaš da li ti model ima smisla?
Teacher: How do you validate that your model makes sense?
Vuk: Uporedim predviđeni puls sa realnim iz sata; tražim da greška srednje vrednosti bude mala.
Vuk: I compare predicted heart rate with actual watch data; I aim for a small mean error.
Mila: Šta si naučio o taktici na usponima oko Podgorice?
Mila: What did you learn about climbing tactics around Podgorica?
Vuk: Kratki “push” na početku uspona pa stabilizacija daje najmanji drift pulsa i laktata.
Vuk: A short push at the start of the climb then stabilization yields the least HR and lactate drift.
Nikola: Možemo li mi da koristimo tvoj kod za naš projekat iz informatike?
Nikola: Can we use your code for our computer science project?
Vuk: Naravno, očistio sam repo i dodao primer GPX fajla i Jupyter beležnicu.
Vuk: Sure, I cleaned the repo and added a sample GPX file and a Jupyter notebook.
Nastavnik: Odlično, ali dodaj i testove i kratak README o pretpostavkama modela.
Teacher: Excellent, but add tests and a short README about model assumptions.
Vuk: Važi, dodaću pytest za parsiranje GPX-a i verifikaciju izračuna snage.
Vuk: Will do—I’ll add pytest for GPX parsing and power calculation verification.
Mila: A šta je sledeće u roadmap-u?
Mila: What’s next on the roadmap?
Vuk: Real-time mod: telefon šalje brzinu i nagib, a modulator daje glasovne sugestije za tehniku.
Vuk: A real-time mode: the phone streams speed and gradient, and the modulator gives voice technique cues.
Nastavnik: Sjajno. To je primer kako se fizika, programiranje i sport spajaju u praktičnu inovaciju.
Teacher: Great. That’s a perfect example of physics, programming, and sport merging into practical innovation.
Comments