Riteņbraukšanas spēka formulas

Velosipēdu analīzes metrikas matemātiskais pamats

Ieviešanas rokasgrāmata

Šajā lapā ir sniegtas kopēšanas un ielīmēšanas formulas un soli pa solim aprēķinu metodes visiem Bike Analytics metrikas veidiem. Izmantojiet tos pielāgotai ieviešanai, pārbaudei vai padziļinātai izpratnei par apmācību, kas balstīta uz enerģiju.

⚠️ Ieviešanas piezīmes

  • Visas jaudas vērtības vatos (W), laiks sekundēs, ja vien nav norādīts
  • FTP un CP ir individuāli specifiski sliekšņi — nav universālu vērtību
  • Vienmēr pārbaudiet ievades saprātīgos diapazonos (parasti no 0 līdz 2000 W)
  • Apstrādājiet malas gadījumus (dalīšana ar nulli, negatīvā jauda)
  • Enerģijas datu precizitātei nepieciešami 1 sekundes ierakstīšanas intervāli

Riteņbraukšanas galvenās veiktspējas metrika

1. Treniņu stresa rādītājs (TSS)

Formula:

TSS = (ilgums_sekundes × NP × IF) / (FTP × 3600) × 100
kur IF = NP / FTP

Nostrādāts piemērs:

Scenārijs:2 stundu brauciens, NP = 235 W, FTP = 250 W

  1. Aprēķināt IF: IF = 235 / 250 = 0,94
  2. Ilgums sekundēs: 2 stundas × 3600 = 7200 sekundes
  3. TSS = (7200 × 235 × 0,94) / (250 × 3600) × 100
  4. TSS = 1 590 720 / 900 000 × 100 =176.7 TSS

Interpretācija: Smags treniņbrauciens (>150 TSS), sagaidāms 2-3 dienu atveseļošanās

JavaScript ieviešana:

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

// Example usage:
const tss = calculateTSS(7200, 235, 250);
// Returns: 177

2. Normalizētā jauda (NP)

Algoritms (30 sekunžu slīdošais vidējais rādītājs):

1. Aprēķiniet 30 sekunžu slīdošo vidējo jaudu visam braucienam
2. Palieliniet katru 30 sek. vērtību līdz 4. pakāpei
3. Ņemiet visu šo ^4 vērtību vidējo vērtību
4. Ņemiet šī vidējā rādītāja 4. sakni
NP = ⁴√ (vidējais no [30s_avg^4])

Kāpēc ceturtais spēks?

Kvartiskā (ceturtā pakāpe) attiecība atspoguļo mainīgo piepūles nelineārās fizioloģiskās izmaksas. Brauciens ar pārspriegumiem un atjaunošanos maksā vairāk enerģijas nekā vienmērīga jauda ar tādu pašu vidējo rādītāju.

Piemērs:

  • Vienmērīga braukšana: 200 W 1 stundu → NP = 200 W, vidējais = 200 W
  • Maināma gaita: mainīga 300 W/100 W → Vidējais = 200 W, NP = 225 W

Tāda pati vidējā jauda, bet mainīgajam gaitai ir par 12% augstāks NP pārsprieguma fizioloģisko izmaksu dēļ

JavaScript ieviešana:

function calculateNormalizedPower(powerData) {
  // powerData is array of 1-second power values

  // Step 1: Calculate 30-second rolling averages
  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);
  }

  // Step 2: Raise to 4th power
  const powered = rollingAvgs.map(p => Math.pow(p, 4));

  // Step 3: Average of 4th powers
  const avgPowered = powered.reduce((sum, p) => sum + p, 0) / powered.length;

  // Step 4: Take 4th root
  const np = Math.pow(avgPowered, 0.25);

  return Math.round(np);
}

// Example usage:
const powerData = [/* 1-second power array */];
const np = calculateNormalizedPower(powerData);
// Returns: NP in watts

3. Intensitātes koeficients (IF)

Formula:

IF = NP / FTP

Interpretācijas diapazoni:

IF diapazonsPiepūles līmenisTreniņa piemērs
< 0,75Atgūšana / ViegliAktīvs atveseļošanās brauciens, 1.-2. zona
0,75 - 0,85IzturībaIlgs vienmērīgs brauciens, aerobā bāze
0,85 - 0,95TempsSweet spot treniņš, tempu intervāli
0,95 - 1,05SlieksnisFTP intervāli, laika izmēģinājuma piepūle
1,05 - 1,15VO₂max5 minūšu intervāli, kritēriju skrējiens
> 1.15AnaerobsĪsi sprinti, uzbrukumi, MTB sprādzieni

Aprēķina piemērs:

Scenārijs:NP = 235W, FTP = 250W

IF = 235 / 250 =0,94

Interpretācija: Augsts temps / zemsliekšņa piepūle, noturīga 2-3 stundas

function calculateIF(normalizedPower, ftp) {
  return (normalizedPower / ftp).toFixed(2);
}

// Example:
const if_value = calculateIF(235, 250);
// Returns: 0.94

4.Mainīguma indekss (VI)

Formula:

VI = NP / vidējā jauda

Interpretācija pēc disciplīnas:

DisciplīnaTipisks VINozīme
Road TT / Steady Effort1.00 - 1.05Ļoti vienmērīga jauda, optimāls ritms
Šosejas sacīkstes1,05 - 1,10Daži pārspriegumi, parasti vienmērīgi
Kritērijs1,10 - 1,20Bieža paātrināšanās un uzbrukumi
Kalnu velosipēds XC1,15 - 1,30+Ļoti mainīgs, pastāvīgs pārspriegums

Aprēķina piemērs:

Ceļa sacīkstes:NP = 240 W, vidējā jauda = 230 W

VI = 240 / 230 =1.04(vienmērīgs temps)

MTB sacīkstes:NP = 285 W, vidējā jauda = 235 W

VI = 285 / 235 =1.21(ļoti mainīgi, pārrāvumi)

function calculateVI(normalizedPower, averagePower) {
  return (normalizedPower / averagePower).toFixed(2);
}

// Example:
const vi_road = calculateVI(240, 230);  // Returns: 1.04
const vi_mtb = calculateVI(285, 235);   // Returns: 1.21

Kritiskā jauda un W' (anaerobā kapacitāte)

5. Kritiskā jauda (CP) — lineārais modelis

Formula:

Laiks = W'/ (jauda — CP)
Pārkārtots: jauda × laiks = CP × laiks + W'

Aprēķins no vairākiem centieniem:

Nepieciešamas 2–4 maksimālas pūles dažādos ilgumos (piemēram, 3, 5, 12, 20 minūtes)

Datu piemērs:

IlgumsJauda (W)Kopējais darbs (kJ)
3 min (180 s)400W72 kJ
5 min (300 s)365 W109,5 kJ
12 min (720 s)310W223,2 kJ
20 min (1200 s)285 W342 kJ

Izmantojot lineāro regresiju (darbs = CP × laiks + W'):

  • CP = 270W(regresijas līnijas slīpums)
  • W' = 18,5 kJ(y-pārtveršana)

JavaScript ieviešana:

function calculateCP_Linear(efforts) {
  // efforts = [{duration: seconds, power: watts}, ...]

  const times = efforts.map(e => e.duration);
  const work = efforts.map(e => e.power * e.duration / 1000); // kJ

  // Linear regression: work = CP * time + W'
  const n = efforts.length;
  const sumT = times.reduce((a, b) => a + b, 0);
  const sumW = work.reduce((a, b) => a + b, 0);
  const sumTW = times.reduce((sum, t, i) => sum + t * work[i], 0);
  const sumTT = times.reduce((sum, t) => sum + t * t, 0);

  const CP = (n * sumTW - sumT * sumW) / (n * sumTT - sumT * sumT);
  const Wprime = (sumW - CP * sumT) / n;

  return {
    CP: Math.round(CP * 10) / 10,      // watts
    Wprime: Math.round(Wprime * 10) / 10  // kJ
  };
}

// Example usage:
const efforts = [
  {duration: 180, power: 400},
  {duration: 300, power: 365},
  {duration: 720, power: 310},
  {duration: 1200, power: 285}
];

const result = calculateCP_Linear(efforts);
// Returns: { CP: 270.0, Wprime: 18.5 }

6. W' Balance (W'bal) — diferenciālvienādojuma modelis

Formulas:

Izdevumi (kad P > KP):
W'exp(t) = ∫(P(t) - CP) dt
Atgūšana (kad P < CP):
W'rec(t) = W' × (1 - e^(-t/τ))
kur τ = 546 × e^(-0,01 × ΔCP) + 316
un ΔCP = (CP — P(t))

Reālās pasaules piemērs:

Velosipēdistu specifikācijas:CP = 270 W, W' = 18,5 kJ

1. scenārijs — smags uzbrukums:

  • Rider uz 30 sekundēm palielina jaudu līdz 400 W
  • W' izdevumi: (400–270) × 30 = 3900 J = 3,9 kJ
  • Atlikušais W'bal: 18,5 - 3,9 =14,6 kJ

2. scenārijs — atkopšana:

  • Pēc uzbrukuma 2 minūtes samazinās līdz 200 W (70 W zem CP).
  • ΔCP = 270 - 200 = 70 W
  • τ = 546 × e^(-0,01 × 70) + 316 = 588 sekundes
  • Atgūšana 120 s: 18,5 × (1 — e^(-120/588)) =Atgūti 3,5 kJ
  • Jaunais W'bal: 14,6 + 3,5 =18,1 kJ

JavaScript ieviešana:

function calculateWbalance(powerData, CP, Wprime) {
  // powerData = array of {time: seconds, power: watts}
  let wbal = Wprime * 1000; // Convert to joules
  const wbalHistory = [];

  for (let i = 1; i < powerData.length; i++) {
    const dt = powerData[i].time - powerData[i-1].time;
    const power = powerData[i].power;

    if (power > CP) {
      // Expenditure above CP
      const expenditure = (power - CP) * dt;
      wbal -= expenditure;
    } else {
      // Recovery below CP
      const deltaCP = CP - power;
      const tau = 546 * Math.exp(-0.01 * deltaCP) + 316;
      const recovery = (Wprime * 1000 - wbal) * (1 - Math.exp(-dt / tau));
      wbal += recovery;
    }

    // Ensure W'bal doesn't exceed max or go negative
    wbal = Math.max(0, Math.min(wbal, Wprime * 1000));

    wbalHistory.push({
      time: powerData[i].time,
      wbal: wbal / 1000, // kJ
      percent: (wbal / (Wprime * 1000)) * 100
    });
  }

  return wbalHistory;
}

// Example usage:
const powerData = [
  {time: 0, power: 200},
  {time: 1, power: 210},
  // ... rest of ride data
];

const wbalHistory = calculateWbalance(powerData, 270, 18.5);
// Returns array of W'bal values over time

Veiktspējas pārvaldības diagramma (PMC) riteņbraukšanai

7. CTL, ATL, TSB aprēķini

Formulas (eksponenciāli svērtie mainīgie vidējie lielumi):

CTL_today = CTL_vakar + (TSS_šodien - CTL_vakar) / 42
ATL_today = ATL_vakar + (TSS_šodien - ATL_vakar) / 7
TSB_today = CTL_vakar — ATL_vakar

Metrikas definīcijas:

  • CTL (hroniska treniņu slodze):42 dienu eksponenciāli svērtais vidējais rādītājs — atspoguļo fizisko sagatavotību
  • ATL (akūta treniņu slodze):7 dienu eksponenciāli svērtais vidējais rādītājs – atspoguļo nogurumu
  • TSB (Treniņa stresa līdzsvars):Forma = Fitness - Nogurums

Nostrādāts piemērs (7 dienu apmācības bloks):

dienaTSSCTLATLTSBStatuss
Pirmd10075,080.0-5,0Apmācība
Otr5074.475.7-1.3Atveseļošanās
Tr12075.582,0-6.5Smags treniņš
Ce073.770.3+3.4Atpūtas diena
Piekt8073.871.7+2.1Mērens
sestdien15075.682.9-7.3Garais brauciens
Sv4074.876.8-2,0Atveseļošanās

TSB interpretācija:

TSB diapazonsStatussDarbība
< -30Augsts risksBrīdinājums par pārtrenēšanos – samaziniet slodzi
-30 līdz -10Smags treniņšFitnesa veidošana, uzraudzīt atveseļošanos
-10 līdz +5OptimāliNormāla treniņu zona
+5 līdz +15Sacensībām gatavsMaksimālā forma - sacensības šajā nedēļas nogalē
> +25Atkāpšanās no apmācībasFitnesa zudums - palielināt slodzi

JavaScript ieviešana:

function calculatePMC(workouts) {
  // workouts = [{date: "YYYY-MM-DD", tss: number}, ...]
  let ctl = 0, atl = 0;
  const results = [];

  workouts.forEach(workout => {
    // Update CTL (42-day time constant)
    ctl = ctl + (workout.tss - ctl) / 42;

    // Update ATL (7-day time constant)
    atl = atl + (workout.tss - atl) / 7;

    // Calculate TSB (yesterday's CTL - today's ATL for traditional calculation)
    // For simplicity here using current values
    const tsb = ctl - atl;

    results.push({
      date: workout.date,
      tss: workout.tss,
      ctl: Math.round(ctl * 10) / 10,
      atl: Math.round(atl * 10) / 10,
      tsb: Math.round(tsb * 10) / 10,
      status: getTSBStatus(tsb)
    });
  });

  return results;
}

function getTSBStatus(tsb) {
  if (tsb < -30) return "High Risk";
  if (tsb < -10) return "Training Hard";
  if (tsb < 5) return "Optimal";
  if (tsb < 15) return "Race Ready";
  return "Detraining";
}

// Example usage:
const workouts = [
  {date: "2025-01-01", tss: 100},
  {date: "2025-01-02", tss: 50},
  {date: "2025-01-03", tss: 120},
  // ... more workouts
];

const pmc = calculatePMC(workouts);
// Returns array with CTL, ATL, TSB for each day

Jaudas attiecība pret svaru un kāpšanas metrika

8.Jaudas un svara attiecība

Formula:

W/kg = jauda (vatos) / ķermeņa masa (kg)

FTP W/kg kritēriji:

LīmenisVīrietis W/kgSieviete W/kgKategorija
Atpūtas2,5 - 3,52,0 - 3,0Fitnesa braucējs
Konkurētspējīgs3,5 - 4,53,0 - 4,0Kaķis 3-4, vecuma grupas braucējs
Papildu4,5 - 5,54,0 - 5,0Kaķis 1-2, spēcīgs amatieris
Elites amatieris5,5 - 6,05,0 - 5,5Valsts līmenī
Profesionāls6,0–7,0+5,5–6,5+Pasaules tūre, Grand Tour GC

Aprēķina piemērs:

Scenārijs:Velosipēdists ar FTP = 275W, ķermeņa masa = 70kg

W/kg = 275/70 =3,93 W/kg

Interpretācija: Konkurētspējīgs līmenis, spējīgs kalnainās sacīkstēs

function calculateWattsPerKg(power, bodyMassKg) {
  return (power / bodyMassKg).toFixed(2);
}

// Example:
const wpkg = calculateWattsPerKg(275, 70);
// Returns: 3.93

9. VAM (Velocità Ascensionale Media)

Formula:

VAM (m/h) = pacēluma pieaugums (m) / laiks (stundas)

VAM etaloni:

VAM (m/h)LīmenisPiemērs
600–900AtpūtasKluba braucējs vietējā kāpumā
900–1200KonkurētspējīgsLabs amatieris Alpe d'Huez
1200–1500Elites amatierisNacionālā līmeņa alpīnists
1500–1800ProfesionālsVietējā pasaules tūre
> 1800Grand Tour uzvarētājsPogačar, Vingegaard par galvenajiem kāpumiem

Aprēķina piemērs:

Scenārijs:Alpe d'Huez kāpiens

  • Augstuma pieaugums: 1100 metri
  • Laiks: 55 minūtes = 0,917 stundas
  • VAM = 1100 / 0,917 =1200 m/h

Interpretācija: Sacensību līmeņa kāpšanas sniegums

function calculateVAM(elevationGainMeters, timeMinutes) {
  const hours = timeMinutes / 60;
  return Math.round(elevationGainMeters / hours);
}

// Example:
const vam = calculateVAM(1100, 55);
// Returns: 1200 m/h

10. VAM līdz W/kg aprēķins

Formula:

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

Aprēķina piemērs:

Scenārijs:Kāpiens ar 8% vidējo gradientu, VAM = 1200 m/h

W/kg = 1200 / 100 / (8 + 3)

W/kg = 12/11 =4,36 W/kg

Savstarpēja pārbaude: ar 70 kg smagu braucēju → 305 W ilgstoša jauda kāpšanas laikā

function estimateWkgFromVAM(vam, gradientPercent) {
  return (vam / 100 / (gradientPercent + 3)).toFixed(2);
}

// Example:
const wkg = estimateWkgFromVAM(1200, 8);
// Returns: 4.36

Aerodinamiskās jaudas vienādojums

11. Kopējās jaudas prasības

Pilnīga formula:

P_kopā = P_aero + P_gravity + P_rolling + P_kinetic

Komponentu formulas:

Aerodinamiskā pretestība:
P_aero = CdA × 0,5 × ρ × V³
Gravitācijas (kāpšana):
P_gravitācija = m × g × sin(θ) × V
Rites pretestība:
P_ritēšana = Crr × m × g × cos(θ) × V
Kinētiskais (paātrinājums):
P_kinētiskā = m × a × V

Konstantes un mainīgie:

  • CdA= pretestības koeficients × frontālais laukums (m²)
    • Tipiski šosejas velosipēdu pārsegi: 0,35-0,40 m²
    • Pilieni: 0,32-0,37 m²
    • TT pozīcija: 0,20-0,25 m²
  • ρ= Gaisa blīvums (1,225 kg/m³ jūras līmenī, 15°C)
  • V= Ātrums (m/s)
  • m= Kopējā masa (braucējs + velosipēds, kg)
  • g= gravitācija (9,81 m/s²)
  • θ= Gradienta leņķis (pārrēķināts radiānos vai grādos)
  • Crr= Rites pretestības koeficients (~0,004 labām ceļa riepām)
  • a= Paātrinājums (m/s²)

Nostrādāts piemērs (līdzena ceļa TT):

Scenārijs:

  • Ātrums: 40 km/h = 11,11 m/s
  • CdA: 0,22 m² (laba TT pozīcija)
  • Kopējā masa: 75kg (braucējs) + 8kg (velosipēds) = 83kg
  • Līdzens ceļš (slīpums = 0°)
  • Pastāvīgs ātrums (paātrinājums = 0)

Aprēķins:

  1. P_aero= 0,22 × 0,5 × 1,225 × 11,11³ =185W
  2. P_gravitācija= 0 W (līdzens ceļš)
  3. P_rolling= 0,004 × 83 × 9,81 × 11,11 =36 W
  4. P_kinētiskais= 0 W (pastāvīgs ātrums)
  5. P_kopā= 185 + 0 + 36 + 0 =221W

Interpretācija: Nepieciešams 221 W, lai izturētu 40 km/h TT pozīcijā uz līdzena ceļa

JavaScript ieviešana:

function calculatePowerRequired(params) {
  const {
    velocityKph,
    CdA = 0.32,              // m²
    rho = 1.225,             // kg/m³
    mass = 83,               // kg (rider + bike)
    gradientPercent = 0,     // %
    Crr = 0.004,             // rolling resistance
    accelerationMps2 = 0     // m/s²
  } = params;

  // Convert velocity to m/s
  const V = velocityKph / 3.6;

  // Convert gradient to angle
  const theta = Math.atan(gradientPercent / 100);

  // Calculate each component
  const P_aero = CdA * 0.5 * rho * Math.pow(V, 3);
  const P_gravity = mass * 9.81 * Math.sin(theta) * V;
  const P_rolling = Crr * mass * 9.81 * Math.cos(theta) * V;
  const P_kinetic = mass * accelerationMps2 * V;

  return {
    total: Math.round(P_aero + P_gravity + P_rolling + P_kinetic),
    aero: Math.round(P_aero),
    gravity: Math.round(P_gravity),
    rolling: Math.round(P_rolling),
    kinetic: Math.round(P_kinetic)
  };
}

// Example: TT at 40 km/h
const power_tt = calculatePowerRequired({
  velocityKph: 40,
  CdA: 0.22,
  mass: 83,
  gradientPercent: 0
});
// Returns: { total: 221, aero: 185, gravity: 0, rolling: 36, kinetic: 0 }

// Example: 8% climb at 15 km/h
const power_climb = calculatePowerRequired({
  velocityKph: 15,
  CdA: 0.38,
  mass: 75,
  gradientPercent: 8
});
// Returns: { total: 265, aero: 27, gravity: 244, rolling: 11, kinetic: 0 }

Palīdzības funkcijas

Vienību konvertēšanas utilītas

JavaScript ieviešana:

// Time conversions
function hoursToSeconds(hours) {
  return hours * 3600;
}

function minutesToSeconds(minutes) {
  return minutes * 60;
}

function secondsToHours(seconds) {
  return seconds / 3600;
}

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')}`;
}

// Speed conversions
function kphToMps(kph) {
  return kph / 3.6;
}

function mpsToKph(mps) {
  return mps * 3.6;
}

// Energy conversions
function joulesTo kJ(joules) {
  return joules / 1000;
}

function kJToJoules(kJ) {
  return kJ * 1000;
}

function wattsToKJ(watts, durationSeconds) {
  return (watts * durationSeconds) / 1000;
}

// Examples:
formatDuration(7265);        // Returns: "2:01:05"
kphToMps(40);                // Returns: 11.11 m/s
wattsToKJ(250, 3600);        // Returns: 900 kJ (1 hour at 250W)

Īstenošanas resursi

Visas šajā lapā esošās formulas ir gatavas ražošanai un apstiprinātas, pamatojoties uz zinātnisko literatūru un reāliem jaudas mērītāja datiem. Izmantojiet tos pielāgotiem analītikas rīkiem, verifikācijai vai padziļinātai izpratnei par uz jaudu balstītiem apmācības aprēķiniem.

💡 Labākā prakse

  • Apstipriniet ievades:Pārbaudiet saprātīgus jaudas diapazonus (0-2000 W), pozitīvus ilgumus
  • Roktura malas futrāļi:Dalījums ar nulli, nulles/nenodefinēti dati, trūkst FTP
  • Pareizi noapaļot:CTL/ATL/TSB līdz 1 zīmei aiz komata, TSS līdz veselam skaitlim, W/kg līdz 2 zīmēm aiz komata
  • Veikala precizitāte:Saglabājiet datu bāzē pilnu precizitāti, noapaļojiet tikai attēlošanai
  • Laika joslas:Konsekventi apstrādājiet UTC laiku salīdzinājumā ar vietējo laiku, lai veiktu vairāku dienu analīzi
  • Jaudas mērītāja kalibrēšana:Pirms braucieniem atgādiniet lietotājiem par nulles nobīdi
  • FTP validācija:Atzīmējiet aizdomīgas FTP vērtības (>500 W vai <100 W pieaugušajiem)
  • Rūpīgi pārbaudiet:Lai pārbaudītu aprēķinus, izmantojiet labi zināmus braucienu failus

Expertly Reviewed by

This content has been written and reviewed by a sports data metrics expert to ensure technical accuracy and adherence to the latest sports science methodologies.

Peldēšanas snieguma formulas: CSS, TSS, CTL/ATL aprēķini

Pilnīgas matemātiskās formulas peldēšanas analītikai. Apgūstiet, kā manuāli aprēķināt FTP, sTSS, CTL, ATL, TSB. Ietver atrisinātos piemērus, atvasinājumus un.

  • 2026-03-24
  • peldēšanas formulas · CSS aprēķins · TSS formula · treniņu matemātika
  • Bibliogrāfija