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.

3 views (last 30 days)
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

Accepted Answer

Jonathan Epperl
Jonathan Epperl on 10 Jan 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
as in
function dydt = odefun(t,y)
%[...] code
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 Comment
David Campbell
David Campbell on 11 Jan 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

Sign in to comment.

More Answers (0)


Community Treasure Hunt

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

Start Hunting!