# How to solve an ODE with an array using ODE45?

51 views (last 30 days)

Show older comments

I have an ODE, udY/dx=S , where Y and S are arrays , how do I solve it using ODE45 ???

##### 3 Comments

Jan
on 20 Feb 2017

### Accepted Answer

### More Answers (2)

Jan
on 20 Feb 2017

Edited: Jan
on 21 Feb 2017

ode45 works with vectors, therefor if Y is a vector, the provided examples in the docs should help: https://www.mathworks.com/help/matlab/ref/ode45.html#examples . If not, please post more details by editing the question.

[EDITED, Considering your comments] Perhaps you mean this:

function main

% Initial Conditions

Cco(1) = 0.52; %Y1

Co2(1) = 0.99; %Y2

Ch2o(1) = 0; %Y3

L = 0.12;

N = 39;

delx = L/(N-1);

x = 0:delx:0.12;

C0 = [Cco; Co2; Ch2o];

[x,C] = ode45(@DiffEQ, x, C0);

plot (x,C)

end

function dC = DiffEQ(x, C)

u = 1.5;

A = 2.2e10;

Ea = 130;

Ru = 8.3145;

T = 750;

Cco = C(1);

Co2 = C(2);

Ch2o = C(3);

Rco = -A * (exp(-Ea / (Ru*T))) * Cco * sqrt(Co2); %S1

Ro2 = 0.5 * Rco; %S2

Rh2o = -Rco; %S3

dC = [Rco; Ro2; Rh2o] / u;

end

This needs a lot of processing time. Using ode15s was successful in less than a second (are you sure the system is not stiff). The diagram looks nicer, if you define:

x = [0, 0.12];

##### 10 Comments

Jan
on 21 Feb 2017

@DIP: @(x,C) R/u is constant. Changes in the coordinates are not considered, because all calls of "R/u" reply the same value. Better use a normal function instead of a anonymous function. I've showed you already, how to do this.

Concerning:

documentation for the last line of your main function

do you mean "plot(x,C)"?

Star Strider
on 20 Feb 2017

You will have to adapt it to your data and differential equations. The essential design should work.

##### 0 Comments

### See Also

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!