数据科学之sympy库

    xiaoxiao2021-04-15  383

    sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。 Python以其语法简单、易上手、丰富的三方库生态,个人认为可以更优雅地解决日常生活、工作遇到的各种计算问题。 安装:

    pip install sympy

    虚数单位i

    sympy.I #i平方 sympy.I**2

    -1的平方根

    sympy.sqrt(-1

    自然对数的底e:

    print(sympy.log(sympy.E))

    无穷大oo:

    print(sympy.oo)

    圆周率:

    print(sympy.pi)

    求n次方根 root(8,4)即求8的4次方根:

    rst = sympy.root(8,4) print(rst)

    求K次方以及阶乘

    print(2**3) #2的3次方 print(sympy.factorial(5)) #求5的阶乘

    求三角函数

    print(sympy.sin(sympy.pi/2))

    表达式与表达式求值 sympy可以用一套符号系统来表示一个表达式,如函数、多项式等,并且可以进行求值。

    x = sympy.Symbol('x') fx = 2*x + 1 print(type(fx)) #查看fx的类型 f = fx.evalf(subs={x:6}) #传入一个x的值,求出fx print(f)

    多元方程求解:

    x1,y = sympy.symbols('x1 y') f1 = 2 * x1 + y f1 = f1.evalf(subs = {x1:1,y:2}) #传入自变量值求出因变量值 print(f1)

    求解方程:solve() 使用sympy.solve函数解方程,该函数通常传入两个参数, 第1个参数是方程的表达式(把方程所有的项移到等号的同一边形成的式子), 第2个参数是方程中的未知数。函数的返回值是一个列表,代表方程的所有根(可能为复数根)

    解普通方程: 首先定义 x为一个符号,代表一个未知数

    x = sympy.Symbol('x')

    解方程:x - 6 = 0 返回一个解组成的列表

    print(sympy.solve(x - 6,x))

    解方程组

    x,y = sympy.symbols('x y') print(sympy.solve([x-y-8,x+y-2],[x,y])) #第一个参数传入的方程组(也就是表达式), #第二个参数传入的是方程组的变量,两个参数都是以列表形式传入

    求和:summation(a,b) 第一个参数传入求和的表达式,第二个参数以元组形式传入求和的相关信息 第二个参数的元组的第一个参数是变量、第二个参数是变量起始、第三个参数是变量上限。

    n = sympy.Symbol('n') print(sympy.summation(2 * n, (n,1,100)))

    解带有求和式的方程

    x = sympy.Symbol('x') #声明符号变量 i = sympy.Symbol('i',integer = True) f = sympy.summation(x,(i,1,5)) + 10 * x - 15 #构造表达式 reslute = sympy.solve(f,x) #第一个参数是表达式,第二个是变量;求解结果 print(reslute)

    求极限:

    x = sympy.Symbol('x') f1 = sympy.sin(x)/x #声明表达式 sympy.limit(f1,x,0) #求解表达式是f1,变量x趋于0的极限

    求导:

    x= sympy.Symbol('x') f = x**2+2*x+1 print(sympy.diff(f,x)) #第一个参数是表达式,第二个参数是符号变量、返回一个<class 'sympy.core.add.Add'>类型的结果

    多元函数求偏导

    y = sympy.Symbol('y') f3 = x**2+2*x+y**4 print(sympy.diff(f3,x)) #对x求偏导 print(sympy.diff(f3,y)) #对y求偏导

    求定积分:sympy.integrate函数: 第一个参数填入被积表达式,第二个参数填入一个元组【元组的第一个参数是变量、第二个参数是下限、第二个参数是上限】 #求解复杂积分的时候,遵循变量嵌套原则

    x = sympy.Symbol('x') f = 2 * x print(sympy.integrate(f,(x,0,1)))

    求解不定积分:简单来说不定积分就是没有上下限的积分:

    x = sympy.Symbol('x') f = sympy.exp(x)+3**2+sympy.log(x) print(sympy.integrate(f,x)) #求不定积分,此时第二个参数填入的不再是元组,而是直接传入变量,因为没有上下限。当然也可以作为元组形式传入元组

    求解微分方程 y’=4xy [即(dy/dx) = 4xy] :

    #定义符号变量 x=sympy.Symbol('x') #定义符号函数、f可以与x构成函数方程f(x)、因为x就是自变量、f是因变量。 f = sympy.Function('f') fx = sympy.diff(f(x),x) print(sympy.dsolve(fx-2*x*f(x),f(x))) #dsolve函数第一个参数传入微分方程表达式,第二个参数传入函数【f与x构成的函数f(x)】

    矩阵操作交给numpy还是比较习惯numpy.


    最新回复(0)