MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Solvability sensitive to small changes in numerical input

  • To: mathgroup at smc.vnet.net
  • Subject: [mg47534] Re: Solvability sensitive to small changes in numerical input
  • From: drbob at bigfoot.com (Bobby R. Treat)
  • Date: Thu, 15 Apr 2004 03:40:17 -0400 (EDT)
  • References: <c5j7sp$r29$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

I don't know if this gets you all the solutions you want, but here goes...

First, here's a simplifying transformation (and its inverse):

b/(1 + (a1*n)^c) + b/(1 + (a2*n)^c) == 2
% /. {n -> nn/a1, a2 -> a*a1}
% /. {nn -> a1*n, a -> a2/a1}

(outputs suppressed)

Here's a solver and a check routine:

Clear[f, check]
f[a1_, a2_, b_] := FullSimplify[
   Block[{Message}, Solve[b/(1 + nn^c) + b/(1 + a^c*nn^c) == 
       2, nn]] //. {(nn -> y_) -> n -> y/a1, a -> a2/a1, 
     c -> 2*(b/(b - 1))}]
f[x_List] := f @@ x
check[a1_, a2_, b_] := 
   Print[TableForm[Chop[{a1, a2, b, c, n, b/(1 + (a1*n)^c) + 
          b/(1 + (a2*n)^c) - 2} /. f[a1, a2, b] /. 
       c -> 2*(b/(b - 1))], TableHeadings -> 
      {None, {"a1", "a2", "b", "c", "n", "error"}}, 
     TableAlignments -> Center]]; 
check[x:{__List}] := Scan[check, x]
check[x_List] := check @@ x

Here's a test for the inputs you mentioned:

args = {2., 0.05, #} & /@ {6.19, 6.2, 6.21};
check@args[[1]]
check@args

(output suppressed)

Bobby

"Gareth J. Russell" <gjr2008 at columbia.edu> wrote in message news:<c5j7sp$r29$1 at smc.vnet.net>...
> 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


  • Prev by Date: Critical memory leak with J/Link
  • Next by Date: DisplayForm changes precission
  • Previous by thread: Re: Solvability sensitive to small changes in numerical input
  • Next by thread: Re: Solvability sensitive to small changes in numerical input