
Re: Incredible slow Plot
Posted:
Jul 12, 2011 6:09 AM


You see, that's very different.
In this code, Evaluate has no effect whatsoever:
Plot[{Evaluate[f1[t]/.sol], Evaluate[f2[t]/.sol]},{t,0,1200}]
because the first argument of Plot is a List, and you're not applying Evaluate to it. The List is held, not the list elements separately.
In this code, on the other hand:
Plot[Evaluate[f[t]/.sol],{t,0,1200}]
you ARE applying Evaluate to the first argument.
I don't think that explains why the plot is slow, but we still haven't seen the actual code.
Send me the notebook, if you like.
Bobby
On Mon, 11 Jul 2011 15:25:44 0500, Iván Lazaro <gaminster@gmail.com> wrote:
> Well, i'm going to try to clarify it a little, but, as I said, is not > posible to paste the complete code; the equations are just too big. I > also made a mistake writing the last email. > > So, for example, > > {eqns, cond}={f1'[t]==a11*f1[t]+a12*f2[t]+...+a1N*fN[t],..., > fN'[t]==aN1*f1[t]+aN2*f2[t]+...+aNN*fN[t], f1[0]==t01,...,fN[0]==t0N}, > > and > > f={f1,f2,...,fN}. > > If Something is, say 1, then > > sol[[1, 1]]: > f1[t]>InterpolatingFunction[{{0.`,1200.`}},"<>"][t] > > and sol[[1, 1, 2]] is just > InterpolatingFunction[{{0.`,1200.`}},"<>"][t]. > > > So, with > > sol=NDSolve[{eqns, cond},f,{t,0,1200}][[1]]; > a[t_]=sol[[1, 1, 2]] > b[t_]=sol[[1, 2, 2]] > > i'm just extracting the solution for two of my variables, f1 and f2. > > Plot "a" and "b", > > > Plot[{a[t], b[t]},{t,0,1200}], > > was fast; however this: > > Plot[{Evaluate[f1[t]/.sol], Evaluate[f2[t]/.sol]},{t,0,1200}], > > was, somehow, imposible. > > 2011/7/11 DrMajorBob <btreat1@austin.rr.com>: >>> and that was it. However I don't understand this. Was the problem the >>> "size" and "amount" of interpolated functions? >> >> I don't understand it either. The two methods seem equivalent, but this >> code >> >>> sol=NDSolve[{eqns, cond},f,{t,0,1200}][[1]]; >>> a=sol[[1, Something, 2]] >>> b=sol[[1, Something+1, 2]] >> >> suggests that you're solving for one function f in the first line, and >> YET, >> you're extracting two solutions a and b in the next two lines. That's >> not >> possible, so you're not showing us the code you actually used. (We know >> that >> anyway, since "eqns", "cond", and "Something" are undefined.) >> >> I suspect in the real code, the two methods that seem equivalent are NOT >> equivalent at all. >> >> Bobby >> >> On Mon, 11 Jul 2011 05:58:03 0500, Iván Lazaro <gaminster@gmail.com> >> wrote: >> >>> Hi! >>> >>> Yes, I tried >>> >>> sol=NDSolve[{eqns, cond},f,{t,0,1200}][[1]]; >>> Plot[Evaluate[f[t]/.sol],{t,0,1200}], >>> >>> but that was a pain. Thanks to Bobby I managed to solve my speed >>> problem: >>> >>> Instead of >>> >>> sol=NDSolve[{eqns, cond},f,{t,0,1200}][[1]]; >>> Plot[Evaluate[f[t]/.sol],{t,0,1200}], >>> >>> I selected the specific solutions I needed, and Set them to a variable >>> that then I plot: >>> >>> >>> >>> sol=NDSolve[{eqns, cond},f,{t,0,1200}][[1]]; >>> a=sol[[1, Something, 2]] >>> b=sol[[1, Something+1, 2]] >>> >>> Plot[{a[t],b[t]}],{t,0,1200}], >>> >>> and that was it. However I don't understand this. Was the problem the >>> "size" and "amount" of interpolated functions? >>> >> >> >>  >> DrMajorBob@yahoo.com >>
 DrMajorBob@yahoo.com

