solve second order ode system numerically

2 Ansichten (letzte 30 Tage)
hosein Javan
hosein Javan am 24 Okt. 2018
hello I'm trying to solve this system of second order ordinary differential equations using ode functions (not dsolve):
k1*x' + k2*y' + k3*x + k4*y = u
k5*x" + k6*y" + k7*y' + k8*y = 0
is there a way to convert this system to first order system of equations like in "odeToVectorField"? also is there a function that acts inversely? (like a "VectorFieldToode") to combine the two equations into one higher order differential equation.

Akzeptierte Antwort

Star Strider
Star Strider am 24 Okt. 2018
I would normally expect this to work for other systems of differential equations:
syms k1 k2 k3 k4 k5 k6 k7 k8 u x(t) y(t) Y
Dx = diff(x);
D2x = diff(Dx);
Dy = diff(y);
D2y = diff(Dy);
Eqn1 = k1*Dx + k2*Dy + k3*x + k4*y == u;
Eqn2 = k5*D2x + k6*D2y + k7*Dy + k8*y == 0;
[VF,Subs] = odeToVectorField(Eqn1, Eqn2)
odeFcn = matlabFunction(VF, 'Vars',{t, Y, u, [k1, k2, k3, k4, k5, k6, k7, k8]})
However, that code throws this error:
Error using mupadengine/feval (line 187)
Number of indeterminates exceeds the number of ODEs.
I must leave it to you to resolve that problem.
  3 Kommentare
Star Strider
Star Strider am 24 Okt. 2018
As always, my pleasure!
Actually, it is not a bug. You changed your system of differential equations, and the condition that threw the original error was no longer present.
Maxime Sabet D'Acre
Maxime Sabet D'Acre am 11 Nov. 2020
Hi So this thread was never solved?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by