Re: Solve's Strange Output
- To: mathgroup at smc.vnet.net
- Subject: [mg89094] Re: Solve's Strange Output
- From: DrMajorBob <drmajorbob at att.net>
- Date: Sun, 25 May 2008 06:26:39 -0400 (EDT)
- References: <23447542.1211696555486.JavaMail.root@m08>
- Reply-to: drmajorbob at longhorns.com
Bruce, It's an artifact of using algebraic methods on machine precision numbers. Here's a rationalized alternative: {x[0], y[0]} = Rationalize at {10.5, 6.08}; {x[1], y[1]} = Rationalize at {3.23, 14.4}; {x[2], y[2]} = Rationalize@{18, 12.7}; m = Rationalize at 16.1; soln = Solve[{a + c == 0, b + d == m*g, d (x[2] - x[0]) == c (y[2] - y[0]), a (y[1] - y[0]) == b (x[1] - x[0])}, {a, b, c, d}] {{a -> -((8778525 g)/1105274), b -> (5023200 g)/552637, c -> (8778525 g)/1105274, d -> (38742557 g)/5526370}} N@% {{a -> -7.9424 g, b -> 9.08951 g, c -> 7.9424 g, d -> 7.01049 g}} The general (completely algebraic) result has all variables divisible by g*m: Clear[m, x, y] {a, b, c, d}/(g m) /. First@Solve[{a + c == 0, b + d == m*g, d (x[2] - x[0]) == c (y[2] - y[0]), a (y[1] - y[0]) == b (x[1] - x[0])}, {a, b, c, d}] // Simplify // Column -(((x[0]-x[1]) (x[0]-x[2]))/(x[2] (y[0]-y[1])+x[0] (y[1]-y[2])+x[1] (-y[0]+y[2]))) -(((x[0]-x[2]) (y[0]-y[1]))/(x[2] (y[0]-y[1])+x[0] (y[1]-y[2])+x[1] (-y[0]+y[2]))) ((x[0]-x[1]) (x[0]-x[2]))/(x[2] (y[0]-y[1])+x[0] (y[1]-y[2])+x[1] (-y[0]+y[2])) ((x[0]-x[1]) (y[0]-y[2]))/(x[2] (y[0]-y[1])+x[0] (y[1]-y[2])+x[1] (-y[0]+y[2])) Bobby On Sun, 25 May 2008 01:04:20 -0500, Bruce Colletti <bwcolletti at verizon.net> wrote: > Re 6.0.2 under WinXP. > > This code's output is strange: what does 0.-7.9424 g mean? Ditto for > all values returned by Solve. > > Thankx. > > Bruce > > > {x[0],y[0]}={10.5,6.08}; > {x[1],y[1]}={3.23,14.4}; > {x[2],y[2]}={18,12.7}; > m=16.1; > > Solve[{a+c==0,b+d==m*g,d(x[2]-x[0])==c(y[2]-y[0]),a(y[1]-y[0])==b(x[1]-x[0])},{a,b,c,d}] > > Out[11]= {{a->0.-7.9424 g,b->0.+9.08951 g,c->0.+7.9424 g,d->0.+7.01049 > g}} > > -- DrMajorBob at longhorns.com