Python數學建模極簡入門(五)--動力系統習題

第一題

  1. 你計劃拿出一部分薪水作為子女的教育經費,你希望在賬戶里有足夠的存款,使得從現在開始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)#參數隨便設置一下就行了

第三題

殺手病毒:

  1. 該病毒數目每小時翻番,當數量達到100萬時人體免疫系統才開始反應
  2. 反應后身體發(fā)熱,使增長速度變?yōu)槊啃r增長50%
  3. 最大的響應下,每小時能殺死200000個病毒復制體
  4. 當病毒數量達到一萬億個的時候,人會死亡
  5. 注射抗生素之后,病毒復制速度仍然為每小時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個小時要注射抗生素了。
最后上一張沒什么用的圖………………

病毒數量曲線
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這一期講動力系統 在準備這一期教程的過程中我找到了一個挺有意思的課件,推薦給大家:動力系統建模-唐云(清華大學教授...
    dalalaa閱讀 4,354評論 0 15
  • 今天是2017年1月2日我在承德,距離我畢業(yè)已經過去了6個多月了,回首這一年,我決定進行一個自我的總結,希...
    阿洋的grow閱讀 612評論 0 0
  • 記得六、七歲時,學校是有秋假的。而每到秋天,莊稼收割的季節(jié),田野便成了孩子們歡樂的海洋。 吃過午飯,避開大...
    從頭兒活起閱讀 413評論 0 0
  • 又一天,烏鴉叼著肉又被狐貍發(fā)現了,狐貍對烏鴉說:"親愛的烏鴉,我們又見面了。"烏鴉眼睛里閃著兇光,狐貍看出...
    徐寅博閱讀 427評論 2 1
  • 不知從何時起,有了看的書夠多了可以開始自己寫文了的錯覺,但當靜心思索題材時腦子里卻又是一團亂麻。在我的文中,記錄的...
    Graxia閱讀 425評論 0 3

友情鏈接更多精彩內容