Coupled Differential Equations - derivatives on both sides of equations
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
razorfin
am 27 Aug. 2017
Kommentiert: razorfin
am 28 Aug. 2017
I am trying to solve two coupled differential equations, but I cannot seem to figure out how to get into a form that can be solved with an ode solver. Specifically, I can't get all the derivatives to the left hand side of the equations.
The equations are:
dx/dt=[-1.005*x+0.0000265*dy/dt+0.01*y+f(t)*g1(x,t)]*1/(0.000053+g1(x,t))
dy/dt=[-0.872*y+0.0000265*dx/dt+0.01*x-f(t)*g2(y,t)]*1/(0.000053+g2(y,t))
Where:
f(t)=44100*cos(1.48-377*t)-3888*exp(-33.3*t)
g1(x,t)=24800/(126+.55*abs(117*sin(377*t-1.48)-117*sin(-1.48)*exp(-t/0.03)-x)*240)^2
g2(y,t)=24800/(126+.55*abs(117*sin(377*t-1.48)-117*sin(-1.48)*exp(-t/0.03)+y)*240)^2
Any help would be greatly appreciated.
0 Kommentare
Akzeptierte Antwort
Andrew Newell
am 27 Aug. 2017
Bearbeitet: Andrew Newell
am 27 Aug. 2017
Let's simplify things a little bit so we can better see what is going on. Let
Y = [x; y];
G1(t,Y) = 0.000053+g1(Y(1),t);
G2(t,Y) = 0.000053+g2(Y(2),t);
Then a little rearrangement gives
G1(t,Y)*(d/dt)Y(1) - 0.0000265*(d/dt)Y(2) = F1(t,Y)
G2(t,Y)*(d/dt)Y(2) - 0.0000265*(d/dt)Y(1) = F2(t,Y)
where F1(t,Y) and F2(t,Y) bundle all the remaining terms together. If we now define a "mass matrix"
M(t,Y) = [G1(t,Y) -0.0000265; -0.0000265 G2(2,Y)]
F(t,Y) = [F1(Y,t); F2(Y,t)];
then we can define
options = odeset('Mass',M);
and solve something like
[t,y] = ode45(F,tspan,y0)
(see the ode45 documentation). You'll have to define functions F(t,Y) and M(t,Y) to reproduce the above steps. Warning: I have been using a mixture of MATLAB and regular math to keep it simple; you can sort out the details.
3 Kommentare
Andrew Newell
am 28 Aug. 2017
I made two modifications to your code. The first is to change the definition of Fn to
function Ydot=Fn(t,Y)
and the second was to change the final command to
[t,y]=ode45(@Fn,t,[0;0],options);
Then it ran fine.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!