Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: Problems with Solve
Posted:
Mar 23, 2014 4:59 AM


sol = z /. Solve[z + 5 (z^2  1) + 1 z^3 == 1, z];
sol // FullSimplify // N
{0.925423, 4.47735, 1.44807}
sol // RootApproximant // N
{0.925423, 4.47735, 1.44807}
sol // N // Chop
{0.925423, 4.47735, 1.44807}
z /. {Reduce[z + 5 (z^2  1) + 1 z^3 == 1, z] // ToRules} // N
{4.47735, 1.44807, 0.925423}
Use Piecewise rather than If
b[s_] = Piecewise[{{Erfc[x], s < 0.5}}, Erfc[x] + Erfc[y]  Erfc[z]];
b[.7]
Erfc[x] + Erfc[y]  Erfc[z]
b[s] /. s > .7
Erfc[x] + Erfc[y]  Erfc[z]
Bob Hanlon
On Sat, Mar 22, 2014 at 12:06 AM, Samuel Mark Young <sy81@sussex.ac.uk>wrote:
> > Hello everyone, > I'm trying to use the solutions of Solve from solving a cubic equation  > however, it keeps returning complex answers when there are real solutions. > For example: > > Solve[z + 5 (z^2  1) + 1 z^3 == 1, z] > > This equation has 3 real solutions. However, the answers returned when I > ask mathematica for a decimal answer are complex (which I need to do later > on when an integration needs solving numerically): > {{z > 0.925423 + 0. I}, {z > 4.47735 + > 2.22045*10^16 I}, {z > 1.44807  4.44089*10^16 I}} > > I'm guessing this is to do with the finite precision that is used in the > calculations as the imaginary components are very small, but am unsure how > to deal with them and they shouldn't be there. Any suggestions? > > > The second problem I am having is that I need to solve for s in a function > B[s] == 10^5, where B is some (complicated) function of s. > > The form of the function depends on s  and this is handled by If[] > commands in the function B. For example, the s dependance might be: > > B[s]:=If[s<0.5,Erfc[x],Erfc[x]+Erfc[y]Erfc[z]] > > B[s] is a smooth function of s. > > The problem seems to arise because, before it has found a solution for s, > it can't decide which form of the function to use  and so just returns an > error message (I've tried using Solve, NSolve, and FindRoot with different > methods). However, since I'm only looking for a numerical solution it is > easily possible to solve this manually using trial and improvement  which > seems to be something that Mathematica should be able to do? But I can't > figure out how. > > Please feel free to contact me directly at sy81@sussex.ac.uk with advice. > Thank you in advance for any help! > > Regards, > Sam > >



