ឯកសារយោង និងរូបមន្ត
ការអនុវត្តន៍គណិតវិទ្យាពេញលេញ
ការណែនាំអំពីការអនុវត្ត
ទំព័រនេះផ្តល់នូវរូបមន្តចម្លងបិទភ្ជាប់ និងវិធីសាស្ត្រគណនាជាជំហានៗសម្រាប់ដំណើរការទាំងអស់។ ម៉ែត្រវិភាគ។ ប្រើវាសម្រាប់ការអនុវត្តផ្ទាល់ខ្លួន ការផ្ទៀងផ្ទាត់ ឬការយល់ដឹងកាន់តែស៊ីជម្រៅ។
⚠️ កំណត់ចំណាំការអនុវត្ត
- ពេលវេលាទាំងអស់គួរតែត្រូវបានបំប្លែងទៅជាវិនាទីសម្រាប់ការគណនា
- rTSS ការគណនាប្រើកត្តាអាំងតង់ស៊ីតេការេ (IF²)
- តែងតែធ្វើឱ្យធាតុចូលមានសុពលភាពសម្រាប់ជួរសមហេតុផល
- ដោះស្រាយករណីគែម (ចែកដោយសូន្យ តម្លៃអវិជ្ជមាន)
សូចនាករការអនុវត្តស្នូល
ល្បឿនរត់សំខាន់ (CRS)
រូបមន្ត៖
CRS (m/s) = (D₂ - D₁) / (T₂ - T₁)
CRS ល្បឿន (នាទី/គីឡូម៉ែត្រ) = 16.667 / CRS (m/s)
🧪 ការគណនាអន្តរកម្ម - សាកល្បងរូបមន្ត
CRS ល្បឿន (នាទី/គីឡូម៉ែត្រ)៖
4:17
ជំហានគណនា៖
CRS (m/s) = (3600 - 1200) / (900 - 270) = 3.81 m/s
ល្បឿន (នាទី/គីឡូម៉ែត្រ) = 1000 / 3.81 = 262 វិនាទី = 4:22
CRS (m/s) = (3600 - 1200) / (900 - 270) = 3.81 m/s
ល្បឿន (នាទី/គីឡូម៉ែត្រ) = 1000 / 3.81 = 262 វិនាទី = 4:22
ការអនុវត្ត JavaScript៖
មុខងារគណនាCRS(ចម្ងាយ1,ពេលវេលា1,ចម្ងាយ2,ពេលវេលា2) {
// បំលែងពេលវេលាទៅជាវិនាទី
const t1 = typeof time1 === 'string' ? timeToSeconds(time1): time1;
const t2 = typeof time2 === 'string' ? timeToSeconds(time2): time2;
// គណនាល្បឿន CRS ក្នុង m/s
const crs_ms = (ចម្ងាយ 2 - ចម្ងាយ1) / (t2 - t1);
// គណនាល្បឿនក្នុងមួយគីឡូម៉ែត្រគិតជាវិនាទី
const pace_per_km = 1000 / crs_ms;
// បំលែងទៅជាទម្រង់ mm:ss
នាទី const = Math.floor(pace_per_km / 60);
const វិនាទី = Math.round(pace_per_km % 60);
ត្រឡប់ {
ល្បឿន_ms៖ crs_ms,
pace_seconds៖ pace_per_km,
pace_formatted៖ `${minutes}:${seconds.toString().padStart(2, '0')}`
};
}
ការរត់ពិន្ទុភាពតានតឹង (rTSS)
រូបមន្តពេញលេញ៖
rTSS= (IF²) × រយៈពេល (ម៉ោង) × 100
IF = NSS / ល្បឿនកំណត់
NSS = ចម្ងាយសរុប / ពេលវេលាសរុប (m/min)
🧪 ការគណនាអន្តរកម្ម - សាកល្បងរូបមន្ត
គណនា rTSS៖
៣១
ជំហានគណនា៖
NSS = 5000m / 25min = 200 m/min
FTP = 1000 / (255/60) = 235.3 m/min
IF = 200 / 235.3 = 0.850
rTSS = 0.850² × (25/60) × 100 = 31
NSS = 5000m / 25min = 200 m/min
FTP = 1000 / (255/60) = 235.3 m/min
IF = 200 / 235.3 = 0.850
rTSS = 0.850² × (25/60) × 100 = 31
ការអនុវត្ត JavaScript៖
មុខងារគណនាRTSS(ចម្ងាយ, ពេលវេលានាទី, ftpMetersPerMin) {
// គណនាល្បឿនរត់ធម្មតា។
const nss = ចម្ងាយ / ម៉ោងនាទី;
// គណនាកត្តាអាំងតង់ស៊ីតេ
const intensityFactor = nss / ftpMetersPerMin;
// គណនាម៉ោង
ម៉ោង const = timeminutes / 60;
// គណនា rTSS ដោយប្រើកត្តាអាំងតង់ស៊ីតេ quadratic
const rtss = Math.pow(អាំងតង់ស៊ីតេកត្តា, 2) * ម៉ោង * 100;
ត្រឡប់ Math.round(rtss);
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
const rtss = គណនាRTSS(3000, 55, 64.5);
// ត្រឡប់ៈ ៦៥
// អ្នកជំនួយ៖ បំប្លែង CRS ល្បឿនទៅល្បឿនរត់ (m/min)
មុខងារ crsPaceToSpeed(crsPacePerKmSeconds) {
// ល្បឿនក្នុង m/min = 1000m / (ល្បឿនក្នុងមួយនាទី)
ត្រឡប់ 1000 / (crsPacePerKmSeconds / 60);
}
// ឧទាហរណ៍៖ CRS នៃ 4:15 (255 វិនាទី)
ល្បឿន const = crsPaceToSpeed(255); // ត្រឡប់: 235.3 m/min
ប្រសិទ្ធភាពជីវមេកានិច៖ សមាមាត្របញ្ឈរ
រូបមន្ត៖
Vertical Ratio (%) = (Vertical Oscillation ÷ Stride Length) × 100
🧪 ការគណនាអន្តរកម្ម - សាកល្បងរូបមន្ត
សមាមាត្របញ្ឈរ៖
7.4%
ការគណនា៖
សមាមាត្របញ្ឈរ = (8.5 / 115) × 100 = 7.4%
សមាមាត្របញ្ឈរ = (8.5 / 115) × 100 = 7.4%
ការអនុវត្ត JavaScript៖
អនុគមន៍គណនាVerticalRatio(oscillationCm, strideLengthCm) {
ត្រឡប់ (oscillationCm / strideLengthCm) * 100;
}
មុខងារគណនាEfficiencyFactor(paceMetersPerMin, avgHeartRate) {
ត្រឡប់ paceMetersPerMin / avgHeartRate;
}
មេកានិកស្ទ្រីម
អត្រាបោះជំហាន (SR)
រូបមន្ត៖
SR = 60 / ពេលវេលាវដ្ត (វិនាទី)
SR = (ចំនួនជំហាន/ពេលវេលាគិតជាវិនាទី) × 60
🧪 ការគណនាអន្តរកម្ម - សាកល្បងរូបមន្ត
Cadence (SPM):
១៨០
ការគណនា៖
Cadence = (180/60) × 60 = 180 SPM
Cadence = (180/60) × 60 = 180 SPM
ការអនុវត្ត JavaScript៖
មុខងារគណនាCadence(ចំនួនជំហាន, វិនាទី) {
ត្រឡប់ (stepCount / timeSeconds) * 60;
}
// ឧទាហរណ៍៖
const spm = គណនាCadence(180, 60);
// ត្រឡប់៖ 180 SPM
ប្រវែងជើង
រូបមន្ត៖
ប្រវែងជំហាន = ចម្ងាយ / (ជំហានរាប់ / 2)
ប្រវែងជំហាន = ល្បឿន / (Cadence / 120)
ការអនុវត្ត JavaScript៖
អនុគមន៍គណនាប្រវែងខ្សែប្រវែង (ចម្ងាយម៉ែត្រ, ចំនួនជំហាន) {
// ប្រវែងជំហានគឺចម្ងាយ / ចំនួននៃជំហានជំហាន (ឆ្វេង + ស្តាំ)
ត្រឡប់ចម្ងាយម៉ែត្រ / (stepCount / 2);
}
// ឧទាហរណ៍ (1000m, 800 ជំហាន):
const strideLength = គណនាStrideLength(1000, 800);
// ត្រឡប់ៈ 2.50 ម៉ែត្រក្នុងមួយជំហាន
ល្បឿនពី SR និង DPS
រូបមន្ត៖
ល្បឿន (m/s) = (SR/60) × DPS
ការអនុវត្ត JavaScript៖
មុខងារគណនាល្បឿន(strideRate, dps) {
ត្រឡប់ (strideRate / 60) * dps;
}
// ឧទាហរណ៍៖
const velocity = គណនាល្បឿន(70, 1.6);
// ត្រឡប់: 1.87 m/s
Stride Index (SI)
រូបមន្ត៖
SI = ល្បឿន (m/s) × DPS (m/stride)
ការអនុវត្ត JavaScript៖
មុខងារគណនាStrideIndex(ល្បឿន, dps) {
ល្បឿនត្រឡប់ * dps;
}
// ឧទាហរណ៍៖
const si = គណនាStrideIndex(1.5, 1.7);
// ត្រឡប់៖ 2.55
តារាងគ្រប់គ្រងការអនុវត្ត (PMC)
CTL, ATL, TSB ការគណនា
រូបមន្ត៖
CTL ថ្ងៃនេះ = CTL ម្សិលមិញ + (TSS ថ្ងៃនេះ - CTL ម្សិលមិញ) × (1/42)
ATL ថ្ងៃនេះ = ATL ម្សិលមិញ + (TSS ថ្ងៃនេះ - ATL ម្សិលមិញ) × (1/7)
TSB= CTL ម្សិលមិញ - ATL ម្សិលមិញ
ការអនុវត្ត JavaScript៖
មុខងារអាប់ដេតCTL(ពីមុនCTL, todayTSS) {
ត្រឡប់ PreviousCTL + (ថ្ងៃនេះTSS - PreviousCTL) * (1/42);
}
មុខងារអាប់ដេតATL(ពីមុនATL, todayTSS) {
ត្រឡប់ PreviousATL + (ថ្ងៃនេះTSS - PreviousATL) * (1/7);
}
មុខងារគណនាTSB(ម្សិលមិញCTL, ម្សិលមិញATL) {
ត្រឡប់ម្សិលមិញCTL - ម្សិលមិញATL;
}
// គណនា PMC សម្រាប់ស៊េរីនៃការហាត់ប្រាណ
មុខងារគណនាPMC(ការហាត់ប្រាណ) {
អនុញ្ញាតឱ្យ ctl = 0, atl = 0;
លទ្ធផល const = [];
workouts.forEach(ហាត់ប្រាណ => {
ctl = updateCTL(ctl, workout.tss);
atl = updateATL(atl, workout.tss);
const tsb = គណនាTSB(ctl, atl);
results.push({
កាលបរិច្ឆេទ៖ workout.date,
tss: workout.tss,
ctl: Math.round(ctl * 10) / 10,
atl: Math.round(atl * 10) / 10,
tsb: Math.round(tsb * 10) / 10
});
});
លទ្ធផលត្រឡប់មកវិញ;
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
លំហាត់ const = [
{ កាលបរិច្ឆេទ៖ '2025-01-01', tss: 50 },
{ កាលបរិច្ឆេទ៖ '2025-01-02', tss: 60 },
{កាលបរិច្ឆេទ៖ '2025-01-03', tss: 45 },
// ... លំហាត់ច្រើនទៀត
];
const pmc = គណនាPMC(ការហាត់ប្រាណ);
// ត្រឡប់អារេជាមួយ CTL, ATL, TSB សម្រាប់មួយថ្ងៃៗ
ការគណនាកម្រិតខ្ពស់
CRS ពីចម្ងាយច្រើន (វិធីសាស្ត្រតំរែតំរង់)
ការអនុវត្ត JavaScript៖
មុខងារគណនាCRRSRegression(ចម្ងាយ, ដង) {
// តំរែតំរង់លីនេអ៊ែរ៖ ចម្ងាយ = a + b * ពេលវេលា
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 ជម្រាល = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
const intercept = (sumY - ជម្រាល * sumX) / n;
ត្រឡប់ {
crs: ជម្រាល // ល្បឿនដំណើរការសំខាន់ (m/s)
សមត្ថភាព anaerobic: ស្ទាក់ចាប់ // សមត្ថភាពចំងាយ anaerobic (m)
};
}
// ឧទាហរណ៍ជាមួយចម្ងាយសាកល្បងច្រើន៖
ចម្ងាយ const = [100, 200, 400, 800];
const ដង = [65, 150, 340, 720]; // នៅក្នុងវិនាទី
លទ្ធផល const = គណនាCRRSRegression(ចម្ងាយ, ដង);
// ត្រឡប់៖ { crs: 1.18, anaerobic_capacity: 15.3 }
កត្តាអាំងតង់ស៊ីតេពីផេស
ការអនុវត្ត JavaScript៖
មុខងារគណនាIntensityFactor(actualPaceMinKm, thresholdPaceMinKm) {
// បំលែងខ្សែអក្សរល្បឿន "mm:ss" ទៅជាវិនាទីបើចាំបាច់
const actualSecs = typeof actualPaceMinKm === 'ខ្សែអក្សរ' ? timeToSeconds(actualPaceMinKm) : realPaceMinKm;
const thresholdSecs = typeof thresholdPaceMinKm === 'string' ? timeToSeconds(thresholdPaceMinKm) : thresholdPaceMinKm;
// IF គឺជាកម្រិតចាប់ផ្ដើម / ល្បឿនពិត (ល្បឿនលឿន = តម្លៃវិនាទីតូចជាង)
ត្រឡប់ thresholdSecs / realSecs;
}
// ឧទាហរណ៍៖
const if_value = គណនាIntensityFactor("4:45", "4:15");
// ត្រឡប់៖ 0.895 (ដំណើរការនៅ 89.5% នៃកម្រិត)
Pace Consistency Analysis
ការអនុវត្ត JavaScript៖
ការវិភាគមុខងារPaceConsistency(ផ្នែក) {
const paces = segments.map(km => kilometer.distance / kilometer.time);
const avgPace = paces.reduce((a, b) => a + b) / paces.length;
const variance = paces.reduce((sum, pace) =>
ផលបូក + Math.pow(pace - avgPace, 2), 0) / paces.length;
const stdDev = Math.sqrt(វ៉ារ្យង់);
const coefficientOfVariation = (stdDev / avgPace) * 100;
ត្រឡប់ {
avgPace,
stdDev,
មេគុណបំរែបំរួល,
ភាពជាប់លាប់៖ coefficientOfVariation < 5 ? "ល្អឥតខ្ចោះ":
coefficientOfVariation < 10 ? "ល្អ":
coefficientOfVariation < 15 ? "មធ្យម": "អថេរ"
};
}
// ឧទាហរណ៍៖
ផ្នែក const = [
{ ចម្ងាយ៖ ១០០, ពេលវេលា៖ ៧០ },
{ ចម្ងាយ៖ ១០០, ពេលវេលា៖ ៧២ },
{ ចម្ងាយ៖ ១០០, ពេលវេលា៖ ៧១ },
//...
];
const analysis = វិភាគPaceConsistency(segments);
// ត្រឡប់៖ { avgPace: 1.41, stdDev: 0.02, coefficientOfVariation: 1.4, ភាពស៊ីសង្វាក់គ្នា៖ "ល្អឥតខ្ចោះ" }
ការរកឃើញភាពអស់កម្លាំងពីប្រសិទ្ធភាពនៃជំហាន
ការអនុវត្ត JavaScript៖
មុខងាររកឃើញភាពអស់កម្លាំង (ផ្នែក) {
// ប្រៀបធៀបសមាមាត្របញ្ឈរនៃផ្នែកទីមួយ និងចុងក្រោយ
const firstSegment = ចម្រៀក[0];
const lastSegment = ចម្រៀក[segments.length - 1];
const ratioIncrease = lastSegment.verticalRatio - firstSegment.verticalRatio;
ត្រឡប់ {
សមាមាត្រចាប់ផ្តើម៖ firstSegment.verticalRatio,
សមាមាត្រចុងក្រោយ៖ lastSegment.verticalRatio,
ការកើនឡើង៖ Math.round(សមាមាត្របង្កើន * 10) / 10,
ភាពអស់កម្លាំងកម្រិត៖ សមាមាត្រកើនឡើង < 0.2 ? "អប្បបរមា"៖
សមាមាត្រកើនឡើង < 0.5 ? "មធ្យម"៖
សមាមាត្រកើនឡើង < 1.0 ? "សំខាន់": "ធ្ងន់ធ្ងរ"
};
}
// ឧទាហរណ៍៖
ផ្នែក const = [
{ verticalRatio: 7.2 }, { verticalRatio: 7.3 }, { verticalRatio: 8.1 }
];
const fatigue = រកឃើញភាពអស់កម្លាំង(ផ្នែក);
// ត្រឡប់៖ { startRatio: 7.2, endRatio: 8.1, កើនឡើង: 0.9, fatigueLevel: "Significant" }
សុពលភាពទិន្នន័យ
ការត្រួតពិនិត្យគុណភាពទិន្នន័យ Workout
ការអនុវត្ត JavaScript៖
មុខងារ validateWorkoutData (ហាត់ប្រាណ) {
បញ្ហា const = [];
// ពិនិត្យមើលជួរល្បឿនសមហេតុផល (3:00-8:00 ក្នុងមួយគីឡូម៉ែត្រ)
const avgPaceSecs = workout.totalTime / (workout.totalDistance / 1000);
ប្រសិនបើ (avgPaceSecs < 180 || avgPaceSecs > 480) {
issue.push(`ល្បឿនមធ្យមមិនធម្មតា៖ ${Math.round(avgPaceSecs)}s ក្នុងមួយគីឡូម៉ែត្រ`);
}
// ពិនិត្យរកសមាមាត្របញ្ឈរសមហេតុផល (4% - 15%)
ប្រសិនបើ (workout.avgVerticalRatio < 4 || workout.avgVerticalRatio > 15) {
issues.push(`សមាមាត្របញ្ឈរមិនធម្មតា៖ ${workout.avgVerticalRatio}%`);
}
// ពិនិត្យមើលចង្វាក់ដែលសមហេតុផល (120-220 SPM)
const avgCadence = គណនាCadence(workout.totalSteps, workout.totalTime);
ប្រសិនបើ (avgCadence < 120 || avgCadence > 220) {
issues.push(`Unusual cadence: ${Math.round(avgCadence)} SPM`);
}
// ពិនិត្យមើលផ្នែកដែលបាត់ (ចន្លោះពេល)
ប្រសិនបើ (workout.segments && workout.segments.length > 1) {
សម្រាប់ (អនុញ្ញាតឱ្យ i = 1; i < workout.segments.length; i++) {
const gap = workout.segments[i].startTime -
(workout.segments[i-1].startTime + workout.segments[i-1].duration);
ប្រសិនបើ (គម្លាត> 300) { // គម្លាត 5 នាទី។
issue.push(`គម្លាតធំត្រូវបានរកឃើញរវាងផ្នែក ${i} និង ${i+1}`);
}
}
}
ត្រឡប់ {
isValid: issues.length === 0,
បញ្ហា
};
}
// ឧទាហរណ៍៖
const workout = {
ចម្ងាយសរុប៖ ២០០០,
ពេលវេលាសរុប: 1800, // 30 នាទី។
សរុប៖ ៨០០,
ផ្នែក៖ [/* ទិន្នន័យគីឡូម៉ែត្រ */]
};
const validation = validateWorkoutData(ការហាត់ប្រាណ);
// ត្រឡប់៖ { ត្រឹមត្រូវ៖ ពិត បញ្ហា៖ [] }
មុខងារជំនួយ
ឧបករណ៍បំប្លែងពេលវេលា
ការអនុវត្ត JavaScript៖
// បំប្លែង mm:ss ទៅជាវិនាទី
មុខងារ timeToSeconds(timeString) {
ផ្នែក const = timeString.split(':');
ត្រឡប់ parseInt(parts[0]) * 60 + parseInt(parts[1]);
}
// បំប្លែងវិនាទីទៅជា mm:ss
មុខងារ secondsToTime(វិនាទី) {
នាទី const = Math.floor(វិនាទី / 60);
const secs = Math.round(វិនាទី % 60);
ត្រឡប់ `${minutes}:${secs.toString().padStart(2, '0')}`;
}
// បំប្លែងវិនាទីទៅជា hh:mm:ss
មុខងារ secondsToTimeDetailed(វិនាទី) {
const ម៉ោង = Math.floor(វិនាទី / 3600);
const នាទី = Math.floor((វិនាទី % 3600) / 60);
const secs = Math.round(វិនាទី % 60);
ត្រឡប់ `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
}
// ឧទាហរណ៍៖
timeToSeconds("1:33"); // ត្រឡប់៖ ៩៣
secondsToTime(93); // ត្រឡប់: "1:33"
secondsToTimeDetailed(៣៦៦៥); // ត្រឡប់៖ "1:01:05"
ធនធានអនុវត្ត
រូបមន្តទាំងអស់នៅលើទំព័រនេះគឺត្រៀមខ្លួនជាស្រេចក្នុងការផលិត និងមានសុពលភាពប្រឆាំងនឹងអក្សរសិល្ប៍វិទ្យាសាស្រ្ត។ ប្រើ ពួកវាសម្រាប់ឧបករណ៍វិភាគផ្ទាល់ខ្លួន ការផ្ទៀងផ្ទាត់ ឬការយល់ដឹងកាន់តែស៊ីជម្រៅនៃការគណនាដំណើរការដែលកំពុងដំណើរការ។
💡 ការអនុវត្តល្អបំផុត
- ធ្វើឱ្យធាតុចូលមានសុពលភាព៖ពិនិត្យរកជួរសមហេតុផល មុននឹងគណនា
- ដោះស្រាយករណីគែម៖ការបែងចែកដោយសូន្យ តម្លៃអវិជ្ជមាន ទិន្នន័យទទេ
- មូលសមគួរ៖CTL/ATL/TSB ទៅ 1 ទសភាគ rTSS ទៅចំនួនគត់
- ភាពជាក់លាក់នៃហាង៖រក្សាភាពជាក់លាក់ពេញលេញនៅក្នុងមូលដ្ឋានទិន្នន័យ ជុំសម្រាប់ការបង្ហាញ
- សាកល្បងហ្មត់ចត់៖ប្រើទិន្នន័យល្អដែលគេស្គាល់ ដើម្បីផ្ទៀងផ្ទាត់ការគណនា