Re: Strange empty set of solutions
- To: mathgroup at smc.vnet.net
- Subject: [mg71849] Re: Strange empty set of solutions
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 1 Dec 2006 06:21:49 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <ekh7pg$sgs$1@smc.vnet.net> <ekjfrf$d7h$1@smc.vnet.net> <ekmdn4$817$1@smc.vnet.net>
José Carlos Santos wrote: > On 29-11-2006 8:19, Jens-Peer Kuska wrote: > >> and we can't read you mind and the memory of your computer >> so we must imagine a matrix M and write down > > Do you want an example? Here it is: > > M = {{4/5(c - 1), -2/Sqrt[5]s, 2/5(1 - c)}, > {2/5(1 - c), -1 + s/Sqrt[5], 4/5 + c/5}, > {-2s/Sqrt[5], -c, -1 + s/Sqrt[5]}} // N > > with c = Cos[Sqrt[5]] and s = Sin[Sqrt[5]]. Right. This is the first matrix I would have try :-) > If I type > > Solve[{M.{x, y, z} == {0, 0, 0}}, {x, y, z}] > > I get > > {{x -> 0. - 0.0438861 z, y -> 0. + 1. z}} The above solution is erroneous: this is a spurious solution that occurs due to numerical imprecision (you are using machine-precision arithmetic). > but if I type > > Solve[{M.{x, y, z} == {0, 0, 0}, x^2 + y^2 + z^2 == 1}, {x, y, z}] > > then I get the empty set. Why is that? In[1]:= M = N[{{(4/5)*(c - 1), (-2/Sqrt[5])*s, (2/5)*(1 - c)}, {(2/5)*(1 - c), -1 + s/Sqrt[5], 4/5 + c/5}, {-2*(s/Sqrt[5]), -c, -1 + s/Sqrt[5]}} /. {c -> Cos[Sqrt[5]], s -> Sin[Sqrt[5]]}] Out[1]= {{-1.2938183011657334, -0.7036898157513979, 0.6469091505828667}, {0.6469091505828667, -0.6481550921243011, 0.6765454247085667}, {-0.7036898157513979, 0.6172728764571667, -0.6481550921243011}} In[2]:= Solve[{M . {x, y, z} == {0, 0, 0}}, {x, y, z}] From In[2]:= Solve::svars: Equations may not give solutions for all "solve" variables. Out[2]= {{x -> 0. - 0.04388611995778054*z, y -> 0. + 1.*z}} In[3]:= Solve[{M . {x, y, z} == {0, 0, 0}}, {x, y, z}, VerifySolutions -> True] Out[3]= {{x -> 0., y -> 0., z -> 0.}} In[4]:= Solve[{M . {x, y, z} == {0, 0, 0}, x^2 + y^2 + z^2 == 1}, {x, y, z}] Out[4]= {} In[5]:= Reduce[{M . {x, y, z} == {0, 0, 0}}, {x, y, z}] From In[5]:= RowReduce::luc: Result for RowReduce of badly conditioned matrix {{-0.648155, 0.617273, -0.70369, 0.}, {0.646909, -0.70369, -1.29382, 0.}, {0.676545, -0.648155, 0.646909, 0.}} may contain significant numerical errors. Out[5]= x == 0. && y == 0. && z == 0. In[6]:= Reduce[{M . {x, y, z} == {0, 0, 0}, x^2 + y^2 + z^2 == 1}, {x, y, z}] Out[6]= (x == -0.03101724187965778 || x == 0.03101724187965778) && y == -22.786247701141555*x && z == -22.786247701141555*x In[7]:= Reduce[{M . {x, y, z} == {0, 0, 0}, x^2 + y^2 + z^2 == 1}, {x, y, z}, Backsubstitution -> True] Out[7]= (x == -0.03101724187965778 && y == 0.7067665564761036 && z == 0.7067665564761036) || (x == 0.03101724187965778 && y == -0.7067665564761036 && z == -0.7067665564761036) In[8]:= sol1 = ToRules[%[[1]]] Out[8]= {x -> -0.03101724187965778, y -> 0.7067665564761036, z -> 0.7067665564761036} In[9]:= sol2 = ToRules[%%[[2]]] Out[9]= {x -> 0.03101724187965778, y -> -0.7067665564761036, z -> -0.7067665564761036} In[10]:= Chop[M . {x, y, z} /. sol1] == {0, 0, 0} Out[10]= True In[11]:= Chop[M . {x, y, z} /. sol2] == {0, 0, 0} Out[11]= True In[12]:= x^2 + y^2 + z^2 == 1 /. sol1 Out[12]= True In[13]:= x^2 + y^2 + z^2 == 1 /. sol2 Out[13]= True In[14]:= M = {{(4/5)*(c - 1), (-2/Sqrt[5])*s, (2/5)*(1 - c)}, {(2/5)*(1 - c), -1 + s/Sqrt[5], 4/5 + c/5}, {-2*(s/Sqrt[5]), -c, -1 + s/Sqrt[5]}} /. {c -> Cos[Sqrt[5]], s -> Sin[Sqrt[5]]} Out[14]= {{(4/5)*(-1 + Cos[Sqrt[5]]), -((2*Sin[Sqrt[5]])/Sqrt[5]), (2/5)*(1 - Cos[Sqrt[5]])}, {(2/5)*(1 - Cos[Sqrt[5]]), -1 + Sin[Sqrt[5]]/Sqrt[5], 4/5 + Cos[Sqrt[5]]/5}, {-((2*Sin[Sqrt[5]])/Sqrt[5]), -Cos[Sqrt[5]], -1 + Sin[Sqrt[5]]/Sqrt[5]}} In[15]:= Solve[{M . {x, y, z} == {0, 0, 0}}, {x, y, z}, VerifySolutions -> True] From In[15]:= Solve::svars: Equations may not give solutions for all "solve" variables. Out[15]= {{x -> (-(1/2))*z*Csc[Sqrt[5]/2]*(Sqrt[5]*Cos[Sqrt[5]/2] - Sin[Sqrt[5]/2]), y -> z}} In[16]:= N[%] Out[16]= {{x -> -0.04388611995778057*z, y -> z}} In[17]:= Solve[{M . {x, y, z} == {0, 0, 0}, x^2 + y^2 + z^2 == 1}, {x, y, z}] Out[17]= {{x -> (1/2)*Csc[Sqrt[5]]*((I*Sin[Sqrt[5]]*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2] - (I*Sqrt[10*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2] - (I*Cos[Sqrt[5]]*Sqrt[10*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2]), y -> (I*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2], z -> (I*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2]}, {x -> (1/2)*Csc[Sqrt[5]]*(-((I*Sin[Sqrt[5]]*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2]) + (I*Sqrt[10*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2] + (I*Cos[Sqrt[5]]*Sqrt[10*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2]), y -> -((I*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2]), z -> -((I*Sqrt[2*(-5 + 5*Cos[Sqrt[5]] + Sqrt[5]*Sin[Sqrt[5]] - Sqrt[5]*Cos[Sqrt[5]]*Sin[Sqrt[5]] - 2*Sin[Sqrt[5]]^2)])/ Sqrt[45 - 14*Sqrt[5]*Sin[Sqrt[5]] + 9*Sin[Sqrt[5]]^2])}} In[18]:= N[%] Out[18]= {{x -> 0.03101724187965798 + 0.*I, y -> -0.7067665564761035 + 0.*I, z -> -0.7067665564761035 + 0.*I}, {x -> -0.03101724187965798 + 0.*I, y -> 0.7067665564761035 + 0.*I, z -> 0.7067665564761035 + 0.*I}} In[19]:= Chop[%] Out[19]= {{x -> 0.03101724187965798, y -> -0.7067665564761035, z -> -0.7067665564761035}, {x -> -0.03101724187965798, y -> 0.7067665564761035, z -> 0.7067665564761035}} Regards, Jean-Marc