Python 数学建模

数学建模是利用数学方法解决实际问题的一种实践。即通过抽象、简化、假设、引进变量等处理过程,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。数学建模可以通俗地理解为数学+建模,即运用统计学、线性代数,积分学等数学知识,构建数学模型,通过模型解决问题。

专业书籍:
数学建模教程-吴孟达
《A First Course in Mathematical Modeling(Fifth Edition) 》叶其孝和姜启源翻译
Python科学计算(高清版)PDF
公信部禁止发网盘链接,请加群索取。

#1.方程求导

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.misc

def f(x): return 2*x*x + 3*x + 1
print(sp.misc.derivative(f, 2))</pre>

#2.求不定积分

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.integrate

f = lambda x : x**2
print(sp.integrate.quad(f, 0, 2))
print(sp.integrate.fixed_quad(f, 0, 2))
3.求解非线性方程组

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.optimize

def f(x):
    return [5*x[1] + 3, 4*x[0]*x[0], x[1]*x[2] - 1.5]
ans = sp.optimize.fsolve(f, [0, 0, 0])
print(ans)
print(f(ans))

4.求解线性方程组

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import matplotlib.pylab as plt
import scipy.linalg

a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]])
b = np.array([10, 8, 3])
print(sp.linalg.solve(a, b))
# print(sp.linalg.inv(a).dot(b))

5.画3D马鞍面

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import matplotlib.pylab as plt
from pylab import *
from mpl_toolkits.mplot3d import Axes3D

fig = figure()
ax = Axes3D(fig)
X = np.linspace(-10, 10, 30)
Y = np.linspace(-10, 10, 30)
X, Y = np.meshgrid(X, Y)
Z = (X*X)/3 - (Y*Y)/3
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')
show()

6.画三叶玫瑰线

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import matplotlib.pylab as plt

t = np.linspace(0, 2*np.pi, 1000, endpoint=True)
p = 3 * np.sin(3 * t)
plt.subplot(111, polar=True)
plt.plot(t, p, lw=3, color='g')
plt.grid(True)
plt.show()

7.画星形线

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import matplotlib.pylab as plt

t = np.linspace(-10, 10, 1024)
X = np.cos(t) ** 3
Y = np.sin(t) ** 3
plt.plot(X, Y, label='My', lw=3, color='g')
plt.xlim(X.min()*1.2, X.max()*1.2)
plt.ylim(Y.min()*1.2, Y.max()*1.2)
plt.grid(True)
plt.legend()
plt.show()

8.画随机散点图

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import numpy.random
import matplotlib.pylab as plt

X = np.random.rand(50)
Y = np.random.rand(50)
colors = np.random.rand(50)
area = np.pi * (15 * np.random.rand(50)) ** 2

plt.scatter(X, Y, s=area, c=colors)
plt.show()
从数学建模到人工智能

为什么要把数学建模与当今火热的人工智能放在一起?

首先,数学建模在字面上可以分解成数学+建模,即运用统计学、线性代数和积分学等数学知识,构建算法模型,通过模型来解决问题。数学建模往往是没有对与错,只有”更好”(better),就好像让你评价两个苹果哪个更好吃,只有好吃、不好吃或者更好吃,没有对与错。

人工智能(Artificial Intelligence, AI),你可以将其理解为是一种”黑科技”,人类通过它,让计算机能够”更好”地像人一样思考。可以说”算法模型”是人工智能的”灵魂”,没有算法模型,一切都是”水中月””镜中花”!

因此,本文将从数学建模入手,由浅入深地为读者揭开AI的神秘面纱。

1.1 数学建模
数学建模与人工智能

数学建模简介

数学建模是利用数学方法解决实际问题的一种实践。即通过抽象、简化、假设、引进变量等处理过程,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。数学建模可以通俗地理解为数学+建模,即运用统计学、线性代数,积分学等数学知识,构建数学模型,通过模型解决问题。

按照传统定义,数学模型是对于一个现实对象,为了一个特定目的(实际问题),做出必要的简化假设(模型假设),根据对象的内在规律(业务逻辑、数据特征),运用适当的数学工具、计算机软件,得到的一个数学结构。

亚里士多德说,”智慧不仅仅存在于知识之中,而且还存在于应用知识的能力中”。数学建模就是对数学知识最好的应用,通过数学建模,你会发现,生活中很多有意思的事情都可以靠它来解决,其流程如图1-1所示。

2.人工智能简介

对于普通大众来说,可能是近些年才对其有所了解,其实人工智能在几十年以前就被学者提出并得到一定程度的发展,伴随着大数据技术的迅猛发展而被引爆。

▲图1-1 数学建模流程

(1)人工智能的诞生

最初的人工智能其实是20世纪30至50年代初一系列科学研究进展交汇的产物。1943年,沃伦·麦卡洛克(Warren McCulloch)和瓦尔特·皮茨(Walter Pitts)首次提出”神经网络”概念。1950年,阿兰·图灵(Alan Turing)提出了著名的”图灵测试”,即如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器则具有智能。直到如今,图灵测试仍然是人工智能的重要测试手段之一。1951年,马文·明斯基(Marvin Minsky)与他的同学一起建造了第一台神经网络机,并将其命名为 SNARC(Stochastic Neural Analog Reinforcement Calculator)。不过,这些都只是前奏,一直到1956年的达特茅斯会议,”Artificial Intelligence”(人工智能)这个词才被真正确定下来,并一直沿用至今,这也是目前AI诞生的一个标志性事件。

▲图1-2 达特茅斯会议参会者50年后聚首照[footnoteRef:1] [1: 达特茅斯会议参会者50年后再聚首,左起:Trenchard More、John McCarthy、Marvin Minsky、Oliver Selfridge和Ray Solomonoff(摄于2006年),图片版权归原作者所有。]

在20世纪50年代,人工智能相关的许多实际应用一般是从机器的”逻辑推理能力”开始着手研究。然而对于人类来说,更高级的逻辑推理的基础是”学习能力”和”规划能力”,我们现在管它叫”强化学习”与”迁移学习”。可以想象,”逻辑推理能力”在一般人工智能系统中不能起到根本的、决定性的作用。当前,在数据、运算能力、算法模型、多元应用的共同驱动下,人工智能的定义正从用计算机模拟人类智能,演进到协助引导提升人类智能,如图1-3所示。

(2)人工智能的概念

人工智能(Artificial Intelligence),英文缩写为AI,它是研究开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。

▲图1-3 下一代人工智能(图片来源《新一代人工智能发展白皮书》)

人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的”容器”,也可能超过人的智能。

(3)人工智能、机器学习、深度学习

下面我们来介绍下主要与人工智能相关的几个概念,要搞清它们的关系,最直观的表述方式就是同心圆,如图1-4所示,最先出现的是理念,然后是机器学习,当机器学习繁荣之后就出现了深度学习,今天的人工智能大爆发是由深度学习驱动的。

▲图1-4 AI、机器学习、深度学习的关系

人工智能(AI)、机器学习(ML)、深度学习(DL)的关系为DL⊆ML⊆AI。

人工智能,即AI是一个宽泛的概念,人工智能的目的就是让计算机能够像人一样思考。机器学习是人工智能的分支,它是人工智能的重要核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。深度学习是机器学习研究中的一个新领域,推动了机器学习的发展,并拓展了人工智能的领域范围。甚至有观点认为,深度学习可能就是实现未来强AI的突破口。

可以把人工智能比喻成孩子大脑,机器学习是让孩子去掌握认知能力的过程,而深度学习是这个过程中很有效率的一种教学体系。

因此可以这样概括:人工智能是目的、结果;深度学习、机器学习是方法、工具。

本书讲解了人工智能、机器学习、深度学习的相关应用,它们之间的关系,常见的机器学习算法等知识,希望你通过对本书的学习,深刻理解这些概念,并可以轻而易举地给别人讲解。

3.数学建模与人工智能关系

无论是数学建模还是人工智能,其核心都是算法,最终的目的都是通过某种形式来更好地为人类服务,解决实际问题。在研究人工智能过程中需要数学建模思维,所以数学建模对于人工智能非常关键。

下面通过模拟一个场景来了解人工智能与数学建模之间的关系。

某患者到医院就诊,在现实生活中,医生根据病人的一系列体征与症状,判断病人患了什么病。医生会亲切地询问患者的症状,通过各种专项检查,最后进行确诊。在人工智能下,则考虑通过相应算法来实现上述过程,如德国的辅助诊断产品Ada学习了大量病例来辅助提升医生诊病的准确率。

▲图1-5 AI机器人

情景①:如果用数学建模方法解决,那么就通过算法构建一个恰当的模型,也就是通过图1-1所示的数学建模流程来解决问题。

情景②:如果用人工智能方法解决,那么就要制造一个会诊断疾病的机器人。机器人如何才能精准诊断呢?这就需要利用人工智能技术手段,比如采用一个”人工智能”算法模型,可能既用了机器学习算法,也用了深度学习算法,不管怎样,最终得到的是一个可以落地的疾病预测人工智能解决方案。让其具有思考、听懂、看懂、逻辑推理与运动控制能力,如图1-5所示。

通过上面的例子可以看出,人工智能离不开数学建模。在解决一个人工智能的问题过程中,我们将模型的建立与求解进行了放大,以使其结果更加精准,如图1-6所示。

▲图1-6 AI下对数学建模的流程修正

可见,从数学建模的角度去学习人工智能不失为一种合适的方法。

发表评论

邮箱地址不会被公开。 必填项已用*标注