Examples

In the following sections we give few examples of what can be do with this module.

Dimensional analysis

We will start from the second Newton’s law

\[m a = F\]

where \(m, a\) and \(F\) are the mass, the acceleration and the force respectively. Knowing the dimensions of \(m\) (\(M\)) and \(a\) (\(L T^{-2}\)), we will determine the dimension of \(F\); obviously we will find that it is a force: \(M L T^{-2}\).

From there we will use the expression of the gravitational force between the particle of mass \(m\) and the body of mass \(M\), at a distance \(r\)

\[F = \frac{G m M}{r^2}\]

to determine the dimension of the Newton’s constant \(G\). The result should be \(L^3 M^{-1} T^{-2}\).

>>> from __future__ import division
>>> from sympy import solve, Symbol, symbols
>>> from sympy.physics.unitsystems.systems import mks_dim as mks
>>> from sympy.physics.unitsystems.simplifiers import dim_simplify
>>> length, mass, time = mks["length"], mks["mass"], mks["time"]
>>> acceleration = mks["acceleration"]
>>> m, a, F = symbols("m a F")
>>> newton = m*a - F
>>> sol = solve(newton, F)[0]
>>> force = dim_simplify(sol.subs({m: mass, a: acceleration}))
>>> force  
{'length': 1, 'mass': 1, 'time': -2}
>>> force == mks["force"]
True
>>> M, r, G = symbols("M r G")
>>> grav_force = F - G * m * M / r**2
>>> sol = solve(grav_force, G)[0]
>>> const = dim_simplify(sol.subs({m: mass, M: mass, r: length, F: force}))
>>> const  
{'length': 3, 'mass': -1, 'time': -2}

Note that one should first solve the equation, and then substitute with the dimensions.

Equation with quantities

Using Kepler’s third law

\[\frac{T^2}{a^3} = \frac{4 \pi^2}{GM}\]

we can find the Venus orbital period using the known values for the other variables (taken from Wikipedia). The result should be 224.701 days.

>>> from __future__ import division
>>> from sympy import solve, Symbol, symbols, pi
>>> from sympy.physics.unitsystems import Unit, Quantity as Q
>>> from sympy.physics.unitsystems.simplifiers import qsimplify
>>> from sympy.physics.unitsystems.systems import mks
>>> m, kg, s = mks["m"], mks["kg"], mks["s"]
>>> T, a, M, G = symbols("T a M G")
>>> venus_a = Q(108208000e3, m)
>>> solar_mass = Q(1.9891e30, kg)
>>> venus_subs = {"a": venus_a, "M": solar_mass, "G": mks["G"]}
>>> Tsol = solve(T**2 / a**3 - 4*pi**2 / G / M, T)[1]
>>> q = qsimplify(Tsol.subs(venus_subs))
>>> day = Unit(s.dim, abbrev="day", factor=86400)
>>> print(q.convert_to(qsimplify(day)))
224.667 day

We could also have the solar mass and the day as units coming from the astrophysical system, but I wanted to show how to create a unit that one needs.

We can see in this example that intermediate dimensions can be ill-defined, such as sqrt(G), but one should check that the final result - when all dimensions are combined - is well defined.