编写Python函数求解健康与患病人群的平衡比例问题
健康与患病人群平衡比例计算及Python实现
一、平衡比例的数学推导
平衡状态下,每日健康人群和患病人群的数量不再变化,即当天的健康人数等于前一天的健康人数,患病人数同理。
设定:
- H:平衡时的健康人数
- C:平衡时的患病人数
根据题目规则,可列出等式:
H = 0.8H + 0.1C
C = 0.9C + 0.2H
整理第一个等式:
0.2H = 0.1C → H:C = 1:2
总人数固定为 150+120=270,代入得平衡时H=90,C=180,比例为1:2。
注:你之前计算的132:138(22:23)是第一天的人群数量变化,并非最终平衡状态。
二、Python实现
方法1:直接通过数学公式计算平衡比例
def calculate_balance_ratio(): # 平衡时满足 0.2H = 0.1C → H/C = 0.1/0.2 = 1/2 h_ratio = 1 c_ratio = 2 return f"健康:患病 = {h_ratio}:{c_ratio}" # 调用示例 print(calculate_balance_ratio())
方法2:模拟每日人群变化,直到达到平衡
def simulate_balance(initial_healthy, initial_sick, tolerance=1e-6): h, c = initial_healthy, initial_sick while True: new_h = 0.8 * h + 0.1 * c new_c = 0.9 * c + 0.2 * h # 检查是否达到平衡(变化量小于阈值) if abs(new_h - h) < tolerance and abs(new_c - c) < tolerance: break h, c = new_h, new_c # 计算最简比例 gcd_val = int(min(round(h), round(c))) # 求最大公约数 def gcd(a, b): while b: a, b = b, a % b return a common_divisor = gcd(round(h), round(c)) h_ratio = round(h) // common_divisor c_ratio = round(c) // common_divisor return f"平衡时健康人数: {round(h)}, 患病人数: {round(c)}, 比例: {h_ratio}:{c_ratio}" # 调用示例 print(simulate_balance(150, 120))
内容的提问来源于stack exchange,提问作者kate_washington
相关产品推荐
相关产品推荐

