On Wed, Aug 12, 2009 at 9:19 AM, William Stein<wst...@gmail.com> wrote: > > On Wed, Aug 12, 2009 at 12:11 AM, Fredrik > Johansson<fredrik.johans...@gmail.com> wrote: >> >> On Wed, Aug 12, 2009 at 8:44 AM, William Stein<wst...@gmail.com> wrote: >>> >>> On Tue, Aug 11, 2009 at 11:30 PM, Jason >>> Grout<jason-s...@creativetrax.com> wrote: >>>> >>>> William Stein wrote: >>>>> Hi, >>>>> >>>>> I just wanted to let people know that David Ackerman -- a UW student who >>>>> took my course on Sage last quarter -- is working (funded by NSF) on >>>>> creating a "units package" for Sage right _now_. If anybody has any >>>>> pseudo-sage code that involves units that they wished work, please post >>>>> it to this thread. What do you want units to *do*? >>>>> >>>> >>>> Is he doing something from scratch or is he working from the packages >>>> that have come up from time to time here? >>> >>> He is doing something from scratch. >>> >>> I had planned to have him work on integrating some existing package, >>> but after evaluating that approach he said it didn't seem to make >>> sense (at least he has a lot of experience using Sage, since he took >>> my class). I didn't have an opinion one way or the other, but we >>> decided to ask -- "what is a so called units package supposed to do >>> anyways" since I honestly couldn't really tell you. I would use one >>> to convert between Fahrenheit and Celcius, and maybe dollars and euros >>> :-). We google around and found that Matlab didn't seem to come with >>> a units package, but there were several third party packages -- anyway >>> Sage isn't much like Matlab so looking there seemed pointless. Then >>> we looked at Mathematica's included units package and read all the >>> documentation and examples of it. That was enlightening, and >>> suggested doing almost precisely what Robert Dodier keeps telling us >>> to do, which is make the different units just be symbolic variables, >>> plus have some extra table somewhere of conversions (where everything >>> is kept as exact fractions), and add a few functions to do >>> conversions. >> >> +1 on this design. >> >> It's similar to what sympy does, except sympy always expands units to >> multiples of base units. > > Sage definitely will not always expand units to multiples of base > units. Some backward people in the world like to work with miles and > feet... :-)
Agreed. Even in the metric parts of the world, non-SI units are standard in fields like particle physics and astronomy. On a related note, it would be handy to have a function that automatically converts a given quantity to the simplest possible unit: for example kg*m/s^2 -> N and kg*m/(A*s^3) -> V/m. Of course, the "simplest possible unit" isn't uniquely defined, so such a function probably requires additional parameters. You have to decide on the set of base units, and derived units are not unique (for example V/m = N/C). It would perhaps be sufficient if convert accepts partial units so that (kg*m/(A*s^3)).convert(V) -> V/m, but I'd expect convert to raise an exception when given incompatible units, so it's not quite the same thing. > That said, I would be fine with Sage having a mode where it could > always expand to base units -- that's massively easier to implement > anyways. Fredrik --~--~---------~--~----~------------~-------~--~----~ 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 URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---