MathGroup Archive 2010

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

Search the Archive

Re: ODE solution transfer

  • To: mathgroup at smc.vnet.net
  • Subject: [mg111511] Re: ODE solution transfer
  • From: EF <he.frauendorfer at t-online.de>
  • Date: Tue, 3 Aug 2010 06:43:01 -0400 (EDT)
  • References: <i33cv8$87g$1@smc.vnet.net>

On 01.08.2010 10:58, Themis Matsoukas wrote:
> When you executed
>
> fvars=vars/.NDSolve[deqns,vars,{t,start,end}][[1]]
> {InterpolatingFunction[{{0.,10.}},<>][t],InterpolatingFunction[{{0.,10.}},<>][t]}
>
> you replaced the previous definition of favrs (which was  fvars = {a[t_],b[t_]})  with the result of NDSolve. Your solutions now are in fvars[[1]] and fvars[[2]
>
> I am not sure what you are trying to accomplish by setting fvars = {a[t_],b[t_]}. This involves as much typing as
>
> fvars=vars/.NDSolve[deqns,vars,{t,start,end}][[1]]
> {SolvedA[t_],SolvedB[t_]}=fvars
>
> By the way, I would recommend that you use a different variable for the solved form of a[t and b[t]. Otherwise, if you execute the notebook a second time, the solved values of a,b, will be used inside NDSolve and you will get unexpected results.
>
> Themis
>

Thanks for your answer,

my problem is a bit more complicated. Handling about 1000 variables and 
the corresponding differential equations in an Simplex loop requires 
that the program in each cycle handles the variables the Replacements etc.
In the meantime I found a solution myself. Declaring var as a list of 
{a,b} and not {a[t],b[t]} does the trick:


Clear[a, b, sol, dgln]
var = {a, b};
start = 0; end = 10; k = .08;
dgln = {a'[t] == -k*a[t], a[0] == 2,
         b'[t] ==  k*a[t], b[0] == 0};
sol = NDSolve[dgln, var, {t, start, end}][[1]];
Set @@@ sol
a[5]
b[5]


E.F.



  • Prev by Date: Re: Bare Bones Backup Button
  • Next by Date: Re: assuming certain properties about variables
  • Previous by thread: Re: ODE solution transfer
  • Next by thread: Re: Cannot load example data