数学与Python有机结合及统计学、微积分、线性代数相关资源、图形软件

不管是三大数学软件Matlab(通讯、控制等工程例外)、Maple、Mathematica,仍是三大统计软件Spass、Stata、SAS,这些可视化的软件自己就是编程的一个体现,它们在必定程度上下降了咱们使用数学的门槛,但另外一方面它们背后的功能是能够被编程取代的,而Python在数学和数据科学领域的流行,也是逐渐取代这些软件的一个过程。html

在职业方面,精算师、金融工程、商业分析、数据分析师、数据挖掘、数据建模、量化工程师、算法工程师、数据产品经理、数据运营、数字营销、大数据、游戏开发、人工智能等诸多职业岗位都对数学有要求,可是咱们会发现这些岗位对数学的应用都须要使用到数学软件以及须要与编程结合,能够说咱们要应用数学,自然就应该与编程有机结合起来。而在数学、数据领域,因为Python编程语言的胶水性质以及极为丰富的第三方库,Python渐已成为学数学最值得推荐的编程语言。python

用Python学数学技术专栏就尝试如何将数学与编程有机结合起来,让数学的学习回归到基础概念的理解和实际应用之中去。(固然专栏的目的主要是为数据科学和机器学习等的基础服务)算法

为何数学那么难学且无用?

所谓将数学与编程有机结合,一是在数学学习的方向上就以数学的实际应用为重心;二是数学在符号上、图形上等的表现形式应该与编程语言无缝结合。spring

在咱们学生时代的数学教学存在着诸多弊端:编程

  • 一是以往的教育过于强调具体的计算能力,不少数学学得好的,不过是解题高手,一些极其复杂的微分方程、矩阵等还停留在笔算技巧和笔算能力上,并且对数学的应用须要死记硬背大量复杂的数学公式,这无疑加大了数学学习的难度,也偏离了数学本来的方向;在专栏的代数符号运算里面,咱们就提到过能够借助于Sympy这种CAS工具来进行复杂的数学运算,今后数学公式的记忆与笔算再也不是学习的重点;
  • 二是真正好的数学教学是应该要复杂的数学理论知识简化,国内大学教程相比于国外存在不少不足之处,因此接下来咱们也会推荐一些比较好的数学教程。不少人数学学很差、学不会在很大程度上也与教程对数学概念的讲解有必定的关系;
  • 三是结合Python编程是能够对一些数学的问题进行建模的,经过编程来进行数学建模在前面咱们提到的那么多职业,他们对数学的要求基础大可能是微积分、几率统计、线性代数相关的知识,只是在以往的学习里,咱们看不到数学是如何应用到这些职业里的; 四是结合Python以及一些数学软件,咱们能够作出一些动态图形,加深你们对数学公式的理解

精选数学教程

到了大学以后,线性代数、几率统计、微积分等数学知识的难度较中学时代更高,整个数学的画风变化过大,不少概念开始变得难以理解,不知道怎么忽然就冒出来了,也不知道学了有什么用。关于这些,其实有一部分是咱们教材的缘由,国内大学教材的编写者没有产品经理思惟,没有切实站在学生的角度、没有以学生为中心来写教材。这里推荐一些公认比较好的教材:bash

线性代数app

关于线性代数这里咱们推荐两个教程,一个是William Gilbert Strang(威廉·吉尔伯特·斯特朗)的视频教程麻省理工公开课:线性代数,这个视频教程有配套的教材线性代数导论,价格有点性感,不过不看书也是OK的。Strang是麻省理工MIT的教授,写过不少经典的数学教材。他亲自传授的这个线性代数课程也是享有盛誉。咱们还能够在MIT的开放课程里查看更多关于课程的信息:MIT线性代数课程官网。这个课程还有配套的习题课,在网易云课堂上也能够看到MIT线性代数习题课机器学习

二是3Blue1Brown的线性代数的本质。3Blue1Brown是斯坦福大学毕业的一个小哥创办的Youtube频道,擅长用直观的方法来阐述难以理解的概念,很是推荐。编程语言

微积分ide

微积分的课程咱们也一样是推荐MIT和3Blue1Brown的课程。微积分在MIT分为单变量微积分和多变量微积分,并且都有配套的习题视频,在网易云课堂均可以看到。 单变量微积分单变量微积分习题课多变量微积分多变量微积分习题课。若是想看更多视频内容也能够去MIT官网上了解一下,单变量微积分官网多变量微积分官网

3Blue1Brown的微积分的本质讲的也是一如既往的好,能够在学习MIT课程前先看。

统计学

统计学是一门很是重要的知识,这里咱们推荐Khan Academy可汗学院的统计学教程,虽然也有MIT统计学教程,惋惜的是没有字幕,若是你听不懂,能够去Youtube上借助AI字幕来看,也能够去MIT统计学基础官网上获取更多资料。还有一个斯坦福大学的统计学习入门(英文字幕)至关不错。 以上教程可能有的使用的R或MATLAB,这些都是能够用Python来代替的。

数学公式与图像展现

有趣的数学图形

为了加深咱们对数学公式的理解,咱们一般都须要辅之以一些图形,好比函数的图形、几何图形、空间图形等。以往咱们做图都是经过在纸上手绘一些图形,不只麻烦,并且很是不精确,更没法让图形根据变量取值的变化来直观的调整图形。 好比下面这个公式:

y=x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(\pi x\right)

为了手绘出这个图形,咱们不只要研究这个数学公式的特性(好比最高点、最低点、拐点、凹凸性)、还要经过赋值的方式来肯定图形的轮廓。固然因为赋值的有限,图形天然是没法作到精准的。这仍是只有一个变量的状况下,有时咱们为了研究数学公式,可能会有多个变量,好比下面的公式除了x这个变量之外,还会有变量b:

y=x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(b\pi x\right)

因为公式过于复杂,学生时代数学公式的图形绘制也花了咱们大量的时间。可是图形却又是有必要的,由于它能够加深咱们对数学公式的理解。其实咱们是能够借助于计算机软件来实现这个公式的图形的。

心形数学图形

数学图形绘制软件

那上面这个数学公式图形的动画效果是怎么作的呢,可使用DesmosGeogebra 在线版原本绘制,虽然万能的Wolfram Alpha( Mathematica产品也是该公司的)也能够作到,不过体验比较差还收费。Desmos、Geogebra、Wolfram Alpha(收费)都有很是不错的App产品,很是值得学习数学的朋友使用这些软件来增进对数学公式、概念等的理解。

Desmos、Geogebra能够经过虚拟键盘的方式来输入公式,很是方便,并且公式输入框里面的公式格式是LaTex,能够直接复制公式到VS Code的Markdown里,加上$$$$符号便可显示,对LaTex不了解的童鞋能够阅读本专栏用Python学数学里面的《使用Markdown输出LaTex数学公式》。同时你也能够直接把LaTex格式的数学公式直接粘贴到Desmos、Geogebra的数学公式输入框里面。好比把下面LaTex格式的数学公式粘贴到数学公式输入框里面,将b做为变量:

x^{\frac{2}{3}}+0.9\sqrt{3.3-x^2}\sin\left(b\pi x\right)
复制代码

Desmos、Geogebra能够给数学公式添加变量,你可使用Slider来调整变量的值,图形会实时绘制并展现出来,堪称教学神器,之后不再用手绘数学图形啦~

使用Desmos绘制的图形

其余数学相关软件(含App)

既然都已是互联网时代了,借助于PC端在线版本的软件以及手机端的App来学习数学是理所应当的,在美国等国家,这些数学软件早已走进了课堂(对中小学数学软件感兴趣的朋友能够自行搜索整理了解一下,这里就不介绍了)。

Symbolab:告诉你运算步骤的数学软件

Symbolab :这是一个高等数学计算器,支持Online版本(也有不错的App软件),能够用来计算一些基础的代数、函数、三角、微积分等数学公式以及化学公式的运算,它最有特点的功能是能够给出比较详细运算的步骤,若是你想计算下列数学公式的值:

\int \left(x^2+ax-3\right)^2dx

用Symbolab来计算,除了能够得出以下结果:

\int \left(x^2+ax-3\right)^2dx=\frac{ax^4}{2}+\frac{x^5}{5}-2x^3+\frac{a^2x^3}{3}-3ax^2+9x+C

它还会把整个运算步骤的细节也给你展现出来,很是适合学生再作数学习题时,来检查本身运算步骤是否错误,也适合老师出数学习题。

相似这样的数学软件还有MathPapa(总体感受比Symbolab要差),Photomath (有手机App,除了能够拍照识别公式外,也不如Symbolab)、Mathway(也比较通常,手机App却是不错)。你也能够在应用商店经过搜索“Math”来获取其余数学App,不过它们的功能和以上所说的这些都是相似的。

Python是万能的

咱们一直强调的是以上所述全部数学软件都是能够被Python取代的(须要GUI图形点击操做也能够,只是比较复杂,不推荐而已),用数学软件是很难作到与编程结合的,也没法使用到一些API将数据对接到生产环节里去。不能与编程结合,数学公式就是死的,不能有效将数据应用到生产实践里,数据的商业价值就大打折扣。因此,除了绘制数学图形外,学习数学就应该彻底与编程有机结合

那Python怎么绘制数学图形呢?咱们可使用最经常使用的数据可视化库matplotlib以及能够作代数符号运算的Sympy来绘制数学图形。

使用matplotlib绘制 3x+2x-4的数学图形:

import numpy as np  
import matplotlib.pyplot as plt  
def graph(formula, x_range):  
    x = np.array(x_range)  
    y = eval(formula)
    plt.plot(x, y)  
    plt.show()
    
graph('x**3+2*x-4', range(-10, 11))
复制代码

3x+2x-4的数学图形

使用Sympy绘制x^2x交叉的数学图形:

from sympy import symbols
from sympy.plotting import plot
x = symbols('x')
p1 = plot(x*x, show=False)
p2 = plot(x, show=False)
p1.append(p2[0])
p1.show()
复制代码

交叉的数学图形

另:使用Python的Sympy Gamma也一样得到解题的详细步骤,不过使用体验上是无法和Symbolab相比的

相关文章
相关标签/搜索