MatLab help using ode23/ode45

  • MATLAB
  • Thread starter louie
  • Start date
  • #1
10
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
 

Answers and Replies

  • #2
10
0
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
 
  • #3
enigma
Staff Emeritus
Science Advisor
Gold Member
1,752
13
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
 

Related Threads on MatLab help using ode23/ode45

  • Last Post
Replies
1
Views
3K
  • Last Post
Replies
4
Views
7K
  • Last Post
Replies
0
Views
2K
  • Last Post
Replies
3
Views
7K
Replies
0
Views
3K
  • Last Post
Replies
7
Views
6K
Replies
0
Views
5K
Replies
0
Views
2K
  • Last Post
Replies
4
Views
6K
Top