Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Incredible slow Plot
Replies: 8   Last Post: Jul 13, 2011 2:27 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
DrMajorBob

Posts: 1,448
Registered: 11/3/08
Re: Incredible slow Plot
Posted: Jul 12, 2011 6:09 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

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




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.