美文网首页
Sympy解方程-求极限-微分-积分-矩阵运算

Sympy解方程-求极限-微分-积分-矩阵运算

作者: Andy计算机专业 | 来源:发表于2020-09-10 10:34 被阅读0次

    简介

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

    目录

    1.解方程组solve()
    2.求极限limit()
    3.微分(导数)diff()
    4.积分
      4-1.定积分integrate()
      4-2.求不定积分integrate(),dsolve()
    5.序列sequence()
    6.矩阵Matrix()
    7.其他

    0.准备工作

    from sympy import *
    

    1.解方程组solve()

    # 申明未知数变量
    x,y = symbols('x y')
    # 定义方程组和要求解的未知数,并求解
    # 传入: [函数表达式1,函数表达式12,...],[变量1,变量2,...]
    result = solve([Eq(y,1-x),Eq(3*x+2*y,5)],[x,y])
    print(result)
    
    {x: 3, y: -2}
    

    2.求极限limit()

    n = Symbol('n')
    print(limit(((n+3)/(n+2))**n, n, oo))
    
    E
    

    3.微分(导数)diff()

    x = symbols('x')
    f = x**2 + 2*x + 1 # 定义函数f(x)
    f
    

    \displaystyle x^{2} + 2 x + 1

    diff(f,x,1)  # 函数f(x)对x求1次导
    

    \displaystyle 2 x + 2

    4.积分

    4-1.定积分integrate()

    x,t = symbols('x t')
    # 传入: 函数表达式,(积分变量,积分下限,上限)
    fx = integrate(sin(t)/(pi-t),(t,0,x))
    s = integrate(fx,(x,0,pi))
    print(s)
    fx
    
    2
    

    \displaystyle \operatorname{Si}{\left(x - \pi \right)} + \operatorname{Si}{\left(\pi \right)}

    4-2.求不定积分integrate(),dsolve()

    x = Symbol('x')
    # 传入: 函数表达式,积分变量
    s = integrate(E**x + 2*x,x)
    s
    

    \displaystyle x^{2} + e^{x}

    f = Function('f')
    eq1 = Eq(Derivative(f(x),x),x*cos(x))
    pprint(eq1)
    y = dsolve(eq1,f(x))
    pprint(y)
    integrate(eq1)
    
    d                  
    ──(f(x)) = x⋅cos(x)
    dx                 
    f(x) = C₁ + x⋅sin(x) + cos(x)
    

    \displaystyle f{\left(x \right)} = x \sin{\left(x \right)} + \cos{\left(x \right)}

    5.序列sequence()

    s = sequence(x, (x, 1, 10))
    print(list(s))
    print(summation(s.formula, (x, s.start, s.stop)))
    
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    55
    

    6.矩阵Matrix()

    M = Matrix([[1, 2], [3, 4], [0, 3]])
    N = Matrix([2, 2])
    M*N
    

    \displaystyle \left[\begin{matrix}6\\14\\6\end{matrix}\right]

    7.杂项

    '''1.常用的sympy内置符号'''
    I   # 1-1.虚数单位i
    E   # 1-2.自然对数的底e
    oo  # 1-3.无穷大oo
    pi  # 1-4.圆周率pi
    '''2.sympy的初等运算:加+减-乘*除/,次方开方,对数,阶乘,三角函数,表达式求值'''
    # 2-1.次方开方
    2**3      # eg:2的3次方
    8**(1/3)  # eg:8开3次方
    # 2-2.求对数log()
    log(1000,10)  # eg:以10为底1000的对数
    log(E)  # eg:自然对数
    # 2-3.阶乘
    factorial(4)
    # 2-4.三角函数
    sin(pi)  # 以sin函数为例
    # 2-5.表达式与表达式求值
    x,y = symbols('x y')
    f = 2*x + y
    f.evalf(subs={x:1,y:2})
    f.subs({x:1,y:2})
    # 2-6计算求和式summation()
    n = Symbol('n',integer = True)
    summation(2 * n,(n,1,100))
    # 2-7.表达式等于
    Eq(3*x+2*y,5)
    # 2-8.处理有理数的Rational
    r1 = Rational(1/10)
    r2 = Rational(1/10)
    r3 = Rational(1/10)
    val = (r1 + r2 + r3) * 3
    print(val.evalf())
    print((1/10 + 1/10 + 1/10) * 3)  # 没有有理化会存在小错误
    # 级数展开
    cos(x).series(x, 0, 10)
    '''3.其他'''
    # 打印美化pprint()
    pprint(E**x + 2*x)
    # 转换位Latex公式
    x,y,z = symbols('x y z')
    print(latex(x**2+y/1+z))
    # 扩展代数表达式
    expand((x + 1) ** 2)
    #  简化表达式
    simplify((x**2-x-6)/(x**2-3*x))
    # 比较表达式
    a = cos(x)**2 - sin(x)**2
    b = cos(2*x)
    a.equals(b)
    
    0.900000000000000
    0.9000000000000001
           x
    2⋅x + ℯ 
    x^{2} + y + z
    True
    

    [参考]

    1.更多实例:https://github.com/sympy/sympy/wiki/Quick-examples
    2.官方github:https://github.com/sympy
    3.官网:https://www.sympy.org/en/index.html

    [至此完结] Andy:2020-09-10 Q597966823

    相关文章

      网友评论

          本文标题:Sympy解方程-求极限-微分-积分-矩阵运算

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