Re: Manipulating Solution List from NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg112732] Re: Manipulating Solution List from NDSolve
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Tue, 28 Sep 2010 06:50:47 -0400 (EDT)
- References: <i7seo7$ppq$1@smc.vnet.net>
Am 28.09.2010 12:07, schrieb blamm64: > Hi, > > Given: > > var = {a, b, c} (variables input to NDSolve) > > and the output solution list > > sol = {{a -> 1, b -> 2, c -> 3}} > > (I'm just using 1, 2, and 3 instead of InterpolatingFunction). > > Do the following: > I would like to create a list, say "solList" that is > > solList = {as,bs,cs} > > using the list var, instead of typing it out by hand. > > Next, with solList in hand, I would like to end up with the equivalent > to > > {as=1,bs=2,cs=3}. > > but using only solList, var, and sol lists. > > All that is equivalent to doing > > {as,bs,cs} = var /. sol[[1]] . > > But I would like to avoid typing it all out by hand because the actual > list var is a lot longer. > > With solList in hand and doing > > solList = var /. sol[[1]] > > of course does not work. > > I created a notebook and defined > > var = {a,b,c}; > sol = {{a -> 1, b -> 2, c -> 3}}; > solList = {as, bs, cs} > > (giving up on trying to create solList using var), and started trying > different methods, all failing to get the equivalent of > > {as,bs,cs} = var /. sol[[1]] . > > without typing it all in by hand. setting as,bs,cs,... is relatively simple, if they are not yet having values: Evaluate[solList] = var /. sol[[1]] it is somewhat more complicated to clear the definitions once they have been made, and you have to do so for your second run. Here is one possibility: ReleaseHold[ Apply[Clear, Extract[OwnValues[solList], {1, 2}, Hold], {1}] ] hth, albert