       Re: Strange empty set of solutions

• To: mathgroup at smc.vnet.net
• Subject: [mg71843] Re: Strange empty set of solutions
• From: Peter Pein <petsie at dordos.net>
• Date: Fri, 1 Dec 2006 06:21:41 -0500 (EST)
• References: <ekh7pg\$sgs\$1@smc.vnet.net> <ekjfrf\$d7h\$1@smc.vnet.net> <ekmdn4\$817\$1@smc.vnet.net>

```José Carlos Santos schrieb:
> 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/Sqrts, 2/5(1 - c)},
>       {2/5(1 - c), -1 + s/Sqrt, 4/5 + c/5},
>       {-2s/Sqrt, -c, -1 + s/Sqrt}} // N
>
> with c = Cos[Sqrt] and s = Sin[Sqrt].
>
> 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}}
>
> 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?
>
> Best regards,
>
> Jose Carlos Santos
>

Hi,

you know the exact values of M. Why do you calculate with inexact numbers?

in the following examples is M the _exact_ matrix, nM the approximation with
MachinePrecision (N[M]) and v is {x,y,z}.

I guess, you are interested in approx. solutions:

NSolve[{M . v == 0, v . v == 1}, v]
{{x -> -0.031017241879657837, y -> 0.7067665564761036, z -> 0.7067665564761036},
{x -> 0.031017241879657837, y -> -0.7067665564761036, z -> -0.7067665564761036}}

and this is, what you observed:

NSolve[{nM . v == 0, v . v == 1}, v]
{}

but using Mathematicas special floating point routines, you get

NSolve[{N[M, 10] . v == 0, v . v == 1}, v]
{{x -> -0.0310172418796578372`5.994695378036643, y ->
0.7067665564761036423`5.9946953780366465,
z -> 0.7067665564761036423`6.000786279312727}, {x ->
0.0310172418796578372`5.994695378036643,
y -> -0.7067665564761036431`5.9946953780366465, z ->
-0.7067665564761036431`6.000786279312727}}

the easiest way (with small systems of equations) is:

gb = GroebnerBasis[Flatten[{M . v, v . v - 1}], v];
NSolve[gb == 0, v]
{{x -> -0.031017241879657837, y -> 0.7067665564761036, z -> 0.7067665564761036},
{x -> 0.031017241879657837, y -> -0.7067665564761036, z -> -0.7067665564761036}}

which works with machine-precision numbers too:

GroebnerBasis[Flatten[{nM . v, v . v - 1}], v]
{-0.4995189653530894 + 1.*z^2, 1.*y - 1.*z, 1.*x + 0.0438861199577807*z}
Solve[% == 0, v]
{{x -> -0.03101724187965787, y -> 0.7067665564761035, z -> 0.7067665564761035},
{x -> 0.03101724187965787, y -> -0.7067665564761035, z -> -0.7067665564761035}}

Peter

```

• Prev by Date: Re: Algorithm used by "Reduce" function
• Next by Date: Re: Is mathematica able to transform formula
• Previous by thread: Re: Re: Strange empty set of solutions
• Next by thread: RE: RE: Functional decomposition (solving f[f[x]] = g[x] for given g)