Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2003

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

Search the Archive

Re: how use NDSolve with an ODE having parameters

  • To: mathgroup at
  • Subject: [mg39708] Re: [mg39691] how use NDSolve with an ODE having parameters
  • From: Reza Malek-Madani <research at>
  • Date: Mon, 3 Mar 2003 04:25:36 -0500 (EST)
  • Sender: owner-wri-mathgroup at

Dear Murray:  Is this along the lines of what you're looking for?

f[omega_, a_, b_] :=
     NDSolve[{x'[t] == y[t], y'[t] == -Sin[x[t]] - 0.1*y[t] + Cos[omega
      t], x[0] == a, y[0] == b}, {x, y}, {t, 0, 10}]
sol = f[6, 1, 1];
newx[t_] = First[x[t] /. sol[[1]]];
Print[NIntegrate[(newx[t])^2, {t, 0, 10}]];
g[omega_] := Block[{sol}, sol = f[omega, 1, 1]; newx[t_] = x[t] /. sol;
Plot[g[omega], {omega, 0.1, 3}]

This solves the usual pendulum equation with omega and initial conditions
as parameters, computes the L^2 norm of x for a specific set of
parameters, and plots the x value at t=3 as omega varies.


Reza Malek-Madani               Director of Research
Research Office, MS 10m         Phone: 410-293-2504 (FAX -2507)
589 McNair Road                 DSN:      281-2504
U.S. Naval Academy              Nimitz Room 17 in ERC
Annapolis MD 21402-5031         Email: research at


On Sat, 1 Mar 2003, Murray Eisenberg wrote:

> This is a simplification of a question asked by a colleage.  He wants to
> use as the model function argument to NonlinearRegress (from
> Statistics`NonlinearFit1) a solution of an initial-value problem for a
> differential equation, where the differential equation depends on a
> parameter.
> The catch is that the differential equation cannot be solved explicitly,
> so he has to resort to solving the initial-value problem by means of
> NDSolve.  Of course, NDSolve will not do anything if the differential
> equation involves symbolic parameters.  Thus the IDEA of what he wants
> to do is to use the "resulting function" from something like
>   y[t]/.First@NDSolve[{y'[t] == a y[t] + b, y[0] == 1.}, y[t], {t, 0., 1.}]
> -- where two parameters a and b are involved -- as the model.  Of course
> if NDSolve above is changed to DSolve, no difficulty.  But in the ACTUAL
> problem at issue, with a much more complicated differential equation,
> DSolve does nothing.
> Is there some way to make this work?
> There are evidently two difficulties:
> (1) How to deal with NDSolve when the differential equation involves
> parameters (perhaps there's something regarding use of Hold that will
> help?); and
> (2) For each pair of particular values of the parameters, the result
> from NDSolve is an InterpolatingPolynomial object and NOT the sort of
> "expression in the variable" that seems to be required for the model
> argument to NonlinearRegress.  How should the InterpolatingPolynomial
> object be massaged to allow it to be used as an ordinary expression in
> the variable?
> --
> Murray Eisenberg                     murray at
> Mathematics & Statistics Dept.
> Lederle Graduate Research Tower      phone 413 549-1020 (H)
> University of Massachusetts                413 545-2859 (W)
> 710 North Pleasant Street
> Amherst, MA 01375

  • Prev by Date: Re: how use NDSolve with an ODE having parameters
  • Next by Date: Re: how use NDSolve with an ODE having parameters
  • Previous by thread: Re: how use NDSolve with an ODE having parameters
  • Next by thread: Re: how use NDSolve with an ODE having parameters