Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NDSolve is using Solve?

21 views
Skip to first unread message

J.Frazer

unread,
Mar 9, 2011, 7:02:09 AM3/9/11
to
Hello everyone,

This is my first time posting so my apologies if I'm going about this
the wrong way. I'm having the following problem:

I'm using NDSolve but its not managing to get to the solution even if I
leave it running over the weekend. If I greatly simplify one of the
equations I can get a result but in either case I get the error messages

Solve:: incnst
Solve:: ifun

This worries me as if its trying to simplify analytically, presumably as
the equations becomes more complicated this will become incredibly time
consuming.

Do people agree this may be the cause of the long running time? If so,
is there a way of stopping NDSolve from using Solve?

Cheers,

Jonny=

J.Frazer

unread,
Mar 9, 2011, 4:22:06 PM3/9/11
to
Ok so I have one idea. I read that restricting the function definition
to be something like f[x_?NumericQ,y_?NumericQ] can enable you to avoid
symbolic evaluation, speeding up the calculation by a factor of 10000 or
so! My issue now is that I have functions that are defined in terms of
derivatives of other previously defined functions, so I won't be able to
blindly go through changing the function definitions. I suppose this
means I will have to rewrite everything which will probably take me a
couple of days. Given that I'm not even sure if this will work, any
suggestions at this point would be very much welcome.

Cheers,

Jonny

Oliver Ruebenkoenig

unread,
Mar 10, 2011, 6:16:45 AM3/10/11
to


On Wed, 9 Mar 2011, J.Frazer wrote:

> Hello everyone,
>
> This is my first time posting so my apologies if I'm going about this
> the wrong way. I'm having the following problem:
>
> I'm using NDSolve but its not managing to get to the solution even if I
> leave it running over the weekend. If I greatly simplify one of the
> equations I can get a result but in either case I get the error messages
>
> Solve:: incnst
> Solve:: ifun
>
> This worries me as if its trying to simplify analytically, presumably as
> the equations becomes more complicated this will become incredibly time
> consuming.
>
> Do people agree this may be the cause of the long running time? If so,
> is there a way of stopping NDSolve from using Solve?
>
> Cheers,
>

> Jonny=
>
>
Hi Jonny,

yes NDSolve uses Solve internally but that is only for pre processing
purposes. If this is really the cause for the slow NDSolve (maybe it is a
hard problem...) It were best if you could send some working code, then
we could have a look at it and see if anything can be done.

Oliver

vadim.o...@gmail.com

unread,
Sep 12, 2013, 11:14:40 PM9/12/13
to
On Thursday, March 10, 2011 6:16:45 AM UTC-5, Oliver Ruebenkoenig wrote:
> On Wed, 9 Mar 2011, J.Frazer wrote:
>
> > Hello everyone,
> >
> > This is my first time posting so my apologies if I'm going about this
> > the wrong way. I'm having the following problem:
> >
> > I'm using NDSolve but its not managing to get to the solution even if I
> > leave it running over the weekend. If I greatly simplify one of the
> > equations I can get a result but in either case I get the error messages
> >
> > Solve:: incnst
> > Solve:: ifun
> >
> > This worries me as if its trying to simplify analytically, presumably as
> > the equations becomes more complicated this will become incredibly time
> > consuming.
> >
> > Do people agree this may be the cause of the long running time? If so,
> > is there a way of stopping NDSolve from using Solve?
> >
> > Cheers,
> >
> > Jonny
> >
> >
> Hi Jonny,
>
> yes NDSolve uses Solve internally but that is only for pre processing
> purposes. If this is really the cause for the slow NDSolve (maybe it is a
> hard problem...) It were best if you could send some working code, then
> we could have a look at it and see if anything can be done.
>
> Oliver

Hi,

I have encountered a similar problem, I think:

I have re-parametrized a relatively simple system of linear ODEs

u'=L.u

into something more complicated looking

M[v].v'=N[v],

but it really is the same problem with new coordinates, so the solution must exist (except near a few possible singularity points of the coordinate change)

feeding this or v'=Inverse[M[v]].N[v] into NDSolve has ONLY worked for small enough problems where the inverse can be done analytically. Otherwise, it spends forever in the prep stage for the calculation.

I have played around with defining a delayed Inverse etc but nothing worked, so I gave up and coded up a simple RK4 routine and forgot about it, but now I am returning to this problem and would like to get Mathematica to work, which I think it should be able to.

Thoughts?
Thanks,Vadim

0 new messages