1.题目
2.解答
2.1模型假设
1.体重增加正比于吸收的热量,平均每8000kcal增加体重1kg
2.身体正常代谢引起的体重减少正比于体重,每周每千克体重消耗热量一般在200kcal至320kcal之间,且因人而异,这相当于体重70kg的人每天消耗2000kcal至3200kcal
3.运动引起的体重减少正比于体重,且与运动形式和运动时间有关
4.为了安全与健康,每周吸收热量最好不要小于10000kcal,且每周减少量不要超过1000kcal,每周体重减少不要超过1.5kg
2.2基本模型:
记第k周(初)体重为w(k)(kg),第k周吸收热量为c(k)(kcal),k=1,2…。设热量转换系数为α。深体代谢消耗系数为β,根据模型假设,正常情况下(不考虑运动)体重变化的基本方程为(只要能表示这段方程,主体部分基本就完事,使用一个while循环或者for循环即可)
w ( k + 1 ) = w ( k ) + α c ( k ) − β w ( k ) , k = 1 , 2... w(k+1)=w(k)+\alpha c(k)-\beta w(k),k=1,2... w(k+1)=w(k)+αc(k)−βw(k),k=1,2...
根据假设1,当确定一个人的代谢消耗系数β后,就可按照上述式子由每周吸收的热量c(k)推到ta体重w(k)的变化,增加运动时,需要更改消耗系数β值,具体会在下面给出
2.3第一问:
第一阶段:
条件:
W ( k + 1 ) − w ( k ) = 1.1 W(k+1)-w(k)=1.1 W(k+1)−w(k)=1.1
c = ( w − 1.1 + ( b − 1 ) ∗ w ) / a c=(w-1.1+(b-1)*w)/a c=(w−1.1+(b−1)∗w)/a
b = a ∗ c / w ; b=a*c/w; b=a∗c/w;
初始参数:
c=25000;
h=1.66;身高
w=114;体重
a=1/8000;
代码:
clc;clear;
c=25000;
h=1.66;w=114;
a=1/8000;
b=a*c/w;
k=0;
while c>=10000disp("第"+(k+1)+"周")c=(w-1.1+(b-1)*w)/aw=w-1.1k=k+1;
end
结果:
共需27周
第二阶段:
k1=0
while bmi>=25w=(1-b)*w+a*cbmi=w/(h*h)k1=k1+1;
end
共需19周
总共46周
2.4第二问:
若想加快进程,需要增加运动,根据前面运动消耗表,记热量消耗为γ,每周运动t小时,则基本模型中β改为β+αγt,此时方程为
w ( k + 1 ) = w ( k ) + α c ( k ) − ( β + α γ t ) w ( k ) w(k+1)=w(k)+\alpha c(k)-(\beta+\alpha\gamma t)w(k) w(k+1)=w(k)+αc(k)−(β+αγt)w(k)
我们选择乒乓,共15周
beta=b;
weight= 84.3;
sport=1;
category="pq";
time=0;
if sportsport_cate = containers.Map({'run', 'dance', 'pq', 'bicycle', 'swim'}, [7.0, 3.0, 4.4, 2.5, 7.9]);keys = sport_cate.keys;for i = 1:length(keys)if strcmp(category, keys{i})s = sport_cate(category);while weight/(h*h) > 25weight = weight + a * c - weight * (beta + a * s * 8);time = time + 1;fprintf('第%d周的体重为%.3f\n', time, weight);endendend
elsewhile weight/(h*h) > 25a = 1 / 8000;weight = weight * (1-beta) + a * c;time = time + 1;fprintf('第%d周的体重为%.3f\n', time, weight);endend
2.5第三问:
吸收热量不变,若运动,吸收热量增加