Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlap help

  1. Mar 14, 2004 #1
    Please refer to jpeg extension

    I think that the following MatLab code will solve the first D.E,

    >> function xdot = nlseq(t,x); % Returns the state derivative
    >> R = [2 -1; 3 5];
    >> L = [1 – cos(0.5*t) 5*sin(4*t); 20*sin(2*t) 3–cos(0.8*t)];
    >> V = [15*sin(t); 25*cos(t)];
    >> xdot = inv(L)*(V – R*X);

    >> tspan = [0, 10]; % Time interval
    >> x0 = [0;0]; % Initial condition
    >> [t, x] = ode23(‘nlseq’,tspan,x0);

    I would like to know how to incorporate the second D.E into the above code so that I can solve for both (I realize I need to make another xdot command, but I’m not sure how to do it).
    Another problem that I have is that I want to plot y vs w, where w is the solutions from the second D.E and y is shown on the jpeg extension,

    So basically I want to take my solution (at every interval) from solving the first D.E. and transform it through the matrix shown on the extension. I would think that I need to write some kind of loop, but I’m not sure how to do it.

    Any help with the above problems would be greatly appreciated

    Attached Files:

  2. jcsd
  3. Mar 15, 2004 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    To do it all in one shebang, do the following:

    Have the state vector be: [x1,x2,w]. For clarity, I'll call it q, with the derivative being dq

    In your lnseq file, have dq(1:2) be your x1' and x2', and have dq(3) be w'

    If you specify specific times instead of a time range ( [0:.1:10] instead of [0,10]) this will return the values of x1, x2, and w at those times.

    In your main function, you can then do the matrix manipulation for each time to get the graph of y1 and y2, since w will be returned for the same times as x1 and x2.
  4. Mar 15, 2004 #3


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Alternately, you could set the function definition as:


    and have the ode23 call read:


    The empty bracket is used for precision options of ode23. The trailing variables are other parameters you want available in the function definition.

    I think the first way will be better, though...
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook