zoukankan      html  css  js  c++  java
  • 数据科学之sympy库

    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.

  • 相关阅读:
    【Windows socket+IP+UDP+TCP】网络基础
    【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()
    Unity3D十款最火的的插件推荐
    静态路由解决双外卡,PC做路由器的实现
    00096_Properties类
    TensorFlow2_200729系列---4、手写数字识别理论
    损失函数基础知识总结
    为什么选择onehot编码(总结)
    TensorFlow2_200729系列---3、梯度下降求简单线性回归实例
    numpy生成随机数据实例
  • 原文地址:https://www.cnblogs.com/chenruhai/p/12464222.html
Copyright © 2011-2022 走看看