SymPy 是一个Python库,专注于符号数学,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。

举一个简单的例子,比如说展开二次方程:

from sympy import *
x = Symbol('x')
y = Symbol('y')
d = ((x+y)**2).expand()
print(d)
# 结果:x**2 + 2*x*y + y**2

你可以随便输入表达式,即便是十次方,它都能轻易的展开,非常方便:

from sympy import *
x = Symbol('x')
y = Symbol('y')
d = ((x+y)**10).expand()
print(d)
# 结果:x**10 + 10*x**9*y + 45*x**8*y**2 + 120*x**7*y**3 + 210*x**6*y**4 + 252*x**5*y**5 + 210*x**4*y**6 + 120*x**3*y**7 + 45*x**2*y**8 + 10*x*y**9 + y**10

下面就来讲讲这个模块的具体使用方法和例子。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

请选择以下任一种方式输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install Sympy

2.基本使用

简化表达式(化简)

sympy支持三种化简方式,分别是普通化简、三角化简、指数化简。

普通化简 simplify( ):

from sympy import *
x = Symbol('x')
d = simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))
print(d)
# 结果:x - 1

三角化简 trigsimp( ):

from sympy import *
x = Symbol('x')
d = trigsimp(sin(x)/cos(x))
print(d)
# 结果:tan(x)

指数化简 powsimp( ):

from sympy import *
x = Symbol('x')
a = Symbol('a')
b = Symbol('b')
d = powsimp(x**a*x**b)
print(d)
# 结果:x**(a + b)

解方程 solve()

第一个参数为要解的方程,要求右端等于0,第二个参数为要解的未知数。

如一元一次方程:

from sympy import *
x = Symbol('x')
d = solve(x * 3 - 6, x)
print(d)
# 结果:[2]

二元一次方程:

from sympy import *
x = Symbol('x')
y = Symbol('y')
d = solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
print(d)
# 结果:{x: 2, y: 1}

求极限 limit()

dir=’+’表示求解右极限,dir=’-‘表示求解左极限:

from sympy import *
x = Symbol('x')
d = limit(1/x,x,oo,dir='+')
print(d)
# 结果:0
d = limit(1/x,x,oo,dir='-')
print(d)
# 结果:0

求积分 integrate( )

先试试求解不定积分:

from sympy import *
x = Symbol('x')
d = integrate(sin(x),x)
print(d)
# 结果:-cos(x)

再试试定积分:

from sympy import *
x = Symbol('x')
d = integrate(sin(x),(x,0,pi/2))
print(d)
# 结果:1

求导 diff()

使用 diff 函数可以对方程进行求导:

from sympy import *
x = Symbol('x')
d = diff(x**3,x)
print(d)
# 结果:3*x**2d = diff(x**3,x,2)
print(d)
# 结果:6*x

解微分方程 dsolve( )

以 y′=2xy 为例:

from sympy import *
x = Symbol('x')
f = Function('f')
d = dsolve(diff(f(x),x) - 2*f(x)*x,f(x))
print(d)
# 结果:Eq(f(x), C1*exp(x**2))

3.实战一下

今天群里有同学问了这个问题,“大佬们,我想问问,如果这个积分用Python应该怎么写呢,谢谢大家”:

# Python 实用宝典
from sympy import *
x = Symbol('x')
y = Symbol('y')
d = integrate(x-y, (y, 0, 1))
print(d)
# 结果:x - 1/2

为了计算这个结果,integrate的第一个参数是公式,第二个参数是积分变量及积分范围下标和上标。

运行后得到的结果便是 x - 1/2 与预期一致。

如果大家也有求解微积分、复杂方程的需要,可以试试sympy,它几乎是完美的存在。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

四行代码秒解微积分!Python这个模块神了!相关推荐

  1. python测试代码性能_使用python timeit 模块检测代码性能

    使用Python 通常在乎的是它的开发效率,而不是运行性能. 但如果通过很简单的方法可以测试出n种不同的写法之间的性能差异,这个过程本身也是一种乐趣. python 自带了timeit 模块,可以在代 ...

  2. python解析原理_代码详解:Python虚拟环境的原理及使用

    Python的虚拟环境极大地方便了人们的生活.本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理. 注意:本指南在macOS Mojave系统上使用最新版本的Python ...

  3. 代码全解:Python实现自动玩贪吃蛇程序

    录 实现效果 代码 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹骂我,哈哈 ,多人游戏整个自动玩会被骂死~ 代码 没装软件的先安装一下软件,没装模块的安装一下pygame模块. ...

  4. 蒙特卡洛树搜索(MCTS)代码详解【python】

    前文: AlphaGo Zero 详解 后文: AlphaZero五子棋网络模型[python] 之前看了AlphaGo Zero 的整个流程,接下来就要了解一下具体怎么实现的.毕设选择做用 Alph ...

  5. 美国队长的工资 python代码-详解用Python练习画个美队盾牌

    0 环境 Python版本:3.6.6 操作系统:Mac OS Mojave 10.14.2 1 引言 最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看. 看着看着还会笑?WTF?你在干嘛呢? 没错 ...

  6. P5727 【深基5.例3】冰雹猜想(思路+代码详解)python实现

    题目描述 给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过验证很大的数字(7×)都可以按照这样 ...

  7. python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  8. 用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  9. python使用turtle库绘制一个100长度的十字架_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...

    使用python图形模块turtle库绘制樱花.玫瑰.圣诞树代码实例 发布时间:2020-08-22 15:57:19 来源:脚本之家 阅读:76 作者:Soul fragments 今天为大家介绍几 ...

最新文章

  1. 100条Vista命令行技巧Tips,您知道几条?
  2. 在Delphi程序中应用IE浏览器控件
  3. Unix原理与应用学习笔记----第六章 文件的基本属性2
  4. php中写salt,请快速检查这个PHP+SALT实现-不工作?
  5. java ee jaas_java-ee – Tomcat-Jaas – 如何检索主题?
  6. Python学习笔记之列表(五)
  7. C# 图片处理之:旋转图片任意角度
  8. printf格式化字符串_Java printf()–将格式化的字符串打印到控制台
  9. FFMPEG实现RTSP中H264数据流解码 并且实时播放
  10. android textview 设置字体,Android 设置TextView自动调整字体大小
  11. hosts该文件已设置为只读的解决方法
  12. html thead作用,HTML thead 标签定义和用法详细介绍
  13. [ 网络协议篇 ] IGP 详解之 OSPF 详解(三)--- OSPF协议报文 链路状态通告 详解
  14. c语言中优先级劣后级,基金优先级与劣后级的区别是什么 看完你就明白了
  15. 食物相克表食物最佳搭配
  16. C语言/C++编程学习:和QT零距离接触的意义
  17. 推荐系统-协同过滤简单介绍
  18. 首次授权中国区独立维修商,高冷的苹果也为“五斗米“折腰?
  19. uml建模工具 支持php,【UML 建模】在线UML建模工具 ProcessOn 使用详解
  20. html5英文参考文献,外文参考文献引用常识介绍

热门文章

  1. 【Ubuntu】普通用户修改了/etc/sudoers文件权限导致的问题
  2. Python实现PD文字识别、提取并写入CSV文件脚本分享
  3. 太赞了!没想到一个Handler还有中高级几种问法,进阶学习资料!
  4. 《R语言与数据挖掘》④R语言数据可视化最全的总结
  5. 整理阿里巴巴社招最新面试题及答案,附复学习笔记,面试成功归来
  6. 第七课,OpenGL之LookAt函数
  7. bd青鸟Java宠物商店2017
  8. android 通知栏授权,Android通知栏权限是否开启
  9. arnold ass standin 代理模型批量查询 与替换工具发布1.0
  10. 加密流量分析-2.研究背景