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