Re: NDSolve and numeric-only computation
- To: mathgroup at smc.vnet.net
- Subject: [mg21875] Re: NDSolve and numeric-only computation
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Wed, 2 Feb 2000 22:54:31 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <872j7n$cie@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Carl,
first of all. I think that your compilation by hand is done my
NDSolve[].
The problem is that you can't give a compiled function a Pattern[] for
the
argument.
But you may define
RHS = Compile[{{x, _Real}}, x^2]
fun[x_?NumericQ] := RHS[x]
and NDSolve[] run without a prolem
NDSolve[{x'[t] == fun[x[t]], x[0] == 0}, x[t], {t, 0, 1}]
Hope that helps
Jens
Carl Bumiller wrote:
>
> I have a question about NDSolve and numeric-only computation.
>
> First I have defined RHS=Compile[{{x,_Real}},........] where ........
> is some complicated expression, then I ran
> NDSolve[{x'[t]==RHS[x[t]],x[0]==1},{x},{t,0,1}]
> and got the error message
>
> CompiledFunction::cfr:
> Cannot use compiled code; Argument x[t] at position 1
> should be a machine-size real number.
>
> This suggests that NDSolve is trying to solve symbolically rather than
> numerically. How do I get NDSolve to evaluate RHS numerically rather
> than symbolically?? When I try Compiled->True or Compiled->False
> with NDSolve, I get the same error message. Since RHS is complicated,
> its symbolic evaluation is time comsuming although the equation is
> eventually solved. I am running Mathematica 3.0 for Digital Unix.
>
> Carl Bumiller
> bumi314 at aol.com