zoukankan      html  css  js  c++  java
  • Sympy 库的使用

    参考资料:

    官方文档,天下第一:https://docs.sympy.org/latest/index.html  

    知识点:

    What is Sym?

    符号计算以符号的方式处理数学对象的计算。这意味着数学对象被精确地表示,而不是近似地表示。例如,1/3 如果数值表示,那么它就是0.3333333.... 这是不精确的,如果符号表示就是1/3 ,它是精确的。

    Why Sym?

    首先,SymPy是完全免费的。它是开源的,并且是在自由的BSD许可下授权的,所以你可以修改源代码,如果你想的话甚至可以出售它。这与流行的商业系统如Maple或Mathematica形成鲜明对比,后者的许可证费用高达数百美元。

    其次,SymPy使用Python。大多数计算机代数系统都发明了自己的语言。SymPy 则不是。SymPy完全是用Python编写的,完全是用Python执行的。这意味着,如果您已经了解Python,那么开始使用SymPy会容易得多,因为您已经知道语法(如果您不了解Python,则非常容易学习)。我们已经知道Python是一种设计良好、经过战斗考验的语言。SymPy开发人员对自己编写数学软件的能力充满信心,但编程语言设计则完全不同。通过重用现有的语言,我们能够专注于那些重要的事情:数学。 

    小试牛刀

    from sympy import *
    
    x,t = symbols('x t')
    init_printing(use_unicode=True)
    ret = diff(sin(x) * exp(x), x)  # diff() 函数是求导函数
    print(ret)  # exp(x)*sin(x) + exp(x)*cos(x)
    
    ret2 = integrate(exp(x) * sin(x) + exp(x) * cos(x), x)  # integrate() 计算积分
    print(ret2)  # sin(x)*exp(x)
    
    ret3 = integrate(sin(x ** 2), (x, -oo, oo))  # 计算从-oo 到 oo 的积分
    print(ret3)  # sqrt(2)*sqrt(pi)/2
    
    ret4 = limit((sin(x) / x), x, 0)  # 计算x 趋近于0 的极限值
    print(ret4)  # 1
    
    ret5 = solve(x ** 2 - 2, x)  # 求解方程 x**2 -2 =0 x 的值
    print(ret5) # [-sqrt(2), sqrt(2)]
    
    # Solve the differential equation y‘’−y = e^t. 求解微分方程 y(t)
    y = Function('y')
    ret6 = dsolve(Eq(y(t).diff(t,t) - y(t),exp(t)),y(t))
    print(ret6)  # Eq(y(t), C2*exp(-t) + (C1 + t/2)*exp(t))
    
    
    # 求矩阵的特征值
    ret7 = Matrix([[1,2],[2,2]]).eigenvals()
    print(ret7) # {3/2 - sqrt(17)/2: 1, 3/2 + sqrt(17)/2: 1}
    
    # 使用Latex 格式打印数学式子
    ret8 = latex(sqrt(2)*sqrt(pi)/2)
    print(ret8)  # frac{sqrt{2} sqrt{pi}}{2}
    View Code
    from sympy import *
    
    x, y, z = symbols("x y z")
    
    # 判断两个表达式是否相同
    a = (x + 1) ** 2
    b = x ** 2 + 2 * x + 1
    print(simplify(a - b) == 0)
    
    # .equals() 是通过在随机取点上的数值得到是否相等
    print(a.equals(b))
    
    # sympy 中幂用的是 ** 因为Python中^ 表示的是异或
    # sympy 中分数表达要用 Rational(),因为Python中的/ 表示的是除法
    print(x ** 2)
    print(x + Rational(1, 2))
    View Code
  • 相关阅读:
    java中的数组
    java中的break continue
    java 自加和短路问题 几个例子
    循环语句
    K-近邻算法小结
    数据结构与算法学习笔记 (三) 排序 搜索
    数据结构与算法学习笔记 (二) 栈 链表 队列 树 堆 图 并查集
    Spark数据分析技术学习笔记(一)——基础概念、RDD使用
    Python数据分析学习笔记
    Python机器学习(Sebastian著 ) 学习笔记——第六章模型评估与参数调优实战(Windows Spyder Python 3.6)
  • 原文地址:https://www.cnblogs.com/zach0812/p/13326342.html
Copyright © 2011-2022 走看看