import sympy.physics.units as un
def freeze_units(expr):
if isinstance(expr, list):
return [ freeze_units(i) for i in expr ]
elif isinstance(expr, tuple):
return tuple([ freeze_units(i) for i in expr ])
elif isinstance(expr, dict):
return { key: freeze_units(expr[key]) for key in expr.keys()}
elif isinstance(expr, Add):
result = 0
for arg in expr.args:
result += freeze_units(arg)
return result
elif isinstance(expr, Mul):
contain_add = False
for arg in expr.args:
if isinstance(arg, Add):
contain_add = True
break
if contain_add:
result = 1
for arg in expr.args:
result *= freeze_units(arg)
else:
value = erase_units(expr)
units = subs(expr, {value: 1})
result = value*un.Unit("Bloque de unidades",latex(units))
return result
elif isinstance(expr, Equality):
return Eq(freeze_units(expr.lhs), freeze_units(expr.rhs))
elif isinstance(expr, Matrix):
return Matrix([ [ freeze_units(expr[i,j]) for j in xrange(expr.cols) ] for
i in xrange(expr.rows) ])
# Comienzo de funciones.
elif isinstance(expr, Function):
return type(expr)(*( freeze_units(i) for i in expr.args ))
else:
return expr
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.