Re: Solve inconsistant actions?

*To*: mathgroup at smc.vnet.net*Subject*: [mg87251] Re: Solve inconsistant actions?*From*: Szabolcs Horvát <szhorvat at gmail.com>*Date*: Sat, 5 Apr 2008 04:24:43 -0500 (EST)*Organization*: University of Bergen*References*: <001e01c895c3$23556720$6501a8c0@MLHC> <47F57015.8090002@gmail.com> <ft4n9s$42q$1@smc.vnet.net>

mhicks wrote: > Can someone enlighten me as to what discriminators Solve uses in > providing some solutions while disdaining others in the attached simple > code? > > Is it an operator or Mathematica bug? I am running 6.0.1 under win xp. > > > newrent = Table[125000 \[ExponentialE]^(r 14), {r, .01, .04, .005}] // N > > Table[Solve[newrent[[i]]/rate == 1894000 , rate], {i, 1, 7}] > > Table[Solve[newrent[[i]]/rate == 1894000. , rate], {i, 1, 7}] > > Table[Reduce[newrent[[i]]/rate == 1894000 , rate], {i, 1, 7}] > > Table[Solve[newrent[[i]] == 1894000 rate, rate], {i, 1, 7}] > This happens because Solve was designed to work with exact values and you are using it with approximate (floating point) values. When it verifies the solutions, it finds some of the solutions to be incorrect (because of precision issues). With VerifySolutions -> False Solve will return all solutions: Solve[#/rate == 1894000, rate, VerifySolutions -> False] & /@ newrent However, it is generally a very bad idea to mix exact and approximate values in calculations (or to use approximate values in symbolic calculations). Either use exact values in newrent: Solve[#/rate == 1894000, rate] & /@ Rationalize[newrent, 0] or use NSolve if you only need approximate solutions: NSolve[#/rate == 1894000, rate] & /@ newrent Szabolcs