Python 中的Sympy详细介绍

article/2025/9/18 5:38:33

                              Python 中的Sympy详细使用

        遇到复杂计算找python绝对不让你失望,sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。虽然Matlab的类似科学计算能力也很强大,但是Python以其语法简单、易上手、异常丰富的三方库生态,个人认为可以更优雅地解决日常遇到的各种计算问题。安装在本博客就不细讲了!

        1、表达式与表达式求值:

#--------多项式求解--------
#定义变量
x=sympy.Symbol('x')
fx=5*x+4
#使用evalf函数传值
y1=fx.evalf(subs={x:6})
print(y1)
#多元表达式
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*x+y*y
result=fx.evalf(subs={x:3,y:4})
print(result)

       2、函数方程求解:

#解方程 有限解
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*3+9
#可求解直接给出解向量
print(sympy.solve(fx,x))
#解方程无穷多解
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*3+y**2
#得到是x与y的关系式,
print(sympy.solve(fx,x,y))
#解方程组
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
f1=x+y-3
f2=x-y+5
sympy.solve([f1,f2],[x,y])

        3、求和 

import sympy
#定义变量
n=sympy.Symbol('n')
f=2*n
#前面参数放函数,后面放变量的变化范围
s=sympy.summation(f,(n,1,100))
print(s)

解带有求和式的方程 :

    

#解释一下,i可以看做是循环变量,就是x自己加五次
#先定义变量,再写出方程
x=sympy.Symbol('x')
i=sympy.Symbol('i')
f=sympy.summation(x,(i,1,5))+10*x-15
result=sympy.solve(f,x)
print(result)

         4、求极限(注意,math包中sin和很多数学函数会报错,要用sympy中的,无穷大用 sympy.oo 表示)

#求极限使用limit方法
#定义变量与函数
x=sympy.Symbol('x')
f1=sympy.sin(x)/x
f2=(1+x)**(1/x)
f3=(1+1/x)**x
#三个参数是 函数,变量,趋向值
lim1=sympy.limit(f1,x,0)
lim2=sympy.limit(f2,x,0)
lim3=sympy.limit(f3,x,sympy.oo)
print(lim1,lim2,lim3)

           5、求导

#求导使用diff方法
x=sympy.Symbol('x')
f1=2*x**4+3*x+6
#参数是函数与变量
f1_=sympy.diff(f,x)
print(f1_)f2=sympy.sin(x)
f2_=sympy.diff(f2,x)
print(f2_)#求偏导
y=sympy.Symbol('y')
f3=2*x**2+3*y**4+2*y
#对x,y分别求导,即偏导
f3_x=sympy.diff(f3,x)
f3_y=sympy.diff(f3,y)
print(f3_x)
print(f3_y)

           6、求定积分

#求定积分用 integrate方法
x=sympy.Symbol('x')
f=2*x
#参数传入 函数,积分变量和范围
result=sympy.integrate(f,(x,0,1))
print(result)

          上面的求法有点烂,难的就罢工不干了,我丢,还是喜欢scipy,如下:

http://liao.cpython.org/scipy18/  scipy 还能解决很多数值计算,包括多重积分。

from scipy import integrate
def f(x):return x + 1
v, err = integrate.quad(f, 1, 2)# err为误差
print (v)

 以下计算多重积分: 

#求多重积分,先求里面的积分,再求外面的
x,t=sympy.symbols('x t')
f1=2*t
f2=sympy.integrate(f1,(t,0,x))
result=sympy.integrate(f2,(x,0,3))
print(result)

        7、求不定积分

      结果是         

#求不定积分其实和定积分区别不大
x=sympy.Symbol('x')
f=(sympy.E**x+2*x)
f_=sympy.integrate(f,x)
print(f_)

         8、数学符合补充:


#数学符合
#虚数单位i
sympy.I
#自然对数低e
sympy.E
#无穷大
sympy.oo
#圆周率
sympy.pi
#求n次方根
sympy.root(8,3)
#求对数
sympy.log(1024,2)
#求阶乘
sympy.factorial(4)
#三角函数
sympy.sin(sympy.pi)
sympy.tan(sympy.pi/4)
sympy.cos(sympy.pi/2)

         9、公式展开与折叠

x=sympy.Symbol('x')
#公式展开用expand方法
f=(1+2*x)*x**2
ff=sympy.expand(f)
print(ff)
#公式折叠用factor方法
f=x**2+1+2*x
ff=sympy.factor(f)
print(ff)

         10、公式分离与合并(分数的分离与合并)

x=sympy.Symbol('x')
y=sympy.Symbol('y')
#公式展开用apart方法,和expand区别不是很大,常用于分数进行分离
f=(x+2)/(x+1)
ff=sympy.apart(f)
print(ff)
#公式折叠用tegother方法
f=(1/x+1/y)
ff=sympy.together(f)
print(ff)

          11、表达式简化

#simplify( )普通的化简
simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))
#trigsimp( )三角化简
trigsimp(sin(x)/cos(x))
#powsimp( )指数化简
powsimp(x**a*x**b)


http://chatgpt.dhexx.cn/article/eLXwoHlN.shtml

相关文章

如何使用synplify综合ISE Core Generate生成的IP核

Xilinx的ISE软件有自带的综合工具XST,但是我们有时候需要使用第三方的综合工具(例如Synopsys的Synplify Pro,Synplify Primier,其中,Synplify Primier可以综合synopsys的DesignWare库),这时候就需要在synpl…

synplify 9.6.2 download

现在这种工具太难找了,找了一上午才搞定;唉,还是贡献出来吧,最好别被河蟹掉 链接:http://pan.baidu.com/s/1pJv7ovx 密码:um2k 里面的破解方法有点问题, 一、install exe,选Fl…

如何破解Synplify Pro 9.6.2? (SOC) (Synplify)

软件安装与注意事项如下: Introduction Step 1: 安裝Synplify Pro Step 2: 選擇Floating (License is on a license server) Step 3: 稍後會設定SYNPLCTYD_LICENSE_FILE(我认为是LM_LICENSE_FILE)系統變數&…

lattice 的Synplify pro综合工具,以及RTL寄存器查看

对于diamond来说,查看RTL级的示图时,必须以LSE(自带的综合工具)来编译综合代码。 而经常会出现Synplify pro编译通过,LSE编译出现bug的情况,所以用LSE编译代码,总不让人放心。 默认使用Synpli…

Synaplify综合的常用命令(1)

在芯片设计中大都绕不开用Synaplify来对数字代码进行综合,特别是在大系统中,资源很多,这样会导致FPGA中的资源不够用,就需要我们在综合中加一些限定来解决一些问题,这篇文章先介绍一些自己遇到的和资源相关的问题以及相…

ISE工程导入Vivado

在介绍工程模式下的设计方式时,提到了Vivado一个选项Imported Project能够导入本由synplify、xst或者ISE设计套件所创建的RTL工程数据。参见:https://blog.csdn.net/qq_26652069/article/details/91562652 下面尝试将ISE中的一个实现UART回显的工程导入…

Synaplify综合报错Signal 011 error in m_xilinx

在用Synaplify2020的版本综合的时候会报出错误,E:Internal Error in m_xilinx Stack trace或者是Signal 011 error in m_xilinx Stack trace。乍一看像是环境问题,其实是你的代码里面用到的ram的问题,当然也可能是rom的问题,总之和…

Synaplify综合Removing

记录一下用Synaplify综合出现的Removing警告问题,在用Synaplify综合的时候,你可能综合完之后发现有的port不见了,或者instance不见了,这都是很常见的问题,这个时候你只要去搜索log关键词Removing,再和你要找…

Vivado与Synplify联合设计FPGA

这篇文章主要记录近几天在使用Vivado以及Synplify工具进行FPGA的Synthesis、Implementation、以及BitStream出现的相关问题。 一、工具使用 RTL代码编辑:修改Vivido内置编辑器为VSCode编辑器,个人习惯,偏好VSCode。修改内置编辑器&#xff…

如何使用Synplify综合vivado带IP核的工程

文章目录 使用Synplify综合的好处synplify的教程方法1(无效)方法2 VIVODO工程遇到的问题 使用Synplify综合的好处 下面的说法来自网上: 综合时间更好,综合出来所使用的逻辑更少综合的时序更好 在IC设计中,使用Synplif…

Oracle分析函数取平均值,7-oracle_分析函数(一)

1.分组聚合函数 聚合函数主要有求和:sum();最大数:max();最小数:min();平均值:avg();统计数:count()等,在应用此类函数的时候,要么是从全集合来看…

oracle分析函数-RATIO_TO_REPORT() OVER()

1、RATIO_TO_REPORT()为比例函数 2、创建测试表,并插入数据 CREATE TABLE TEST_V( DEPTNO VARCHAR2(10), NAME VARCHAR2(10), SAL NUMBER ); 3、实例1:要求计算各部门工资合计,以及该工资合计占总工资的比例: SELECT TT.DEPT…

Oracle分析函数之Rank函数

本文主要讲述Oracle分析函数之Rank函数的用法 最近接触到Oracle这个功能强大而灵活的函数。这个函数特别适用于各种统计查询,下面就来说一说。 首先存在 product 表 SELECT p.create_time, p.name, p.service_evaluate_fee, p.product_type FROM product p 表数…

oracle 分析函数之分组求和、连续求和

最近在《sql cookbook》书上发现了名叫 分析函数 的东西,之前学 oracle 时没有印象,现在感觉其分析函数的功能相当强大、神奇, 就特意去找到了 chm 文档研究了一下,想要的朋友在本文末尾自行下载。 本文的例子都来源于 chm 文档…

在Oracle分析函数中使用FIRST_VALUE和LAST_VALUE

FIRST_VALUE and LAST_VALUE in Oracle Oracle中的FIRST_VALUE和LAST_VALUE These are Oracle analytical functions used to return the first value or the last value from a set of ordered rows. These functions can get the first value or the last value within a co…

Oracle 分析函数over,列转行函数pivot理解及综合运用(报表中的小计和合计)

1、Over函数(分析统计函数) 1.1语法 sum/avg/count() over(partition by ..)over()在什么条件之上;partition by 按哪个字段划分组; 1.2示例 SELECT E.ENAME,E.JOB,E.SAL,E.DEPTNO,SUM(E.SAL) OVER(PARTITION BY E.DEPTNO) SUM_SAL, …

oracle 百分位数,oracle分析函数 percent_rank, percentile_cont, percentile_disc

)*20=18 percentile_disc() PERCENTILE_DISC 这里就不做详细分析。 Syntax Purpose PERCENTILE_DISC is an inverse distribution function that assumes a discrete distribution model. It takes a percentile value and a sort specification and returns an element from t…

Oracle所有分析函数

Oracle分析函数 Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算…

oracle分析函数over(Partition by...)及开窗函数详解

说明:聚合函数(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录。若想对于某组返回多行记录,则需要使用分析函数。 1、rank()/dense_rank over(partition by ... order by ...) …

【Oracle】Oracle分析函数详解

Oracle数据库中的函数有多种,比如单行函数、聚合函数、对象引用函数、模型函数、OLAP函数等。本篇将详细介绍Oracle数据库中的分析函数。 一 分析函数概述 所谓分析函数,是基于一组数据行计算聚合值,其与聚合函数的不同之处在于&#xff0c…