I've been battling to try to get a solution to my equation, but it requires solving of a piecewise function, which I cannot work out how to do. Say I have a piecewise function of the form
temp = Piecewise[{ { 2*N*x, x < 0}, { N*x, x >= 0}
}]
I want to either solve this via Solve[1==temp, N] and either get, with the inequalities,
N -> Piecewise[{ {1/(2*x), x < 0}, {1/x, x >= 0}
}]
or just get mathematica to realise that there is a common term - N, and factor it out to, say, N * Piecewise[{ {2*x, x < 0}, {x, x >= 0}
}]
from where solve can handle it perfectly well.
Is this type of operation possible, or am I stuck editing them by hand?
> I've been battling to try to get a solution to my equation, but it > requires solving of a piecewise function, which I cannot work out how > to do. Say I have a piecewise function of the form
> temp = Piecewise[{ > { 2*N*x, x < 0}, > { N*x, x >= 0}
> }]
> I want to either solve this via > Solve[1==temp, N] > and either get, with the inequalities,
> N -> Piecewise[{ > {1/(2*x), x < 0}, > {1/x, x >= 0}
> }]
> or just get mathematica to realise that there is a common term - N, > and factor it out to, say, > N * Piecewise[{ > {2*x, x < 0}, > {x, x >= 0}}]
> from where solve can handle it perfectly well.
> Is this type of operation possible, or am I stuck editing them by hand?
Do not use symbols that already are used as built in symbols.
In[55]:= Information[N]
>From In[55]:=
"N[expr] gives the numerical value of expr. N[expr, n] attempts to give a result with n-digit precision."
>From In[55]:=
Attributes[N] = {Protected}
N /: Default[N, 2] := {MachinePrecision, Infinity}
So, how about
In[57]:= temp = Piecewise[{{2*n*x, x < 0}, {n*x, x >= 0}}]
Out[57]= Piecewise[{{2*n*x, x < 0}, {n*x, x >= 0}}]
In[59]:= Reduce[temp == 1, n]
Out[59]= (x > 0 && n == 1/x) || (x < 0 && n == 1/(2*x))
misno...@gmail.com wrote: > I've been battling to try to get a solution to my equation, but it > requires solving of a piecewise function, which I cannot work out how > to do. Say I have a piecewise function of the form
> temp = Piecewise[{ > { 2*N*x, x < 0}, > { N*x, x >= 0} > }]
> I want to either solve this via > Solve[1==temp, N] > and either get, with the inequalities,
> N -> Piecewise[{ > {1/(2*x), x < 0}, > {1/x, x >= 0} > }]
> or just get mathematica to realise that there is a common term - N, > and factor it out to, say, > N * Piecewise[{ > {2*x, x < 0}, > {x, x >= 0} > }] > from where solve can handle it perfectly well.
> Is this type of operation possible, or am I stuck editing them by hand?
Use *Reduce* for it knows how to handle correctly expressions with *Piecewise*.
In[1]:= temp = Piecewise[{{2*n*x, x < 0}, {n*x, x >= 0}}]; Reduce[1 == temp, n]
Out[2]= (x > 0 && n == 1/x) || (x < 0 && n == 1/(2 x))
In[3]:= Reduce[1 == n*Piecewise[{{2*x, x < 0}, {x, x >= 0}}], n]
Out[3]= (x > 0 && n == 1/x) || (x < 0 && n == 1/(2 x))
*Solve* does /not/ know what to do with *Piecewise*.
In[4]:= Solve[1 == n*Piecewise[{{2*x, x < 0}, {x, x >= 0}}], n]
Out[4]= {{n -> 1/\[Piecewise] { {2 x, x < 0}, {x, x >= 0} }}}
(Also, note that I have replaced capital N by n because N has already a built-in meaning.)
> I've been battling to try to get a solution to my equation, but it > requires solving of a piecewise function, which I cannot work out how > to do. Say I have a piecewise function of the form
> temp = Piecewise[{ > { 2*N*x, x < 0}, > { N*x, x >= 0} >}]
> I want to either solve this via > Solve[1==temp, N] > and either get, with the inequalities,
> N -> Piecewise[{ > {1/(2*x), x < 0}, > {1/x, x >= 0} >}]
> or just get mathematica to realise that there is a common term - N, > and factor it out to, say, > N * Piecewise[{ > {2*x, x < 0}, > {x, x >= 0} >}] > from where solve can handle it perfectly well.
> Is this type of operation possible, or am I stuck editing them by hand?
You should use Reduce instead of Solve (and don't use N as a variable, because it's a Mathematica built in function). So
temp = Piecewise[{ {2 n x , x < 0}, {n x, x >= 0}}]
Reduce[temp==1,n]
(x > 0 && n == 1/x) || (x < 0 && n == 1/(2*x))
Gruss Peter -- ==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-== Peter Breitfeld, Bad Saulgau, Germany -- http://www.pBreitfeld.de