سائیکلنگ پاور فارمولے

بائیک اینالیٹکس میٹرکس کی ریاضیاتی بنیاد

نفاذ (Implementation) گائیڈ

یہ صفحہ بائیک اینالیٹکس کے تمام میٹرکس کے لیے کاپی پیسٹ فارمولے اور مرحلہ وار حساب کتاب کے طریقے فراہم کرتا ہے۔ ان کو اپنی مرضی کے نفاذ، تصدیق، یا پاور پر مبنی ٹریننگ کی گہری سمجھ کے لیے استعمال کریں۔

⚠️ نفاذ کے لیے نوٹ

  • پاور کی تمام پیمائش واٹس (W) میں ہے، اور وقت سیکنڈ میں ہے (جب تک کہ وضاحت نہ کی جائے)
  • FTP اور CP انفرادی طور پر مخصوص تھریشولڈز ہیں—ان کی کوئی عالمی قیمت نہیں ہوتی
  • ہمیشہ ان پٹ کو مناسب حدود (عام طور پر 0-2000W) کے لیے چیک کریں
  • خاص حالات (جیسے صفر سے تقسیم یا منفی پاور) کو ہینڈل کریں
  • درستی کے لیے پاور ڈیٹا کو 1 سیکنڈ کے وقفے سے ریکارڈ کرنا ضروری ہے

بنیادی پرفارمنس میٹرکس

1. ٹریننگ اسٹریس اسکور (TSS - Training Stress Score)

فارمولا:

TSS = (duration_seconds × 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 دن کی بحالی (recovery) متوقع ہے

JavaScript کوڈ:

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

// مثال:
const tss = calculateTSS(7200, 235, 250);
// جواب: 177

2. نارملائزڈ پاور (NP - Normalized Power)

الگورتھم (30 سیکنڈ رولنگ ایوریج):

1. پوری سواری کے لیے 30 سیکنڈ کا متحرک اوسط (rolling average) نکالیں
2. ان 30 سیکنڈ کی ہر اوسط ویلیو کو چوتھی قوت (4th power) تک بڑھائیں
3. ان تمام ^4 ویلیوز کا اوسط نکالیں
4. اس اوسط کا چوتھا جڑ (4th root) نکالیں
NP = ⁴√(average of [30s_avg^4])

چوتھی قوت ہی کیوں؟

یہ تعلق مختلف کوششوں کی غیر خطی جسمانی لاگت کو ظاہر کرتا ہے۔ ایک ایسی سواری جس میں پاور بار بار بدلتی ہے، وہ اسی اوسط پاور والی مستقل سواری کے مقابلے میں زیادہ توانائی خرچ کرتی ہے۔

مثال:

  • مستقل سواری: 1 گھنٹے کے لیے 200W → NP = 200W، اوسط = 200W
  • بدلتی سواری: باری باری 300W/100W → اوسط = 200W، NP = 225W

اوسط پاور وہی ہے، لیکن بدلتی ہوئی سواری میں NP 12٪ زیادہ ہے کیونکہ جسم کو پاور بڑھانے میں زیادہ مشقت کرنی پڑتی ہے۔

JavaScript کوڈ:

function calculateNormalizedPower(powerData) {
  // powerData: 1 سیکنڈ کی پاور ویلیوز کا ایرے

  // مرحلہ 1: 30 سیکنڈ کے متحرک اوسط نکالیں
  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);
  }

  // مرحلہ 2: چوتھی قوت تک بڑھائیں
  const powered = rollingAvgs.map(p => Math.pow(p, 4));

  // مرحلہ 3: ان کا اوسط نکالیں
  const avgPowered = powered.reduce((sum, p) => sum + p, 0) / powered.length;

  // مرحلہ 4: چوتھا جڑ نکالیں
  const np = Math.pow(avgPowered, 0.25);

  return Math.round(np);
}

// مثال:
const powerData = [/* 1 سیکنڈ پاور ایرے */];
const np = calculateNormalizedPower(powerData);
// جواب: واٹس میں NP

3. انٹینسٹی فیکٹر (IF - Intensity Factor)

فارمولا:

IF = NP / FTP

حدود اور تشریح (Interpretation Ranges):

IF کی رینج کوشش کی سطح ورزش کی مثال
< 0.75 ریکوری / آسان آسان سواری، زون 1-2
0.75 - 0.85 انڈورنس (Endurance) طویل مستقل سواری، ایروبک بیس
0.85 - 0.95 ٹیمپو (Tempo) سویٹ اسپاٹ ٹریننگ، ٹیمپو انٹرولز
0.95 - 1.05 تھریشولڈ (Threshold) FTP انٹرولز، ٹائم ٹرائل کی کوشش
1.05 - 1.15 VO₂max 5 منٹ کے انٹرولز، کرائٹیریم ریس
> 1.15 این ایروبک (Anaerobic) مختصر اسپرنٹ، حملے، MTB برسٹ

مثال:

صورتحال: NP = 235W، FTP = 250W

IF = 235 / 250 = 0.94

مطالب: ہائی ٹیمپو کوشش، جو 2-3 گھنٹے تک برقرار رکھی جا سکتی ہے

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

// مثال:
const if_value = calculateIF(235, 250);
// جواب: 0.94

4. ویری ایبلٹی انڈیکس (VI - Variability Index)

فارمولا:

VI = NP / Average Power

ڈسپلن کے لحاظ سے تشریح:

ڈسپلن عام VI مطلب
روڈ TT / مستقل کوشش 1.00 - 1.05 بہت ہموار پاور، بہترین پیسنگ
روڈ ریسنگ 1.05 - 1.10 کچھ اتار چڑھاؤ، لیکن زیادہ تر ہموار
کرائٹیریم (Criterium) 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);
}

// مثال:
const vi_road = calculateVI(240, 230);  // جواب: 1.04
const vi_mtb = calculateVI(285, 235);   // جواب: 1.21

کریٹیکل پاور (CP) اور W' (این ایروبک کیپیسٹی)

5. کریٹیکل پاور (CP) - لکیری ماڈل

فارمولا:

Time = W' / (Power - CP)
ترتیب نو: Power × Time = CP × Time + W'

متعدد کوششوں سے حساب کتاب:

اس کے لیے مختلف دورانیے (مثلاً 3، 5، 12، 20 منٹ) پر 2-4 زیادہ سے زیادہ کوششوں کی ضرورت ہوتی ہے۔

مثال کا ڈیٹا:

دورانیہ پاور (W) کل کام (kJ)
3 منٹ (180s) 400W 72 kJ
5 منٹ (300s) 365W 109.5 kJ
12 منٹ (720s) 310W 223.2 kJ
20 منٹ (1200s) 285W 342 kJ

لکیری ریگریشن (Work = CP × Time + W') کے ذریعے:

  • CP = 270W (ریگریشن لائن کی ڈھلوان)
  • W' = 18.5 kJ (y-intercept)

JavaScript کوڈ:

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

  // لکیری ریگریشن: 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,      // واٹس
    Wprime: Math.round(Wprime * 10) / 10  // kJ
  };
}

// مثال:
const efforts = [
  {duration: 180, power: 400},
  {duration: 300, power: 365},
  {duration: 720, power: 310},
  {duration: 1200, power: 285}
];

const result = calculateCP_Linear(efforts);
// جواب: { CP: 270.0, Wprime: 18.5 }

6. W' بیلنس (W'bal)

فارمولے:

اخراج (جب P > CP):
W'exp(t) = ∫(P(t) - CP) dt
بحالی (جب 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

پہلی صورتحال - سخت حملہ:

  • سوار 30 سیکنڈ کے لیے 400W تک جاتا ہے
  • W' اخراج: (400 - 270) × 30 = 3,900 J = 3.9 kJ
  • باقی ماندہ W'bal: 18.5 - 3.9 = 14.6 kJ

دوسری صورتحال - بحالی:

  • حملے کے بعد، پاور 200W (CP سے 70W کم) پر 2 منٹ کے لیے آتی ہے
  • ΔCP = 270 - 200 = 70W
  • τ = 546 × e^(-0.01 × 70) + 316 = 588 سیکنڈ
  • 120 سیکنڈ میں بحالی: 18.5 × (1 - e^(-120/588)) = 3.5 kJ بحال ہوئے
  • نیا W'bal: 14.6 + 3.5 = 18.1 kJ

JavaScript کوڈ:

function calculateWbalance(powerData, CP, Wprime) {
  // powerData: {time: seconds, power: watts}
  let wbal = Wprime * 1000; // جولز میں تبدیلی
  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) {
      // CP سے زیادہ پاور کا استعمال
      const expenditure = (power - CP) * dt;
      wbal -= expenditure;
    } else {
      // 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;
    }

    // چیک کریں کہ W'bal حد سے باہر نہ جائے
    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;
}

// مثال:
const powerData = [
  {time: 0, power: 200},
  {time: 1, power: 210},
];

const wbalHistory = calculateWbalance(powerData, 270, 18.5);
// وقت کے ساتھ W'bal ویلیوز کا ایرے آئے گا

پرفارمنس മാനجمنٹ چارٹ (PMC)

7. CTL, ATL, TSB کا حساب کتاب

فارمولے:

CTL_today = CTL_yesterday + (TSS_today - CTL_yesterday) / 42
ATL_today = ATL_yesterday + (TSS_today - ATL_yesterday) / 7
TSB_today = CTL_yesterday - ATL_yesterday

تعریف (Metric Definitions):

  • CTL (Chronic Training Load): 42 دن کا اوسط—یہ آپ کی فٹنس (Fitness) کو ظاہر کرتا ہے
  • ATL (Acute Training Load): 7 دن کا اوسط—یہ آپ کی تھکاوٹ (Fatigue) کو ظاہر کرتا ہے
  • TSB (Training Stress Balance): فارم (Form) = فٹنس - تھکاوٹ

مثال (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 to -10 سخت ٹریننگ فٹنس بن رہی ہے، بحالی کا خیال رکھیں
-10 to +5 بہترین عام ٹریننگ زون
+5 to +15 ریس کے لیے تیار بہترین فارم—اس ہفتے ریس لگائیں
> +25 ڈی ٹریننگ فٹنس کم ہو رہی ہے - بوجھ بڑھائیں

JavaScript کوڈ:

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

  workouts.forEach(workout => {
    ctl = ctl + (workout.tss - ctl) / 42;
    atl = atl + (workout.tss - atl) / 7;
    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,
    });
  });

  return results;
}

پاور ٹو ویٹ اور چڑھائی کے میٹرکس

8. پاور ٹو ویٹ ریشو (W/kg)

فارمولا:

W/kg = Power (watts) / جسمانی وزن (kg)

FTP W/kg کے معیار:

سطح (Level) مرد W/kg خواتین W/kg زمرہ
تفریحی 2.5 - 3.5 2.0 - 3.0 فٹنس سوار
مقابلہ جاتی 3.5 - 4.5 3.0 - 4.0 Cat 3-4، ریس لگانے والے سوار
ایڈوانسڈ 4.5 - 5.5 4.0 - 5.0 Cat 1-2، مضبوط شوقیہ
ایلیٹ شوقیہ 5.5 - 6.0 5.0 - 5.5 قومی سطح
پروفیشنل 6.0 - 7.0+ 5.5 - 6.5+ ورلڈ ٹور، گرینڈ ٹور GC

مثال:

صورتحال: سائیکل سوار جس کا FTP = 275W اور وزن = 70kg ہے

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

مطالب: مقابلہ جاتی سطح، پہاڑی ریسوں کے لیے تیار

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

// مثال:
const wpkg = calculateWattsPerKg(275, 70);
// جواب: 3.93

9. VAM (Velocità Ascensionale Media)

فارمولا:

VAM (m/h) = بلندی کا اضافہ (m) / وقت (hours)

VAM کے معیار:

VAM (m/h) سطح (Level) مثال
600 - 900 تفریحی مقامی چڑھائی پر کلب سوار
900 - 1200 مقابلہ جاتی Alpe d'Huez پر اچھا شوقیہ سوار
1200 - 1500 ایلیٹ شوقیہ قومی سطح کا کلائمبر
1500 - 1800 پروفیشنل ورلڈ ٹور ڈومیسٹک
> 1800 گرینڈ ٹور فاتح پوگاچار، ونگے گارڈ بڑی چڑھائیوں پر

مثال:

صورتحال: Alpe d'Huez کی چڑھائی

  • بلندی کا اضافہ: 1100 میٹر
  • وقت: 55 منٹ = 0.917 گھنٹے
  • VAM = 1100 / 0.917 = 1200 m/h
function calculateVAM(elevationGainMeters, timeMinutes) {
  const hours = timeMinutes / 60;
  return Math.round(elevationGainMeters / hours);
}

// مثال:
const vam = calculateVAM(1100, 55);
// جواب: 1200 m/h

10. VAM سے W/kg کا تخمینہ

فارمولا:

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

مثال:

صورتحال: 8٪ گریڈینٹ والی چڑھائی، VAM = 1200 m/h

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

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

ایروڈائنامک پاور مساوات

11. کل پاور کی ضروریات

مکمل فارمولا:

P_total = (P_air + P_roll + P_grav) / (1 - drivetrain_loss)

اجزاء (Components):

  • P_air (ہوا کی مزاحمت): 0.5 × CdA × rho × v³
  • P_roll (رولنگ ریزسٹنس): Crr × m × g × v
  • P_grav (کشش ثقل - چڑھائی): m × g × slope × v

پیرامیٹرز:

  • CdA: ایروڈائنامک ڈریگ (عام طور پر روڈ بائیک پر ~0.3-0.4)
  • rho (ہوا کی کثافت): سمندر کی سطح پر 1.225 kg/m³
  • Crr: رولنگ ریزسٹنس کوایفیشنٹ (~0.005)
  • v: رفتار (میٹر فی سیکنڈ میں)
  • m: کل وزن (سوار + بائیک) کلوگرام میں
  • g: کشش ثقل کا اسراع (9.81 m/s²)

ان فارمولوں کا اطلاق کریں

بائیک اینالیٹکس ان تمام ریاضیاتی ماڈلز کو ایک آسان ایپ میں یکجا کرتی ہے تاکہ آپ کو ٹریننگ کے درست اعداد و شمار فراہم کر سکے۔