matalb实践(十二):减肥

1.题目

matalb实践(十二):减肥_第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=(w1.1+(b1)w)/a
b = a ∗ c / w ; b=a*c/w; b=ac/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>=10000
    disp("第"+(k+1)+"周")
    c=(w-1.1+(b-1)*w)/a
    w=w-1.1
    k=k+1;
end

结果:
matalb实践(十二):减肥_第2张图片

共需27周
第二阶段:

k1=0
while bmi>=25
    w=(1-b)*w+a*c
    bmi=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 sport
    sport_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) > 25
                weight = weight + a * c - weight * (beta + a * s * 8);
                time = time + 1;
                fprintf('第%d周的体重为%.3f\n', time, weight);
            end
        end
    end
else
    while weight/(h*h) > 25
        a = 1 / 8000;
        weight = weight * (1-beta) + a * c;
        time = time + 1;
        fprintf('第%d周的体重为%.3f\n', time, weight);
    end
    
end

matalb实践(十二):减肥_第3张图片

2.5第三问:

吸收热量不变,若运动,吸收热量增加

你可能感兴趣的:(MATLAB,matlab)