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