5D Library › Dynamical Systems of Neurotransmitters and Endocrinology · 中文
Chapter 5 The Vagus Nerve, Heart-Rate Variability and Breathing Resonance
The heartbeat is not even
In healthy people at rest, the interval between successive heartbeats (the RR interval) keeps changing. Heart rate rises slightly on the in-breath and falls on the out-breath: respiratory sinus arrhythmia (RSA). It arises mainly from vagal influence on the sinoatrial node varying with the breathing cycle, and so is often used as an indirect index of cardiac vagal activity; but it is also affected by breathing rate and depth and is not a pure measure of vagal “tone” (Grossman and Taylor 2007).
There are many measures of heart-rate variability (HRV). The two most common are SDNN, the standard deviation of all RR intervals over a period, which reflects the sum of fast and slow swings; and RMSSD, the root mean square of the differences between successive RR intervals, which mainly reflects fast, beat-to-beat change and is considered a good time-domain index of vagal influence on the heart (Shaffer and Ginsberg 2017; Laborde et al. 2017).
Why six a minute?
Evidence
Vaschillo and colleagues found that when people breathe at about six breaths a minute (about 0.1 Hz), the swing of heart rate is at its largest, far larger than with spontaneous breathing; the exact frequency of the maximum differs between individuals. They explained this as a resonance of the baroreflex loop (Vaschillo et al. 2006).
Evidence
Lehrer and Gevirtz’s account is that heart rate and blood pressure form a closed loop through the baroreflex. A rise in heart rate raises blood pressure; baroreceptors sense this and, after a delay of a few seconds, lower heart rate. Because the loop has an inherent delay it has an inherent resonant frequency, around 0.1 Hz. Breathing at that frequency puts the push of breathing on heart rate in phase with the correction of the baroreflex, and the swings are amplified (Lehrer and Gevirtz 2014).
Calculation
A simplified model of the baroreflex loop: breathing pushes heart rate; blood pressure follows heart rate with a 2-second vascular lag; the baroreflex corrects heart rate with gain 0.8 after a 3.5-second delay. The amplification of heart-rate swings is computed from the frequency response and checked by step-by-step simulation. Illustrative parameters.
# Why slow breathing near 6 breaths/min enlarges heart-rate oscillations: a delayed negative-feedback
# loop (simplified model of the baroreflex, after the resonance account of Vaschillo et al. 2006).
# Breathing pushes heart rate (respiratory sinus arrhythmia); blood pressure follows heart rate with a
# vascular lag; the baroreflex corrects heart rate after a delay. When the loop's total lag equals half a
# breathing cycle, the correction arrives in step with the next push and the swings add up.
import cmath, math
G, DELAY, TAU_V = 0.8, 3.5, 2.0 # loop gain, reflex delay (s), vascular lag (s): illustrative values
def gain(f):
w = 2 * math.pi * f
loop = G * cmath.exp(-1j * w * DELAY) / (1 + 1j * w * TAU_V)
return abs(1 / (1 + loop))
def simulate(f, seconds=300, dt=0.01):
"""Euler simulation of the same loop; returns peak-to-peak heart-rate swing in the last minute."""
n_delay = int(DELAY / dt)
hist = [0.0] * n_delay
p, lo, hi = 0.0, 1e9, -1e9
for k in range(int(seconds / dt)):
t = k * dt
h = math.sin(2 * math.pi * f * t) - G * hist[k % n_delay] # pressure from DELAY seconds ago
hist[k % n_delay] = p
p += dt * (h - p) / TAU_V
if t > seconds - 60:
lo, hi = min(lo, h), max(hi, h)
return hi - lo
print("breaths/min frequency (Hz) heart-rate swing (x of the breathing push alone)")
for bpm in (4, 5, 6, 7, 8, 10, 12, 15):
f = bpm / 60
print(f"{bpm:8d} {f:6.3f} {gain(f):4.2f} (simulation {simulate(f) / 2:4.2f})")
best = max((b / 10 for b in range(30, 200)), key=lambda b: gain(b / 60))
print(f"peak of the loop: {best:.1f} breaths/min ({best / 60:.3f} Hz)")
# breaths/min frequency (Hz) heart-rate swing (x of the breathing push alone)
# 4 0.067 1.20 (simulation 1.20)
# 5 0.083 1.73 (simulation 1.73)
# 6 0.100 1.99 (simulation 1.99)
# 7 0.117 1.64 (simulation 1.64)
# 8 0.133 1.28 (simulation 1.28)
# 10 0.167 0.92 (simulation 0.92)
# 12 0.200 0.81 (simulation 0.80)
# 15 0.250 0.82 (simulation 0.82)
# peak of the loop: 5.8 breaths/min (0.097 Hz)When the total delay of the loop equals half a breathing cycle, the correction arrives just in step with the next push. In this model, breathing at six a minute makes the heart-rate swing about twice that of breathing alone; at the usual 12 to 15 breaths a minute the correction partly cancels the push, and the swing is smaller than the push alone.
Which measure to use
There is an easily missed point here: slow breathing amplifies slow swings.
Calculation
Using the amplification above, five-minute RR-interval series are generated for breathing at 12 and at 6 breaths a minute, and SDNN and RMSSD are computed.
# RMSSD and SDNN from a simulated series of heartbeat (RR) intervals while breathing at 6 or 12 per minute.
# The respiratory swing is taken from the loop model above (about 2.0 x at 6/min, 0.8 x at 12/min).
import math, random, statistics
def rr_series(bpm, swing, minutes=5, mean_rr=850.0, base_amp=25.0, noise=12.0, seed=2):
random.seed(seed)
t, rr = 0.0, []
while t < minutes * 60:
x = mean_rr + base_amp * swing * math.sin(2 * math.pi * bpm / 60 * t) + random.gauss(0, noise)
rr.append(x)
t += x / 1000
return rr
def rmssd(rr):
d = [b - a for a, b in zip(rr, rr[1:])]
return math.sqrt(sum(x * x for x in d) / len(d))
for bpm, swing in ((12, 0.81), (6, 1.99)):
rr = rr_series(bpm, swing)
print(f"breathing {bpm:2d}/min: {len(rr)} beats, SDNN {statistics.pstdev(rr):5.1f} ms, RMSSD {rmssd(rr):5.1f} ms")
print("Slow breathing nearly doubles the slow swing (SDNN) but changes RMSSD much less, because")
print("RMSSD looks at beat-to-beat differences, and a slow wave changes little from one beat to the next.")
# breathing 12/min: 354 beats, SDNN 19.0 ms, RMSSD 22.9 ms
# breathing 6/min: 354 beats, SDNN 36.2 ms, RMSSD 25.0 ms
# Slow breathing nearly doubles the slow swing (SDNN) but changes RMSSD much less, because
# RMSSD looks at beat-to-beat differences, and a slow wave changes little from one beat to the next.SDNN nearly doubles, while RMSSD rises only a little. The reason is simple: RMSSD looks at the difference between successive beats, and a wave with a 10-second period changes little from one beat to the next. So measuring RMSSD during slow breathing underestimates the resonance; to find out whether weeks of practice change vagal activity at rest, RMSSD should be measured apart from the practice, with spontaneous breathing, in a fixed posture and at a fixed time. The trial in Chapter 8 is designed this way.
Evidence
A systematic review and meta-analysis by Lehrer and colleagues found that heart-rate-variability biofeedback (usually slow breathing at the individual resonance frequency) had small to moderate effects on outcomes including anxiety, depression, anger and athletic or artistic performance; effects were larger against inactive controls and smaller, though still significant, against active controls; and many outcomes rested on few studies (Lehrer et al. 2020). A systematic review by Zaccaro and colleagues found that slow breathing is associated with changes in autonomic, central-nervous and psychological measures, but the methodological quality of the included studies varied widely (Zaccaro et al. 2018).
Note
The point of slow breathing is that it is slow, not that it is deep. Breathe in for about 4 seconds and out for about 6, with ordinary effort. If you feel dizzy or your fingers or lips tingle, you are over-breathing: stop and return to natural breathing. People with arrhythmias, heart failure, chronic obstructive pulmonary disease, asthma or panic disorder should consult a doctor before starting. This book does not present slow breathing as a treatment for any disease.
Hypothesis · not established
Not established. At least 70 % of people whose individual resonance frequency is found by a 15-minute sweep (2 minutes each at 7, 6.5, 6, 5.5, 5 and 4.5 breaths a minute) will, when retested four weeks later, have a resonance frequency within ±0.5 breaths a minute of the first: that is, the individual resonance frequency is a stable trait, not just noise in a single measurement. If fewer than 50 % agree on retest, the hypothesis is refuted, and the “individual resonance frequency” as a basis for practice needs rethinking.
Summary
Slow breathing is special not because it is a mysterious frequency, but because the cardiovascular system is itself a feedback loop with a delay and so has a resonant frequency of its own. Knowing this also tells us what to measure and what not to. The next chapter puts the signals of the earlier chapters together and asks a more basic question: is there a “best state”?
References
Fan, Y. (2026). Dynamical Systems of Neurotransmitters and Endocrinology: Dopamine Reward Prediction Error, Serotonergic Homeostasis, HPA-Axis Allostatic Load and the Challenge Hypothesis, Read Beside East Asian Classics of Mind Regulation [神经递质与内分泌的动力系统] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738782 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).