Re: Solvability sensitive to small changes in numerical input
- To: mathgroup at smc.vnet.net
- Subject: [mg47516] Re: [mg47494] Solvability sensitive to small changes in numerical input
- From: Oleksandr Pavlyk <pavlyk at phys.psu.edu>
- Date: Thu, 15 Apr 2004 03:39:22 -0400 (EDT)
- Organization: Penn State University; Department of Physics
- References: <200404141116.HAA27286@smc.vnet.net>
- Reply-to: pavlyk at phys.psu.edu
- Sender: owner-wri-mathgroup at wolfram.com
Hi Gareth,
I think you should use FindRoot instead of Solve.
It is also better suited for numerics. I took
the liberty to transform your equation slightly
Clear[f];
f[a1_, a2_, b_, prec_:30] := Module[
{c, t1, t2, t3, n0},
c = 2*(b/(b - 1));
t1 = 1/a1^c;
t2 = 1/a2^c;
n0 = (b*(t1+t2))^(1/c);
SetPrecision[
n /. Assuming[n \[Element] Reals,
FindRoot[
0 == b*t1*(t2 + n^c) +
b*t2*(t1 + n^c) -
2*(t1 + n^c)*(t2 + n^c)
, {n, n0}]],
prec]
];
f[2., 0.05, 6.21]
27.3331323380492889896231645253
I have chosen the initial point for the FindRoot, by assuming,
in the first approximation that t1 and t2 are small compared
to n^c.
Best regards,
Sasha
Gareth J. Russell wrote:
> Hi,
>
> I have a function that includes the Solve command
>
> f[a1_, a2_, b_] := Module[{c},
>
> c = 2*b/(b - 1);
>
> Solve[b/(1 + (a1*n)^c) + b/(1 + (a2*n)^c) == 2, n]
>
> ] ]
>
> but it seems very sensitive to the numerical input. For example,
>
> f[2., 0.05, 6.19]
>
> and
>
> f[2., 0.05, 6.21]
>
> Produce the error "The equations appear to involve the variables to be
> solved for in an essentially non-algebraic way."
>
> Whereas
>
> f[2., 0.05, 6.20]
>
> produces the solutions
>
> {{n -> -23.8725 - 13.2503i]}, {n -> -23.8725 + 13.2503i}, {
> n -> 0.183281 - 0.707873i}, {n -> 0.183281 + 0.707873i]}, {n -> 27.
> 3032}}
>
> Can anyone enlighten me as to what is going on here? Other peoples' work
> suggests that, given a1 = 2., it should be possible to get numerical
> solutions for a large range of values of a2 and b.
>
> If it makes a differences we make the assumptions a1 > 0, a2 > 0, a2 <
> a1 and b >= 1.
>
> Oh, and v5.0.1.0 on Mac OS X
>
> Thanks!
>
> Gareth Russell
>
> Columbia University
- References:
- Solvability sensitive to small changes in numerical input
- From: "Gareth J. Russell" <gjr2008@columbia.edu>
- Solvability sensitive to small changes in numerical input