四行代码秒解微积分!Python这个模块神了!
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这个模块神了!相关推荐
- python测试代码性能_使用python timeit 模块检测代码性能
使用Python 通常在乎的是它的开发效率,而不是运行性能. 但如果通过很简单的方法可以测试出n种不同的写法之间的性能差异,这个过程本身也是一种乐趣. python 自带了timeit 模块,可以在代 ...
- python解析原理_代码详解:Python虚拟环境的原理及使用
Python的虚拟环境极大地方便了人们的生活.本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理. 注意:本指南在macOS Mojave系统上使用最新版本的Python ...
- 代码全解:Python实现自动玩贪吃蛇程序
录 实现效果 代码 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹骂我,哈哈 ,多人游戏整个自动玩会被骂死~ 代码 没装软件的先安装一下软件,没装模块的安装一下pygame模块. ...
- 蒙特卡洛树搜索(MCTS)代码详解【python】
前文: AlphaGo Zero 详解 后文: AlphaZero五子棋网络模型[python] 之前看了AlphaGo Zero 的整个流程,接下来就要了解一下具体怎么实现的.毕设选择做用 Alph ...
- 美国队长的工资 python代码-详解用Python练习画个美队盾牌
0 环境 Python版本:3.6.6 操作系统:Mac OS Mojave 10.14.2 1 引言 最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看. 看着看着还会笑?WTF?你在干嘛呢? 没错 ...
- P5727 【深基5.例3】冰雹猜想(思路+代码详解)python实现
题目描述 给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过验证很大的数字(7×)都可以按照这样 ...
- python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...
- 用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...
- python使用turtle库绘制一个100长度的十字架_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...
使用python图形模块turtle库绘制樱花.玫瑰.圣诞树代码实例 发布时间:2020-08-22 15:57:19 来源:脚本之家 阅读:76 作者:Soul fragments 今天为大家介绍几 ...
最新文章
- 100条Vista命令行技巧Tips,您知道几条?
- 在Delphi程序中应用IE浏览器控件
- Unix原理与应用学习笔记----第六章 文件的基本属性2
- php中写salt,请快速检查这个PHP+SALT实现-不工作?
- java ee jaas_java-ee – Tomcat-Jaas – 如何检索主题?
- Python学习笔记之列表(五)
- C# 图片处理之:旋转图片任意角度
- printf格式化字符串_Java printf()–将格式化的字符串打印到控制台
- FFMPEG实现RTSP中H264数据流解码 并且实时播放
- android textview 设置字体,Android 设置TextView自动调整字体大小
- hosts该文件已设置为只读的解决方法
- html thead作用,HTML thead 标签定义和用法详细介绍
- [ 网络协议篇 ] IGP 详解之 OSPF 详解(三)--- OSPF协议报文 链路状态通告 详解
- c语言中优先级劣后级,基金优先级与劣后级的区别是什么 看完你就明白了
- 食物相克表食物最佳搭配
- C语言/C++编程学习:和QT零距离接触的意义
- 推荐系统-协同过滤简单介绍
- 首次授权中国区独立维修商,高冷的苹果也为“五斗米“折腰?
- uml建模工具 支持php,【UML 建模】在线UML建模工具 ProcessOn 使用详解
- html5英文参考文献,外文参考文献引用常识介绍
热门文章
- 【Ubuntu】普通用户修改了/etc/sudoers文件权限导致的问题
- Python实现PD文字识别、提取并写入CSV文件脚本分享
- 太赞了!没想到一个Handler还有中高级几种问法,进阶学习资料!
- 《R语言与数据挖掘》④R语言数据可视化最全的总结
- 整理阿里巴巴社招最新面试题及答案,附复学习笔记,面试成功归来
- 第七课,OpenGL之LookAt函数
- bd青鸟Java宠物商店2017
- android 通知栏授权,Android通知栏权限是否开启
- arnold ass standin 代理模型批量查询 与替换工具发布1.0
- 加密流量分析-2.研究背景