我们选择的入门书籍是叶其孝和姜启源翻译的《数学建模》,原著是Frank R. Giordano和William P. Fox编著的《A First Course in Mathematical Modeling(Fifth Edition) 》
从名字就能看出这是一本数学建模的入门书籍,由浅入深,很适合数学基础薄弱的人学习。接下来我们将会把这本书中的建模实例用Python3来实现。
本攻略所有代码内容均在winPython下的Spyder及IPython中编写,其Python版本是3.4.4
当然也可以使用Anaconda或者Python(x,y),差不多的,因为我办公室的电脑还是用的xp系统,Anaconda老是安装失败,所以选择的WinPython。
初用简书,没有找到编辑公式的方法,求帮助,公式暂时先用其他软件编辑,采用截图的方式插入文章
实例1:对已有数据进行建模
首先是最简单的弹簧拉伸模型,学过胡克定律的同学们应该都知道这是啥,这个炒鸡简单,不愿看的同学可以跳过。
这是一个研究弹簧伸长与所吊重物质量之间关系的模型。
质量(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 |
从图中我们可以明显地看到这是一个线性关系。然后我们就可以对数据进行线性拟合(非线性拟合也只是用到了不同的函数而已),这里用到了numpy库:
import numpy as np
mass = [ 50*i for i in range(1,12)] #这里偷懒用的列表推导式,python初学者可以百度一下,一看就懂
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) #按一次多项式拟合
print(F) #输出各项系数
P = np.poly1d(F)
print(P) #输出方程式
这样,对于这个模型的建模就已经完成了。如果要画出图来是这样的:
当然,这个图用Python3也可以画出来,需要用到matplotlib库,附上matplotlib简单教程:
ywjun的学习笔记, Python图表绘制:matplotlib绘图库入门
因工作原因,文章更新较慢,这一系列文章旨在解决实际问题,所以我大部分时间在找实例,发现有趣的实例会分享给大家。