Re: Solve real roots only ?
- To: mathgroup at smc.vnet.net
- Subject: [mg43619] Re: Solve real roots only ?
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Tue, 23 Sep 2003 04:02:50 -0400 (EDT)
- Organization: The University of Western Australia
- References: <bkm7jh$rgu$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <bkm7jh$rgu$1 at smc.vnet.net>,
Pavel Pokorny <Pavel.Pokorny at vscht.cz> wrote:
> how can I tell Solve to find real roots only?
> I tried RealOnly but it makes this little program to crash!
>
> Needs["Miscellaneous`RealOnly`"];
> f = a - (1-x) Sqrt[20 x - 20000 y];
> g = (a(1-y)- 1000 y (1-x))/(10-x);
> s = Solve [ f==0 && g==0, {x,y}];
> xs = x /. s;
> xx = Series [xs, {a,0,2}];
Since it looks like you want to compute a series expansion, in the
parameter a, here is one way to proceed:
Tell Mathematica that you don't want to see explicit radicals:
SetOptions[Roots, Cubics -> False, Quartics -> False];
Here are your expressions:
f = a - (1 - x) Sqrt[20 x - 20000 y];
g = (a (1 - y) - 1000 y (1 - x))/(10 - x);
We want to compute series expansions for x and y in terms of the
parameter a, so we make x and y explicitly depend on a:
{f,g} = {f,g} /. {x -> x[a], y -> y[a]}
Set the expansion order:
order = 3;
Use coercion to force the series expansion (adding the O[a] term) and
then solve for the undetermined expansion coefficients:
RootReduce[SolveAlways[{0, 0} == {f, g} + O[a]^order, a]]
Substitute the coefficients back into the series expansions for x and y:
RootReduce[Normal[{x[a], y[a]} + O[a]^order /. %]]
This result is exact. Compute numerically, if desired:
N[%]
Cheers,
Paul
--
Paul Abbott Phone: +61 8 9380 2734
School of Physics, M013 Fax: +61 8 9380 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul