using SymPy
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
Example 4.0.1 (sample)
@vars x y z
fdsympy((x+y+z)^2 |> expand)
fdsympy(y)
x2+2xy+2xz+y2+2yz+z2
y
@vars x y z
fdsympy(x, y)
x
y
@vars x y
fdsympy([x, y])
[xy]
@vars x y z
fdsympy([x y])
[xy]
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)=C2e−t+(C1+2t)et
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(ψ)sin(φ)cos(θ)cos(ψ)+1.0sin(ψ)cos(φ)−sin(θ)cos(ψ)−1.0sin(φ)cos(ψ)−sin(ψ)cos(θ)cos(φ)−sin(φ)sin(ψ)cos(θ)+1.0cos(φ)cos(ψ)sin(θ)sin(ψ)sin(θ)cos(φ)sin(θ)sin(φ)cos(θ)⎦⎥⎤