limit equation's solutions

I have a question please,
I have to solve an equation that gives more than 400 solutions (reel and complexe numbers) but i’m just interested by reel and positive solution
How can i have just the reel positive numbers from all the solutions of this equation?

Dear Djouaher Zo,

I hope this helps a bit. I show the principle using a 4th order polynomial:

sols = NSolve[Sum[(RandomReal[] - 0.5) x^i, {i, 0, 4}] == 0, x]; 

In this case I get:

sols
(*{{x -> -0.946069}, {x -> -0.171399 - 0.607033 I}, {x -> -0.171399 + 0.607033 I}, {x -> 0.748391}}*)

Now I can choose the real and positive solutions:

Select[Cases[Chop[x /. sols], _Real], # > 0 &]
{0.748391}

You can do this in one command, e.g. just Select:

Select[Chop[x /. sols], (Head[#] == Real && Re[#] > 0) &]

Cheers,

Marco

Thanks for your answer, but this tip does not work with my equation
Look,
i have to solve this equation
Solve[Det[kg- w^2*Mg] == 0, w]
Knowing that both “kg” and “Mg” are [18x18] matrix
Can rewrite your example with my equation.
greetings

Hi,

I still don’t see the problem. Here’s a smaller example.

A = RandomReal[{-1, 1}, {5, 5}]; B = RandomReal[{-1, 1}, {5, 5}];
sols = Solve[Det[A - w^2*B] == 0, w]

This gives:

{{w -> -0.890446 - 0.570123 I}, {w -> -0.890446 + 0.570123 I}, {w -> -0.604951}, {w -> 0. - 1.01964 I}, 
{w ->  0. + 1.01964 I}, {w -> 0. - 1.82466 I}, {w -> 0. + 1.82466 I}, {w -> 0.604951}, 
{w -> 0.890446 - 0.570123 I}, {w -> 0.890446 + 0.570123 I}}

If you now apply the command I posted earlier:

Select[Chop[w /. sols], (Head[#] == Real && Re[#] > 0) &]

It gives

{0.604951}

which is indeed the only positive real solution that Mathematica found. So what makes you say that this does not work?

Cheers,

Marco

hi, thank you, it works.