Re: Solve and Piecewise Functions

*To*: mathgroup at smc.vnet.net*Subject*: [mg76439] Re: Solve and Piecewise Functions*From*: Szabolcs <szhorvat at gmail.com>*Date*: Tue, 22 May 2007 02:51:49 -0400 (EDT)*Organization*: University of Bergen*References*: <f2rqtl$9u1$1@smc.vnet.net>

Michael Madrid wrote: > I was hoping something like this: > > > Clear["*"] > g=Piecewise[{{0,x<0},{2 x-x^2,0<=x<4},{16 x-x^2,x³4}}] > h=x-2; > Solve[g?h,x] > > > would give me a meaningful answer. But all I get is this: > > > Solve[\[Piecewise]{ > {0, x<0}, > {2 x-x2, 0£x<4}, > {16 x-x2, x³4} > }?-2+x,x] > > Any thoughts on how to do this? > I don't think that Solve understands piecewise functions ... You could use Solve separately for the three pieces, then pick those solutions that satisfy the conditions. In[1]:= pwSolve[HoldPattern[Piecewise][pw_List, ___] == rhs_, x_] := With[{sol = Solve[#1 == rhs, x]}, Pick[sol, #2 /. sol]] & @@@ pw In[3]:= g = Piecewise[{{0, x < 0}, {2 x - x^2, 0 <= x < 4}, {16 x - x^2, x >= 4}}] Out[3]= \[Piecewise] { {0, x < 0}, {2 x - x^2, 0 <= x < 4}, {16 x - x^2, x >= 4} } In[4]:= h = x - 2 Out[4]= -2 + x In[5]:= pwSolve[g == h, x] Out[5]= {{}, {{x -> 2}}, {{x -> 1/2 (15 + Sqrt[233])}}} Note that this simple pwSolve ignores the default value of Piecewise ... Szabolcs