Help solve a system of Differential Equations
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Le Duc Long
am 22 Jun. 2020
Kommentiert: Le Duc Long
am 22 Jun. 2020
Hi everybody,
I have code to solve a system of Differential Equations with matrix. I do not know my mistakes. When I run my, error in my code " Undefined operator '*' for input arguments of type 'function_handle'.Error in osc (line 22) odes=diff(P)==(0.2*A+s*B)*P;"
Can you see it and help me fix it. Thanks so much!
----------------------------------------------
This is my code:
T=100; g=0.5*T; n=3;s0=0.5;lamda=0.2;
% khai bao ham xa xe (KNTH)
s=@(t)(s0).*(((t-floor(t/T)*T)<g))+(0)*(((t-floor(t/T)*T)>g));
t=linspace(0,500);
plot(t,s(t));
grid;
% Khai bao mt A vuong cap n+2
syms p1(t) p2(t) p3(t) p4(t) p5(t)
A=[-1 0 0 0 0;
1 -1 0 0 0;
0 1 -1 0 0;
0 0 1 -1 0;
0 0 0 1 0];
B=[0 1 0 0 0;
0 -1 1 0 0;
0 0 -1 1 0;
0 0 0 -1 1;
0 0 0 0 -1];
P=[p1; p2; p3; p4; p5];
odes=diff(P)==(0.2*A+s*B)*P;
[p1Sol(t),p2Sol(t),p3Sol(t),p4Sol(t),p5Sol(t)]=dsolve(odes);
C=P(0)==[1;0;0;0;0];
[p1Sol(t),p2Sol(t),p3Sol(t),p4Sol(t),p5Sol(t)]=dsolve(odes,C);
clf
fplot(p1Sol)
hold on
fplot(p2Sol)
hold on
fplot(p3Sol)
hold on
fplot(p4Sol)
hold on
fplot(p5Sol)
grid on
legend('p1Sol','p2Sol','p3Sol','p4Sol','p5Sol','Location','best')
-----------------------------------
2 Kommentare
John D'Errico
am 22 Jun. 2020
Since this is purely a numerical ODE solve, why are you using dsolve, instead of perhaps ODE45?
Akzeptierte Antwort
Walter Roberson
am 22 Jun. 2020
Bearbeitet: Walter Roberson
am 22 Jun. 2020
syms t
s = piecewise((t-floor(t/T)*T)<g,s0,0);
fplot(s, [0 500])
%do not do the numeric assignment to t
Note that you do did explicitly define s for the case where the expression exactly equals g, but the numeric logic you used would have come out as 0 for that case anyhow.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!