计算器与数学说起数学计算器,我们常见的是加减乘除四则运算,有了它,我们就可以摆脱笔算和心算的痛苦。四位数以上的加减乘除在数学的原理上其实并不难,但是如果不借助于计算器,光依赖我们的运算能力(笔算和心算),不仅运算的准确度大打折扣,而且还会让我们对数学的运用停留在一个非常浅的层次。
但是我们学生时代所学的数学可远不止这些,尤其是高等数学(微积分)、线性代数、概率统计等数学知识应用非常广泛(我也是后来才知道),但是由于他们的运算非常复杂,我们即便掌握了这些知识,想要应用它又谈何容易,那有没有微积分、线性代数、概率统计等的计算器呢? 答案是有的,它们就是计算机代数系统Computer Algebra System,简称CAS,Python的Sympy库也支持带有数学符号的微积分、线性代数等进行运算。
计算机代数系统Sympy可以实现数学符号的运算,用它来进行数学表达式的符号推导和验算,处理带有数学符号的导数、极限、微积分、方程组、矩阵等,就像科学计算器一样简单,类似于计算机代数系统CAS,虽然CAS通常是可视化软件,但是维基百科上也把Sympy归为CAS。 几大知名的数学软件比如Mathematica、Maxima、Matlab(需Symbolic Math Toolbox)、Maple等都可以做符号运算,在上篇文章中我们已经拿Python和R、Matlab对比了,显然Python在指定场景下确实优势非常明显,于是我又调研了一下Sympy与Mathematica的比较,在输入公式以及生成图表方面,Sympy确实不行(这一点Python有其他库来弥补),Mathematica能够做什么,Sympy基本也能做什么。 所以说Python在专业数学(数学、数据科学等)领域,由于其拥有非常多而且强大的第三方库,构成了一个极其完善的生态链,即使是面对世界上最为强势最为硬核的软件也是丝毫不虚的。
Sympy的符号运算如果之前是学数学相关专业了解计算机代数系统CAS,就会对数学符号的运算比较熟悉,而如果之前是程序员,可能会有点不太明白,下面我们就来了解一下。 Sympy与Math函数的区别 我们先来看一下Sympy库和Python内置的Math函数对数值计算的处理有什么不同。为了让代码可执行,下面的代码都是基于Python3的完整代码。
执行之后,结果显示为:
math模块是直接求解出一个浮点值,而Sympy则是用数学符号表示出结果,结合LaTex的语法就可以得出我们在课本里最熟悉的的:。 数学符号与表达式 我们要对数学方程组、微积分等进行运算时,就会遇到变量比如x,y,z,f等的问题,也会遇到求导、积分等代数符号表达式,而Sympy就可以保留变量,计算有代数符号的表达式的。
输出的结果为: 折叠与展开表达式
表达式的折叠与展开,对应的数学知识就是因式分解,相关的数学知识在人教版初二的教程里。用Python学习数学专栏的目的就是要Python与初高中、大学的数学学习结合起来,让数学变得更加简单生动。 表达式化简 simplify()函数可以对表达式进行化简。有一些表达式看起来会比较复杂,就拿人教版初二上的一道多项式的乘法为例,简化。
求解方程组在人教版的数学教材里,我们初一上会接触一元一次方程组,初一下就会接触二元一次方程、三元一次方程组,在初三上会接触到一元二次方程,使用Sympy的solve()函数就能轻松解题。 解一元一次方程 我们来求解这个一元一次方程组。(题目来源于人教版七年级数学上)
我们需要掌握Python的代码符号和数学符号之间的对应关系,解一元一次方程就非常简单。 解二元一次方程组 我们来看如何求解二元一次方程组。(题目来自人教版七年级数学下)
很快就可以得出 解三元一次方程组 我们来看如何解三元一次方程组。(题目来自人教版七年级数学下) 解一元二次方程组 比如我们来求解人教版九年级一元二次方程组比较经典的一个题目,.
执行之后得出的结果为 微积分Calculus微积分是大学高等数学里非常重要的学习内容,比如求极限、导数、微分、不定积分、定积分等都是可以使用Sympy来运算的。
执行后即可得到结果为1。 求导 可以使用diff(表达式,变量,求导的次数)函数对表达式求导,比如我们要对进行求导,以及求导两次,代码如下:
求导一次的结果就是 求不定积分 Sympy是使用integrate(表达式,变量)来求不定积分的,比如我们要求
执行之后的结果为: 求定积分 Sympy同样是使用integrate()函数来做定积分的求解,只是语法不同:integrate(表达式,(变量,下区间,上区间)),我们来看如果求解
执行之后的结果为 Sympy能够做的也远不止这些,初高中、大学的数学运算题在Sympy极为丰富的功能里不过只是开胃入门小菜而已。 |
|
来自: Bookroom for ... > 《编程》