Re: function evaluations with NDSolve

*To*: mathgroup at smc.vnet.net*Subject*: [mg36714] Re: function evaluations with NDSolve*From*: Eckhard.Hennig at infineon.com (Eckhard Hennig)*Date*: Fri, 20 Sep 2002 04:16:30 -0400 (EDT)*References*: <am95cj$k1k$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

"Higinio Ramos" <higra at usal.es> wrote in message news:<am95cj$k1k$1 at smc.vnet.net>... > I pretend to know how many times the function f has to be evaluated when > using NDSolve to solve a differential equation. > I've tried : > > cont=0; > f[x_]:=(cont++;x^2); > NDSolve[ {y''[x]+y[x]==f[x],y[0]==1,y'[0]==0},y,{x,0,6}] > > I obtain the solution of the ODE but cont returns 1 instead the number > of funtion evaluations. > How can I obtain it? > > Thanks. > Higinio Ramos Hi Higinio, you need to make sure that the function f[x] is evaluated only when it gets a numeric argument. Otherwise, Mathematica expands f[x] symbolically to the expression x^2 before NDSolve is called. Writing your code as follows will solve your problem: cont=0; f[x_?NumericQ]:=(cont++;x^2); NDSolve[ {y''[x]+y[x]==f[x],y[0]==1,y'[0]==0},y,{x,0,6}] Best regards, Eckhard Hennig