       Re: plotting equations with units

• To: mathgroup at smc.vnet.net
• Subject: [mg80796] Re: plotting equations with units
• From: "David Park" <djmpark at comcast.net>
• Date: Sun, 2 Sep 2007 02:51:21 -0400 (EDT)
• References: <fbaqpi\$qbs\$1@smc.twtelecom.net>

```You don't show your particular case, but the simplist method for you might
be to write a set of rules that set the particular units you have to 1.

For a more general method for handling this I would like to refer you to the
ExtendUnits package from my web site. (I'm selling the package for \$30.)
Here is the approach I take.

First, I never put units into an equation or symboic definition. Units are
part of the data. Here is an example. First the symbolic definition and then
the data.

Needs["Units6`ExtendUnits6`"]

x[x0_, v0_, a_][t_] := x0 + v0 t + 1/2 a t^2

data = {x0 -> 3 Feet, v0 -> 2 Yard/Second, a -> 5 Meter/Second^2};

Then we can define a plotting function using the Deunitize command in
ExtendUnits6. The implied units will be in SI, so t will be in Seconds and
the output will be in Meters. It is also possible to specify implied MKS or
GCS units.

xplot[t_] = Deunitize[x[x0, v0, a][t] /. data, {t}]

giving:    1143/1250 + (1143 t)/625 + (5 t^2)/2

Plot[xplot[t], {t, 0, 5},
Frame -> True,
FrameLabel -> {"t Seconds", "x Meters"}]

There is also a more general routine, DeunitizeWithReference. It allows us
to give specific implied input and output units. Here is a variation of the
same case.

Clear[x];
x[t_, x0_, v0_, a_] := x0 + v0 t + 1/2 a t^2

Here we specify a deunitized expression where t is given in Minutes, v0 is
given in Yards/Second and the output will be in Furlongs. x0 and a are given
explicit values. The routine checks that the specified implied units are
consistent and it prints a reference expression with the units in it.

Clear[xplot];
xplot[v0_][t_]=DeunitizeWithReference[x[t Minute, 3 Meter, v0 Yard/Second,
5Meter/Second^2],{t,v0},Furlong]

(I omit the reference equation because it doesn't copy and paste neatly.)

giving:   (125 (3 + 9000 t^2 + (6858 t v0)/125))/25146

Here is a plot for v0 = 0 and 100 Yards/Second.

Plot[{xplot[t], xplot[t]}, {t, 0, 5},
Frame -> True,
FrameLabel -> {"t Minutes", "x Furlongs"}]

The package also has the capability of setting up reduced units where
certain physical constants are set equal to 1 (such as geometric units or
atomic units) and that is another method for obtaining expressions without
explicit units.

--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/

"phillman5" <PHILLMAN5 at gmail.com> wrote in message
news:fbaqpi\$qbs\$1 at smc.twtelecom.net...
> If you have loaded the units package and have used units in your
> equations, is there an easy way to plot the equations?  For the y data
> you can easily divide by the 'units' to get a unitless number
>
> Plot[eq/units,{x, start,end}]
>
> but what about the x values?  If they have units, the plot functions
> croaks.  I suppose you can always make a table and use listplot, but
> there should be an easier way.  I have seen some people here with
> packages to download, is there a consensus on the best third part
> solution.  I'd like a universal solution that would work with other
> plotting functions too.
>
> I am using version 6.
>
>

```

• Prev by Date: Re: rotating rings illusion
• Next by Date: Re: Plot, Epilog, and Text
• Previous by thread: Re: plotting equations with units
• Next by thread: Re: plotting equations with units