sympy,一个可以做数学题的Python库

sympy 是 symbolic python 的简称,也就是一个支持代数符号计算的python库。

它可以用来帮助我们解决从初中数学到高等数学的各类问题,包括但不限于:

⚫️ 表达式化简,因式分解,方程求解,不等式求解。

⚫️ 求极限,求导,求积分,级数展开,解微分方程,级数求和。

⚫️ 求概率,求期望,方差。

⚫️ 矩阵乘法,求行列式,矩阵求逆,矩阵分解。

本文将先演示sympy的基础使用范例,然后讲解sympy的原理。

公众号算法美食屋后台回复关键词:源码,获取本文notebook源代码~

〇,基本范例演示

c6dc55cee80b9273b7f3ed8d532e9f78.png

一,符号和数字

1, 定义符号

可以从 sympy.abc直接导入单字母。

可以用sympy.symbols定义多个符号。

可以用sympy.var 声明符号。

支持希腊字母,支持下标符号。

7aeb367215d3b59a273e14d3d287ff67.png

2,定义数字

sympy里的定义的符号数字可以是任意精度的。可以用Integer,Float,Rational等类定义符号数字,也可以用S定义符号数字。

f10f15fbcff2306fc309aa4b097755a3.png

3, 获取数值结果

使用sympy.N或者表达式的n()方法,或者evalf()等方法可以将表达式转换成数值结果。

fed663e9eef27b829b58a069e28f722b.png

二,表达式和函数

1,定义表达式

符号的运算组合构成表达式,表达式是一种树形结构,由 func和args组成,表达式可以嵌套。

含有symbols符号的算式会自动对常见的四则运算和乘方等运算符进行重载。

使用sympy.sympify或者sympy.S可以将字符串转换成对应的表达式。

cdd3299e56fd645dec3fe066f4447b04.png

2,定义函数

函数是从一组参数符号到一个表达式的映射。可以用Function定义函数,也可以用sympy.Lambda定义匿名函数,后者通常简单一些。

49b4d0834d6d998ea5dd26d77416804f.png

372b8591b17db8c2c9484572a81d61d6.png

3,表达式操控

下面介绍表达式的化简,因式分解,展开,合并同类项,替换 等操作

simplify, factor, expand, collect, apart,together, subs,xreplace, rewrite

10f11f9f46f4081ad2324a55ca4d755a.png

三,方程和不等式

1,方程求解

方程求解有solve,solveset,linsolve等函数可以使用。

2dbd59e631c9544ad42b1b7b0471bccb.png

2,不等式求解

不等式求解可以使用reduce_inequalities或者solve或者solveset等方法

92e94a90cb8c366a207f1f76fc3459cf.png

四, 函数可视化

1,plot范例

import sympy
from sympy import S,pi,exp,log,sin,cos,tan,cot,sqrt
import matplotlib 
%matplotlib inline 
sympy.plot(sin(x) + cos(x), (x, -pi, pi))

9375f62ebf5b7ec8d8c86bb781026ad6.png

2,plot3d范例

import sympy
from sympy import S,pi,exp,log,sin,cos,tan,cot,sqrt
import matplotlib 
%matplotlib inline 
sympy.plotting.plot3d(x*exp(-x**2-y**2), (x, -3, 3), (y, -2, 2))

c52d0f7857afadf7ae77e14c0b917458.png

3,textplot范例

基于纯文本可视化,不需要matplotlib

import sympy 
from sympy import sin
sympy.textplot(sin(t), 0, 15)

872973d0d44698d8b494759cbbf79efc.png

0da3d730b390c57ef61a5b43328032e1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值