System of differential equations with constant (as variables) coefficients
14 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
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 Commenti
Torsten
il 28 Ott 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.
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 Commenti
Torsten
il 28 Ott 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.
Vedere anche
Categorie
Scopri di più su Symbolic Math Toolbox 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!