প্রযুক্তিগত রেফারেন্স এবং ফর্মুলা

সম্পূর্ণ গাণিতিক বাস্তবায়ন

বাস্তবায়ন গাইড

এই পৃষ্ঠাটি সমস্ত Run Analytics মেট্রিক্সের জন্য কপি-পেস্ট ফর্মুলা এবং ধাপে ধাপে গণনা পদ্ধতি প্রদান করে। কাস্টম বাস্তবায়ন, যাচাইকরণ বা গভীর বোঝার জন্য এগুলি ব্যবহার করুন।

⚠️ বাস্তবায়ন নোট

  • গণনার জন্য সমস্ত সময় সেকেন্ডে রূপান্তর করা উচিত
  • দৌড়ানোর গতি বিপরীতমুখী (উচ্চ % = ধীর গতি)
  • সর্বদা যুক্তিসঙ্গত রেঞ্জের জন্য ইনপুট যাচাই করুন
  • এজ কেস পরিচালনা করুন (শূন্য দ্বারা ভাগ, ঋণাত্মক মান)

মূল পারফরম্যান্স মেট্রিক্স

ক্রিটিক্যাল রান স্পিড (CRS)

ফর্মুলা:

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

🧪 ইন্টারঅ্যাক্টিভ ক্যালকুলেটর - ফর্মুলাটি পরীক্ষা করুন

CRS প্রতি ১০০মি গতি:
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" }

রান ট্রেনিং স্ট্রেস স্কোর (rTSS)

সম্পূর্ণ ফর্মুলা:

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

🧪 ইন্টারঅ্যাক্টিভ ক্যালকুলেটর - ফর্মুলাটি পরীক্ষা করুন

গণনাকৃত rTSS:
55
গণনার ধাপ:
NSS = 3000m / 55min = 54.5 m/min
FTP = 100 / (93/60) = 64.5 m/min
IF = 54.5 / 64.5 = 0.845
rTSS = 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 rTSS using squared intensity factor
  const stss = Math.pow(intensityFactor, 2) * hours * 100;

  return Math.round(stss);
}

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

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

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

দৌড়ানোর দক্ষতা

ফর্মুলা:

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

🧪 ইন্টারঅ্যাক্টিভ ক্যালকুলেটর - ফর্মুলাটি পরীক্ষা করুন

দৌড়ানোর দক্ষতা স্কোর:
35
গণনা:
rTSS Calculation = 20s + 15 strides = 35

JavaScript বাস্তবায়ন:

function calculaterTSS Calculation(timeSeconds, strideCount) {
  return timeSeconds + strideCount;
}

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

// Example:
const rtss = calculaterTSS Calculation(20, 15);
// Returns: 35

const rtss400m = calculateNormalizedrTSS Calculation(40, 30, 50);
// Returns: 35 (normalized to 400m)

চলমান স্ট্রাইড মেকানিক্স

স্ট্রাইড রেট (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 (400m 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 400m)
  const avgStridesPer400m = (workout.totalStrides / workout.totalDistance) * 25;
  if (avgStridesPer400m < 10 || avgStridesPer400m > 50) {
    issues.push(`Unusual stride count: ${Math.round(avgStridesPer400m)} per 400m`);
  }

  // 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 ১ দশমিক পর্যন্ত, sTSS পূর্ণসংখ্যা পর্যন্ত
  • নির্ভুলতা সংরক্ষণ করুন: ডাটাবেসে সম্পূর্ণ নির্ভুলতা রাখুন, প্রদর্শনের জন্য রাউন্ড করুন
  • পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন: গণনা যাচাই করতে পরিচিত-ভাল ডেটা ব্যবহার করুন

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.

প্রযুক্তিগত রেফারেন্স এবং ফর্মুলা

সম্পূর্ণ গাণিতিক বাস্তবায়ন. প্রযুক্তিগত রেফারেন্স এবং ফর্মুলা প্রযুক্তিগত রেফারেন্স এবং ফর্মুলা প্রযুক্তিগত রেফারেন্স এবং ফর্মুলা

  • 2026-02-20
  • CRS ফর্মুলা · sTSS গণনা · CTL ATL TSB সমীকরণ · রানিং ক্যালকুলেশন · গাণিতিক মডেল
  • গ্রন্থপঞ্জি