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.matlab

Topic: complex results using ODE45
Replies: 3   Last Post: Oct 22, 2013 2:25 PM

Advanced Search

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

Posts: 3
Registered: 10/15/13
Re: complex results using ODE45 -solved!
Posted: Oct 22, 2013 2:25 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Jeffrey" wrote in message <l427u6$455$1@newscl01ah.mathworks.com>...
> "Nasser M. Abbasi" wrote in message <l3k0lp$fad$2@speranza.aioe.org>...
> > On 10/15/2013 12:53 PM, Jeffrey wrote:
> > > I have the two m files given below. "a" and "T" are returned as complex with
> > >
> > > Why are values becoming complex?
> > >
> > > Please help.
> > >
> > > Jeff
> > > _______________________________
> > > %this is in file alpha.m
> > > function dadT = alpha(T,a)
> > > b = 20
> > > l= 50.1
> > > k=exp(l)
> > > ner = -36108.73
> > > n=1.269
> > > dadT = (k/b)*(exp(ner/T)) *((1-a)^n
> > > ________________________________________
> > >

> >
> > You have missing ")" above btw. Last line.
> >
> > But besides this, which I assume a cut/paste issue only,
> > look at the expression itself.
> >
> > What happens for (1-a)^n, and "a" happens to be
> > larger than one?
> >
> > EDU>> (1-1.5)^(1.269)
> >
> > ans =
> >
> > -0.2754 - 0.3104i
> >

> Nasser,
>
> yes ")" was missing and thanks for the explanation.
>
> On inspection, all coefficients of "i" for "T" were zero. Coefficients of "i" for "a" only became nonzero near the end, as the real value "a" approaches 1.
>
> Physically "a" must be < or = to 1.
>
> The real part of "a" gives an accurate solution.
>
> I think that the "a's" that become >1 are the intermediate values of "a" are being computed to in order to evaluate the "a" at "T+h" using the Runge-Kutta formulation.
>
> Anyway to limit the value of these intermediate "a's" to a maximum value of 1?



I have solved the problem by changing 'RelTol' from default of 1e-3 to 1e-4, and by changing 'AbsTol' from default of 1e-6 to 1e-7

hence

tol= odeset('RelTol',1e-4,'AbsTol',1e-7)
[T,a] = ode45(@post,Tspan,a0,tol);



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.