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
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\)
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
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.