Wzory mocy kolarskiej

Matematyczny fundament metryk Bike Analytics

Przewodnik wdrożeniowy

Ta strona zawiera wzory gotowe do kopiowania oraz opisy obliczeń krok po kroku dla wszystkich metryk Bike Analytics. Wykorzystaj je do własnych implementacji, weryfikacji lub głębszego zrozumienia treningu opartego na mocy.

⚠️ Uwagi do wdrożenia

  • Wszystkie wartości mocy podane są w watach (W), czas w sekundach (chyba że zaznaczono inaczej).
  • FTP i CP są progami indywidualnymi – nie istnieją wartości uniwersalne.
  • Zawsze sprawdzaj, czy dane wejściowe mieszczą się w rozsądnych granicach (typowo 0-2000W).
  • Pamiętaj o obsłudze wyjątków (dzielenie przez zero, brak mocy).
  • Dane o mocy wymagają 1-sekundowych interwałów zapisu dla zachowania dokładności.

Kluczowe metryki wydajności

1. Wskaźnik Stresu Treningowego (TSS)

Wzór:

TSS = (czas_w_sekundach × NP × IF) / (FTP × 3600) × 100
gdzie IF = NP / FTP

Przykład obliczeń:

Scenariusz: 2-godzinna jazda, NP = 235W, FTP = 250W

  1. Oblicz IF: IF = 235 / 250 = 0.94
  2. Czas w sekundach: 2 godziny × 3600 = 7200 sekund
  3. TSS = (7200 × 235 × 0.94) / (250 × 3600) × 100
  4. TSS = 1,590,720 / 900,000 × 100 = 176.7 TSS

Interpretacja: Bardzo ciężki trening (>150 TSS), wymagana 2-3 dniowa regeneracja.

Implementacja JavaScript:

function calculateTSS(durationSeconds, normalizedPower, ftp) {
  const intensityFactor = normalizedPower / ftp;
  const tss = (durationSeconds * normalizedPower * intensityFactor) / (ftp * 3600) * 100;
  return Math.round(tss);
}

// Przykład użycia:
const tss = calculateTSS(7200, 235, 250);
// Zwraca: 177

2. Moc Znormalizowana (NP)

Algorytm (30-sekundowa średnia krocząca):

1. Oblicz 30-sekundową średnią kroczącą mocy dla całej jazdy.
2. Podnieś każdą z tych wartości do 4. potęgi.
3. Oblicz średnią arytmetyczną z tych wartości.
4. Wyciągnij pierwiastek 4. stopnia z tej średniej.
NP = ⁴√(średnia z [średnie_30s^4])

Dlaczego 4. potęga?

Zależność czwartego stopnia odzwierciedla nieliniowy koszt fizjologiczny zmiennych wysiłków. Jazda ze zrywami kosztuje organizm znacznie więcej energii niż jazda ze stałą mocą przy tej samej średniej mocy.

Przykład:

  • Jazda jednostajna: 200W przez 1h → NP = 200W, Średnia = 200W
  • Jazda zmienna: Na zmianę 300W/100W → Średnia = 200W, NP = 225W

Mimo tej samej średniej mocy, jazda zmienna ma o 12% wyższe NP ze względu na koszt fizjologiczny zrywów.

Implementacja JavaScript:

function calculateNormalizedPower(powerData) {
  // powerData to tablica z sekundowymi wartościami mocy

  // Krok 1: Oblicz średnie kroczące 30s
  const rollingAvgs = [];
  for (let i = 29; i < powerData.length; i++) {
    const window = powerData.slice(i - 29, i + 1);
    const avg = window.reduce((sum, p) => sum + p, 0) / 30;
    rollingAvgs.push(avg);
  }

  // Krok 2: Podnieś do 4. potęgi
  const powered = rollingAvgs.map(p => Math.pow(p, 4));

  // Krok 3: Średnia z potęg
  const avgPowered = powered.reduce((sum, p) => sum + p, 0) / powered.length;

  // Krok 4: Pierwiastek 4. stopnia
  const np = Math.pow(avgPowered, 0.25);

  return Math.round(np);
}

3. Współczynnik Intensywności (IF)

Wzór:

IF = NP / FTP

Zakresy interpretacji:

Zakres IF Poziom wysiłku Przykładowy trening
< 0.75 Regeneracja / Lekki Aktywna regeneracja, Strefa 1-2
0.75 - 0.85 Wytrzymałość Długa, spokojna jazda tlenowa
0.85 - 0.95 Tempo Sweet spot, interwały tempo
0.95 - 1.05 Próg (Threshold) Interwały na progu, jazda na czas
1.05 - 1.15 VO₂max Interwały 5-minutowe, kryterium
> 1.15 Beztlenowy Krótkie sprinty, ataki, zrywy w MTB

4. Wskaźnik Zmienności (VI)

Wzór:

VI = NP / Średnia Moc

Interpretacja wg dyscypliny:

Dyscyplina Typowe VI Znaczenie
Jazda na czas (TT) 1.00 - 1.05 Bardzo równa jazda, optymalne tempo
Wyścig szosowy 1.05 - 1.10 Pewne skoki mocy, generalnie równo
Kryterium uliczne 1.10 - 1.20 Częste przyspieszenia i ataki
Kolarstwo górskie (MTB XC) 1.15 - 1.30+ Bardzo duża zmienność, ciągłe zrywy

Moc Krytyczna i W' (Pojemność beztlenowa)

5. Moc Krytyczna (CP) - Model Liniowy

Wzór:

Czas = W' / (Moc - CP)
Przekształcone: Praca = CP × Czas + W'

Obliczanie na podstawie kilku wysiłków:

Wymaga 2-4 maksymalnych wysiłków o różnym czasie trwania (np. 3, 5, 12, 20 minut).

Przykład danych: Praca = Moc × Czas / 1000 (wynik w kJ). Stosując regresję liniową (Praca = CP × Czas + W'), otrzymujemy:

  • CP = 270W (nachylenie linii regresji).
  • W' = 18.5 kJ (punkt przecięcia z osią Y).

6. Bilans W' (W'bal) - Model Skiby

Wzory:

Zużycie (gdy Moc > CP):
W'exp(t) = ∫(Moc(t) - CP) dt
Regeneracja (gdy Moc < CP):
W'rec(t) = W' × (1 - e^(-t/τ))
gdzie τ = 546 × e^(-0.01 × ΔCP) + 316
oraz ΔCP = (CP - Moc(t))

Przykład z życia:

Parametry kolarza: CP = 270W, W' = 18.5 kJ

Po ataku trwającym 30s przy mocy 400W: Zużycie wyniosło (400-270) × 30 = 3900 J = 3.9 kJ. Pozostało: 14.6 kJ.

Regeneracja: Odpoczynek przy 200W (70W poniżej CP) przez 2 minuty. Stała czasowa τ wynosi 588s. Odzyskano ok. 3.5 kJ.

Wykres Zarządzania Wynikami (PMC)

7. Obliczenia CTL, ATL, TSB

Wzory (Ważone wykładniczo średnie kroczące):

CTL_dzisiaj = CTL_wczoraj + (TSS_dzisiaj - CTL_wczoraj) / 42
ATL_dzisiaj = ATL_wczoraj + (TSS_dzisiaj - ATL_wczoraj) / 7
TSB_dzisiaj = CTL_wczoraj - ATL_wczoraj

Definicje metryk:

  • CTL (Chronic Training Load): 42-dniowa średnia – reprezentuje Twoją wydolność (Fitness).
  • ATL (Acute Training Load): 7-dniowa średnia – reprezentuje Twoje zmęczenie (Fatigue).
  • TSB (Training Stress Balance): Bilans lub Formę (Wydolność - Zmęczenie).

Stosunek mocy do masy i wspinaczka

8. Stosunek mocy do masy (W/kg)

Wzór:

W/kg = Moc (waty) / Masa ciała (kg)

Kluczowy wskaźnik na podjazdach, gdzie walka z grawitacją dominuje nad oporem powietrza.

9. Średnia prędkość wznoszenia (VAM)

Wzór:

VAM (m/h) = Przewyższenie (m) / Czas (godziny)

Standardy VAM (m/h):

VAM (m/h) Poziom Przykład
600 - 900 Rekreacyjny Amator na lokalnym podjeździe
900 - 1200 Ambicjonalny Dobry kolarz na Alpe d'Huez
1200 - 1500 Elita Amatorów Poziom krajowy górski
1500 - 1800 Zawodowiec Pomocnik w World Tourze
> 1800 Zwycięzca Grand Touru Pogačar, Vingegaard na kluczowych górach

10. Szacowanie W/kg na podstawie VAM

Wzór:

W/kg ≈ VAM (m/h) / 100 / (Nachylenie% + 3)

Równanie mocy aerodynamicznej

11. Całkowite zapotrzebowanie na moc

Pełny wzór:

P_całkowita = P_aero + P_grawitacja + P_toczenie + P_kinetyczna

Składowe wzory:

Opór aerodynamiczny:
P_aero = CdA × 0.5 × ρ × V³
Grawitacja (Podjazdy):
P_grawitacja = m × g × sin(θ) × V
Opory toczenia:
P_toczenie = Crr × m × g × cos(θ) × V

Stałe i zmienne:

  • CdA = Współczynnik oporu × powierzchnia czołowa (m²).
  • ρ = Gęstość powietrza (1.225 kg/m³ na poziomie morza, 15°C).
  • V = Prędkość (m/s).
  • m = Całkowita masa (kolarz + rower, kg).
  • g = Przyspieszenie ziemskie (9.81 m/s²).

Funkcje pomocnicze

Konwersja jednostek

Implementacja JavaScript:

// Wybrane przeliczniki
function kphToMps(kph) {
  return kph / 3.6; // km/h na m/s
}

function wattsToKJ(watts, durationSeconds) {
  return (watts * durationSeconds) / 1000; // Moc na Energię (kJ)
}

function formatDuration(seconds) {
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = Math.round(seconds % 60);
  return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
}

Zasoby wdrożeniowe

Wszystkie wzory na tej stronie są gotowe do użycia produkcyjnego i zostały zweryfikowane z literaturą naukową oraz rzeczywistymi danymi z mierników mocy.

💡 Najlepsze praktyki

  • Waliduj dane wejściowe: Sprawdzaj czy wartości mocy są dodatnie i mieszczą się w normie.
  • Obsługuj przypadki brzegowe: Dzielenie przez zero, brak danych o FTP, ujemny czas.
  • Zaokrąglaj z umiarem: CTL/ATL do 1 miejsca po przecinku, TSS jako liczba całkowita, W/kg do 2 miejsc.
  • Weryfikuj: Używaj sprawdzonych plików .fit/.tcx do testowania poprawności Twojej implementacji.