健康人口为150人,患病人口为120人。每天,有20%的健康人生病,10%的病人康复。请用 Python 编程语言编写一个函数,计算健康人和病人的平衡比例是多少。
首先我尝试做两个数学方程
H - healthy
C - sick
H_1 = 0.8H + 0.1C
C_2 = 0.9C + 0.2H
H_1 = 120 + 12 = 132
H_2 = 108 + 30 = 138
132:138
22:23
保持平衡的比例是多少?你能帮我写这个函数吗?
为了解决这个问题,我们可以创建一个包含 n 行的数组(迭代次数直到达到每行包含的平衡:
n
:迭代次数(行号)h
:健康人口数量c
:患病人数err
:错误值我们定义一个函数来使这个数组称为
nhce
def nhce(h,c):
i=[[0,h,c,None]]
n=0
while i[n][3]!=0:
i.append([n:=i[n][0]+1, x:=round(0.8*i[n-1][1]+0.1*i[n-1][2]), y:=round(0.2*i[n-1][1]+0.9*i[n-1][2]),err:=(i[n-1][1]-x)**2+(i[n-1][2]-y)**2 ])
return i
正如我们所见,这个函数将返回一个数组,我们可以如下使用它:
arr=nhce(150,120)
print(arr)
结果:
[[0, 150, 120, 无], [1, 132, 138, 648], [2, 119, 151, 338], [3, 110, 160, 162], [4, 104, 166, 72], [5, 100, 170, 32], [6, 97, 173, 18]、[7、95、175、8]、[8、94、176、2]、[9、93、177、2]、[10、92、178、 2], [11, 91, 179, 2], [12, 91, 179, 0]]
arr=nhce(150,120)
print("Equilibrium remain at {}:{} in iteration number {} ".format(arr[len(arr)-1][1],arr[len(arr)-1][2],arr[len(arr)-1][0]))
结果:
第 12 次迭代中平衡保持在 91:179
你可以试试这个
h = 150
s = 120
get_h = 0.1 #10% will get healthy
get_s = 0.2 #20% will get healthy
proportion_h = 150 / (150+120) #first proportion
delta = 1 #diffirence
while delta != 0:
got_sick = h*get_s
got_healthy = s*get_h
h = int(h - got_sick + got_healthy)
s = int(s - got_healthy + got_sick)
delta = proportion_h - h /(h+s)
proportion_h = h /(h+s)
proportion_s = 1-proportion_h
print(f'healthy : {h} , sick : {s}, proportion_h : {proportion_h*100}%,proportion_s : {proportion_s*100}%')