Solving 2 ODE's with ode45

3 visualizaciones (últimos 30 días)
Tarek Chahattou
Tarek Chahattou el 23 de Oct. de 2019
Respondida: Stephan el 23 de Oct. de 2019
New Doc 2019-10-22 22.24.58_1.jpg
Im trying to solve these 2 differential equations like this:
tfinal = 100;
t = linspace(0,tfinal,100);
winitial = [1 300];
[T, Ca] = ode45(@sub1,t,winitial)
plot(t,Ca)
%%%%%%%%% Subfunction
function d_dt = sub1(Ca,T)
d_dt = zeros(2, 1);
d_dt(1,1) = -0.1*Ca*exp(-300/T);
d_dt(2,1) = 1*Ca*exp(-300/T);
end
but i keep getting these errors. Does it have something to do with the subfunction? I was having trouble with it
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.
Error in explicit_Eu_hw>sub1 (line 28)
d_dt(1,1) = -0.1*Ca*exp(-300/T);
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in explicit_Eu_hw (line 20)
[T, Ca] = ode45(@sub1,t,winitial)

Respuesta aceptada

Stephan
Stephan el 23 de Oct. de 2019
tfinal = 100;
tspan = [0 tfinal];
winitial = [1 300];
[t,y] = ode45(@sub1,tspan,winitial)
plot(t,y,'LineWidth',2)
%%%%%%%%%Subfunction
function d_dt = sub1(t,y)
Ca = y(1);
T=y(2);
d_dt = zeros(2, 1);
d_dt(1,1) = -0.1*Ca*exp(-300/T);
d_dt(2,1) = 1*Ca*exp(-300/T);
end

Más respuestas (0)

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by