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

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

3天内不再提示

Sympy 模块的具体使用方法

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-17 11:15 次阅读

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

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

    关注

    7

    文章

    2484

    浏览量

    46530
  • 计算机
    +关注

    关注

    19

    文章

    6649

    浏览量

    84531
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66771
收藏 人收藏

    评论

    相关推荐

    红外寻迹模块使用方法

    `红外寻迹模块使用方法A) 检测到白色时指示灯亮,输出低电平 B)检测到黑色时指示灯灭,输出高电平`
    发表于 06-05 12:04

    天线的选择与使用方法

    无线模块的通信距离是一项重要指标,如何把有效通信距离最大化一直是大家疑惑的问题。本文根据调试经验及对天线的选择与使用方法做了一些说明,希望对工程师快速调试通信距离有所帮助。无线模块的通信距离是一项
    发表于 01-04 06:11

    section的使用方法

    变量定义到指定的输入段中,下面以具体的例子来讲解section的使用方法.#define SECTION(level) __attribute__((used,__section__(".fn_cmd."level)))#define CMD_START_EXPORT(.
    发表于 11-25 08:10

    fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下,fprintf函数可以将数据按指定格式写入到文本文件中。
    发表于 12-21 16:18 3.5w次阅读

    AURORA的功能模块使用方法介绍

    本文将覆盖极光远程安全评估系统(以下简称极光或AURORA)的所有功能点,并详细介绍极光的主要功能模块使用方法
    发表于 09-22 16:36 12次下载
    AURORA的功能<b class='flag-5'>模块</b>和<b class='flag-5'>使用方法</b>介绍

    示波器的使用方法(三):示波器的使用方法详解

    示波器的使用方法并非很难,重点在于正确使用示波器的使用方法。往期文章中,小编对模拟示波器的使用方法和数字示波器的使用方法均有所介绍。为增进大家对示波器的
    的头像 发表于 12-24 20:37 2478次阅读

    BSP里telnet具体使用方法

    ,常用于服务器的远端控制,可供使用者在本地主机执行远端主机上的工作。 本使用指南会介绍BSP里,telnet具体使用方法
    的头像 发表于 09-19 09:39 769次阅读

    三相电采集模块使用方法描述

    三相电采集模块使用方法描述
    的头像 发表于 12-28 15:04 1612次阅读

    STM32G0开发笔记:SD卡模块使用方法

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SD卡模块使用方法
    的头像 发表于 01-19 16:27 1412次阅读
    STM32G0开发笔记:SD卡<b class='flag-5'>模块</b>的<b class='flag-5'>使用方法</b>

    Channel模块使用方法示例

    。在本教程中,我们将介绍 Rust 语言中的 Tokio 模块 channel,并提供几个示例,以帮助您更好地理解它的使用方法。 什么是 Tokio 模块 Channel? Tokio 模块
    的头像 发表于 09-20 11:47 507次阅读

    Box 模块使用方法

    } })movie_box.Robin_Hood_Men_in_Tights.imdb_stars# 6.7 另外,可以看到默认情况下转换后,字典键值中的空格被转化为了下划线。 下面具体介绍 Box 模块使用方法
    的头像 发表于 10-17 11:05 324次阅读

    SymPy:四行代码秒解微积分

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

    Box 模块使用方法

    } })movie_box.Robin_Hood_Men_in_Tights.imdb_stars# 6.7 另外,可以看到默认情况下转换后,字典键值中的空格被转化为了下划线。 下面具体介绍 Box 模块使用方法
    的头像 发表于 10-31 10:40 282次阅读

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

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

    Camelot模块使用方法

    :JSON,Excel,HTML和Sqlite。 下面给大家介绍这个模块使用方法: 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章: 超详细Python
    的头像 发表于 11-01 10:02 389次阅读
    Camelot<b class='flag-5'>模块</b>的<b class='flag-5'>使用方法</b>