સાયકલિંગ પાવર ફોર્મ્યુલા

બાઇક એનાલિટિક્સ મેટ્રિક્સનું ગાણિતિક ફાઉન્ડેશન

અમલીકરણ માર્ગદર્શિકા

આ પેજ તમામ બાઇક એનાલિટિક્સ મેટ્રિક્સ માટે કોપી-પેસ્ટ ફોર્મ્યુલા અને સ્ટેપ-બાય-સ્ટેપ ગણતરી પદ્ધતિઓ પ્રદાન કરે છે. આનો ઉપયોગ કસ્ટમ અમલીકરણ, ચકાસણી અથવા પાવર-આધારિત તાલીમની ઊંડી સમજણ માટે કરો.

⚠️ અમલીકરણ નોંધો

  • વોટ્સ (W) માં તમામ પાવર મૂલ્યો, જ્યાં સુધી ઉલ્લેખિત ન હોય ત્યાં સુધી સેકંડમાં સમય
  • FTP અને CP વ્યક્તિગત-વિશિષ્ટ થ્રેશોલ્ડ છે-કોઈ સાર્વત્રિક મૂલ્યો નથી
  • વાજબી શ્રેણીઓ માટે હંમેશા ઇનપુટ્સ માન્ય કરો (0-2000W લાક્ષણિક)
  • ધારના કેસોને હેન્ડલ કરો (શૂન્ય દ્વારા વિભાજન, નકારાત્મક શક્તિ)
  • પાવર ડેટાને ચોકસાઈ માટે 1-સેકન્ડના રેકોર્ડિંગ અંતરાલની જરૂર છે

સાયકલિંગ કોર પર્ફોર્મન્સ મેટ્રિક્સ

1. ટ્રેનિંગ સ્ટ્રેસ સ્કોર (TSS)

ફોર્મ્યુલા:

TSS = (અવધિ_સેકન્ડ × NP × IF) / (FTP × 3600) × 100
જ્યાં IF = NP / FTP

કાર્ય કરેલ ઉદાહરણ:

દૃશ્ય:2-કલાકની સવારી, NP = 235W, FTP = 250W

  1. IF ની ગણતરી કરો: IF = 235 / 250 = 0.94
  2. સેકન્ડમાં અવધિ: 2 કલાક × 3600 = 7200 સેકન્ડ
  3. TSS = (7200 × 235 × 0.94) / (250 × 3600) × 100
  4. TSS = 1,590,720 / 900,000 × 100 =176.7 TSS

અર્થઘટન: સખત તાલીમ સવારી (>150 TSS), 2-3 દિવસની પુનઃપ્રાપ્તિની અપેક્ષા

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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. સામાન્ય શક્તિ (NP)

અલ્ગોરિધમ (30-સેકન્ડ રોલિંગ એવરેજ):

1. સમગ્ર રાઈડ માટે 30-સેકન્ડની રોલિંગ એવરેજ પાવરની ગણતરી કરો
2. દરેક 30-સેકન્ડના મૂલ્યને 4 થી પાવર સુધી વધારવો
3. આ તમામ ^4 મૂલ્યોની સરેરાશ લો
4. તે સરેરાશનું ચોથું મૂળ લો
NP = ⁴√(સરેરાશ [30s_avg^4])

શા માટે 4 થી પાવર?

ક્વાર્ટિક (4થી પાવર) સંબંધ ચલ પ્રયત્નોના બિન-રેખીય શારીરિક ખર્ચને પ્રતિબિંબિત કરે છે. ઉછાળો અને પુનઃપ્રાપ્તિ સાથેની રાઇડમાં સમાન સરેરાશ પર સ્થિર શક્તિ કરતાં વધુ ઊર્જા ખર્ચ થાય છે.

ઉદાહરણ:

  • સ્ટેડી રાઈડ: 1 કલાક માટે 200W → NP = 200W, સરેરાશ = 200W
  • વેરિયેબલ રાઈડ: વૈકલ્પિક 300W/100W → સરેરાશ = 200W, NP = 225W

સમાન સરેરાશ શક્તિ, પરંતુ વધારાના શારીરિક ખર્ચને કારણે વેરિયેબલ રાઈડમાં 12% વધુ એનપી છે

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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. તીવ્રતા પરિબળ (IF)

ફોર્મ્યુલા:

IF = NP / FTP

અર્થઘટન શ્રેણીઓ:

IF શ્રેણીપ્રયત્ન સ્તરવર્કઆઉટનું ઉદાહરણ
< 0.75પુનઃપ્રાપ્તિ / સરળસક્રિય રિકવરી રાઈડ, ઝોન 1-2
0.75 - 0.85સહનશક્તિલાંબી સ્થિર સવારી, એરોબિક આધાર
0.85 - 0.95ટેમ્પોસ્વીટ સ્પોટ તાલીમ, ટેમ્પો અંતરાલ
0.95 - 1.05થ્રેશોલ્ડFTP અંતરાલો, સમય અજમાયશ પ્રયાસ
1.05 - 1.15VO₂max5-મિનિટના અંતરાલ, માપદંડ રેસ
> 1.15એનારોબિકટૂંકા સ્પ્રિન્ટ્સ, હુમલાઓ, MTB વિસ્ફોટો

ઉદાહરણ ગણતરી:

દૃશ્ય:NP = 235W, FTP = 250W

IF = 235 / 250 =0.94

અર્થઘટન: ઉચ્ચ ટેમ્પો / સબ-થ્રેશોલ્ડ પ્રયાસ, 2-3 કલાક માટે ટકાઉ

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

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

4. વેરિએબિલિટી ઇન્ડેક્સ (VI)

ફોર્મ્યુલા:

VI = NP / સરેરાશ પાવર

શિસ્ત દ્વારા અર્થઘટન:

શિસ્તલાક્ષણિક VIઅર્થ
રોડ ટીટી / સ્ટેડી પ્રયાસ1.00 - 1.05ખૂબ જ સુસંગત શક્તિ, શ્રેષ્ઠ પેસિંગ
રોડ રેસિંગ1.05 - 1.10કેટલાક ઉછાળા, સામાન્ય રીતે સ્થિર
માપદંડ1.10 - 1.20વારંવાર પ્રવેગક અને હુમલા
માઉન્ટેન બાઇક XC1.15 - 1.30+અત્યંત ચલ, સતત વધારો

ઉદાહરણ ગણતરી:

રોડ રેસ:NP = 240W, સરેરાશ પાવર = 230W

VI = 240 / 230 =1.04(સ્થિર ગતિ)

MTB રેસ:NP = 285W, સરેરાશ પાવર = 235W

VI = 285 / 235 =1.21(ખૂબ જ પરિવર્તનશીલ, વિસ્ફોટના પ્રયત્નો)

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

ક્રિટિકલ પાવર એન્ડ ડબલ્યુ' (એનારોબિક કેપેસિટી)

5. ક્રિટિકલ પાવર (CP) - લીનિયર મોડલ

ફોર્મ્યુલા:

સમય = W' / (પાવર - CP)
ફરીથી ગોઠવેલ: પાવર × સમય = CP × સમય + W'

બહુવિધ પ્રયત્નોમાંથી ગણતરી:

વિવિધ સમયગાળામાં 2-4 મહત્તમ પ્રયત્નોની જરૂર છે (દા.ત., 3, 5, 12, 20 મિનિટ)

ઉદાહરણ ડેટા:

અવધિપાવર (W)કુલ કાર્ય (kJ)
3 મિનિટ (180)400W72 kJ
5 મિનિટ (300 સે)365W109.5 kJ
12 મિનિટ (720)310W223.2 kJ
20 મિનિટ (1200)285W342 kJ

રેખીય રીગ્રેશનનો ઉપયોગ કરીને (કાર્ય = CP × સમય + W'):

  • CP = 270W(રીગ્રેશન લાઇનનો ઢોળાવ)
  • W' = 18.5 kJ(y-ઇન્ટરસેપ્ટ)

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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' બેલેન્સ (W'bal) - વિભેદક સમીકરણ મોડલ

સૂત્રો:

ખર્ચ (જ્યારે P > CP):
W'exp(t) = ∫(P(t) - CP) તા
પુનઃપ્રાપ્તિ (જ્યારે P < CP):
W'rec(t) = W' × (1 - e^(-t/τ))
જ્યાં τ = 546 × e^(-0.01 × ΔCP) + 316
અને ΔCP = (CP - P(t))

વાસ્તવિક દુનિયાનું ઉદાહરણ:

સાયકલ સ્પેક્સ:CP = 270W, W' = 18.5 kJ

દૃશ્ય 1 - સખત હુમલો:

  • રાઇડર 30 સેકન્ડ માટે 400W સુધી વધે છે
  • W' ખર્ચ: (400 - 270) × 30 = 3,900 J = 3.9 kJ
  • W'bal બાકી: 18.5 - 3.9 =14.6 kJ

દૃશ્ય 2 - પુનઃપ્રાપ્તિ:

  • હુમલા પછી, 2 મિનિટ માટે 200W (CP ની નીચે 70W) સુધી ઘટી જાય છે
  • ΔCP = 270 - 200 = 70W
  • τ = 546 × e^(-0.01 × 70) + 316 = 588 સેકન્ડ
  • 120s માં પુનઃપ્રાપ્તિ: 18.5 × (1 - e^(-120/588)) =3.5 kJ પુનઃપ્રાપ્ત
  • નવી W'bal: 14.6 + 3.5 =18.1 kJ

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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

પર્ફોર્મન્સ મેનેજમેન્ટ ચાર્ટ (PMC) સાયકલિંગ માટે

7. CTL, ATL, TSB ગણતરીઓ

સૂત્રો (ઘાતકીય રીતે વજનવાળી મૂવિંગ એવરેજ):

CTL_આજે = CTL_ગઈકાલ + (TSS_આજે - CTL_ગઈકાલે) / 42
ATL_આજે = ATL_ગઈકાલ + (TSS_આજે - ATL_ગઈકાલે) / 7
TSB_આજે = CTL_ગઈકાલે - ATL_ગઈકાલે

મેટ્રિક વ્યાખ્યાઓ:

  • CTL (ક્રોનિક ટ્રેનિંગ લોડ):42-દિવસ ઘાતાંકીય રીતે ભારિત સરેરાશ - ફિટનેસનું પ્રતિનિધિત્વ કરે છે
  • ATL (એક્યુટ ટ્રેનિંગ લોડ):7-દિવસ ઘાતાંકીય રીતે ભારિત સરેરાશ - થાકનું પ્રતિનિધિત્વ કરે છે
  • TSB (તાલીમ સ્ટ્રેસ બેલેન્સ):ફોર્મ = ફિટનેસ - થાક

કાર્ય કરેલ ઉદાહરણ (7-દિવસીય તાલીમ બ્લોક):

દિવસTSSCTLATLTSBસ્થિતિ
સોમ10075.080.0-5.0તાલીમ
મંગળ5074.475.7-1.3પુનઃપ્રાપ્તિ
બુધ12075.582.0-6.5સખત તાલીમ
ગુરૂ073.770.3+3.4આરામનો દિવસ
શુક્ર8073.871.7+2.1મધ્યમ
શનિ15075.682.9-7.3લાંબી સવારી
સૂર્ય4074.876.8-2.0પુનઃપ્રાપ્તિ

TSB અર્થઘટન:

TSB શ્રેણીસ્થિતિક્રિયા
< -30ઉચ્ચ જોખમઓવરટ્રેનિંગ ચેતવણી - લોડ ઘટાડો
-30 થી -10સખત તાલીમબિલ્ડીંગ ફિટનેસ, મોનિટર પુનઃપ્રાપ્તિ
-10 થી +5શ્રેષ્ઠસામાન્ય તાલીમ ઝોન
+5 થી +15રેસ તૈયારપીક ફોર્મ - આ સપ્તાહના અંતે રેસ
> +25ડિટ્રેનિંગફિટનેસની ખોટ - ભાર વધારો

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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

પાવર-ટુ-વેઇટ અને ક્લાઇમ્બિંગ મેટ્રિક્સ

8. પાવર-ટુ-વેઇટ રેશિયો

ફોર્મ્યુલા:

W/kg = પાવર (વોટ) / બોડી માસ (કિલો)

FTP W/kg બેન્ચમાર્ક્સ:

સ્તરપુરુષ W/kgસ્ત્રી W/kgશ્રેણી
મનોરંજક2.5 - 3.52.0 - 3.0ફિટનેસ સવાર
સ્પર્ધાત્મક3.5 - 4.53.0 - 4.0કેટ 3-4, વય જૂથ રેસર
ઉન્નત4.5 - 5.54.0 - 5.0બિલાડી 1-2, મજબૂત કલાપ્રેમી
ભદ્ર ​​કલાપ્રેમી5.5 - 6.05.0 - 5.5રાષ્ટ્રીય સ્તરે
વ્યવસાયિક6.0 - 7.0+5.5 - 6.5+વર્લ્ડ ટૂર, ગ્રાન્ડ ટૂર જી.સી

ઉદાહરણ ગણતરી:

દૃશ્ય:FTP = 275W, બોડી માસ = 70kg સાથે સાઇકલ સવાર

W/kg = 275/70 =3.93 W/kg

અર્થઘટન: સ્પર્ધાત્મક સ્તર, પર્વતીય રેસમાં સક્ષમ

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

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

9. VAM (Velocita Ascensionale Media)

ફોર્મ્યુલા:

VAM (m/h) = એલિવેશન ગેઇન (m) / સમય (કલાક)

VAM બેન્ચમાર્ક્સ:

VAM (m/h)સ્તરઉદાહરણ
600 - 900મનોરંજકસ્થાનિક ક્લાઇમ્બ પર ક્લબ સવાર
900 - 1200સ્પર્ધાત્મકAlpe d'Huez પર સારા કલાપ્રેમી
1200 - 1500ભદ્ર ​​કલાપ્રેમીરાષ્ટ્રીય કક્ષાનો આરોહી
1500 - 1800વ્યવસાયિકવિશ્વ પ્રવાસ ડોમેસ્ટીક
> 1800ગ્રાન્ડ ટૂર વિજેતાPogačar, Vingegaard કી ક્લાઇમ્બ પર

ઉદાહરણ ગણતરી:

દૃશ્ય:અલ્પે ડી'હ્યુઝ ચઢાણ

  • એલિવેશન ગેઇન: 1100 મીટર
  • સમય: 55 મિનિટ = 0.917 કલાક
  • VAM = 1100 / 0.917 =1200 m/h

અર્થઘટન: સ્પર્ધાત્મક-સ્તરની ચડતા પ્રદર્શન

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 થી W/kg અંદાજ

ફોર્મ્યુલા:

W/kg ≈ VAM (m/h) / 100 / (ગ્રેડિયન્ટ% + 3)

ઉદાહરણ ગણતરી:

દૃશ્ય:8% એવરેજ ગ્રેડિયન્ટ સાથે ચઢો, VAM = 1200 m/h

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

W/kg = 12/11 =4.36 W/kg

ક્રોસ-ચેક: 70kg રાઇડર સાથે → 305W સતત પાવર ચઢવા પર

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

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

એરોડાયનેમિક પાવર સમીકરણ

11. કુલ પાવર જરૂરીયાતો

સંપૂર્ણ ફોર્મ્યુલા:

P_total = P_aero + P_gravity + P_rolling + P_kinetic

ઘટક સૂત્રો:

એરોડાયનેમિક ખેંચો:
P_aero = CdA × 0.5 × ρ × V³
ગુરુત્વાકર્ષણ (ચડાઈ):
P_ગુરુત્વાકર્ષણ = m × g × sin(θ) × V
રોલિંગ પ્રતિકાર:
P_rolling = Crr × m × g × cos(θ) × V
ગતિ (પ્રવેગક):
P_kinetic = m × a × V

સ્થિરાંકો અને ચલો:

  • સીડીએ= ખેંચો ગુણાંક × આગળનો વિસ્તાર (m²)
    • લાક્ષણિક રોડ બાઇક હૂડ: 0.35-0.40 m²
    • ટીપાં: 0.32-0.37 m²
    • TT સ્થિતિ: 0.20-0.25 m²
  • ρ= હવાની ઘનતા (1.225 kg/m³ સમુદ્ર સપાટી પર, 15°C)
  • V= વેગ (m/s)
  • m= કુલ માસ (રાઇડર + બાઇક, કિગ્રા)
  • g= ગુરુત્વાકર્ષણ (9.81 m/s²)
  • θ= ગ્રેડિયન્ટ એંગલ (રેડિયન અથવા ડિગ્રી રૂપાંતરિત)
  • સીઆરઆર= રોલિંગ રેઝિસ્ટન્સ ગુણાંક (સારા રોડ ટાયર માટે ~0.004)
  • a= પ્રવેગક (m/s²)

કાર્ય કરેલ ઉદાહરણ (ફ્લેટ રોડ ટીટી):

દૃશ્ય:

  • વેગ: 40 km/h = 11.11 m/s
  • CdA: 0.22 m² (સારી TT સ્થિતિ)
  • કુલ માસ: 75kg (રાઇડર) + 8kg (બાઇક) = 83kg
  • સપાટ રોડ (ગ્રેડિયન્ટ = 0°)
  • સ્થિર ગતિ (પ્રવેગ = 0)

ગણતરી:

  1. P_aero= 0.22 × 0.5 × 1.225 × 11.11³ =185W
  2. P_ગુરુત્વાકર્ષણ= 0W (સપાટ રોડ)
  3. પી_રોલિંગ = 0.004 × 83 × 9.81 × 11.11 = 36W
  4. P_kinetic= 0W (સતત ઝડપ)
  5. P_કુલ = 185 + 0 + 36 + 0 = 221W

અર્થઘટન: ફ્લેટ રોડ પર TT સ્થિતિમાં 40 કિમી/કલાક ટકાવી રાખવા માટે 221Wની જરૂર છે

જાવાસ્ક્રિપ્ટ અમલીકરણ:

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 }

સહાયક કાર્યો

એકમ રૂપાંતર ઉપયોગિતાઓ

જાવાસ્ક્રિપ્ટ અમલીકરણ:

// 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)

અમલીકરણ સંસાધનો

આ પૃષ્ઠ પરના તમામ સૂત્રો ઉત્પાદન-તૈયાર છે અને વૈજ્ઞાનિક સાહિત્ય અને વાસ્તવિક-વિશ્વ પાવર મીટર ડેટા સામે માન્ય છે. કસ્ટમ એનાલિટિક્સ ટૂલ્સ, ચકાસણી અથવા પાવર-આધારિત તાલીમ ગણતરીઓની ઊંડી સમજ માટે તેનો ઉપયોગ કરો.

💡 શ્રેષ્ઠ વ્યવહાર

  • ઇનપુટ્સ માન્ય કરો:વાજબી પાવર રેન્જ (0-2000W), સકારાત્મક અવધિ માટે તપાસો
  • ધારના કેસોને હેન્ડલ કરો:શૂન્ય દ્વારા વિભાજન, નલ/અવ્યાખ્યાયિત ડેટા, FTP ખૂટે છે
  • યોગ્ય રીતે ગોળાકાર:CTL/ATL/TSB થી 1 દશાંશ, TSS થી પૂર્ણાંક, W/kg થી 2 દશાંશ
  • સ્ટોર ચોકસાઇ:ડેટાબેઝમાં સંપૂર્ણ ચોકસાઇ રાખો, માત્ર પ્રદર્શન માટે રાઉન્ડ કરો
  • સમય ઝોન:બહુ-દિવસીય વિશ્લેષણ માટે યુટીસી વિ. સ્થાનિક સમયને સતત હેન્ડલ કરો
  • પાવર મીટર કેલિબ્રેશન:સવારી પહેલાં વપરાશકર્તાઓને શૂન્ય-ઓફસેટ માટે યાદ કરાવો
  • FTP માન્યતા:શંકાસ્પદ FTP મૂલ્યોને ફ્લેગ કરો (>500W અથવા <100W પુખ્તો માટે)
  • સારી રીતે પરીક્ષણ કરો:ગણતરીઓ ચકાસવા માટે જાણીતી-સારી રાઇડ ફાઇલોનો ઉપયોગ કરો