រូបមន្តថាមពលជិះកង់
មូលដ្ឋានគ្រឹះគណិតវិទ្យានៃម៉ែត្រវិភាគកង់
ការណែនាំអំពីការអនុវត្ត
ទំព័រនេះផ្តល់នូវរូបមន្តចម្លងបិទភ្ជាប់ និងវិធីសាស្ត្រគណនាជាជំហានៗសម្រាប់រង្វាស់ Bike Analytics ទាំងអស់។ ប្រើវាសម្រាប់ការអនុវត្តផ្ទាល់ខ្លួន ការផ្ទៀងផ្ទាត់ ឬការយល់ដឹងកាន់តែស៊ីជម្រៅអំពីការបណ្តុះបណ្តាលផ្អែកលើថាមពល។
⚠️ កំណត់ចំណាំនៃការអនុវត្ត
- តម្លៃថាមពលទាំងអស់គិតជាវ៉ាត់ (W) ពេលវេលាគិតជាវិនាទី លុះត្រាតែបានបញ្ជាក់
- FTP and CP are individual-specific thresholds—no universal values
- Always validate inputs for reasonable ranges (0-2000W typical)
- Handle edge cases (division by zero, negative power)
- ទិន្នន័យថាមពលត្រូវការចន្លោះពេលថត 1 វិនាទីសម្រាប់ភាពត្រឹមត្រូវ
រង្វាស់នៃការអនុវត្តស្នូល
1. ពិន្ទុស្ត្រេសបណ្តុះបណ្តាល (TSS)
រូបមន្ត៖
ឧទាហរណ៍ដែលបានធ្វើការ៖
សេណារីយ៉ូ៖ជិះ 2 ម៉ោង NP = 235W, FTP = 250W
- Calculate IF: IF = 235 / 250 = 0.94
- Duration in seconds: 2 hours × 3600 = 7200 seconds
- TSS = (7200 × 235 × 0.94) / (250 × 3600) × 100
- TSS= 1,590,720 / 900,000 × 100 =176.7 TSS
ការបកស្រាយ៖ ជិះហ្វឹកហាត់ខ្លាំង (>150 TSS) រំពឹងថានឹងជាសះស្បើយពី 2 ទៅ 3 ថ្ងៃ
ការអនុវត្ត JavaScript៖
function calculateTSS(durationSeconds, normalizedPower, ftp) {
const intensityFactor = normalizedPower / ftp;
const tss = (durationSeconds * normalizedPower * intensityFactor) / (ftp * 3600) * 100;
ត្រឡប់ Math.round(tss);
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
const tss = គណនាTSS(7200, 235, 250);
// ត្រឡប់៖ ១៧៧
2. ថាមពលធម្មតា (NP)
ក្បួនដោះស្រាយ (ជាមធ្យមរំកិល 30 វិនាទី)៖
ហេតុអ្វីបានជាអំណាចទី 4?
The quartic (4th power) relationship reflects the non-linear physiological cost of variable efforts. A ride with surges and recoveries costs more energy than steady power at the same average.
ឧទាហរណ៍៖
- Steady ride: 200W for 1 hour → NP = 200W, Average = 200W
- Variable ride: Alternating 300W/100W → Average = 200W, NP = 225W
Same average power, but variable ride has 12% higher NP due to physiological cost of surges
ការអនុវត្ត JavaScript៖
មុខងារគណនាNormalizedPower(powerData) {
// powerData គឺជាអារេនៃតម្លៃថាមពល 1 វិនាទី
// ជំហានទី 1: គណនាជាមធ្យមវិលជុំ 30 វិនាទី
const rollingAvgs = [];
សម្រាប់ (អនុញ្ញាតឱ្យ 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: បង្កើនថាមពលទី 4
const powered = rollingAvgs.map(p => Math.pow(p, 4));
// ជំហានទី 3: មធ្យមនៃអំណាចទី 4
const avgPowered = powered.reduce((sum, p) => sum + p, 0) / powered.length;
// ជំហានទី 4: យកឫសទី 4
const np = Math.pow(avgPowered, 0.25);
ត្រឡប់ Math.round(np);
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
const powerData = [/* អារេថាមពល 1 វិនាទី */];
const np = គណនាNormalizedPower(powerData);
// ត្រឡប់៖ NP ជាវ៉ាត់
3. កត្តាអាំងតង់ស៊ីតេ (IF)
រូបមន្ត៖
ជួរបកស្រាយ៖
| IF ជួរ | កម្រិតនៃការខិតខំប្រឹងប្រែង | ឧទាហរណ៍លំហាត់ |
|---|---|---|
| < 0.75 | ការងើបឡើងវិញ / ងាយស្រួល | Active recovery ride, Zone 1-2 |
| 0.75 - 0.85 | ការស៊ូទ្រាំ | ការជិះស្ថិតយូរ, មូលដ្ឋានអេរ៉ូប៊ី |
| 0.85 - 0.95 | Tempo | ការបណ្តុះបណ្តាលកន្លែងផ្អែម ចន្លោះពេល |
| 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 ម៉ោង។
មុខងារគណនាIF(normalizedPower, ftp) {
ត្រឡប់ (normalizedPower / ftp).toFixed(2);
}
// ឧទាហរណ៍៖
const if_value = គណនាIF(235, 250);
// ត្រឡប់: 0.94
4. សន្ទស្សន៍ភាពប្រែប្រួល (VI)
រូបមន្ត៖
បកស្រាយដោយវិន័យៈ
| វិន័យ | ធម្មតា 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 =១.២១(ប្រែប្រួលខ្លាំង ការប្រឹងប្រែងផ្ទុះឡើង)
function calculateVI(normalizedPower, averagePower) {
return (normalizedPower / averagePower).toFixed(2);
}
// ឧទាហរណ៍៖
const vi_road = គណនាVI(240, 230); // ត្រឡប់: 1.04
const vi_mtb = គណនាVI(285, 235); // ត្រឡប់: 1.21
ថាមពលសំខាន់ & W' (សមត្ថភាព Anaerobic)
5. អំណាចសំខាន់ (CP) - គំរូលីនេអ៊ែរ
រូបមន្ត៖
ការគណនាពីការខិតខំប្រឹងប្រែងច្រើន៖
តម្រូវឱ្យមានការខិតខំអតិបរមា 2-4 នៅក្នុងរយៈពេលផ្សេងគ្នា (ឧ. 3, 5, 12, 20 នាទី)
ឧទាហរណ៍ទិន្នន័យ៖
| រយៈពេល | ថាមពល (W) | ការងារសរុប (kJ) |
|---|---|---|
| 3 នាទី (180 វិនាទី) | 400W | 72 kJ |
| 5 នាទី (300 វិ) | 365 វ៉ | 109.5 kJ |
| 12 នាទី (720 វិ) | 310W | 223.2 kJ |
| 20 នាទី (1200 វិនាទី) | 285 វ៉ | 342 kJ |
Using linear regression (Work = CP × Time + W'):
- CP = 270W(ជម្រាលនៃបន្ទាត់តំរែតំរង់)
- W ' = 18.5 kJ(y-ស្ទាក់ចាប់)
ការអនុវត្ត JavaScript៖
មុខងារគណនាCP_Linear(កិច្ចខិតខំប្រឹងប្រែង) {
// កិច្ចខិតខំប្រឹងប្រែង = [{រយៈពេល: វិនាទី, ថាមពល: វ៉ាត់}, ...]
const times = efforts.map(e => e.duration);
const work = efforts.map(e => e.power * e.duration / 1000); // kJ
// តំរែតំរង់លីនេអ៊ែរ៖ ការងារ = CP * ពេលវេលា + 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;
ត្រឡប់ {
CP: Math.round(CP * 10) / 10, // វ៉ាត់
Wprime៖ Math.round(Wprime * 10) / 10 // kJ
};
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
កិច្ចខិតខំប្រឹងប្រែង const = [
{រយៈពេល៖ 180, ថាមពល: 400},
{រយៈពេល៖ 300, ថាមពល: 365},
{រយៈពេល៖ 720, ថាមពល៖ 310},
{រយៈពេល៖ 1200, ថាមពល: 285}
];
const លទ្ធផល = គណនាCP_Linear(កិច្ចខិតខំប្រឹងប្រែង);
// ត្រឡប់៖ { CP: 270.0, Wprime: 18.5 }
6. W' Balance (W'bal) - Differential Equation Model
រូបមន្ត៖
W'exp(t) = ∫(P(t) - CP) dt
W'rec(t) = W' × (1 - e^(-t/τ))
និង ΔCP = (CP - P(t))
ឧទាហរណ៍នៃពិភពលោកពិត៖
លក្ខណៈពិសេសរបស់អ្នកជិះកង់៖CP = 270W, W' = 18.5 kJ
សេណារីយ៉ូទី 1 - ការវាយប្រហារខ្លាំង៖
- អ្នកជិះឡើងដល់ 400W រយៈពេល 30 វិនាទី
- W' ចំណាយ៖ (400 - 270) × 30 = 3,900 J = 3.9 kJ
- W'bal នៅសល់: 18.5 - 3.9 =14.6 kJ
សេណារីយ៉ូទី 2 - ការងើបឡើងវិញ៖
- បន្ទាប់ពីការវាយប្រហារ ទម្លាក់ទៅ 200W (70W ក្រោម CP) រយៈពេល 2 នាទី។
- Δ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
ការអនុវត្ត JavaScript៖
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 | ស្ថានភាព |
|---|---|---|---|---|---|
| ច័ន្ទ | ១០០ | 75.0 | 80.0 | -5.0 | ការបណ្តុះបណ្តាល |
| Tue | ៥០ | ៧៤.៤ | ៧៥.៧ | -1.3 | ការងើបឡើងវិញ |
| ថ្ងៃពុធ | ១២០ | ៧៥.៥ | 82.0 | -៦.៥ | ការបណ្តុះបណ្តាលរឹង |
| ធូ | 0 | ៧៣.៧ | ៧០.៣ | +3.4 | ថ្ងៃឈប់សម្រាក |
| សុក្រ | ៨០ | ៧៣.៨ | ៧១.៧ | +2.1 | មធ្យម |
| សៅរ៍ | ១៥០ | ៧៥.៦ | ៨២.៩ | -៧.៣ | ជិះយូរ |
| ព្រះអាទិត្យ | ៤០ | ៧៤.៨ | ៧៦.៨ | -2.0 | ការងើបឡើងវិញ |
TSB ការបកស្រាយ៖
| TSB ជួរ | ស្ថានភាព | សកម្មភាព |
|---|---|---|
| < -30 | ហានិភ័យខ្ពស់។ | ការព្រមានអំពីការឆ្លងកាត់ - កាត់បន្ថយបន្ទុក |
| -30 ទៅ -10 | ការហ្វឹកហាត់រឹង | ការកសាងសម្បទា, តាមដានការងើបឡើងវិញ |
| -10 ដល់ +5 | ល្អបំផុត | តំបន់បណ្តុះបណ្តាលធម្មតា។ |
| +5 ដល់ +15 | ការប្រណាំងរួចរាល់ | ទម្រង់កំពូល - ការប្រណាំងនៅចុងសប្តាហ៍នេះ។ |
| > +25 | ការឃាត់ឃាំង | ការបាត់បង់សម្បទា - បង្កើនការផ្ទុក |
ការអនុវត្ត JavaScript៖
មុខងារគណនាPMC(ការហាត់ប្រាណ) {
// workouts = [{date: "YYYY-MM-DD", tss: number}, ...]
អនុញ្ញាតឱ្យ ctl = 0, atl = 0;
លទ្ធផល const = [];
workouts.forEach(ហាត់ប្រាណ => {
// ធ្វើបច្ចុប្បន្នភាព CTL (ពេលវេលាថេរ 42 ថ្ងៃ)
ctl = ctl + (workout.tss - ctl) / 42;
// ធ្វើបច្ចុប្បន្នភាព ATL (រយៈពេល 7 ថ្ងៃថេរ)
atl = atl + (workout.tss - atl) / 7;
// Calculate TSB (yesterday's CTL - today's ATL for traditional calculation)
// សម្រាប់ភាពសាមញ្ញនៅទីនេះដោយប្រើតម្លៃបច្ចុប្បន្ន
const 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,
ស្ថានភាព៖ getTSBSstatus(tsb)
});
});
លទ្ធផលត្រឡប់មកវិញ;
}
មុខងារ getTSBSstatus(tsb) {
ប្រសិនបើ (tsb < -30) ត្រឡប់ "ហានិភ័យខ្ពស់";
ប្រសិនបើ (tsb < -10) ត្រឡប់ "Training Hard";
ប្រសិនបើ (tsb < 5) ត្រឡប់ "ល្អបំផុត";
ប្រសិនបើ (tsb < 15) ត្រឡប់ "ការប្រណាំងរួចរាល់";
ត្រឡប់ "កំណត់";
}
// ឧទាហរណ៍ការប្រើប្រាស់៖
លំហាត់ const = [
{កាលបរិច្ឆេទ៖ "2025-01-01", tss: 100},
{កាលបរិច្ឆេទ៖ "2025-01-02", tss: 50},
{កាលបរិច្ឆេទ៖ "2025-01-03", tss: 120},
// ... លំហាត់ច្រើនទៀត
];
const pmc = គណនាPMC(ការហាត់ប្រាណ);
// Returns array with CTL, ATL, TSB for each day
សូចនាករថាមពលទៅទម្ងន់ និងការឡើងភ្នំ
8. សមាមាត្រថាមពលទៅទម្ងន់
រូបមន្ត៖
FTP W/kg Benchmarks៖
| កម្រិត | បុរស W/kg | ស្រី W/kg | ប្រភេទ |
|---|---|---|---|
| កំសាន្ត | 2.5 - 3.5 | 2.0 - 3.0 | អ្នកជិះហាត់ប្រាណ |
| ប្រកួតប្រជែង | ៣.៥ - ៤.៥ | 3.0 - 4.0 | Cat 3-4, age group racer |
| កម្រិតខ្ពស់ | ៤.៥ - ៥.៥ | 4.0 - 5.0 | ឆ្មា 1-2, អ្នកស្ម័គ្រចិត្តខ្លាំង |
| វរជន ស្ម័គ្រចិត្ត | 5.5 - 6.0 | 5.0 - 5.5 | ថ្នាក់ជាតិ |
| វិជ្ជាជីវៈ | 6.0 - 7.0+ | 5.5 - 6.5+ | ដំណើរទេសចរណ៍ពិភពលោក Grand Tour GC |
ការគណនាឧទាហរណ៍៖
សេណារីយ៉ូ៖ Cyclist with FTP = 275W, body mass = 70kg
W/kg = 275/70 =3.93 វ៉ / គីឡូក្រាម
ការបកស្រាយ៖ កម្រិតប្រកួតប្រជែង មានសមត្ថភាពក្នុងការប្រណាំងភ្នំ
មុខងារគណនាWattsPerKg(ថាមពល, bodyMassKg) {
ត្រឡប់ (ថាមពល / bodyMassKg).toFixed(2);
}
// ឧទាហរណ៍៖
const wpkg = គណនាWattsPerKg(275, 70);
// ត្រឡប់: 3.93
9. VAM (Velocità Ascensionale Media)
រូបមន្ត៖
VAM Benchmarks៖
| VAM (m/h) | កម្រិត | ឧទាហរណ៍ |
|---|---|---|
| ៦០០ - ៩០០ | កំសាន្ត | អ្នកជិះក្លឹបលើការឡើងភ្នំក្នុងស្រុក |
| 900 - 1200 | ប្រកួតប្រជែង | អ្នកស្ម័គ្រចិត្តល្អនៅលើ Alpe d'Huez |
| 1200 - 1500 | វរជន ស្ម័គ្រចិត្ត | អ្នកឡើងភ្នំថ្នាក់ជាតិ |
| 1500 - 1800 | វិជ្ជាជីវៈ | ដំណើរកំសាន្តពិភពលោកក្នុងស្រុក |
| > 1800 | អ្នកឈ្នះរង្វាន់ធំ | Pogačar, Vingegaard នៅលើការឡើងសំខាន់ៗ |
ការគណនាឧទាហរណ៍៖
សេណារីយ៉ូ៖ឡើងភ្នំ Alpe d'Huez
- ការកើនឡើងកម្ពស់: 1100 ម៉ែត្រ
- ពេលវេលា: 55 នាទី = 0.917 ម៉ោង។
- VAM = 1100 / 0.917 =1200 ម៉ែត / ម៉ោង។
ការបកស្រាយ៖ ការឡើងកម្រិតប្រកួតប្រជែង
មុខងារគណនាVAM(elevationGainMeters, timeminutes) {
ម៉ោង const = ម៉ោង / 60;
ត្រឡប់ Math.round(elevationGainMeters / ម៉ោង);
}
// ឧទាហរណ៍៖
const vam = គណនាVAM(1100, 55);
// ត្រឡប់: 1200 m/h
10. ការប៉ាន់ស្មាន VAM ទៅ W/kg
រូបមន្ត៖
ការគណនាឧទាហរណ៍៖
សេណារីយ៉ូ៖ឡើងជាមួយនឹងជម្រាលមធ្យម 8% VAM = 1200 m/h
W / គីឡូក្រាម = 1200 / 100 / (8 + 3)
W/kg = 12/11 =4.36 វ៉ / គីឡូក្រាម
ការត្រួតពិនិត្យឆ្លងកាត់៖ ជាមួយនឹងអ្នកជិះ 70 គីឡូក្រាម → ថាមពល 305W ទ្រទ្រង់នៅពេលឡើង
function estimateWkgFromVAM(vam, gradientPercent) {
return (vam / 100 / (gradientPercent + 3)).toFixed(2);
}
// ឧទាហរណ៍៖
const wkg = ប៉ាន់ស្មានWkgFromVAM(1200, 8);
// ត្រឡប់: 4.36
សមីការថាមពលអាកាស
11. តម្រូវការថាមពលសរុប
រូបមន្តពេញលេញ៖
រូបមន្តសមាសធាតុ៖
P_aero = CdA × 0.5 × ρ × V³
P_gravity = 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 គីឡូក្រាម/m³ នៅកម្រិតទឹកសមុទ្រ 15°C)
- វ= ល្បឿន (m/s)
- ម= ម៉ាសសរុប (អ្នកជិះ + កង់, គីឡូក្រាម)
- g= ទំនាញ (9.81 m/s²)
- θ= មុំជម្រាល (រ៉ាដ្យង់ ឬដឺក្រេបំប្លែង)
- Cr= មេគុណធន់នឹងរំកិល (~0.004 សម្រាប់សំបកកង់ផ្លូវល្អ)
- ក= ការបង្កើនល្បឿន (m/s²)
ឧទាហរណ៍ការងារ (ផ្លូវផ្ទះល្វែង TT)៖
សេណារីយ៉ូ៖
- ល្បឿន: 40 គីឡូម៉ែត្រ / ម៉ោង = 11.11 m / s
- CdA: 0.22 m² (ទីតាំង TT ល្អ)
- ទម្ងន់សរុប៖ ៧៥ គីឡូក្រាម (អ្នកជិះ) + ៨ គីឡូក្រាម (កង់) = ៨៣ គីឡូក្រាម
- ផ្លូវរាបស្មើ (ជម្រាល = 0°)
- Constant speed (acceleration = 0)
ការគណនា៖
- P_aero= 0.22 × 0.5 × 1.225 × 11.11³ =185 វ៉
- P_ទំនាញ= 0W (ផ្លូវផ្ទះល្វែង)
- P_rolling= 0.004 × 83 × 9.81 × 11.11 =៣៦ វ៉
- P_kinetic= 0W (ល្បឿនថេរ)
- P_សរុប= 185 + 0 + 36 + 0 =221 វ៉
ការបកស្រាយ៖ ត្រូវការ 221W ដើម្បីទ្រទ្រង់ 40 គីឡូម៉ែត្រក្នុងមួយម៉ោង នៅក្នុងទីតាំង TT នៅលើផ្លូវរាបស្មើ
ការអនុវត្ត JavaScript៖
មុខងារគណនាថាមពលដែលត្រូវការ (ប៉ារ៉ាម៉ែត្រ) {
const {
ល្បឿនKph,
CdA = 0.32, // m²
rho = 1.225, // kg/m³
ម៉ាស់ = 83, // គីឡូក្រាម (អ្នកជិះ + កង់)
gradientPercent = 0, // %
Crr = 0.004, // ភាពធន់នឹងរំកិល
accelerationMps2 = 0 // m/s²
} = ប៉ារ៉ាម៉ែត្រ;
// បំប្លែងល្បឿនទៅជា m/s
const V = velocityKph / 3.6;
// បំលែងជម្រាលទៅជាមុំ
const theta = Math.atan(gradientPercent / 100);
// គណនាសមាសធាតុនីមួយៗ
const P_aero = CdA * 0.5 * rho * Math.pow(V, 3);
const P_gravity = ម៉ាស់ * 9.81 * Math.sin(theta) * V;
const P_rolling = Crr * ម៉ាស់ * 9.81 * Math.cos(theta) * V;
const P_kinetic = ម៉ាស់ * accelerationMps2 * V;
ត្រឡប់ {
សរុប៖ Math.round(P_aero + P_gravity + P_rolling + P_kinetic),
aero: Math.round(P_aero),
ទំនាញ៖ Math.round(P_gravity),
រមៀល៖ Math.round(P_rolling),
kinetic៖ Math.round(P_kinetic)
};
}
// ឧទាហរណ៍៖ TT នៅ 40 គីឡូម៉ែត្រ / ម៉ោង។
const power_tt = គណនាថាមពលដែលត្រូវការ({
ល្បឿន Kph: 40,
CdA: 0.22,
ម៉ាស៖ ៨៣,
gradient ភាគរយ៖ 0
});
// ត្រឡប់៖ { សរុប៖ ២២១, អេរ៉ូ៖ ១៨៥, ទំនាញ៖ ០, វិល៖ ៣៦, គីណេទិក៖ ០ }
// ឧទាហរណ៍៖ ៨% ឡើងក្នុងល្បឿន ១៥ គីឡូម៉ែត្រក្នុងមួយម៉ោង
const power_climb = គណនាថាមពលដែលត្រូវការ({
ល្បឿន Kph: 15,
CdA: 0.38,
ម៉ាស: 75,
gradient ភាគរយ៖ ៨
});
// ត្រឡប់៖ { សរុប៖ ២៦៥, អាកាស៖ ២៧, ទំនាញ៖ ២៤៤, វិល៖ ១១, គីណេទិក៖ ០ }
មុខងារជំនួយ
ឧបករណ៍បំប្លែងឯកតា
ការអនុវត្ត JavaScript៖
// ការផ្លាស់ប្តូរពេលវេលា
មុខងារ hourToSeconds(ម៉ោង) {
ម៉ោងត្រឡប់មកវិញ * 3600;
}
មុខងារ minutesToSeconds(នាទី) {
នាទីត្រឡប់ * 60;
}
មុខងារ secondsToHours(វិនាទី) {
ត្រឡប់វិនាទី / 3600;
}
ទម្រង់មុខងាររយៈពេល (វិនាទី) {
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')}`;
}
// ការបំប្លែងល្បឿន
មុខងារ kphToMps(kph) {
ត្រឡប់ kph / 3.6;
}
មុខងារ mpsToKph(mps) {
ត្រឡប់ mps * 3.6;
}
// ការបំប្លែងថាមពល
មុខងារ joulesTo kJ(joules) {
ត្រឡប់ joules / 1000;
}
មុខងារ kJToJoules(kJ) {
ត្រឡប់ kJ * 1000;
}
មុខងារ wattsToKJ(វ៉ាត់, រយៈពេលវិនាទី) {
ត្រឡប់ (វ៉ាត់ * រយៈពេលវិនាទី) / 1000;
}
// ឧទាហរណ៍៖
ទម្រង់រយៈពេល (7265); // ត្រឡប់៖ "2:01:05"
kphToMps(40); // ត្រឡប់: 11.11 m/s
wattsToKJ (250, 3600); // ត្រឡប់: 900 kJ (1 ម៉ោងនៅ 250W)
ធនធាននៃការអនុវត្ត
រូបមន្តទាំងអស់នៅលើទំព័រនេះគឺផលិតរួចរាល់ និងមានសុពលភាពប្រឆាំងនឹងអក្សរសិល្ប៍វិទ្យាសាស្ត្រ និងទិន្នន័យម៉ែត្រថាមពលពិភពលោកពិត។ ប្រើពួកវាសម្រាប់ឧបករណ៍វិភាគផ្ទាល់ខ្លួន ការផ្ទៀងផ្ទាត់ ឬការយល់ដឹងកាន់តែស៊ីជម្រៅអំពីការគណនាការបណ្តុះបណ្តាលផ្អែកលើថាមពល។
💡 ការអនុវត្តល្អបំផុត
- ធ្វើឱ្យមានសុពលភាពធាតុចូល៖ពិនិត្យមើលជួរថាមពលដែលសមហេតុផល (0-2000W) រយៈពេលវិជ្ជមាន
- ដោះស្រាយករណីគែម៖ការបែងចែកដោយសូន្យ ទិន្នន័យទុកជាមោឃៈ បាត់ FTP
- ជុំដោយសមរម្យ៖CTL/ATL/TSB ទៅ 1 ទសភាគ TSS ទៅចំនួនគត់ W/kg ទៅ 2 ទសភាគ
- ភាពជាក់លាក់នៃហាង៖រក្សាភាពជាក់លាក់ពេញលេញនៅក្នុងមូលដ្ឋានទិន្នន័យ មូលសម្រាប់តែការបង្ហាញប៉ុណ្ណោះ។
- តំបន់ពេលវេលា៖ដោះស្រាយ UTC ធៀបនឹងម៉ោងក្នុងស្រុកជាប់លាប់សម្រាប់ការវិភាគច្រើនថ្ងៃ
- ការក្រិតតាមខ្នាតម៉ែត្រថាមពល៖រំលឹកអ្នកប្រើប្រាស់ឱ្យសូន្យអុហ្វសិតមុនពេលជិះ
- FTP សុពលភាព៖ដាក់ទង់តម្លៃ FTP គួរឱ្យសង្ស័យ (> 500W ឬ <100W សម្រាប់មនុស្សពេញវ័យ)
- សាកល្បងយ៉ាងហ្មត់ចត់៖ប្រើឯកសារជិះដែលស្គាល់ល្អ ដើម្បីផ្ទៀងផ្ទាត់ការគណនា