MATLAB How to Use MATLAB ode23 or ode45 to Solve a Vector Problem?

  • Thread starter Thread starter louie
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion revolves around using MATLAB's ode23 or ode45 functions to solve a system of differential equations. The user seeks clarification on the correct syntax for inputting their equations into MATLAB, which involve multiple variables such as Ids, Iqs, Idr, Iqr, and Wm. They correct their initial equations, specifying the proper terms for Iqr and Idr. A response explains that for ode45, two files are necessary: one for the differential equations and another for the main function that calls it. The differential function should return a vector of derivatives based on the state vector and time steps, while the main function initializes the state vector and executes the solver. An example of the structure for both functions is provided, illustrating how to set up and call the ode45 solver effectively.
louie
Messages
10
Reaction score
0
I want to use MATLAB ode23 or ode45 to solve the following problem,
(ignore the periods '.' as they are there to line up the vector spaces)

... Ids ...0.5Ids-0.3Iqs-0.4Idr-0.1IdrIqr ... 0.2Vd
d ..Iqs = -0.3Ids+0.5Iqs+0.8Idr-0.2Iqr^2 . . + . 0.2Vds
dt .Idr ...-0.5Ids+0.1Iqs+0.7Idr+0.6IdrIqr ... 0
.. . Iqr ... 0.9Iqs-0.5Iqs-0.4Idr+0.3Iqr^2 ... 0
... Wm .. 0.27(IdrIqs-IqrIds)-0.1Wm-0.85 ... 0

Any help explaining the correct input syntax would be greatly appreciated (as I'm not that familiar with MatLab).

Thanks
 
Physics news on Phys.org
correction

correction original post...should say -0.1Iqr not -0.1IdrIqr,
-0.2Iqr not -0.2Iqr^2, 0.6Iqr not 0.6IdrIqr, 0.3Iqr not 0.3 Iqr^2
 
Hi louie,

I'm not sure I understand what you're trying to do.

For ode45, you need two files. One which is your differential updater, and one which is the main function which calls it.

the differential function should return a vector which is the derivatives and read in time steps you want to look at and the original state vector.

The main file should set up the state vector and pass it.

for example, the differential function:

Code:
function dW=differential(t,W)

dW(1)=W(2);
dW(2)=W(1);

for the calling function:
Code:
function [t,W]=odesolver("input variables")

W_0= [X_0;Y_0];

t=[0:.1:20];

[T,W]=ode45('differential',t,W_0);

This will return the values for W at the points designated by t
 
Back
Top