MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Constant function Integrate Assumption - More

  • To: mathgroup at smc.vnet.net
  • Subject: [mg47292] RE: [mg47252] Constant function Integrate Assumption - More
  • From: "David Park" <djmp at earthlink.net>
  • Date: Fri, 2 Apr 2004 03:31:11 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Daryl,

My indirect reply to your question was posted today. Here I reply to your
more recent posting.

The solution to this problem is to first keep units out of the symbolic
equations, and second to use the V4ExtendUnits package from my web site,
which handles units in DiracDelta, UnitStep and two argument ArcTan
expressions. Here is how I would do your calculation with ExtendUnits.

Needs["Miscellaneous`V4ExtendUnits`"]

First I install a new unit, Widget. You might install units for any item
that is manufactured. In this case Widget is actually unitless, since it is
a count.

InstallNewUnit[Widget -> 1]

Now I set up the data for your calculation. The units always go with the
numbers. The units are part of the data. The units should not explicitly
appear in your symbolic equations.

data = {t0 -> 5 Month, baserate -> 50000 Widget/Year};

Now we define the total units function. Notice - no units!

totalunits[t_] = baserate*Integrate[UnitStep[t - t0], t]

If you want to calculate the total units after 8 months (doing it in
steps)...

totalunits[8Month]
% /. data
% // ToUnit[Widget]

baserate (8 Month - t0) UnitStep[8 Month - t0]
(150000*Month*Widget*UnitStep[3*Month])/Year
12500. Widget

Or all at once...

totalunits[8 Month] /. data // ToUnit[Widget]
12500. Widget

Suppose you want to create a function to plot. We have to get rid of all the
units and use implied units. This is done with the Deunitize function.

nwidgets[t_] = Deunitize[totalunits[t Month] /. data, {t}]
0.00158549 (-13140000 + 2628000 t) UnitStep[-13140000 + 2628000 t]

Plot[nwidgets[t], {t, 0, 17},
    PlotRange -> All,
    AxesLabel -> {Months, Widgets}];

If you want a formula for the Gross number of widgets as a function of years
you can use...

nwidgets2[t_] = Deunitize[totalunits[t Year]/Gross /. data, {t}]
0.0000110103 (-13140000 + 31536000 t) UnitStep[-13140000 + 31536000 t]

Plot[nwidgets2[t], {t, 0, 3},
    PlotRange -> All,
    AxesLabel -> {Years, "Gross Widgets"}];

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/



From: Reece, Daryl [mailto:Daryl.Reece at goody.com]
To: mathgroup at smc.vnet.net

Many thanks to everyone offering solutions to my dilemma.  In trying to
simplify the problem, I must have slipped up and oversimplified.

Specifically I want to start with

Integrate[50000 Units/Year UnitStep[(t-5 Month)/Month], t]

and receive

50000 Units/Year (t-5 Month) UnitStep[(t-5 Month)/Month].

I need the full answer so that the units work out correctly in the answer.
I am starting with a sale rate and want to derive the total sales as a
function of time.  This time may then be input as Days, Months, Years....
If I perform the replace operation, as many of you suggest, this ability
disappears.

A lister rightly pointed out that Mathematica is confused not because it
assumes that Month may be a function of t, but rather it does not know the
sign of Month.  Even using the assumption Month>0 does not fix the problem.

Other suggestions?




  • Prev by Date: Re: Re: Infrequent Mathematica User
  • Next by Date: Re: Re: Infrequent Mathematica User
  • Previous by thread: Re: Constant function Integrate Assumption - More
  • Next by thread: Re: sort list