宋静静
火箭军士官学校(262500)
摘 要:在计算机技术迅速发展的今天,计算和建模更成了数学向科学技术转化的主要途径。数学建模是联系数学和实际问题的桥梁,是数学在各个领域广泛应用的具体实现。Python语言在数据分析和交互、探索性计算以及数据可视化等方面有十分的优势,这恰好解决了在建模中的数据分析与优化模型。
关键词:Python 数学建模 数据处理
在科学和技术发展的过程中,人们用建立数学模型的办法解决需要寻求数量规律的现实问题,取得了许多成果。在计算机技术迅速发展的今天,计算和建模更成了数学向科学技术转化的主要途径。数学建模是联系数学和实际问题的桥梁,是数学在各个领域广泛应用的具体实现。数学建模在科学技术发展中的重要作用受到了人们的普遍重视,成为促进教学的一种方式。
用数学建模来解决实际问题,不仅要对实际问题有深刻的理解,能建立起合适的数学模型,还依赖于对模型进行求解的计算技术。对于大型复杂的数据分析与数据优化模型,往往由于变量数目大、约束条件类型众多或形式复杂,使得模型的求解需要花费大量的时间和精力,而Python语言的应用能够使人们从繁重的工作中解放出来。
一、Python语言处理数据的优点
(一)简单易学
Python语法简单,代码容易读写,最适合刚刚入门的学生去学习。在处理数据的时候,一般都希望数据能够转化成可运算的数字形式,这样,不管是没学过编程的还是学过编程的都能够看懂这个数据。Python在数据分析和交互、探索计算以及数据可视化等方面都显得比较活跃,这就是Python作为数据分析的原因之一,Python拥有很多库,这在处理数据方面有着无与伦比的优势。
(二)强大的编程能力
Python有非常强大的编程能力、数据分析能力,利用它可进行爬虫、写游戏、开发软件等,这些优点就使得一种技术去解决所有的业务服务问题,充分体现了Python有利于各个业务之间的融合,使用Python处理数据,能够大大的提高工作效率。
二、Python语言在数学建模中应用的意义
(一)有利于解决较为复杂的问题
由于数学课程本身具备了较强的逻辑性,这就使得学员在学习过程中常常感到力不从心,尤其是对复杂函数应用的思考,学员很难找到有效的解题思路,从而浪费了课堂的大量时间。而借助Python语言来实施数学建模,将涉及到的条件输入,可在很短的时间内构建出学员所需要的图像与模型,从而对学员的学习起到了积极作用。
(二)有利于提高学员的综合素养
在利用Python构建数学模型的过程中,不但要求学员对数学知识有一定的了解,还必须掌握相应的计算机技术,能够熟练Python语言的操作,因此有利于提升学员的综合素养。
(三)有利于强化学员对数学知识的认知
数学建模需借助于计算机技术,学员首先要对题干进行逐层分析,找准其中的关键点以及变量,并用已知条件来确定建模的策略,从而找到构建数学模型的基本方法,而不盲目地乱建。这就要求学员对已有的数学知识有着一定的理解,并通过构建出来的模型进行分析,也能达到强化认知的目的。
三、Python语言在数学建模中的应用
(一)求定积分
例:用梯形公式求定积分的数值解。
求解的程序代码为:
import numpy as np
from scipy.integrate import quad
def trapezoid(f,n,a,b):
xi=np.linspace(a,b,n)
h=(b-a)/(n-1)
return h*(np.sum(f(xi))-f(a)+f(b)/2)
a=0
b=1
n=1000
f=lambda x:np.cos(np.sqrt(np.sin(x**2)+2*x))
print("梯形积分=",trapezoid(f,n,a,b))
运行结果为:梯形积分=0.4382255125903427
(二)求微分方程
在实际问题中经常需要寻求某个变量y随另一变量x的变化规律y=y(x),这个函数关系式常常不能直接求出。但是容易建立包含变量及导数在内的关系式,也就是建立微分方程,通过求解微分方程对问题进行解释说明。
例:求微分方程,且y(1)=3,在1<x<10步长间隔为0.5点上的数值解。
求解的程序代码为:
from scipy.integrate import odeint
from numpy import arange
dy=lambda y,x:-2*y++x**3+x**2+2*x
x=arange(1,10,0.5)
sol=odeint(dy,3,x)
print("x={}\n对应的数值解y={}",format(x,sol.T))
(三)求最小费用流问题
在很多的实际问题中,往往需要考虑网络上流的费用问题。例如,在运算过程中,我们总是希望在完成运算任务的同时,寻求一个总费用最小的运输方案。
例:如下图带有运费的网络,求从Vs到Vt的最小费用最大流。
求解的程序代码为:
import numpy as np
import networkx as nx
L=[(1,2,5,1),(1,3,3,2),(2,4,3,7),(3,2,1,5),(3,5,2,4),(4,5,2,1),(4,6,6,7),(5,6,5,4)]
G=nx.DiGraph
for k in range(len(L)):
G.add_edge(L[k][0]-1,L[k][1]-1,capacity=L[k][2],weight=L[k][3])
mincostFlow=nx.max_flow_min_cost(G,0,5)
print("路径为:",mincostFlow)
mincost=nx.cost_of_flow(G,mincostFlow)
print("最小费用为:",mincost)
利用Python语言进行数学建模的构建,能够帮助学员更加直观地认识题目的本质,有助于提高解题的效率,并深化对数学知识的理解,能够改善学员解决问题的能力。但是要注意,在数学学习的过程中,学员不能过度依赖于计算机技术解决问题,对于模型简单的题目要动手解决,能更好地理解相关知识。