A general "physics" module would be nice too, we could put some other
things there once we are satisfied with units. In particular, I'd like
to see physical constants. So far i cannot get sage to render plank's
reduced constant as hbar.

Cheers!

Oscar.

On Aug 22, 5:30 am, cousteau <cousteaulecommand...@gmail.com> wrote:
> On 22 ago, 06:20, Oscar Lazo <estadisticame...@gmail.com> wrote:
>
> > I will check this as soon as I can. I too was not very satisfied with
> > the units module. In particular, I did not like the way SI prefixes
> > are handled. Also, this:
>
> > sage: m=units.length.m
> > sage: sqrt(m^2)
> > sqrt(meter^2)
>
> > When I'd expect to get "meter".
>
> I'm sorry to say that this has a similar behavior. This is because
> Sage doesn't automatically simplify variables in things like sqrt().
> Example:
>
> sage: x=var('x')
> sage: A = x^2
> sage: sqrt(A)
> sqrt(x^2)
> sage: B = sqrt(A)
> sage: B.simplify()  # takes a while loading Maxima
> sqrt(x^2)  # ouch
> sage: B.simplify_radical()
> abs(x)  # ouch^2
>
> Since the representation of the units uses Sage variables, the
> behavior is the same:
>
> sage: import metrology
> sage: from metrology import U
> sage: a = U('9 m2')
> sage: a
> 9 m^2
> sage: sqrt(a)
> 3 sqrt(m^2)
> sage: sqrt(a).to()  # convert to SI base units
> 3 m
>
> > Some features I'd like to see in a units module:
>
> > * Type recognition. Doing something like
>
> > sage: 2.5 * m/s^2 * 2 * kg
> > 5.0 Newton
> > instead of
> > 5.0 kg*m*s^2
>
> I guess I could make a function that, parting from a list of SI units,
> tries to get a unit as the simplest combination of SI units.
>
> > * Use SI prefixes instead of scientific notation:
>
> > sage: c= 300000 m/s
> > sage: 0.9 kg *c
> > 81.0 mega Joule
> > instead of
> > 8.10000000000000e10*gram*meter^2/second^2
>
> Well, the program Qalculate! does that, but this feature sometimes
> makes you get results like "512.47 mK" (millikelvin) or 213651.6 YJ
> (yottajoules) that aren't easy to understand. Also, in derivated units
> such as J*s there are 2 options to add the prefix to. I personally
> prefer something like
>
> sage: U('0.9 ug c^2')
> 8.08879660863136e16 m^2*ug/s^2
> sage: U('0.9 ug c^2').to('MJ')
> 80.8879660863136 MJ
>
> (BTW, c=300000 km/s, not m/s; actually, c = 299 792 458 m/s exactly,
> from the definition of meter)
>
> > * To make units more easily accesible I suggest make a function that
> > gets units in certain unit systems available
>
> > sage: import_units(system='SI',only_base=False) #Imports all SI units
> > sage: import_units(system='SI',only_base=True) #Imports all SI base
> > units
> > sage: import_units(system='SI',types='length time mass
> > electric_charge') #imports only metre second kilogram and coulomb
>
> I think it's easier to just use U('...') each time you need a unit,
> but it may be possible to make a function that creates certain
> variables with unit values. Anyway, I don't like units to be
> represented as variables, it's what makes impossible to comvert 0
> celsius to fahrenheit in the current "units" module.
>
> > Would you want to include a metrology module if this replacement is
> > not accepted?
>
> Well, I called the module "metrology" to be able to distinguish it
> from the already existing "units" one, although metrology involves
> some other aspects such as precision handling that are out of the
> scope of my module. Maybe a name like "units2" or
> "physical_quantities" would have been more accurate. I don't see the
> module I wrote as a replacement of the current "units" module, but
> more as a different one with a different scope.

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to