MATLAB Solving 2 D.Es and Plotting y vs w in MatLab

  • Thread starter Thread starter louie
  • Start date Start date
  • Tags Tags
    Matlab Plotting
AI Thread Summary
The discussion focuses on solving two differential equations (D.E.s) using MatLab and plotting the results. The user provides a code snippet for the first D.E. and seeks guidance on incorporating a second D.E. into the existing code. They also want to plot variables y and w, where w is derived from the second D.E. The suggested approach involves defining a state vector that includes both D.E.s and modifying the function to accommodate the additional variable. The recommendation is to use specific time intervals for more precise results and to perform matrix manipulations for plotting.
louie
Messages
10
Reaction score
0
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
 

Attachments

  • matlab.jpg
    matlab.jpg
    11.7 KB · Views: 479
Physics news on Phys.org
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.
 
Alternately, you could set the function definition as:

lnseq(t,x,flag,value1,value2,...)

and have the ode23 call read:

ode23('lnseq',t,w,[],variable1,variable2,...)

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...
 

Similar threads

Replies
8
Views
2K
Replies
4
Views
1K
Replies
5
Views
2K
Replies
1
Views
2K
Replies
5
Views
3K
Replies
1
Views
2K
Replies
2
Views
3K
Back
Top