Search code examples
matlabmathnumerical-integration

MATLAB: Using ODE solvers?


This is a really basic question but this is the first time I've used MATLAB and I'm stuck. I need to simulate a simple series RC network using 3 different numerical integration techniques. I think I understand how to use the ode solvers, but I have no idea how to enter the differential equation of the system. Do I need to do it via an m-file?

It's just a simple RC circuit in the form:

RC dy(t)/dt + y(t) = u(t)

with zero initial conditions. I have the values for R, C the step length and the simulation time but I don't know how to use MATLAB particularly well.

Any help is much appreciated!


Solution

  • You are going to need a function file that takes t and y as input and gives dy as output. It would be its own file with the following header.

    function dy = rigid(t,y)
    

    Save it as rigid.m on the MATLAB path.

    From there you would put in your differential equation. You now have a function. Here is a simple one:

    function dy = rigid(t,y)
    
    dy = sin(t);
    

    From the command line or a script, you need to drive this function through ODE45

    [T,Y] = ode45(@rigid,[0 2*pi],[0]);
    

    This will give you your function (rigid.m) running from time 0 through time 2*pi with an initial y of zero.

    Plot this:

    plot(T,Y)
    

    alt text

    More of the MATLAB documentation is here:

    http://www.mathworks.com/access/helpdesk/help/techdoc/ref/ode23tb.html