Search All of the Math Forum:

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

Topic: Stiffness problem in ODEs
Replies: 2   Last Post: Mar 7, 2013 2:40 AM

 Messages: [ Previous | Next ]
 Torsten Posts: 1,182 Registered: 11/8/10
Re: Stiffness problem in ODEs
Posted: Mar 6, 2013 2:43 AM

"Fotis Dimitrakopoulos" <f.dimitrak@gmail.com> wrote in message <kh4ltv\$8ub\$1@newscl01ah.mathworks.com>...
> Hello every one, I am trying to numerically solve a system of 5 coupled diff. equations using ode15s (i have also tried using different functions), but I get the following warning:
>
> "Warning: Failure at t=2.289553e-01. Unable to meet integration tolerances without reducing the step
> size below the smallest value allowed (4.440892e-16) at time t. ?
>
> Could anyone have an idea about what could I do to get a result? My code is the following:
>
> %define functions
> classdef beta
>
> methods(Static)
> function y = g1(gp, gs, g, yt)
> y = 41*gp^3/(96*pi^2) + (1/16*pi^2)^2*((44/3)*gs^2*gp^3 + (9/2*g^2 + (199/18)*gp^2 - (17/6)*yt^2)*gp^3);
> end
> function y = g2(gp, gs, g, yt)
> y = -19*g^3/(96*pi^2) + (1/16*pi^2)^2*(12*gs^2*g^3+((35/6)*g^2 + (3/2)*gp^2 - (3/2)*yt^2)*g^3);
> end
> function y = g3(gp, gs, g, yt)
> y = -7*gs^3/(16*pi^2) + (1/16*pi^2)^2*gs^3*((9/2)*g^2 - 26*gs^2 + (11/6)*gp^2 - 2*yt^2);
> end
> function y = gamma(g, gp, gs, yt, lam)
> y = (-9*g^2 - 3*gp^2 + 12*yt^2)/(64*pi^2) + ((1/(16*pi^2))^2)*((1/6)*lam^2 ...
> - (27/4)*yt^4 + 20*gs^2*yt^2 + (45/8)*g^2*yt^2 + (85/24)*gp^2*yt^2 - (271/32)*g^4 + (9/16)*g^2*gp^2 + (431/96)*gp^4);
> end
> function y = bf(yt, g, gp)
> y = 3/16*(3*g^4 + 2*g^2*gp^2 + gp^4) - 3*yt^4;
> end
> function y = blam(yt, g, gp, gs, lam)
> y = 4*lam*beta.gamma(g, gp, gs, yt, lam) + (12*lam^2 + beta.bf(yt, g, gp))/(8*pi^2) + (1/(16*pi^2))^2*(80*gs^2*yt^2*lam - 192*gs^2*yt^4 + (915/8)*g^6 - (289/8)*gp^2*g^4 - (27/2)*yt^2*g^4 - (73/8)*lam*g^4 - (559/8)*gp^4*g^2 + 63*gp^2*yt^2*g^2 + (39/4)*gp^2*lam*g^2 - 3*yt^4*lam + (45/2)*yt^2*lam*g^2 - (379/8)*gp^6 + 180*yt^6 - 16*gp^2*yt^4 - (26/3)*lam^3 - (57/2)*gp^4*yt^2 - 24*yt^2*lam^2 + 6*(3*g^2 + gp^2)*lam^2 + (629/24)*gp^4*lam + (85/6)*gp^2*yt^2*lam);
> end
> function y = yuk(yt, g, gp, gs, lam)
> y = yt*(9/2* yt^2 - 9*g^2/4 - 17/12*gp^2 - 8*gs^2)/(16*pi^2) + ((1/16*pi^2)^2)*yt*(-108*gs^4 + 9*g^2*gs^2 + (19/9)*gp^2*gs^2 + 36*yt^2*gs^2 - (3/4)*gp^2*g^2 - (23/4)*g^4 + (1187/216)*gp^4 - ...
> 12*yt^4 + (1/6)*lam^2 + yt^2*((225/16)*g^2 + (131/16)*gp^2 - 2*lam));
> end
> end
> end
>
>
> %system to solve
> function dy = system(t,y)
>
> dy = zeros(5,1);
> dy(1)=beta.g1(y(1),y(3),y(2),y(4));
> dy(2)=beta.g2(y(1),y(3),y(2),y(4));
> dy(3)=beta.g3(y(1),y(3),y(2),y(4));
> dy(4)=beta.yuk(y(4),y(2),y(1),y(3),y(5));
> dy(5)=beta.blam(y(4),y(2),y(1),y(3),y(5));
> end
>
> and then I give the command:
>
> [T,Y] = ode15s(@system,[0. 12],[0.357452 0.65171 1.1645 0.967834 0.139429]);
>
> P.S: This is my first post/question, so I apologize for any inconvenience.
>
> Thanks a lot

Your system of ODEs runs without problems with a different numerical integrator
on my computer.
Maybe the structure out of which you get the derivatives "dy" causes problems.
I'd suggest you test whether directly prescribing the derivatives without calling the beta.xx - functions works.

Best wishes
Torsten.

Date Subject Author
3/6/13 Torsten
3/7/13 Torsten