Re: Calculating with Units
- To: mathgroup at smc.vnet.net
- Subject: [mg94021] Re: Calculating with Units
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Tue, 2 Dec 2008 00:42:04 -0500 (EST)
On 12/1/08 at 7:02 AM, Nikolaus at rath.org (Nikolaus Rath) wrote:
>Until now, I have always defined my units manually in terms of the 4
>base units Kilogram, Meter, Coulomb and Second:
>Newton = Kg Meter / Second^2; Joule = Newton Meter; Henry = Weber /
>Ampere; Weber = Volt Second; etc.
>This allows me to evaluate expressions like
>B = (\[Mu] Ii)/(2 \[Pi] r);
>B /. { r -> 20 Meter, \[Mu] -> 4 \[Pi] * 10^-7 Henry/Meter,
>Ii -> 2 Ampere}
>% / Tesla
>and directly see if the units in the final result are correct.
>But since all these units (and many more) are already defined in the
>Mathematica Units package, I was wondering if there isn't a way to
>use that package in the same way. Unfortunately, it doesn't seem to
>simplify the units, i.e. when I enter
>(Ampere Henry)/(Meter Meter) // Simplify // SI
>I get the same expression back. What I would like to get is either
>"Tesla" or "Kilo Gram / (Coulomb Second)". Is there a way to
>accomplish this?
There is a rule in the Units`Private` context that will do much
of what you want. That is $ToFundamental. It can be accessed as follows:
In[5]:= (Ampere Henry)/(Meter Meter) //. Units`Private`$ToFundamental
Out[5]= Kilogram/(Ampere Second^2)
This isn't quite what you asked for mainly because Coulomb is a
derived unit in the SI system. However, I've found using this
enables me to more easily check the results of a computation and
verify the units are correct.