Re: Joining InterpolatingFunctions into Piecewise - doman?
- To: mathgroup at smc.vnet.net
- Subject: [mg83579] Re: Joining InterpolatingFunctions into Piecewise - doman?
- From: dh <dh at metrohm.ch>
- Date: Fri, 23 Nov 2007 05:36:33 -0500 (EST)
- References: <fi133t$cq8$1@smc.vnet.net>
Hi Janos, note that Piecewise has the attribute HoldAll. However, you want to evaluate the body of Pieceweise before feeding it to Piecewise. I do this with "tt": f[ini_,tlast_]:=Module[{from=tlast,to=tlast+1,X},{X=(x/.NDSolve[{x'[t]==-0.5 x[t],ini},x,{t,from,to}])[[1]],to,X[to]}] nl=NestList[f[x[#[[2]]]==#[[3]],#[[2]]]&,{zzz,0,2.0},3]; tt=Transpose[{Table[nl[[k,1]][t],{k,2,4}],Table[k<=t<k+1,{k,0,2}]}]; Plot[Piecewise[tt],{t,0,3}] hope this helps, Daniel janos wrote: > I would like to solve a diff eq on a very large interval, therefore I > solve it on successive intervals. > When putting the results together I get a _relatively_ good figure and > an error message. > Note that there is a hole on the graph of the function. Any other > solution to join InterpolatingFunction objects would be appreciated. > > Thank you, Janos > > f[ini_, tlast_] := > Module[{from = tlast, to = tlast + 1, > X}, {X = (x /. > NDSolve[{x'[t] == -0.5 x[t], ini}, x, {t, from, to }])[[1]], > to, X[to]}] > nl = NestList[f[x[#[[2]]] == #[[3]], #[[2]]] &, {zzz, 0, 2.0}, 3]; > full[t_] := > Piecewise[ > Transpose[{Table[nl[[k, 1]][t], {k, 2, 4}], > Table[k <= t < k + 1, {k, 0, 2}]}]] > Plot[full[t], {t, 0, 3}] >