How do I get ode45 to output the dependent variable value at each time step? I have other material properties in my differential equation that change with temperature, so I must update them with each change in temperature.

2 visualizaciones (últimos 30 días)
the equation looks like this:
dT/dt = T/cB(T,B) * d/dT( M(T)) * d/dt( B(t))
cB(T) = the specific heat M(T) = the magnetization of the material

Respuesta aceptada

Jonathan Epperl
Jonathan Epperl el 10 de En. de 2013
The answer to your topic is that the odefun, i.e. the function you pass to ode45 as in ode45(odefun,tspan,x0) needs include the line
y
as in
function dydt = odefun(t,y)
%[...] code
y
but I don't think that's what you really want to do/know. Could you detail your question? Also, what is B(t), is that another state you're not telling us about, or is that a known function/input?
Is there a closed form of M(T), cB(T,B) that you are using, or is it a look-up table?
  1 comentario
David Campbell
David Campbell el 11 de En. de 2013
Thank you for getting back to me so quickly Jonathan.
I've been looking into it, and yes I think you're right, I'm going to have to include a section in the odefun for this.
To answer your question B(t) is a magnetic wave form:
B(t) = -0.5cos((2*pi/5)t) + 0.5 (ie a wave that will go through one full cycle over the time span I will set for this ode45)
I'm not sure what closed form means exactly but M(T,B) and cB(T,B) are both matrices that give the value of M and cB at different T and B. They are calculated by another program I have written, but the matrices I have calculated will definitely cover the temperature and magnetic field ranges that will occur within this differential equation.
Cheers, Oliver

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by