# System of differential equations with constant (as variables) coefficients

24 visualizaciones (últimos 30 días)
Marc Rosales el 28 de Oct. de 2016
Comentada: Marc Rosales el 29 de Oct. de 2016
Hi
I have 4 differential equations that I need to solve, but the coefficients for each term in each equation are different unknown constants. I read about solving it using a matrix and came up with:
syms A(t) B(t) C(t) D(t) k1 kn1 k2 kn2 k3 kn3 k4 kn4 k5 kn5 k6 kn6
Z = [A;B;C;D];
X = [-(k1+k3+k5), kn1, kn3, kn5; k1, -(kn1+k2+k6), kn6, kn2; k3, k6, -(kn3+k4+kn6), kn4; k5, k2, k4, -(kn2+kn4+kn5)];
Y = zeros(4,1);
eqn = diff(Z) == X*Z + Y;
[ASol(t), BSol(t), CSol(t), DSol(t),] = dsolve(eqn);
however that does not seem to work. Any help would be appreciated
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Torsten el 28 de Oct. de 2016
Your system of ODEs is too complicated to be solved symbolically.
Specify the constants and use a numerical solver (e.g. ODE15s).
Best wishes
Torsten.
##### 3 comentariosMostrar 1 comentario más antiguoOcultar 1 comentario más antiguo
Torsten el 28 de Oct. de 2016
I wonder what you want to do with a symbolic solution if you don't know reasonable values for the constants ?
Best wishes
Torsten.
Marc Rosales el 28 de Oct. de 2016
^Exactly my question too.
To be completely honest, this is a problem a chemistry professor gave me, and I too am at a complete loss why I need a symbolic solution hahaha. Anyway, the constants may be any non-negative value afaik.
If I get a system of ODEs of 4 equations, around how many constants(as variables) can I use to still be solvable by Matlab? or do I need to eliminate the number of equations too? :/

Iniciar sesión para comentar.

### Más respuestas (1)

Teja Muppirala el 28 de Oct. de 2016
As has been mentioned, with the k's explicitly accounted for, it's very complicated.
But if you consider the matrix X simply as some constant matrix X, regardless of what's in it, then the analytical solution is
Z(t) = expm(X*t)*x0
where x0 is the initial condition.
For example
% Make some random stable X matrix
X = randn(3);
X = X*X';
X = -X;
x0 = [1;2;3]; % Some initial condition
ode45(@(t,Z)X*Z,[0 3],x0) % Using ODE45
Z = [];
tList = 0:0.01:3;
for t = tList;
Z(:,end+1) = expm(X*t)*x0; % Using matrix exponential solution
end
hold on;
plot(tList, Z','k','linewidth',1);
title('Same answer with ode45 and expm')
##### 2 comentariosMostrar NingunoOcultar Ninguno
Torsten el 28 de Oct. de 2016
And does expm work for the symbolic (4x4)-matrix from above ?
I doubt it - and if it works, the solution will contain roots of a fourth-order symbolic polynomial, I guess.
Best wishes
Torsten.
Marc Rosales el 29 de Oct. de 2016
I've looked at the results after tweaking the initial conditions ([1,0,0]), but the graph always slopes downwards, whereas I'm expecting a downwards slope for only one graph, and upwards for the rest until they stabilize.

Iniciar sesión para comentar.

### Categorías

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

### Community Treasure Hunt

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

Start Hunting!

Translated by