સાયકલિંગ પાવર ફોર્મ્યુલા
બાઇક એનાલિટિક્સ મેટ્રિક્સનું ગાણિતિક ફાઉન્ડેશન
અમલીકરણ માર્ગદર્શિકા
આ પેજ તમામ બાઇક એનાલિટિક્સ મેટ્રિક્સ માટે કોપી-પેસ્ટ ફોર્મ્યુલા અને સ્ટેપ-બાય-સ્ટેપ ગણતરી પદ્ધતિઓ પ્રદાન કરે છે. આનો ઉપયોગ કસ્ટમ અમલીકરણ, ચકાસણી અથવા પાવર-આધારિત તાલીમની ઊંડી સમજણ માટે કરો.
⚠️ અમલીકરણ નોંધો
- વોટ્સ (W) માં તમામ પાવર મૂલ્યો, જ્યાં સુધી ઉલ્લેખિત ન હોય ત્યાં સુધી સેકંડમાં સમય
- FTP અને CP વ્યક્તિગત-વિશિષ્ટ થ્રેશોલ્ડ છે-કોઈ સાર્વત્રિક મૂલ્યો નથી
- વાજબી શ્રેણીઓ માટે હંમેશા ઇનપુટ્સ માન્ય કરો (0-2000W લાક્ષણિક)
- ધારના કેસોને હેન્ડલ કરો (શૂન્ય દ્વારા વિભાજન, નકારાત્મક શક્તિ)
- પાવર ડેટાને ચોકસાઈ માટે 1-સેકન્ડના રેકોર્ડિંગ અંતરાલની જરૂર છે
સાયકલિંગ કોર પર્ફોર્મન્સ મેટ્રિક્સ
1. ટ્રેનિંગ સ્ટ્રેસ સ્કોર (TSS)
ફોર્મ્યુલા:
કાર્ય કરેલ ઉદાહરણ:
દૃશ્ય:2-કલાકની સવારી, NP = 235W, FTP = 250W
- IF ની ગણતરી કરો: IF = 235 / 250 = 0.94
- સેકન્ડમાં અવધિ: 2 કલાક × 3600 = 7200 સેકન્ડ
- TSS = (7200 × 235 × 0.94) / (250 × 3600) × 100
- 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: 1772. સામાન્ય શક્તિ (NP)
અલ્ગોરિધમ (30-સેકન્ડ રોલિંગ એવરેજ):
શા માટે 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 watts3. તીવ્રતા પરિબળ (IF)
ફોર્મ્યુલા:
અર્થઘટન શ્રેણીઓ:
| IF શ્રેણી | પ્રયત્ન સ્તર | વર્કઆઉટનું ઉદાહરણ |
|---|---|---|
| < 0.75 | પુનઃપ્રાપ્તિ / સરળ | સક્રિય રિકવરી રાઈડ, ઝોન 1-2 |
| 0.75 - 0.85 | સહનશક્તિ | લાંબી સ્થિર સવારી, એરોબિક આધાર |
| 0.85 - 0.95 | ટેમ્પો | સ્વીટ સ્પોટ તાલીમ, ટેમ્પો અંતરાલ |
| 0.95 - 1.05 | થ્રેશોલ્ડ | FTP અંતરાલો, સમય અજમાયશ પ્રયાસ |
| 1.05 - 1.15 | VO₂max | 5-મિનિટના અંતરાલ, માપદંડ રેસ |
| > 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.944. વેરિએબિલિટી ઇન્ડેક્સ (VI)
ફોર્મ્યુલા:
શિસ્ત દ્વારા અર્થઘટન:
| શિસ્ત | લાક્ષણિક VI | અર્થ |
|---|---|---|
| રોડ ટીટી / સ્ટેડી પ્રયાસ | 1.00 - 1.05 | ખૂબ જ સુસંગત શક્તિ, શ્રેષ્ઠ પેસિંગ |
| રોડ રેસિંગ | 1.05 - 1.10 | કેટલાક ઉછાળા, સામાન્ય રીતે સ્થિર |
| માપદંડ | 1.10 - 1.20 | વારંવાર પ્રવેગક અને હુમલા |
| માઉન્ટેન બાઇક XC | 1.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) - લીનિયર મોડલ
ફોર્મ્યુલા:
બહુવિધ પ્રયત્નોમાંથી ગણતરી:
વિવિધ સમયગાળામાં 2-4 મહત્તમ પ્રયત્નોની જરૂર છે (દા.ત., 3, 5, 12, 20 મિનિટ)
ઉદાહરણ ડેટા:
| અવધિ | પાવર (W) | કુલ કાર્ય (kJ) |
|---|---|---|
| 3 મિનિટ (180) | 400W | 72 kJ |
| 5 મિનિટ (300 સે) | 365W | 109.5 kJ |
| 12 મિનિટ (720) | 310W | 223.2 kJ |
| 20 મિનિટ (1200) | 285W | 342 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) - વિભેદક સમીકરણ મોડલ
સૂત્રો:
W'exp(t) = ∫(P(t) - CP) તા
W'rec(t) = W' × (1 - e^(-t/τ))
અને Δ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 (ક્રોનિક ટ્રેનિંગ લોડ):42-દિવસ ઘાતાંકીય રીતે ભારિત સરેરાશ - ફિટનેસનું પ્રતિનિધિત્વ કરે છે
- ATL (એક્યુટ ટ્રેનિંગ લોડ):7-દિવસ ઘાતાંકીય રીતે ભારિત સરેરાશ - થાકનું પ્રતિનિધિત્વ કરે છે
- TSB (તાલીમ સ્ટ્રેસ બેલેન્સ):ફોર્મ = ફિટનેસ - થાક
કાર્ય કરેલ ઉદાહરણ (7-દિવસીય તાલીમ બ્લોક):
| દિવસ | TSS | CTL | ATL | TSB | સ્થિતિ |
|---|---|---|---|---|---|
| સોમ | 100 | 75.0 | 80.0 | -5.0 | તાલીમ |
| મંગળ | 50 | 74.4 | 75.7 | -1.3 | પુનઃપ્રાપ્તિ |
| બુધ | 120 | 75.5 | 82.0 | -6.5 | સખત તાલીમ |
| ગુરૂ | 0 | 73.7 | 70.3 | +3.4 | આરામનો દિવસ |
| શુક્ર | 80 | 73.8 | 71.7 | +2.1 | મધ્યમ |
| શનિ | 150 | 75.6 | 82.9 | -7.3 | લાંબી સવારી |
| સૂર્ય | 40 | 74.8 | 76.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. પાવર-ટુ-વેઇટ રેશિયો
ફોર્મ્યુલા:
FTP W/kg બેન્ચમાર્ક્સ:
| સ્તર | પુરુષ W/kg | સ્ત્રી W/kg | શ્રેણી |
|---|---|---|---|
| મનોરંજક | 2.5 - 3.5 | 2.0 - 3.0 | ફિટનેસ સવાર |
| સ્પર્ધાત્મક | 3.5 - 4.5 | 3.0 - 4.0 | કેટ 3-4, વય જૂથ રેસર |
| ઉન્નત | 4.5 - 5.5 | 4.0 - 5.0 | બિલાડી 1-2, મજબૂત કલાપ્રેમી |
| ભદ્ર કલાપ્રેમી | 5.5 - 6.0 | 5.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.939. VAM (Velocita Ascensionale Media)
ફોર્મ્યુલા:
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/h10. VAM થી W/kg અંદાજ
ફોર્મ્યુલા:
ઉદાહરણ ગણતરી:
દૃશ્ય: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_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)
ગણતરી:
- P_aero= 0.22 × 0.5 × 1.225 × 11.11³ =185W
- P_ગુરુત્વાકર્ષણ= 0W (સપાટ રોડ)
- પી_રોલિંગ = 0.004 × 83 × 9.81 × 11.11 = 36W
- P_kinetic= 0W (સતત ઝડપ)
- 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 પુખ્તો માટે)
- સારી રીતે પરીક્ષણ કરો:ગણતરીઓ ચકાસવા માટે જાણીતી-સારી રાઇડ ફાઇલોનો ઉપયોગ કરો
