SymPy.jl Tutorial


SymPy.jl for Franklin users

Load some packages

using SymPy

Define helper function

using SymPy
using SymPy: SymbolicObject

function fdsympy(x::T, xx::T...; mode="equation*", itex=true) where T<:SymbolicObject
    buf = IOBuffer()
    print(buf, SymPy.sympy.latex(x, mode=mode,itex=itex))
    for a in xx
        print(buf, SymPy.sympy.latex(a, mode=mode,itex=itex))
    end
    print(buf |> take! |> String)
end

function fdsympy(x::AbstractArray{T}; mode="equation*", itex=true) where T<:SymbolicObject
    SymPy.sympy.latex(x, mode=mode,itex=itex) |> print
end

Sample code

Example 4.0.1 (sample)

@vars x y z

fdsympy((x+y+z)^2 |> expand)
fdsympy(y)
x2+2xy+2xz+y2+2yz+z2x^{2} + 2 x y + 2 x z + y^{2} + 2 y z + z^{2}

yy

@vars x y z

fdsympy(x, y)
xx

yy

@vars x y
fdsympy([x, y])
[xy]\left[\begin{matrix}x\\y\end{matrix}\right]
@vars x y z

fdsympy([x y])
[xy]\left[\begin{matrix}x & y\end{matrix}\right]

Example 4.0.2 (Solve ODE)
This example is taken from sympy documentation

using SymPy
@vars t y
y = Function(y)
sol = dsolve(Eq(y(t).diff(t,t) - y(t), exp(t)), y(t))
fdsympy(sol)
y(t)=C2et+(C1+t2)ety{\left(t \right)} = C_{2} e^{- t} + \left(C_{1} + \frac{t}{2}\right) e^{t}

Example 4.0.3 (Rotations: Euler angles)

Rx(θ) = [
    1.   0.        0
    0.  cos(θ) -sin(θ)
    0.  sin(θ)  cos(θ)
]

Ry(θ) = [
    cos(θ)  0. sin(θ)
     0.     1.   0.
    -sin(θ) 0. cos(θ)
]

Rz(θ) = [
    cos(θ) -sin(θ) 0
    sin(θ) cos(θ)  0
    0.          0. 1
]

@vars φ θ ψ

R = Rz(φ) * Ry(θ) * Rz(ψ)
fdsympy(R)
[1.0sin(φ)sin(ψ)+cos(θ)cos(φ)cos(ψ)1.0sin(φ)cos(ψ)sin(ψ)cos(θ)cos(φ)sin(θ)cos(φ)sin(φ)cos(θ)cos(ψ)+1.0sin(ψ)cos(φ)sin(φ)sin(ψ)cos(θ)+1.0cos(φ)cos(ψ)sin(θ)sin(φ)sin(θ)cos(ψ)sin(θ)sin(ψ)cos(θ)]\left[\begin{matrix}- 1.0 \sin{\left(φ \right)} \sin{\left(ψ \right)} + \cos{\left(θ \right)} \cos{\left(φ \right)} \cos{\left(ψ \right)} & - 1.0 \sin{\left(φ \right)} \cos{\left(ψ \right)} - \sin{\left(ψ \right)} \cos{\left(θ \right)} \cos{\left(φ \right)} & \sin{\left(θ \right)} \cos{\left(φ \right)}\\\sin{\left(φ \right)} \cos{\left(θ \right)} \cos{\left(ψ \right)} + 1.0 \sin{\left(ψ \right)} \cos{\left(φ \right)} & - \sin{\left(φ \right)} \sin{\left(ψ \right)} \cos{\left(θ \right)} + 1.0 \cos{\left(φ \right)} \cos{\left(ψ \right)} & \sin{\left(θ \right)} \sin{\left(φ \right)}\\- \sin{\left(θ \right)} \cos{\left(ψ \right)} & \sin{\left(θ \right)} \sin{\left(ψ \right)} & \cos{\left(θ \right)}\end{matrix}\right]