MathGroup Archive 2008

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

Search the Archive

Re: Controlling the order of evaluations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg93031] Re: Controlling the order of evaluations
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Fri, 24 Oct 2008 02:30:28 -0400 (EDT)
  • References: <gdms84$en$1@smc.vnet.net>

anguzman at ing.uchile.cl wrote:
> Hello:
> Several times I have faced similar problems to this one:
> 
> Suppose I have a function f[x,y] well defined only in numbers, I mean, 
> it drops errors if I try to evaluate symbols. You could suppose that 
> is a function that include numerical integration in its definition...
> 
> What I want to do is plotting several curves f[x,y1], f[x,y2],...f[x,yn]
> with x as abscissa for specific (and fixed) values of y in the same plot.
> 
> So, what I always end up trying is something like:
> 
> 
> Plot[f[x,#]&/@{y1,y2,....,yn},{x,a,b}]
> 
> 
> Mathematica (5.2 Version for Windows) complains but finally interprets 
> correctly what I meant and does the plot correctly (sometimes)with all 
> the curves , but this errors are annoying. They are always of the form:
> 
> \" bla bla.. f[x,y1] is not numerical at ....\"
> 
> 
> 
> I would be very gratefull if somebody could explain me (or just give 
> the solution to this thing) the correct order of Holds, HoldFirsts, 
> HoldPatterns , Evaluate , Unevaluated etc... that make Mathematica 
> happy.
> By the way, I already tried:
> Plot[Evaluate[f[x,#]&/@{y1,y2,....,yn}],{x,a,b}]
> but didn=B4t work.
> 
> I=B4ll give an specific example:
> 
> f[x_, y_] := NIntegrate[2^(s*x), {s, 0, y}]
> 
> Plot[Evaluate[f[x, #] & /@ {2, 3, 4, 5}], {x, 0.5, 1.5}]
> 
> Generates the 4 curves after giving errors like:
> 
> \"NIntegrate::\"inum\" \"Integrand 2^(s*x) is not numerical at s = 1. \"
> 
> So what I want to do is that the x of the Plotting evaluation enters 
> f[x,y] before f even sees the x and start freaking out.
> 
> Thanks in advance
> 
> Atte. Andres Guzman
> 
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
> 
> 
You should define your function with pattern conditions that prevent 
evaluation when the argument(s) is not a number:

f[x_?NumericQ,y_?NumericQ]:= NIntegrate[2^(s*x), {s, 0, y}]

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: Controlling the order of evaluations
  • Next by Date: Re: Expressions with ellipsis (...)
  • Previous by thread: Re: Controlling the order of evaluations
  • Next by thread: Re: Controlling the order of evaluations