How to use global variable which is changing in every time step?

1 visualización (últimos 30 días)
I have a particular code which looks like this:
function H = newmain
global b1 b2 b3
b1=1.0;
b2=2.0;
b3=0.33;
options=odeset('InitialStep', 0.01, 'MaxStep', 0.01, 'RelTol', 10., 'AbsTol',10.);
[t2,y2]=ode45(@equation,[0:0.05:0.1],[1 2 0], options);
H = [t2 y2]
X=[b1 b2 b3]
end
function dy=equation(t,y)
global b1 b2 b3
dy=zeros(3,1);
b1=((b1+(1.-exp(-b3))))
b2=b1-y(1)
b3=b1+b2+y(2)
dy(1)=-b1*y(1);
dy(2)=b3*y(1)+b2*y(2);
dy(3)=sqrt(b1)+y(1)+y(3);
end
I have given initial values for b1,b2 and b3 which are my global variables. I want to understand how the solver uses this code to return a new value of b1,b2 and b3.
Can global be used to keep a value constant throughout the code?
I am solving 12 algebraic and 6 odes which look like the above code. b1,b2,b3 are synonymous with my algebraic variables and dy(1).... are my odes. When I solve that code I get an error saying "NaN". So I am unable to find out loophole in my code.
Thanks!

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 8 de Oct. de 2012
use break points to debug your code
  5 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 9 de Oct. de 2012
what is your actual problem?
Urvi
Urvi el 10 de Oct. de 2012
I have tried to explain it there. Thanks once again!

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 8 de Oct. de 2012
One thing you need to keep in mind is that ode45() does not promise to evaluate in strictly increasing time steps.
  2 comentarios
Urvi
Urvi el 8 de Oct. de 2012
Okay. But I am confused about the role of "global variable" . Will the solver return a new value for the same in every time step?
Urvi
Urvi el 8 de Oct. de 2012
The solver isn't returning a new value for my code. It is using the initial values for some variables and a changing value for some global variables. What could be the problem?

Iniciar sesión para comentar.

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by