Re: Immediate or Delayed Definitions in NDSolve?
- To: mathgroup at smc.vnet.net
- Subject: [mg45076] Re: Immediate or Delayed Definitions in NDSolve?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Tue, 16 Dec 2003 06:21:00 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <brchoh$2nt$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
evaluate it when you *have* a numerical value for
a
eq[a_?NumericQ] := y''[x] + a^2*y[x] == 0
sol[a_?NumericQ] := NDSolve[{eq[a], y[0] == 1, y'[0] == -1}, y, {x, 0,
10}]
and
sol[15]
will work.
Regards
Jens
extrabyte wrote:
>
> Hi everyone!
> I have a serious problem with NDSolve.
>
> Method 1 (Delayed Definition)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> In[1]: eq[a_] := y''[x] + a^2*y[x] == 0;
>
> In[2]: sol[a_] := NDSolve[{eq[a], y[0] == 1, y'[0] == -1}, y, {x, 0, 10}]
>
> In[3]: sol[a]
>
> NDSolve::"ndnum": "Encountered non-numerical value for a derivative at \
> \!\(x\) == \!\(5.840380984046049`*^-301\)."
>
> Out[3]:{{y -> InterpolatingFunction[{{0., 0.}}, "<>"]}}
>
> In[4]: f[x_, a_] := y[x] /. sol[a][[1]]
>
> In[5]: f[1, 1]
>
> In[6]:Plot[f[x, 2], {x, 0, 10}]
>
> [PLOT HERE]
> Out[6] - Graphics -
>
> In[7] f[x, a]
>
> NDSolve::"ndnum": "Encountered non-numerical value for a derivative at \
> \!\(x\) == \!\(5.840380984046049`*^-301\)."
>
> Out[7] InterpolatingFunction[{{0., 0.}}, "<>"][x]
>
> In[8] Table[{x, f[x, 1]}, {x, 0, 10}]
>
> General::"ivar": "\!\(0\) is not a valid variable."
> NDSolve::"dsvar": "\!\(0\) cannot be used as a variable."
>
> [SNIPPED]
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Example 2 (Immediate Definition)
>
> In[1]: eq[a_] := y''[x] + a^2*y[x] == 0;
>
> In[2]: sol[a_] := NDSolve[{eq[a], y[0] == 1, y'[0] == -1}, y, {x, 0, 10}]
>
> In[3]: sol[a]
>
> NDSolve::"ndnum": "Encountered non-numerical value for a derivative at \
> \!\(x\) == \!\(5.840380984046049`*^-301\)."
>
> Out[3]:{{y -> InterpolatingFunction[{{0., 0.}}, "<>"]}}
>
> In[4]: f[x_, a_] = y[x] /. sol[a][[1]]
>
> NDSolve::"ndnum": "Encountered non-numerical value for a derivative at \
> \!\(x\) == \!\(5.840380984046049`*^-301\)."
>
> Out[5]: InterpolatingFunction[{{0., 0.}}, "<>"][x]
>
> In[6]: f[1, 1]
>
> InterpolatingFunction::"dmval": "Input value \!\({1}\) lies outside the
> range \
> of data in the interpolating function. Extrapolation will be used."
>
> Out[6]: 0
>
> In[7]: Table[{x, f[x, 1]}, {x, 0, 10}]
> InterpolatingFunction::"dmval": "Input value \!\({1}\) lies outside the
> range \
> of data in the interpolating function. Extrapolation will be used."
> InterpolatingFunction::"dmval": "Input value \!\({2}\) lies outside the
> range \
> of data in the interpolating function. Extrapolation will be used."
> [snip]
>
> Out[7]: {{0, 1.}, {1, 0.}, {2, -1.}, {3, -2.}, {4, -3.}, {5, -4.}, {6, -5.},
> {7, -6.}, {8, \
> -7.}, {9, -8.}, {10, -9.}}
>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Immediate or Delayed Definitions in NDSolve??
>
> thx in advance
>
> --
> extrabyte
> http://extrabyte.splinder.it
> http://www.hardwarenonsolo.3go.it