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

17 visualizzazioni (ultimi 30 giorni)
Marc Rosales il 28 Ott 2016
Commentato: Marc Rosales il 29 Ott 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 CommentiMostra -1 commenti meno recentiNascondi -1 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Torsten il 28 Ott 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 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Marc Rosales il 28 Ott 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? :/

Accedi per commentare.

### Più risposte (1)

Teja Muppirala il 28 Ott 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 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Marc Rosales il 29 Ott 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.

Accedi per commentare.

### Categorie

Scopri di più su Numeric Solvers in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by