Sympy简介
符号语言
符号操作系统最有用的特征之一是对表达式的展开/化简等简化数学表达式的能力.Sympy有几十个功能来执行
对比
import mathimport sympymath.sqrt(8)sympy.sqrt(8)2.82842712474619032*sqrt(2)
Sympy库安装
下载地址:https://github.com/sympy/sympy/releases
问题
IDLE无法使用函数库解决方法
更新库(库更新)
python -m pip install -upgrade pip
使用idle解析器注意与python安装版本的一致;
Win+r输入cmd;输入python查看版本号
IDLE版本号
Sympy使用方法
sympy基础要求
两种格式:使用from sympy import * 与 import sympy
sympy库所要求的格式与python无异,所以字符的使用需要赋值;sympy赋值需要使用symbols()函数引用;
>>> x + 1Traceback (most recent call last):File "<pyshell#0>", line 1, in <module>x + 1NameError: name 'x' is not defined>>> from sympy import *>>> x = symbols('x')>>> x+1x + 1
sympy能够针对复杂的数进行简写
sympy能够针对字符进行简写,方便输入;
>>> sqrt(8)2*sqrt(2)
简写
>>>x = symbols('x')>>>y = symbols('y')>>> eqr = x + 2*x*y>>> eqr - x2*x*y
将输入的格式展开
>>> expended_eqr = expand(x*eqr)>>> expended_eqr2*x**2*y + x**2>>> factor_eqr = factor(expended_eqr)>>> factor_eqrx**2*(2*y + 1)
求极限(Limits)
求极限时,使用limit()公式,limit(公式,变量,趋近值)
>>> from sympy import *>>> x = symbols('x')>>> limit(sin(x)/x, x, 0)1
求导数(Diff)
sympy字符+sympy字符=sympy字符
sympy字符+python字符= sympy字符
python字符+python字符 = python字符
>>> Integer(1)+Integer(2)3>>> 1+23>>> type(Integer(1)+Integer(2))<class 'sympy.core.numbers.Integer'>>>> type(1+2)<class 'int'>>>> type(x+1)<class 'sympy.core.add.Add'>
基础操作
基础操作涉及几个方面的转换
- 符号化语言进行计算某一点的值,使用subs(),涉及简单操作,批量操作,条件替换
- 将python字符串转换成sympy符号函数,evalf()
- 将sympy模块转换成Numpy函数,lambdify()
subs替换(substitute)
- 替换基础操作
程序的替换主要运用的数学公式为subs
>>> expr = x**2+x>>> expr.subs(x, y)y**2 + y
并且在替换过程中,subs可以实现计算操作
>>> expr.subs(x, 3)
12
- 替换过程中变量的变化
在替换过程中,变量并没有发生改变,只是重新建了一个sympy 字符
>>> type(expr)
<class 'sympy.core.add.Add'>
>>> type(expr.subs(x, y))
<class 'sympy.core.add.Add'>
>>> id(type)
140735591897504
>>> id(expr.subs(x, y))
1656217824696
- 批量操作方法
>>> y = symbols('y')
>>> z = symbols('z')
>>> b = 2*x +3*y +4*z
>>> b.subs([(x,1),(y,3),(z,7)])
39
>>> h = 'x**3 + y**3 + z**3'
>>> h
'x**3 + y**3 + z**3'
>>> type(h)
<class 'str'>
>>> sympify(h)
x**3 + y**3 + z**3
>>> type(h)
<class 'str'>
>>> type(sympify(h))
<class 'sympy.core.add.Add'>
>>> h.subs([(x,3),(y,4), (z,3)])
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
h.subs([(x,3),(y,4), (z,3)])
AttributeError: 'str' object has no attribute 'subs'
>>> sympify(h).subs([(x,3),(y,4), (z,3)])
118
