MathGroup Archive 2009

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

Search the Archive

Re: Re: NDSolve Mathematica 6 and 7

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103376] Re: [mg103355] Re: [mg103336] NDSolve Mathematica 6 and 7
  • From: Mark Perrin <m.perrin at me.com>
  • Date: Fri, 18 Sep 2009 05:39:08 -0400 (EDT)
  • References: <200909160946.FAA12985@smc.vnet.net>

Thank you.

1. Set markedly increased the speed of the notebook.
2. I've used Boole where I could - haven't noticed a large speed  
increase so far.

Most of the subscripts have been removed from the notebook I am using.  
I noticed that I placed a slightly out of date NB in the link.  
However, the issue was the same with or without the subscripts. I  
agree they are a nuisance in Mathematica; I intend to rid myself of  
them now for good.

While this speeds up the NB as a whole, it still runs markedly faster  
on Mathematica 6. Our short term solution is to perform operations in  
Math 6.

Thanks again!

Cheers,

Mark P


On 18/09/2009, at 5:19 AM, DrMajorBob wrote:

> A few things I notice right away:
>
> 1) You use SetDelayed (":=") when Set ("=") would be faster. I use  
> SetDelayed ONLY if variables on the right hand side (a) have a value  
> when I'm defining the left hand side, and (b) may have a DIFFERENT  
> value when I USE the left hand side. You also do not need a  
> semicolon to suppress output after SetDelayed. You DO need it after  
> Set.
>
> 2) There are cases where I'd use Boole, not PieceWise, namely:
>
> istim[t_, x_] = -36 Boole[10 < t + curtime < 11 && 0 <= x < 1/20];
>
> \[Alpha]h = 0.057*E^(-((V[t, x] + 80)/6.8)) Boole[V[t, x] < -40];
>
>
> \[Alpha]j = (-25428 E^(0.2444 V[t, x]) -
>     6.948*10^-6 E^(-0.04391 V[t, x])) (V[t, x] + 37.78)/(1 + E^(
>      0.311 (V[t, x] + 79.23))) Boole[V[t, x] < -40];
>
> 3) If you'll ever use exact methods (DSolve rather than NDSolve,  
> Solve rather than NSolve, etc.), you should avoid Reals and use  
> Rationals instead. (As in the first Boole example above.) If you  
> don't need exact methods, then by all means, proceed with Reals.
>
> 4) In NDSolve, you've used MaxStepSize -> {1, 0.01}, but I see  
> nothing in documentation to support ordered pairs here. Since it  
> isn't documented, it can easily change or disappear from one version  
> to another.
>
> 5) In your NDSolve, all but two of the initial condition right hand  
> sides SEEM to be undefined because they're highlighted in blue. I  
> think that's only because they're subscripted, and defining, for  
> instance, Subscript[V, 0] leaves V undefined. But it makes finding  
> errors more difficult, when one can't see what is or is not defined.  
> (I don't use subscripts. Ever.)
>
> 6) Related to that, I can see how a solver might be confused by  
> Rprime (for instance), which is used both as a constant (with  
> subscript zero) and as a function name in the variable list. All  
> your initial conditions are like that, other than the last two. For  
> now, that's my best guess as to what's happening, but I admit it's  
> speculative. I can't test this in earlier versions, so I'm guessing.
>
> That's all I see at the moment. Good luck!
>
> Bobby
>
> On Thu, 17 Sep 2009 05:20:04 -0500, Mark Perrin <m.perrin at me.com>  
> wrote:
>
>> Well it is a system of partial differential equations describing a
>> wave of electrical depolarisation passing through a cable.
>>
>> EQN1 := D[V[t, x],
>>     t] == -1/
>>      1 (iK1 + iKr + iKs + iNa + ibCa + ibNa + ipCa + iCaL + ipK +
>>       iNaCa + iNaK + istim[t, x] + ito);
>>
>> EQN2 := D[Xs[t, x], t] == 2.57 ((xas - Xs[t, x])/tauxs);
>>
>> EQN3 := D[s[t, x], t] == (sinf - s[t, x])/taus;
>>
>> etc.
>>
>> I can post the notebook here:
>>
>> http://dl.getdropbox.com/u/127753/cablenotebook.nb
>>
>> Other details:
>> 	- running Mathematica 6 and 7 (depending on need)
>> 	- Mac 10.6 Snow Leopard - but tested also on a windows computer
>> running Mathematica 6 and 7 - same issue
>> 	
>>
>> Regards,
>>
>> Mark P
>>
>> On 17/09/2009, at 12:58 AM, DrMajorBob wrote:
>>
>>> Send details, Mark. Details.
>>>
>>> Bobby
>>>
>>> On Wed, 16 Sep 2009 04:46:29 -0500, Mark Perrin <m.perrin at me.com>
>>> wrote:
>>>
>>>> I was wondering if anyone could help me. I am solving a set of
>>>> partial
>>>> and ordinary differential equations in Mathematica 7. For the same
>>>> set
>>>> of equations and same expression i.e.
>>>>
>>>> solution =
>>>> NDSolve[EQNS, STATES, {t, 0, 500}, {x, 0, 1.6}, MaxStepSize -> {1,
>>>> 0.01},
>>>>  MaxSteps -> Infinity, AccuracyGoal -> 5, PrecisionGoal -> 5]
>>>>
>>>> where EQNS are the ODEs.
>>>>
>>>> Mathematica 6 solves this in < 5 minutes.
>>>> Mathematica 7 takes about 40-45 minutes.
>>>> for the same solution.
>>>>
>>>> Same hardware etc.
>>>>
>>>> Can anyone please tell me if it is possible to speed up the  
>>>> solution
>>>> in Mathematica 7. Why would the two be so different?
>>>>
>>>> Kind Regards,
>>>>
>>>> Patch
>>>>
>>>
>>>
>>> --
>>> DrMajorBob at yahoo.com
>>
>>
>
>
> -- 
> DrMajorBob at yahoo.com



  • Prev by Date: Re: Wolfram workbench on MacOsX
  • Next by Date: Re: Re: Wolfram workbench on MacOsX
  • Previous by thread: Re: Re: NDSolve Mathematica 6 and 7
  • Next by thread: webMathematica 3 upgrade includes latest Mathematica features