Re: Simplify with If and UnitStep
- To: mathgroup at smc.vnet.net
- Subject: [mg31344] Re: [mg31286] Simplify with If and UnitStep
- From: BobHanlon at aol.com
- Date: Mon, 29 Oct 2001 02:23:29 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 2001/10/26 6:40:51 AM, gg at hugo.doemaarwat.nl writes:
>I finally understand how I can create a 'piecewise' function with
>mathematica with UnitStep, but somewhere further in my calculations it
>doesn't Simplify it at all.
>This is what I've got as a result now (I removed the ugly pieces
>already):
>
>If[ 1/(32*t^0.3) > 1 && t^(-0.3) > 32,
> 62000*UnitStep[-0.1 + 32]*UnitStep[-0.1 + 1/t^0.3],
> Integrate[M^2.55*UnitStep[M - 0.1, -M + 32],
> {M, 0.1, 1/t^0.3}]]
>
>There are a couple of annoying things here that I can't solve...
>
>1) On the first line there are 2 conditions which are exactly the same
>only the 32 is on the other site of the >, how can I turn this into
>just 1 condition? (preferable the latter)
>
>2) On the second line there is a UnitStep[-0.1+32] which is certainly
>1. The second UnitStep is also 1 because the last part there is always
>larger then 32, that's what the If statement implies. How can I get
>these UnitStep's to be 1?
>
>3) On the 3th and 4th line it Integrate's over M in between 0.1 and a
>number lower then 32 (as the If statement implies), so the last
>UnitStep should also be 1.
>
>
>So what I want to see is actualy
>
>If[t^(-0.3) > 32, 62000, -0.00007939 + 0.281/t^1.065]
>
>Which looks way nicer then the upper statement, but essentially the
>same. (I rounded the numbers somewhat, but you get the idea.)
>
>If anyone can give me a hint about what I should do I will be very
>gratefull :-)
>
expr = If[1/(32*t^0.3)>1&&t^(-0.3)>32,
62000*UnitStep[-0.1+32]*UnitStep[-0.1+1/t^0.3],
Integrate[M^2.55*UnitStep[M-0.1,-M+32],
{M,0.1,1/t^0.3}]];
The conditions do not simplify because the two conditions are not "exactly"
the same.
To make them the same, use exact (rational) values.
expr = Simplify[Rationalize[expr]]
If[1/t^(3/10) > 32,
62000*UnitStep[-(1/10) + 32]*
UnitStep[1/t^(3/10) - 1/10],
Integrate[M^(51/20)*UnitStep[M - 1/10,
32 - M], {M, 1/10, 1/t^(3/10)}]]
The arguments to the If are not simplified because If has attribute HoldRest.
Attributes[If]
{HoldRest, Protected}
expr = Module[{d},
expr /. If[a_, b_, c_] :> (If[a, d, c] /.
d -> FullSimplify[b, a])]
If[1/t^(3/10) > 32, 62000,
Integrate[M^(51/20)*UnitStep[M - 1/10,
32 - M], {M, 1/10, 1/t^(3/10)}]]
The easiest way to deal with the integral is just to remove the UnitStep
manually
expr = expr /. UnitStep[x__] -> 1
If[1/t^(3/10) > 32, 62000,
Integrate[M^(51/20)*1, {M, 1/10,
1/t^(3/10)}]]
expr = Release /@ expr
If[1/t^(3/10) > 32, 62000,
20/(71*t^(213/200)) -
1/(3550*10^(11/20))]
Bob Hanlon
Chantilly, VA USA