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

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

3天内不再提示

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

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

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

    文章

    2696

    浏览量

    47438
  • 计算机
    +关注

    关注

    19

    文章

    7489

    浏览量

    87877
收藏 人收藏

    评论

    相关推荐

    matlab6.0数学手册

    ... 902.3.1  一元函数的数值积分... 902.3.2  二元函数重积分的数值计算... 922.4  常微分方程数值
    发表于 06-18 13:50

    matlab数学建模工具箱

    的根 % fzero - 一元函数零点% fsolve - 非线性方程组% solve - 符号方程解% *newton - 牛顿迭代法非线性方程% %
    发表于 07-10 14:26

    matlab牛顿迭代法全

    非线性方程(或方程组)问题可以描述为求 x 使得f(x) = 0。在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值
    发表于 03-08 16:22

    如何用Labview复杂的数学方程

    我要做一个基于TDOA原理的声源定位的算法,涉及到一个方程我尝试了matlab节点,用solve函数,来这个方程(直接取了几个特殊点)方程本身应该没有什么问题,我在matlab上面
    发表于 04-19 16:04

    分享《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(全美经典)

    Matlab的微分、积分和微分方程

    微分、积分和微分方程4.1. 知识要点和背景:微积分学基本定理       4.2 实验与观察(Ⅰ):数值微积分4.2.1实
    发表于 10-17 00:32 4583次阅读

    RC微积分电路的Multisim仿真

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

    MATLAB教程之如何使用MATLAB求解数学问题资料概述

    本文档的主要内容详细介绍的是MATLAB教程之如何使用MATLAB求解数学问题资料概述主要内容包括了:1符号表达式的生成,2符号方程的求解,3极限,4导数和微分,5积分6曲线积分的MA
    发表于 01-04 14:55 0次下载
    MATLAB教程之如何使用MATLAB求<b class='flag-5'>解数学</b>问题资料概述

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

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

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

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

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

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

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

    在整本书中, 我都坚持将大多数学生记得 (如果他们记得) 的这个联系积分和微分的定理称为积分学基本定理, 而不是简单的微积分基本定理 (fundamental theorem of c
    的头像 发表于 05-30 11:43 670次阅读
    戴维·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-21 16:31 652次阅读
    <b class='flag-5'>SymPy</b>:四行代码秒<b class='flag-5'>解</b><b class='flag-5'>微积分</b>