🛠️ToolsShed

Kalkulator Zona Denyut Jantung

Hitung 5 zona denyut jantung latihan Anda berdasarkan usia dan detak jantung istirahat.

Kalkulator Zona Detak Jantung mengidentifikasi lima zona detak jantung latihan Anda berdasarkan usia dan opsional detak jantung istirahat Anda yang diukur. Latihan di zona detak jantung tertentu memungkinkan Anda menargetkan adaptasi fisiologis yang berbeda.

Masukkan usia Anda dan alat memperkirakan Detak Jantung Maksimum (DJM) Anda menggunakan rumus paling umum: 220 dikurangi usia. Jika Anda mengetahui DJM aktual dari tes kebugaran, masukkan untuk zona yang lebih akurat.

Untuk menggunakan zona detak jantung secara efektif, kenakan monitor detak jantung selama latihan dan usahakan untuk tetap berada dalam zona target selama durasi upaya yang direncanakan. Sebagian besar atlet rekreasional mendapat manfaat dari menghabiskan sebagian besar waktu latihan (sekitar 80%) di Zona 1-2.

Pertanyaan yang Sering Diajukan

Implementasi Kode

def calculate_hr_zones(age: int, resting_hr: int = 60, method: str = "fox") -> dict:
    """
    Calculate heart rate training zones.
    method: 'fox' (220 - age), 'tanaka' (208 - 0.7 * age), 'karvonen' (uses resting HR)
    """
    if method == "tanaka":
        max_hr = 208 - 0.7 * age
    else:
        max_hr = 220 - age

    if method == "karvonen":
        hrr = max_hr - resting_hr  # Heart Rate Reserve
        zones = {
            "Zone 1 (Recovery)":  (resting_hr + 0.50 * hrr, resting_hr + 0.60 * hrr),
            "Zone 2 (Aerobic)":   (resting_hr + 0.60 * hrr, resting_hr + 0.70 * hrr),
            "Zone 3 (Tempo)":     (resting_hr + 0.70 * hrr, resting_hr + 0.80 * hrr),
            "Zone 4 (Threshold)": (resting_hr + 0.80 * hrr, resting_hr + 0.90 * hrr),
            "Zone 5 (Max)":       (resting_hr + 0.90 * hrr, max_hr),
        }
    else:
        zones = {
            "Zone 1 (Recovery)":  (0.50 * max_hr, 0.60 * max_hr),
            "Zone 2 (Aerobic)":   (0.60 * max_hr, 0.70 * max_hr),
            "Zone 3 (Tempo)":     (0.70 * max_hr, 0.80 * max_hr),
            "Zone 4 (Threshold)": (0.80 * max_hr, 0.90 * max_hr),
            "Zone 5 (Max)":       (0.90 * max_hr, max_hr),
        }

    print(f"Age: {age}, Max HR: {max_hr:.0f} bpm, Method: {method}")
    for name, (lo, hi) in zones.items():
        print(f"  {name}: {lo:.0f} - {hi:.0f} bpm")
    return zones

calculate_hr_zones(age=30, resting_hr=65, method="karvonen")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.