تکنیکی حوالہ جات اور فارمولے

مکمل ریاضیاتی نفاذ

نفاذ کی رہنمائی

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

⚠️ نفاذ کی یادداشتیں

  • تمام اوقات کو حساب کتاب کے لیے سیکنڈز میں تبدیل کیا جانا چاہیے
  • دوڑنے کی رفتار الٹی ہے (زیادہ % = سست رفتار)
  • ہمیشہ معقول حدود کے لیے ان پٹس کی توثیق کریں
  • کنارے کے معاملات سنبھالیں (صفر سے تقسیم، منفی اقدار)

بنیادی کارکردگی کی پیمائشیں

کریٹیکل رن سپیڈ (CRS)

فارمولہ:

CRS (m/s) = (D₂ - D₁) / (T₂ - T₁)
CRS Pace/100m (seconds) = (T₄₀₀ - T₂₀₀) / 2

🧪 انٹرایکٹو کیلکولیٹر - فارمولہ جانچیں

CRS پیس فی 100m:
1:49
حساب کتاب کے مراحل:
CRS (m/s) = (400 - 200) / (368 - 150) = 0.917 m/s
Pace/100m = 100 / 0.917 = 109 seconds = 1:49

JavaScript نفاذ:

function calculateCRS(distance1, time1, distance2, time2) {
  // Convert times to seconds if needed
  const t1 = typeof time1 === 'string' ? timeToSeconds(time1) : time1;
  const t2 = typeof time2 === 'string' ? timeToSeconds(time2) : time2;

  // Calculate CRS in m/s
  const css_ms = (distance2 - distance1) / (t2 - t1);

  // Calculate pace per 100m in seconds
  const pace_per_100m = 100 / css_ms;

  // Convert to mm:ss format
  const minutes = Math.floor(pace_per_100m / 60);
  const seconds = Math.round(pace_per_100m % 60);

  return {
    css_ms: css_ms,
    pace_seconds: pace_per_100m,
    pace_formatted: `${minutes}:${seconds.toString().padStart(2, '0')}`
  };
}

// Example usage:
const result = calculateCRS(200, 150, 400, 368);
// Returns: { css_ms: 0.917, pace_seconds: 109, pace_formatted: "1:49" }

رن ٹریننگ سٹریس سکور (sTSS)

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

sTSS = (IF³) × Duration (hours) × 100
IF = NSS / FTP
NSS = Total Distance / Total Time (m/min)

🧪 انٹرایکٹو کیلکولیٹر - فارمولہ جانچیں

محسوب شدہ sTSS:
55
حساب کتاب کے مراحل:
NSS = 3000m / 55min = 54.5 m/min
FTP = 100 / (93/60) = 64.5 m/min
IF = 54.5 / 64.5 = 0.845
sTSS = 0.845³ × (55/60) × 100 = 55

JavaScript نفاذ:

function calculateSTSS(distance, timeMinutes, ftpMetersPerMin) {
  // Calculate Normalized Run Speed
  const nss = distance / timeMinutes;

  // Calculate Intensity Factor
  const intensityFactor = nss / ftpMetersPerMin;

  // Calculate hours
  const hours = timeMinutes / 60;

  // Calculate sTSS using cubed intensity factor
  const stss = Math.pow(intensityFactor, 3) * hours * 100;

  return Math.round(stss);
}

// Example usage:
const stss = calculateSTSS(3000, 55, 64.5);
// Returns: 55

// Helper: Convert CRS to FTP
function cssToFTP(cssPacePer100mSeconds) {
  // FTP in m/min = 100m / (pace in minutes)
  return 100 / (cssPacePer100mSeconds / 60);
}

// Example: CRS of 1:33 (93 seconds)
const ftp = cssToFTP(93); // Returns: 64.5 m/min

رننگ کارکردگی

فارمولہ:

Running Efficiency = Kilometer Time (seconds) + Stride Count
Running Efficiency₂₅ = (Time × 25/Track Length) + (Strides × 25/Track Length)

🧪 انٹرایکٹو کیلکولیٹر - فارمولہ جانچیں

رننگ کارکردگی سکور:
35
حساب کتاب:
Running Efficiency = 20s + 15 strides = 35

JavaScript نفاذ:

function calculateRunning Efficiency(timeSeconds, strideCount) {
  return timeSeconds + strideCount;
}

function calculateNormalizedRunning Efficiency(timeSeconds, strideCount, trackLength) {
  const normalizedTime = timeSeconds * (25 / trackLength);
  const normalizedStrides = strideCount * (25 / trackLength);
  return normalizedTime + normalizedStrides;
}

// Example:
const swolf = calculateRunning Efficiency(20, 15);
// Returns: 35

const swolf50m = calculateNormalizedRunning Efficiency(40, 30, 50);
// Returns: 35 (normalized to 25m)

قدموں کی میکینکس

سٹرائیڈ ریٹ (SR)

فارمولہ:

SR = 60 / Cycle Time (seconds)
SR = (Number of Strides / Time in seconds) × 60

🧪 انٹرایکٹو کیلکولیٹر - فارمولہ جانچیں

سٹرائیڈ ریٹ (SPM):
72
حساب کتاب:
SR = (30 / 25) × 60 = 72 SPM

JavaScript نفاذ:

function calculateStrideRate(strideCount, timeSeconds) {
  return (strideCount / timeSeconds) * 60;
}

// Example:
const sr = calculateStrideRate(30, 25);
// Returns: 72 SPM

فی قدم فاصلہ (DPS)

فارمولہ:

DPS = Distance / Stride Count
DPS = Distance / (SR / 60)

JavaScript نفاذ:

function calculateDPS(distance, strideCount, pushoffDistance = 0) {
  const effectiveDistance = distance - pushoffDistance;
  return effectiveDistance / strideCount;
}

// Example (25m track, 5m push-off):
const dps = calculateDPS(25, 12, 5);
// Returns: 1.67 m/stride

// For multiple segments:
const dps100m = calculateDPS(100, 48, 4 * 5);
// Returns: 1.67 m/stride (4 segments × 5m push-off)

SR اور DPS سے رفتار

فارمولہ:

Velocity (m/s) = (SR / 60) × DPS

JavaScript نفاذ:

function calculateVelocity(strideRate, dps) {
  return (strideRate / 60) * dps;
}

// Example:
const velocity = calculateVelocity(70, 1.6);
// Returns: 1.87 m/s

سٹرائیڈ انڈیکس (SI)

فارمولہ:

SI = Velocity (m/s) × DPS (m/stride)

JavaScript نفاذ:

function calculateStrideIndex(velocity, dps) {
  return velocity * dps;
}

// Example:
const si = calculateStrideIndex(1.5, 1.7);
// Returns: 2.55

پرفارمنس مینجمنٹ چارٹ (PMC)

CTL، ATL، TSB حساب کتاب

فارمولے:

CTL today = CTL yesterday + (TSS today - CTL yesterday) × (1/42)
ATL today = ATL yesterday + (TSS today - ATL yesterday) × (1/7)
TSB = CTL yesterday - ATL yesterday

JavaScript نفاذ:

function updateCTL(previousCTL, todayTSS) {
  return previousCTL + (todayTSS - previousCTL) * (1/42);
}

function updateATL(previousATL, todayTSS) {
  return previousATL + (todayTSS - previousATL) * (1/7);
}

function calculateTSB(yesterdayCTL, yesterdayATL) {
  return yesterdayCTL - yesterdayATL;
}

// Calculate PMC for series of workouts
function calculatePMC(workouts) {
  let ctl = 0, atl = 0;
  const results = [];

  workouts.forEach(workout => {
    ctl = updateCTL(ctl, workout.tss);
    atl = updateATL(atl, workout.tss);
    const tsb = calculateTSB(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;
}

// Example usage:
const workouts = [
  { date: '2025-01-01', tss: 50 },
  { date: '2025-01-02', tss: 60 },
  { date: '2025-01-03', tss: 45 },
  // ... more workouts
];

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

جدید حساب کتاب

متعدد فاصلوں سے CRS (ریگریشن طریقہ)

JavaScript نفاذ:

function calculateCRSRegression(distances, times) {
  // Linear regression: distance = a + b*time
  const n = distances.length;
  const sumX = times.reduce((a, b) => a + b, 0);
  const sumY = distances.reduce((a, b) => a + b, 0);
  const sumXY = times.reduce((sum, x, i) => sum + x * distances[i], 0);
  const sumXX = times.reduce((sum, x) => sum + x * x, 0);

  const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
  const intercept = (sumY - slope * sumX) / n;

  return {
    css: slope, // Critical running velocity (m/s)
    anaerobic_capacity: intercept // Anaerobic distance capacity (m)
  };
}

// Example with multiple test distances:
const distances = [100, 200, 400, 800];
const times = [65, 150, 340, 720]; // in seconds
const result = calculateCRSRegression(distances, times);
// Returns: { css: 1.18, anaerobic_capacity: 15.3 }

پیس سے انٹینسٹی فیکٹر

JavaScript نفاذ:

function calculateIntensityFactor(actualPace100m, thresholdPace100m) {
  // Convert pace to speed (m/s)
  const actualSpeed = 100 / actualPace100m;
  const thresholdSpeed = 100 / thresholdPace100m;
  return actualSpeed / thresholdSpeed;
}

// Example:
const if_value = calculateIntensityFactor(110, 93);
// Returns: 0.845 (running at 84.5% of threshold)

پیس کی مستقل مزاجی کا تجزیہ

JavaScript نفاذ:

function analyzePaceConsistency(segments) {
  const paces = segments.map(kilometer => kilometer.distance / kilometer.time);
  const avgPace = paces.reduce((a, b) => a + b) / paces.length;

  const variance = paces.reduce((sum, pace) =>
    sum + Math.pow(pace - avgPace, 2), 0) / paces.length;
  const stdDev = Math.sqrt(variance);
  const coefficientOfVariation = (stdDev / avgPace) * 100;

  return {
    avgPace,
    stdDev,
    coefficientOfVariation,
    consistency: coefficientOfVariation < 5 ? "Excellent" :
                 coefficientOfVariation < 10 ? "Good" :
                 coefficientOfVariation < 15 ? "Moderate" : "Variable"
  };
}

// Example:
const segments = [
  { distance: 100, time: 70 },
  { distance: 100, time: 72 },
  { distance: 100, time: 71 },
  // ...
];
const analysis = analyzePaceConsistency(segments);
// Returns: { avgPace: 1.41, stdDev: 0.02, coefficientOfVariation: 1.4, consistency: "Excellent" }

قدموں کی تعداد سے تھکاوٹ کا پتہ لگانا

JavaScript نفاذ:

function detectFatigue(segments) {
  const firstThird = segments.slice(0, Math.floor(segments.length/3));
  const lastThird = segments.slice(-Math.floor(segments.length/3));

  const firstThirdAvg = firstThird.reduce((sum, kilometer) =>
    sum + kilometer.strideCount, 0) / firstThird.length;
  const lastThirdAvg = lastThird.reduce((sum, kilometer) =>
    sum + kilometer.strideCount, 0) / lastThird.length;

  const strideCountIncrease = ((lastThirdAvg - firstThirdAvg) / firstThirdAvg) * 100;

  return {
    firstThirdAvg: Math.round(firstThirdAvg * 10) / 10,
    lastThirdAvg: Math.round(lastThirdAvg * 10) / 10,
    percentIncrease: Math.round(strideCountIncrease * 10) / 10,
    fatigueLevel: strideCountIncrease < 5 ? "Minimal" :
                  strideCountIncrease < 10 ? "Moderate" :
                  strideCountIncrease < 20 ? "Significant" : "Severe"
  };
}

// Example:
const segments = [
  { strideCount: 14 }, { strideCount: 14 }, { strideCount: 15 },
  { strideCount: 15 }, { strideCount: 16 }, { strideCount: 16 },
  { strideCount: 17 }, { strideCount: 18 }, { strideCount: 18 }
];
const fatigue = detectFatigue(segments);
// Returns: { firstThirdAvg: 14.3, lastThirdAvg: 17.7, percentIncrease: 23.8, fatigueLevel: "Severe" }

ڈیٹا کی توثیق

ورکآؤٹ ڈیٹا کوالٹی چیکس

JavaScript نفاذ:

function validateWorkoutData(workout) {
  const issues = [];

  // Check for reasonable pace ranges (1:00-5:00 per 100m)
  const avgPace = (workout.totalTime / workout.totalDistance) * 100;
  if (avgPace < 60 || avgPace > 300) {
    issues.push(`Unusual average pace: ${Math.round(avgPace)}s per 100m`);
  }

  // Check for reasonable stride counts (10-50 per 25m)
  const avgStridesPer25m = (workout.totalStrides / workout.totalDistance) * 25;
  if (avgStridesPer25m < 10 || avgStridesPer25m > 50) {
    issues.push(`Unusual stride count: ${Math.round(avgStridesPer25m)} per 25m`);
  }

  // Check for reasonable stride rate (30-150 SPM)
  const avgSR = calculateStrideRate(workout.totalStrides, workout.totalTime);
  if (avgSR < 30 || avgSR > 150) {
    issues.push(`Unusual stride rate: ${Math.round(avgSR)} SPM`);
  }

  // Check for missing segments (gaps in time)
  if (workout.segments && workout.segments.length > 1) {
    for (let i = 1; i < workout.segments.length; i++) {
      const gap = workout.segments[i].startTime -
                  (workout.segments[i-1].startTime + workout.segments[i-1].duration);
      if (gap > 300) { // 5 minute gap
        issues.push(`Large gap detected between segments ${i} and ${i+1}`);
      }
    }
  }

  return {
    isValid: issues.length === 0,
    issues
  };
}

// Example:
const workout = {
  totalDistance: 2000,
  totalTime: 1800, // 30 minutes
  totalStrides: 800,
  segments: [/* kilometer data */]
};
const validation = validateWorkoutData(workout);
// Returns: { isValid: true, issues: [] }

معاون افعال

وقت کی تبدیلی کی افادیتیں

JavaScript نفاذ:

// Convert mm:ss to seconds
function timeToSeconds(timeString) {
  const parts = timeString.split(':');
  return parseInt(parts[0]) * 60 + parseInt(parts[1]);
}

// Convert seconds to mm:ss
function secondsToTime(seconds) {
  const minutes = Math.floor(seconds / 60);
  const secs = Math.round(seconds % 60);
  return `${minutes}:${secs.toString().padStart(2, '0')}`;
}

// Convert seconds to hh:mm:ss
function secondsToTimeDetailed(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')}`;
}

// Examples:
timeToSeconds("1:33"); // Returns: 93
secondsToTime(93); // Returns: "1:33"
secondsToTimeDetailed(3665); // Returns: "1:01:05"

نفاذ کے وسائل

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

💡 بہترین طریقے

  • ان پٹس کی توثیق کریں: حساب سے پہلے معقول حدود کی جانچ کریں
  • کنارے کے معاملات سنبھالیں: صفر سے تقسیم، منفی اقدار، خالی ڈیٹا
  • مناسب طریقے سے راؤنڈ کریں: CTL/ATL/TSB کو 1 اعشاریہ، sTSS کو عدد صحیح
  • درستگی محفوظ کریں: ڈیٹا بیس میں مکمل درستگی رکھیں، ڈسپلے کے لیے راؤنڈ کریں
  • مکمل طور پر جانچ کریں: حساب کتاب کی تصدیق کے لیے معلوم اچھے ڈیٹا استعمال کریں