美文网首页sympy
5.2Python数据处理篇之Sympy系列(二)---Symp

5.2Python数据处理篇之Sympy系列(二)---Symp

作者: 张一根 | 来源:发表于2019-03-15 21:28 被阅读0次

    目录

    [TOC]

    前言

    符号化运算也是数值运算中的一个主要的领域,今天我们来学习以下,python里强大的符号运算库---sympy。今天讲的是第一讲,sympy的操作。

    对应于官网的:Basic Operations

    Basic Operation s:

    https://docs.sympy.org/latest/tutorial/basic_operations.html

    (一)符号的初始化与输出设置-symbol() symbols() latex()

    1.作用:

    在sympy里进行符号运算之前,必须先定义sympy的符号,这样sympy才能识别该符号。

    .init_printing(use_latex=True)开启时,在jupyter运行时,输出的是LaTeX的格式

    使用:latex()函数,同样返回LaTeX的格式。

    2.操作:

    (1)说明:

    符号的初始化分为两种形式:

    1. 单个符号的初始化:x = sympy.Symbol('x')
    2. 多个符号的初始化:x,y=sympy.symbols("x y")

    (2)源代码:

    import sympy as sy
    
    # 符号化变量
    x = sy.Symbol('x')
    y, z = sy.symbols('y z')
    
    # 输出设置
    sy.init_printing(use_latex=True)
    
    # 输出结果
    print("x:", type(x))
    print("y:", type(y))
    print(x**2+y+z)
    print(sy.latex(x**2+y+z))
    

    (3)输出效果

    01.png

    (二)替换符号-subs(old,new)

    1.说明:

    sub是Substitution的简称,也就是替换,其有两个作用:

    语法是:expr.sub(old,new)

    1. 数值替换,用数值替换符号,进行带入计算。
    2. 符号替换,用一些符号替换符号。

    2.源代码:

    from sympy import *
    
    # 符号化变量
    x, y, z = symbols('x y z')
    
    expr = x**2+1
    
    # 数值替换
    result = expr.subs(x, 2)
    print("原式:", expr)
    print("数值计算的结果:", result)
    
    # 符号替换
    new_expr = expr.subs(x, y+z)
    print("符号替换的结果:", new_expr)
    

    3.输出效果:

    02.png

    4.注意点:

    (1)是否改变原表达式

    subs()函数不改变原表达式,并且返回一个修改的表达式。

    (2)替换多个表达式

    当需要替换多个表达式时,可以在subs()里使用列表

    如:subs([(x,2), (y, 3), (z, 4)])

    表示:将x替换成2,y替换成3,z替换成4

    (三)将字符串变为sympy的表达式-sympify()

    1.说明:

    不要混淆了sympify()函数与 simplify()函数,前者是转化,后者是简化。

    2.源代码:

    from sympy import *
    
    string = "x**2+2*y + z/2"
    
    # 转化
    expr = sympify(string)
    
    print("类型:", type(expr))
    print("表达式:", expr)
    

    3.输出效果:

    03.png

    (四)数值计算-evalf()

    1.说明:

    相当于python自带的eval()函数,只是进行的是float浮点数运算。

    2.操作:

    (1)对于数值表达式的运算

    直接使用.evalf()函数

    from sympy import *
    
    expr = sqrt(8)
    
    # 进行计算
    result = expr.evalf()
    
    print(result)
    
    04.png

    (2)对于符号表达式的运算

    对于表达式常用的是:

    .evalf(subs={x: 2.4})

    from sympy import *
    
    # 符号化
    x = Symbol('x')
    
    # 进行计算
    expr = x**2+3
    result = expr.evalf(subs={x: 2})
    
    print(result)
    
    05.png

    (五)自定义表达式-lambdify()

    1.说明:

    该函数有点类似于lambda(),用于自己构造一个函数表达

    2.源代码:

    from sympy import *
    import numpy as np
    
    x = Symbol('x')
    
    a = np.arange(10)
    
    expr = x**2
    
    # 构造自己的函数
    f = lambdify(x, expr, "numpy")
    
    print(f(a))
    

    3.输出效果:

    06.png

    作者:Mark

    日期:2019/03/15 周五

    相关文章

      网友评论

        本文标题:5.2Python数据处理篇之Sympy系列(二)---Symp

        本文链接:https://www.haomeiwen.com/subject/nukdmqtx.html