python下的Sympy库

sympy介绍:

Sympy是一个数学符号库(sym代表了symbol,符号),包括了积分,微分方程等各种数学运算方法,为python提供了强大的数学运算支持。对于图像来说,虽然都是做离散的计算,操作最多的还是numpy里的数组,但实际上,这个库包含了积分微分,三角等最基本的数学运算,可以说是工科最基本的,用起来媲美matlab。 --摘自网络

Sympy安装方法

安装命令:pip install sympy

当然如果使用anacanda工具,是自带了这个sympy的包,无需安装导入即可使用

 

1.简单看下例子:

In [4]:

 

# x**2 代表x²,sqrt(x)表示√x
import sympy,math
math.sqrt(2)**2

Out[4]:

2.0000000000000004

In [3]:

 

sympy.sqrt(2)**2

Out[3]:

2

In [7]:

 

x = sympy.Symbol('x')
sympy.sqrt(x)**2

Out[7]:

x

In [8]:

 

 
sympy.sqrt(8)

Out[8]:

2*sqrt(2)

In [20]:

 

from sympy import *
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
a = Symbol('a')
b = Symbol('b')
c = Symbol('c')
#等同于 x,y,z,a,b,c = symbll('x,y,z,a,b,c')
#展开式
f = (x+1)**2
print(expand(f))
x**2 + 2*x + 1

In [19]:

 

f.simplify()
print(f)
(x + 1)**2

2.solve方程自动求解

f(x) = {2x - y + z = 10 {3x + 2y - z = 16 {x + 6y - z = 28

In [21]:

 

 
f1 =  2*x - y + z -10
f2 = 3*x + 2*y -z -16
f3 = x + 6*y -z -28
solve([f1,f2,f3])

Out[21]:

{x: 46/11, y: 56/11, z: 74/11}

3.limit求极限

limit可以作为普通的代入化简求值方法,比如f = (x+2)^2 +1 用 x = a+1代入,得到a^2 + 6*a + 10

In [22]:

 

f = (x+1)**2 + 1
limit(f ,x, a+1)

Out[22]:

a**2 + 6*a + 10

 

求极限lim x趋向0 sinx/x

In [28]:

f = sin(x)/x
limit(f, x, 0)

Out[28]:

1

 

从负方向或者从正向逼近,可以用dir‘+’或者‘-’

In [33]:

 

f = sin(x)/x
limit(f, x, 0,dir = '-')

Out[33]:

1

In [40]:

 

# 求解:lim n趋向于无穷大((n+3)/(n+2))** n  无穷大用oo表示,负无穷用-oo表示
n = Symbol('n')
limit(((n+3)/(n+2))**n,n,oo)

Out[40]:

E

4.diff求导

 

diff(函数,自变量,求导次数)

In [41]:

diff(sin(2*x),x)

Out[41]:

2*cos(2*x)

In [42]:

sin(2*x).diff(x)

Out[42]:

2*cos(2*x)

In [43]:

diff(sin(2*x), x, 2)

Out[43]:

-4*sin(2*x)

In [44]:

diff(sin(x*y),x,2,y,3)

Out[44]:

x*(x**2*y**2*cos(x*y) + 6*x*y*sin(x*y) - 6*cos(x*y))

5.dsolve()计算微分方程

In [54]:

 

k=Function('k')
dsolve(k(x).diff(x, x) + k(x), k(x))
​Out[54]:
Eq(k(x), C1*sin(x) + C2*cos(x))

6.intergrate积分计算

In [55]:

 

 
f = x**2 +1
integrate(f, (x,-1,1))

Out[55]:

8/3

 

1.定积分求解
{0 e**x = 1
{-oo

In [56]:

 

 
integrate(exp(x),(x, -oo ,0))

Out[56]:

1

 

2.不定积分求解
{(3x**2+1)dx = 3x + x

In [57]:

 

 
f = 3*x**2 +1
integrate(f,x)

Out[57]:

x**3 + x

 

3.双重定积分
{4 {1((3/4)*x +2y)dxdy
{-3{0

In [58]:

 

f = (4/3)*x + 2*y
integrate(f,(x,0,1),(y,-3,4))

Out[58]:

11.6666666666667

 

4.双重不定积分
{x {1((3/4)*x +2y)dxdy
{-x{0

In [59]:

 

 
f = (4/3)*x + 2*y
integrate(f,(x,0,1),(y, -x, x))

Out[59]:

1.33333333333333*x

Sympy源码库:https://github.com/sympy/sympy

 

 

你可能感兴趣的:(python笔记)