我們選擇的入門書籍是葉其孝和姜啟源翻譯的《數(shù)學(xué)建挠镜》脾猛,原著是Frank R. Giordano和William P. Fox編著的《A First Course in Mathematical Modeling(Fifth Edition) 》
從名字就能看出這是一本數(shù)學(xué)建模的入門書籍试溯,由淺入深弓乙,很適合數(shù)學(xué)基礎(chǔ)薄弱的人學(xué)習(xí)。接下來我們將會(huì)把這本書中的建模實(shí)例用Python3來實(shí)現(xiàn)足淆。
本攻略所有代碼內(nèi)容均在winPython下的Spyder及IPython中編寫,其Python版本是3.4.4
當(dāng)然也可以使用Anaconda或者Python(x,y)礁阁,差不多的巧号,因?yàn)槲肄k公室的電腦還是用的xp系統(tǒng),Anaconda老是安裝失敗姥闭,所以選擇的WinPython丹鸿。
初用簡書,沒有找到編輯公式的方法棚品,求幫助靠欢,公式暫時(shí)先用其他軟件編輯廊敌,采用截圖的方式插入文章
實(shí)例1:對(duì)已有數(shù)據(jù)進(jìn)行建模
首先是最簡單的彈簧拉伸模型,學(xué)過胡克定律的同學(xué)們應(yīng)該都知道這是啥门怪,這個(gè)炒雞簡單骡澈,不愿看的同學(xué)可以跳過。
這是一個(gè)研究彈簧伸長與所吊重物質(zhì)量之間關(guān)系的模型掷空。
質(zhì)量(g) | 伸長(cm) |
---|---|
50 | 1.000 |
100 | 1.875 |
150 | 2.750 |
200 | 3.250 |
250 | 4.375 |
300 | 4.875 |
350 | 5.675 |
400 | 6.500 |
450 | 7.250 |
500 | 8.000 |
550 | 8.750 |
從圖中我們可以明顯地看到這是一個(gè)線性關(guān)系肋殴。然后我們就可以對(duì)數(shù)據(jù)進(jìn)行線性擬合(非線性擬合也只是用到了不同的函數(shù)而已),這里用到了numpy庫:
import numpy as np
mass = [ 50*i for i in range(1,12)] #這里偷懶用的列表推導(dǎo)式坦弟,python初學(xué)者可以百度一下护锤,一看就懂
length = [1.000,1.875,2.750,3.250,4.375,4.875,5.675,6.500,7.250,8.000,8.750]
F = np.polyfit(mass,length,1) #按一次多項(xiàng)式擬合
print(F) #輸出各項(xiàng)系數(shù)
P = np.poly1d(F)
print(P) #輸出方程式
這樣,對(duì)于這個(gè)模型的建模就已經(jīng)完成了酿傍。如果要畫出圖來是這樣的:
當(dāng)然烙懦,這個(gè)圖用Python3也可以畫出來,需要用到matplotlib庫赤炒,附上matplotlib簡單教程:
ywjun的學(xué)習(xí)筆記, Python圖表繪制:matplotlib繪圖庫入門
因工作原因修陡,文章更新較慢,這一系列文章旨在解決實(shí)際問題可霎,所以我大部分時(shí)間在找實(shí)例魄鸦,發(fā)現(xiàn)有趣的實(shí)例會(huì)分享給大家。