第一題
- 你計劃拿出一部分薪水作為子女的教育經費,你希望在賬戶里有足夠的存款,使得從現在開始20年后的開始8年里,每月能提出1000美元,賬戶每年付給你0.35%的利息。 問題:a. 為完成你的投資目標,從現在開始的20年里你總共需要累積多少錢?注:20年后停止投資。b. 在以后的20年里你每月必須存多少錢?
解:
a. 首先說明我們的利率是這樣計算的,年利率0.35,月利率為0.35/12=0.02917這其實是銀行貸款常用的算法。
'''思路:需要累積多少錢,即到二十年年末有多少錢將每個月提出的1000美元折算到第21年的一月份初;
20年1月底:initialValue1 = a1/(1+0.0002917)
20年2月底:initialValue2 = a2/(1+0.0002917)^2
……
將所有的a都這算成初始值,加起來就行了
8年總共有96個月'''
draw = 1000
InitialDeposit = []
TotalDeposit = 0
for i in range(0,96):
draw = draw/(1+0.0002917)
InitialDeposit.append(draw)
TotalDeposit = sum(InitialDeposit)
print(TotalDeposit)
\#積累了94654.69358881074美元
b.'''思路:這個問題稍微復雜一丟丟,需要將每個月的存款設成未知數20年里每個月必須存x元,折算成二十年后的本利和,再與之前的求解立方程來解'''
TotalDeposit = 94654.69358881074
MonthlyDeposit = 0
rate = (1+0.0002917)
rates = []
for i in range(0,240):
rates.append(rate)
rate = rate * (1+0.0002917)
TotalRates = sum(rates)
MonthlyDeposit = TotalDeposit/TotalRates
print(MonthlyDeposit)
\#需要存 380.69668460355354美元
第二題
我們正在考慮鯨魚的生存問題,又假設如果鯨魚的數量降低到低于最小生存水平m以下,該物種將會滅絕。還假設由于環(huán)境的容量M,鯨魚的數量是受限制的,也就是說,如果鯨魚的數量超過了M,那么由于環(huán)境不能支持,數量會衰減。在下列模型中,an表示n年后鯨魚的數量,對M = 5000 ,m = 100, k = 0.0001 以及 a0 = 1000求數值解。an+1 - an = k(M-an)(an-m)再對不同的M,m,k做實驗,試著對若干個a0的起始值做實驗,你的模型有什么預測?
import matplotlib.pyplot as plt
def Whale(a,M,m,k):
list1 = []
sum1 = 0
for i in range(1,20):
list1.append(a)
a = a + k*(M-a)*(a-m)
plt.plot(list1)
Whale(90,1000,100,0.0001)#參數隨便設置一下就行了
第三題
殺手病毒:
- 該病毒數目每小時翻番,當數量達到100萬時人體免疫系統才開始反應
- 反應后身體發(fā)熱,使增長速度變?yōu)槊啃r增長50%
- 最大的響應下,每小時能殺死200000個病毒復制體
- 當病毒數量達到一萬億個的時候,人會死亡
- 注射抗生素之后,病毒復制速度仍然為每小時50%(肯定是在免疫系統反應之后才能發(fā)現)但是免疫系統和抗生素每小時能殺死500000000個病毒復制體。
求: 為了保證病人生命,注射病毒的最晚時間
import matplotlib.pyplot as plt
VirusNumber = 1
hours = 1
\#首先計算要多少小時免疫系統才能反應
while(VirusNumber <= 1000000):
VirusNumber = VirusNumber * 2
hours += 1
print(hours,VirusNumber)
\#結果為21小時小時之后免疫系統開始反應
\#計算不注射抗生素多少小時會死掉
while(VirusNumber <= 1000000000000):
VirusNumber = VirusNumber * 1.5 - 200000
hours += 1
print(hours)
\#結果為57小時后,病人會死亡
\#注射抗生素的情況,從第21小時開始
def antibiotic(x):
curve = []
VirusNumber = 1048576
for i in range(0,x):#尚未注射
curve.append(VirusNumber)
VirusNumber = VirusNumber * 1.5 - 200000
while VirusNumber >= 0 and VirusNumber <= 1000000000000:
VirusNumber = VirusNumber * 1.5 - 500000000
curve.append(VirusNumber)
plt.plot(curve)
if VirusNumber >1000000000000:
return '死亡'
if VirusNumber < 0:
return '存活'
for i in range(1,25):
print("第%d個小時注射會%s"%(i,antibiotic(i)))
結果計算出來最晚在第18個小時要注射抗生素了。
最后上一張沒什么用的圖………………

病毒數量曲線