0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SymPy:四行代码秒解微积分

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-21 16:31 次阅读

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**2

d = 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,它几乎是完美的存在。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7388

    浏览量

    87646
  • 代码
    +关注

    关注

    30

    文章

    4731

    浏览量

    68273
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84396
收藏 人收藏

    评论

    相关推荐

    微积分公式大全

    微积分公式大全 sin (α±β)=sin α cos β ± cos α sin βcos (α±β)=cos α cos β  sin α sin β2
    发表于 01-25 08:57

    谁有labview微积分的例子啊

    谁有labview微积分的例子啊,求助
    发表于 09-23 18:41

    求运放有微积分反馈的资料

    `谁有运放有微积分反馈的资料啊 ,上传份吧 ,谢了`
    发表于 05-29 14:34

    分享《Matlab与微积分》课件

    分享一份 Matlab求解微积分的课件,非常简洁实用,贴出其中两节的内容和目录大家看看,课件附件也上传在下面了。1求极限1.1 计算f=1/x分别在x=∞和x=0的极限值1.2 使用求极限的方法推导
    发表于 10-30 16:06

    微积分pdf(全美经典)

    全美经典学习指导系列:微积分
    发表于 08-08 14:27 0次下载
    <b class='flag-5'>微积分</b>pdf(全美经典)

    RC微积分电路的Multisim仿真

    基于探索 RC微积分电路仿真实验技术的目的,采用Multisim10仿真软件对RC微积分电路的工作波形进行了仿真实验测试,给出了几种Multisim仿真实验方案,分析了输出电压与输入电压之间的
    发表于 02-29 11:51 270次下载
    RC<b class='flag-5'>微积分</b>电路的Multisim仿真

    微积分(电子科技大学)

    微积分上下册 pdf文件版本 高清
    发表于 04-16 09:42 0次下载

    深度学习中会用到的微积分知识

    导数(Derivative),也叫导函数值。又名微商,是微积分中的重要基础概念。
    的头像 发表于 01-22 17:28 2511次阅读

    STM32四行【跳转程序】 引申出来的几条重要知识点

    STM32四行【跳转程序】引申出来的几条重要知识点
    的头像 发表于 03-08 11:37 1.8w次阅读
    STM32<b class='flag-5'>四行</b>【跳转程序】 引申出来的几条重要知识点

    深度解读你也能懂的微积分

    所以,大家在看这篇文章的时候不要有什么心理负担,微积分并不是什么很难的东西,我们连高大上的麦克斯韦方程组都看过来了,还怕什么微积分对不对?只要跟着长尾科技的思路走,我相信一般的中学生都是可以非常顺畅地理解微积分的。
    的头像 发表于 06-28 17:22 5899次阅读

    硬件设计为何还要学习微积分

    学习硬件设计,为何要学习微积分呢?我们知道,电路分析理论中关心的6个基本电路变量,是电压、电流、电荷、磁链、功和能,这6个量之间的数学关系为: 容易看到,它们之间的关系是用微积分描述的。所以,没有
    的头像 发表于 05-03 18:06 2472次阅读
    硬件设计为何还要学习<b class='flag-5'>微积分</b>?

    Banach空间几类分数阶微积分方程的mild的存在性

    Banach空间几类分数阶微积分方程的mild的存在性(直流电源技术题库)-分数微积分理论是数学分析的一个新的分支,专门研究函数的任意阶微分和积分的非标准的算子理论及其应用.尽管分数
    发表于 09-17 10:14 1次下载
    Banach空间几类分数阶<b class='flag-5'>微积分</b>方程的mild<b class='flag-5'>解</b>的存在性

    戴维·M. 布雷苏:对微积分的思考

    在整本书中, 我都坚持将大多数学生记得 (如果他们记得) 的这个联系积分和微分的定理称为积分学基本定理, 而不是简单的微积分基本定理 (fundamental theorem of calculus). 正如我在 2.7 节脚注
    的头像 发表于 05-30 11:43 639次阅读
    戴维·M. 布雷苏:对<b class='flag-5'>微积分</b>的思考

    PyTorch教程22.4之多元微积分

    电子发烧友网站提供《PyTorch教程22.4之多元微积分.pdf》资料免费下载
    发表于 06-06 09:27 0次下载
    PyTorch教程22.4之多元<b class='flag-5'>微积分</b>

    Sympy模块如何解数学方程微积分

    SymPy 是一个Python库,专注于符号数学,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。 举一个简单的例子,比如说展开二次方程: from sympy
    的头像 发表于 10-31 14:33 548次阅读
    <b class='flag-5'>Sympy</b>模块如何解数学方程<b class='flag-5'>解</b><b class='flag-5'>微积分</b>