Wang Haihua
🍈 🍉🍊 🍋 🍌
目前公认的测评体重的标准是联合国世界卫生组织颁布的体 重指数 (body mass index, 简记 $\mathrm{BMI}$ ), 定义 $\mathrm{BMI}=\frac{m}{h^{2}}$, 其中 $m$ 为体重 (单 位: $\mathrm{kg}$ ), $h$ 为身高 (单位: $m$ ), 具体标准见下表。
偏瘦 | 正常 | 超重 | 肥胖 | |
---|---|---|---|---|
世界卫生组织标准 | < 18.5 | 18.5∼24.9 | 25.0∼29.9 | >= 30.0 |
我国参考标准 | < 18.5 | 18.5∼23.9 | 24.0∼27.9 | >= 28.0 |
随着生活水平的提高,肥胖人群越来越庞大,于是减肥者不在少数。大量事实说明,大多数减肥药并不能够达到减肥效果,或者即使成功减肥也未必长效。专家建议,只有通过控制饮食和适当运动,才能在不伤害身体的前提下,达到控制体重的目的。现在建立一个数学模型,并由此通过节食与运动制定合理、有效的减肥计划。
通常当能量守恒被破坏时就会引起体重的变化,人们通过饮食吸收热量,转化为脂肪等,导致体重增加;又由于代谢和运动消耗热量,引起体重减少。主要做适当的简化假设就可得到体重变换的关系。
减肥计划应以不伤害身体为前提,这可以用吸收热量不要过少,减肥体重不要过快来表达。当然增加运动量是加速减肥的有效手段,也要在模型中加以考虑。通常制定减肥计划以周为时间单位比较方便,所以这里用离散时间模型—差分方程模型来讨论。
根据上述分析,参考有关生理数据,作出以下简化假设:
据调查,若干食物每百克所含热量及各项运动每小时每千克体重消耗热量如下表所示。
食物 | 米饭 | 豆腐 | 青菜 | 苹果 | 瘦肉 | 鸡蛋 |
---|---|---|---|---|---|---|
所含热量 kcal/100g | 120 | 100 | 20∼30 | 50∼60 | 140∼160 | 150 |
运动 | 步行 4" "km//h | 跑步 | 跳舞 | 乒乓 自行车(中速) | 游泳 50" "m//min | |
---|---|---|---|---|---|---|
消耗热量 kcal//(h$*$kg) | 3.1 | 7.0 | 3.0 | 4.4 | 2.5 | 7.9 |
记第 $k$ 周(初)体重为 $w(k)(\mathrm{kg})$ ,第 $k$ 周吸收热量为 $c(k)(\mathrm{cal})$ ,设热量转换系数为 $\alpha$, 身体代谢消耗热量系数为 $\beta$, 根据模型假设, 正常情况下 (不考虑运动), 体重变化的基本方程为 $$ w(k+1)=w(k)+\alpha c(k)-\beta w(k), \quad k=1,2, \cdots . $$ 由假设 (1), $\alpha=1 / 8000 \mathrm{~kg} / \mathrm{kcal}$, 当确定了每个人的代谢消耗系数 $\beta$ 后,即可按照上式由每周吸收热量 $c(k)$ 推导体重 $w(k)$ 的变化。增加运动时, 只需将 $\beta$ 调整为 $\beta+\beta_{1}, \beta_{1}$ 由运动形式和时间确定。
某人身高1.7m,体重100kg,BMI高达34.6,自述目前每周吸收20000kcal热量,体重长期未变,试为他按照以下方式制订减肥计划,使其体重减至75kg(即BMI=26)并维持下去: ①在正常代谢情况下安排一个两阶段计划,第一阶段:吸收热量由20000kcal每周减少1000kcal,直至达到安全下限(每周10000kcal);第二阶段:每周吸收热量保持下限,直至达到减肥目标。
②若要加快进程,第二阶段增加运动,重新安排第二阶段的计划。
③给出达到目标后维持体重不变的方案。
(1)首先应确定某人的代谢消耗系数 $\beta$ 。根据他每周吸收 $c=20000 \mathrm{kcal}$ 热 量, 体重 $w=100 \mathrm{~kg}$ 不变。令 $w(k+1)=w(k)=w$, $c(k)=c$, 得 $w=w+\alpha c-\beta w$, 于是 $$ \beta=\frac{\alpha c}{w}=\frac{20000 / 8000}{100}=0.025 \text {. } $$ 相当于每周每千克体重消耗热量 $20000 / 100=200 \mathrm{kcal}$, 从假设 (2) 可以知道, 某人属于代谢消耗相当弱的人, 他又吃得很多, 导致现在的体重。
第一阶段要求吸收热量由 $20000 \mathrm{kcal}$ 每周减少 $1000 \mathrm{kcal}$ (由能量提供表所示, 如每周减少米饭和瘦肉各 $350 \mathrm{~g})$, 达到下限 $c_{\text {min }}=10000 \mathrm{kcal}$, 即 $$ c(k)=20000-1000 k, \quad k=1,2, \cdots, 10 . $$ 将 $c(k)$ 及 $\alpha=1 / 8000, \beta=0.025$ 代入 (13.10) 式,可得 $$ w(k+1)=(1-\beta) w(k)+\alpha(20000-1000 k)=0.975 w(k)+2.5-0.125 k, \quad k= $$
对于差分方程, 我们只需求 $w(11)$, 没有必要求它的解析解。 通过简单的迭代运算, 以 $w(1)=100$ 为初值, 求得第 11 周体重 $w(11)=93.6157 \mathrm{~kg}$ 。第二阶段要求每周吸收热量保持下限 $c_{\text {min }}$, 得 $$ w(k+1)=(1-\beta) w(k)+\alpha c_{\min }=0.975 w(k)+1.25, \quad k=11,12, \cdots, $$ 以第一阶段终值 $w(11)$ 为第二阶段初值, 编程计算直至 $w(11+n) \leq 75$ 为止, 可得 $w(11+22)=74.9888 \mathrm{~kg}$, 即每周吸收热量保持下限 $10000 \mathrm{kcal}$, 再有 22 周体重可减至 $75 \mathrm{~kg}$, 两阶段共需 32 周。
(2)为加快进程, 第二阶段增加运动, 记表 $13.4$ 中热量消耗为 $\gamma$, 每周运动 时间为 $t h$, 在 (13.10) 式中将 $\beta$ 修改为 $\beta+\alpha \gamma t$, 即得到模型 $$ w(k+1)=w(k)+\alpha c(k)-(\beta+\alpha \gamma t) w(k) . $$ 试取 $\alpha \gamma t=0.005$, 则 $\beta+\alpha \gamma t=0.03,(13.12) 、(13.13)$ 式分别变为 $$ \begin{array}{r} w(k+1)=0.97 w(k)+2.5-0.125 k, \quad k=1,2, \cdots, 10, \\ w(k+1)=0.97 w(k)+1.25, \quad k=11,12, \cdots . \end{array} $$
类似的计算可得, $w(11)=89.3319 \mathrm{~kg}, w(11+12)=74.7388 \mathrm{~kg}$, 即若增 加 $\alpha \gamma t=0.005$ 的运动, 就可将第二阶段的时间缩短为 12 周。由 $\alpha=1 / 8000$ 可知, 增加的运动内容应满足 $\gamma t=40$, 可从表 $13.4$ 选择合适的运动形式和 时间, 如每周步行 $7 \mathrm{~h}$ 加乒乓 $4 \mathrm{~h}$ 。两阶段共需 22 周, 增加运动的效果非常明显。 将正常代谢和增加运动两种情况下的体重 $w(k)$ 作图, 得到的体重下降曲线。经检查, 两种情况下每周体重的减少都不超过 $1.5 \mathrm{~kg}$ 。
代码
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei'); plt.rc('font',size=16)
def fun(delta,*s):
w=100; tw=[]
for k in range(1,11):
w=delta*w+2.5-0.125*k; tw.append(w)
print(tw); w2=tw[-1] #提取第二阶段的初值
tw2=[]; k=0
while w2>=75:
k+=1; w2=delta*w2+1.25;
tw2.append(w2); tw.append(w2)
print("k=%d时,w(%d)=%.4f"%(k,k,w2))
plt.plot(np.arange(1,len(tw)+1),tw,s[0]) #传入的s是tuple类型
fun(0.975,"s-"); fun(0.97,"*-")
plt.legend(("正常代谢","增加运动"))
plt.xlabel("$k$/周"); plt.ylabel("$w$/kg")
plt.show()
(3)达到目标后维持体重不变, 最简单是寻求每周吸收热量保持某一个 常值 $c$ 使体重 $w=75 \mathrm{~kg}$, 即 $w(k+1)=w(k)=w=75, c(k)=c$, 由此 $$ w=w+\alpha c-(\beta+\alpha \gamma t) w, $$ 计算 $c=\frac{(\beta+\alpha \gamma t) w}{\alpha}$ 。在正常代谢下 $(\gamma=0), c=15000 \mathrm{kcal}$; 若增加 $\gamma t=40$ 运 动,则 $c=18000 \mathrm{kcal}$ 。
此模型告诉我们人们体重的变化是有规律可循的,减肥也应科学化、定量化。这个模型虽然只考虑了一个非常简单的情况,但是它对专门从事减肥这样活动的人来说具有一定的参考价值。 体重的变化与每个人特殊的生理条件有关,特别是代谢消耗系数$\beta$ ,不仅因人而异,而且即使同一个人在不同环境下也会有所改变,从上面的计算中我们看到,当$\beta$ 仅仅改变0.005时,减肥所需时间缩短很多,所以应用这个模型时应对$\beta$ 做仔细研究。
参考资料
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei'); plt.rc('font',size=16)
def fun(delta,*s):
w=100; tw=[]
for k in range(1,11):
w=delta*w+2.5-0.125*k; tw.append(w)
print(tw); w2=tw[-1] #提取第二阶段的初值
tw2=[]; k=0
while w2>=75:
k+=1; w2=delta*w2+1.25;
tw2.append(w2); tw.append(w2)
print("k=%d时,w(%d)=%.4f"%(k,k,w2))
plt.plot(np.arange(1,len(tw)+1),tw,s[0]) #传入的s是tuple类型
fun(0.975,"s-"); fun(0.97,"*-")
plt.legend(("正常代谢","增加运动"))
plt.xlabel("$k$/周"); plt.ylabel("$w$/kg")
plt.savefig('images/diff1302.png')
plt.show()
[99.875, 99.628125, 99.262421875, 98.780861328125, 98.18633979492188, 97.48168130004883, 96.66963926754761, 95.75289828585892, 94.73407582871245, 93.61572393299464] k=22时,w(22)=74.9888 [99.375, 98.64375, 97.8094375, 96.875154375, 95.84389974374999, 94.71858275143748, 93.50202526889436, 92.19696451082753, 90.8060555755027, 89.33187390823761] k=12时,w(12)=74.7388