在学习与科研中,经常会遇到一些数学运算问题,使用计算机完成运算具有速度快和准确性高的优势。Python的Numpy包具有强大的科学运算功能,且具有其他许多主流科学计算语言不具备的免费、开源、轻量级和灵活的特点。本文使用Python语言的NumPy库,解决数学运算问题中的线性方程组问题、积分问题、微分问题及矩阵化简问题,结果准确快捷,具有一定的借鉴意义。
SymPy一个用于符号型数学计算(symbolic mathematics)的Python库。它旨在成为一个功能齐全的计算机代数系统(Computer Algebra System,CAS),同时保持代码简洁、易于理解和扩展。SymPy完全是用Python写的,并不需要外部的库。
首先,我们通过pip安装一下sympy这个计算库吧!
pip install sympy
可用SymPy进行数学表达式的符号推导和演算。可使用isympy运行程序,isympy在
IPython的基础上添加了数学表达式的直观显示
功能。启动时还会自动运行下面的程序:
这段程序首先将Python的除法操作符“/”
从整数除法改为普通除法。然后从SymPy库载
入所有符号,并且定义了四个通用的数学符号x
、y、z 、t,三个表示整数的符号k、m、n,
以及三个表示数学函数的符号f、g、h。
欧拉恒等式
此公式被称为欧拉恒等式,其中e是自然
常数,i是虚数单位, 是圆周率。此公式被誉
为数学中最奇妙的公式,它将5个基本数学常数
用加法、乘法和幂运算联系起来。
从SymPy库载入的符号中,E表示自然常
数,I表示虚数单位,pi表示圆周率,因此上面
的公式可以直接如下计算:
print(E**(I*pi)+1)
输出结果为:0
SymPy除了可以直接计算公式的值之外,
还可以帮助做数学公式的推导和证明。欧拉恒等
式可以将 代入下面的欧拉公式得到:
在SymPy中可以使用expand()将表达式展
开e^ix,用它展开看(expand()中x是复数):
print(expand(exp(I*x), complex=True) )
输出:
为了指定x为实数,需要重新定义x
x = Symbol("x", real=True)
print(expand(exp(I*x), complex=True))
输出:
数学表达式
创建一个符号使用symbols(),此函数会
返回一个Symbol对象,用于表示符号变量,
其有name属性,这是符号名,如:
x0=symbols('x0')
其中左边的x是一个符号对象,而右边括
号中用引号包着的x是符号对象的name属性,
两个x不要求一样,但是为了易于理解,通常将
符号对象和name属性显示成一样,另外name
属性是引号包起来的。如要同时配置多个符号
对象,symbols()中多个name属性可以以空格或者逗号分隔,然后用引号包住,如下:
一次配置三个符号,由于符号对象名和
name属性名经常一致,所以可以使用var()
函数,如:
上面的语句创建了名为x0、y0、x1、y1的4
个Symbol对象,同时还在当前的环境中创建 了
4个同名的变量来分别表示这4个Symbol对象。
因为符号对象在转换为字符串时直接使用它的
name 属性,因此在交互式环境中看到变量,x0的
值就是x0,但是査看变量x0的类型时就可以发现
,它实际上是一个Symbol对象。
type(x0)
数学公式中的符号一般都有特定的假设,例
如m、n通常是整数,而z经常表示复数。在用
var()、symbols()或Symbol()创建Symbol对
象时,可以通过关键字参数指定所创建符号的假
设条件,这些假设条件会影响到它们所参与的计
算。
例如,下面创建了两个整数符号m和n, 以
及一个正数符号x:
每个符号都有许多is_*属性,用以判断符
号的各种假设条件。
SymPy的表达式实际上是一个由Basic类
的各种对象进行多层嵌套所得到的树状结构。
下面的函数使用递归显示这种树状结构:
除了使用SymPy中预先定义好的具有特殊
运算含义的数学函数之外,还可以使用
Function()创建自定义的数学函数:
f = Function("f")
当我使用f创建一个表达式时,就相当于创
建它的一个实例:
t = f(x,y)
isinstance(t, Function)
t.func
f的实例t可以参与表达式运算:
t+t*t
f(x, y)**2 + f(x, y)
表达式变换和化简
simplify()可以对数学表达式进行化简:
simplify((x+2)**2 - (x+1)**2)
输出:2*x + 3
radsimp()可以对表达式进行分母有理化,它所得到的表达式分母将没有无理数:
radsimp(1/(sqrt(5)+2*sqrt(2)))
输出:(-sqrt(5) + 2*sqrt(2))/3
fraction()获得ratsimp()通分之后的分子或分母(它不能自动对表达式进行通分):
fraction(ratsimp(1/x+1/y))
输出:(x + y, x*y)
cancel()对分式的分子分母进行约分计算(不能对内部函数的表达式进行约分):
cancel((x**2-1)/(1+x))
输出:x-1
cancel(sin((x**2-1)/(1+x)))
输出:sin(x**2/(x + 1) - 1/(x + 1))
trigsimp()是用来对三角函数进行化简用的:
trigsimp(sin(x)**2+2*sin(x)*cos(x)+cos(x)**2)
输出:sin(2*x) + 1
expand_trig()展开三角函数表达式:
expand_trig(sin(2*x+y))
输出:(2*cos(x)**2 - 1)*sin(y) + 2*sin(x)*cos(x)*cos(y)
log()展开乘积和幂运算:
x,y=symbols("x,y",positive=True)
expand(log(x*y**2))
输出:log(x) + 2*log(y)
factor()对多项表达式进行因式分解:
factor(15*x**2+2*y-3*x-10*x*y)
输出:(3*x - 2*y)*(5*x - 1)
integrate()可以用来计算积分,它包含定积分和不定积分:
integrate(f,x):计算不定积分∫ fdx
integrate(f,(x,a,b)):计算定积分∫a/b fdx
当然有时候我们也有多重积分要运算,不要担心,我们还可以用
Integrate(f,x,y)来计算双重积分:∫ ∫ fdxdy
Integrate(f,(x,a,b),(y,c,d)):计算双重定积分(x上下限ab,y上下限cd)
输出:-x*cos(x) + sin(x))
当然,sympy还可以求极限,我们大学学的第一个内容!
语法:limit(function, variable, point),如果是求趋于0,那就把第三个变量改成0,limit(f,x,0),如果是求趋于无穷,第三个变量改成oo(字母)limit(sin(x)/x, x, oo)
输出:1
输出:0
其他还有一些求导,矩阵的算法,平面几何算法,详细见一下sympy文档,这里因为时间问题,我们就不再去介绍了,有问题的可以私聊小编!
下期见!
相关推荐
在本压缩包“03第3章 Python在高等数学和工程数学的应用(Python 程序及数据)”中,我们探讨了Python语言在高等数学和工程数学中的应用。Python因其简洁明了的语法和丰富的科学计算库,已经成为数学建模和数据分析的...
本文档以“基于Python语言的应用数学案例教学——以线性代数为例”为题,探讨了如何通过Python程序语言来实现线性代数知识在实际问题中的应用。 首先,文档明确提出了大数据时代对应用数学教学的新要求。传统的教学...
高等数学等价无穷小替换_极限的计算 高等数学中,无穷小替换是求极限的一种重要方法。无穷小的概念是指函数或数列在某一趋近方式下的极限行为。无穷小的定义是:当在给定的趋近方式下,函数或数列以零为极限,那么...
通过这个压缩包中的"03第3章 Python在高等数学和线性代数中的应用.pptx",你可以更直观地了解Python如何应用于各个数学领域,同时,结合"数学建模常用算法(Python 程序及数据)"的代码实例,能够更好地掌握实际操作...
此外,Python还包含了一些强大的数学库,如`math`库,用于提供高等数学函数,如三角函数、指数、对数等;`numpy`库提供了高效的数组操作和矩阵运算;`scipy`库则用于科学计算,包含优化、插值、统计等功能。 3. **...
6. **高等数学——基于Python的实现**:这本教材可能将高级数学概念,如微积分、线性代数和概率统计,与Python编程结合,帮助读者理解并实现这些概念。 7. **线性代数和概率统计**:线性代数是机器学习和人工智能的...
这一部分会介绍如何使用Python解决微积分、线性代数等高等数学问题,包括求解微分方程、矩阵运算、特征值和特征向量计算等,主要涉及SciPy和SymPy库。 4. **概率论与数理统计**(04第4章 概率论与数理统计1.pptx和...
第3章 Python在高等数学和工程数学的应用 第4章 概率论与数理统计 第5章 线性规划 第6章 整数规划与非线性规划 第7章 插值与拟合 第8章 微分方程模型 第9章 综合评价方法 第10章 图论模型 第11章 多元分析 第12章 ...
这个实验课程旨在帮助学生深入理解和掌握高等数学概念,通过编程解决复杂的数学问题,增强计算能力,并提高分析问题的能力。 首先,高等数学是理工科学生必修的基础课程,涵盖了微积分、线性代数、概率论与数理统计...
本书籍介绍了 Python 编程与数学、几何图形、科学计算基础编程、数据科学应用、机器学习线性代数基础、高等数学、程序员的数学、人工智能基础数学知识、图解数据结构与算法、数学与泛型编程、高效编程的奥秘等多个...
在高等数学和工程数学的应用中,Python能够有效地进行数值计算、符号计算、数据分析以及图形可视化,极大地提高了工作效率。本章将探讨Python在这些领域的具体应用。 一、数值计算 Python中的NumPy库是进行科学计算...
根据提供的文件信息,本文将详细探讨数学建模中Python在高等数学与工程数学领域的应用,以及如何通过Python程序实现这些应用。Python作为一种强大的编程语言,在数学建模领域有着广泛的应用前景,尤其在处理复杂的...
计算思维是一种运用计算机学科的基本理论来分析问题、设计规划系统、指导人们行为的思维模式,它融合了求解一般问题的数学思维方法和设计评估复杂系统的工程思维方法。计算思维的本质在于对事物进行抽象和将处理过程...
【Python语言在高等数学积分教学中的应用】 高等数学是理工科教育的重要组成部分,其中积分学是核心内容之一,包括定积分、反常积分、重积分等多个方面。然而,积分学的抽象性和复杂性往往给非数学专业的学生带来...
- Sympy:一个用于符号计算的Python库,支持微积分、代数、离散数学等操作,可以用来解析地求解各种数学问题。 4. 多项式函数 多项式函数是数学中的一种基本函数形式,由变量的整数次幂和系数构成。通过Python...
《Python数学实验与建模》以 Python 软件为基础, 详细介绍了数学建模的各种常用算法及其软件实现, 内容涉及高等数学、工程数学中的相关数学实验、数学规划、插值与拟合、微分方程、差分方程、评价预测、图论模型、...
高等数学ppt课件 1-1函数的概念.ppt 高等数学ppt课件 1-2函数的几种特性.ppt 高等数学ppt课件 1-3初等函数.ppt 高等数学ppt课件 1-4一些常用不等式和等式.ppt 高等数学ppt课件 1-5极坐标简介.ppt 高等数学ppt课件 10...
Python-mathAI是一个基于Python开发的智能项目,其主要功能是实现对数学计算题的图像识别,进而解出计算式的答案。该项目运用了机器学习技术,使得计算机能够理解和解析图片中的数学公式,为用户提供自动解答服务。...
【Python编程习题集chxx1】章节涵盖了Python语言的基础知识和编程练习,涉及输入输出、数学计算、字符串处理、条件判断、循环控制等多个方面。以下是各知识点的详细解释: 1. **输入输出**:使用`input()`函数从...