I use NDSolve command (method->equation simplification -> residual) to solve different sets of Ordinary differential equations (ODEs).
It had worked alright till I added rather a simple component Vspr
. From then NDSolve[] cant solve such ODEs - I get an error: *NDSolve: Initial history needs to be specified for all variables for delay-differential equations.
I'm in fact sure that my equations didnt turn to be delay-differential equations. It must be an internal fail of NDSolve[] solver.
I've read two posts on this forum which concerns such a problem - NDSolve error: Cannot solve to find an explicit formula for the derivatives. Consider using the option Method->{"EquationSimplification"->"Residual"} and Solving this equation with NDSolve. The answers to them was to get rid of integrating inside ODEs. I tried somewhat to apply it to my problem nevertheless I dont have explicit integration in my ODEs.
My code is below. Please help me.
Needs["Quaternions`"]
angleVector[modul_, angleOYminus_] := {modul Cos[angleOYminus - Pi/2],
modul Sin[angleOYminus - Pi/2], 0}
modul[vector_] :=
Sqrt[(vector[[1]])^2 + (vector[[2]])^2 + (vector[[3]])^2]
(*kinematics:*)
tauP93third[l1_, rbp_, xbp_, ybp_] := \[Pi] -
ArcCsc[Sqrt[xbp^2 + ybp^2]/(l1 - rbp)] +
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]]
łP10P9start = ls0 + ll2;
yP1st21sixth[t_] := -ll2 - ls0 +
rbp (1/2 (\[Pi] + 2 ArcSin[ybp/Sqrt[xbp^2 + ybp^2]] +
2 ArcSin[
rbp/(\[Sqrt]((-ybp -
l1 Cos[tauP10st1st21plus[t]])^2 + (-xbp +
l1 Sin[tauP10st1st21plus[t]])^2))] +
2 ArcSin[(l1 Sin[
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]] +
1/2 (\[Pi] - 2 tauP10st1st21plus[t])])/(\[Sqrt]((-ybp -
l1 Cos[tauP10st1st21plus[t]])^2 + (-xbp +
l1 Sin[tauP10st1st21plus[t]])^2))]) +
1/2 (-\[Pi] - 2 ArcSin[ybp/Sqrt[xbp^2 + ybp^2]] -
2 ArcSin[
rbp/(\[Sqrt]((-ybp -
l1 Cos[tauP10st1st21plus[t2]])^2 + (-xbp +
l1 Sin[tauP10st1st21plus[t2]])^2))] -
2 ArcSin[(l1 Sin[
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]] +
1/2 (\[Pi] -
2 tauP10st1st21plus[t2])])/(\[Sqrt]((-ybp -
l1 Cos[tauP10st1st21plus[t2]])^2 + (-xbp +
l1 Sin[tauP10st1st21plus[
t2]])^2))])) - \[Sqrt]((-ybp +
l1 Cos[ArcSin[(l1 - rbp)/Sqrt[xbp^2 + ybp^2]] -
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]]] -
rbp Cos[ArcSin[(l1 - rbp)/Sqrt[xbp^2 + ybp^2]] -
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]]])^2 + (-xbp +
l1 Sin[ArcSin[(l1 - rbp)/Sqrt[xbp^2 + ybp^2]] -
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]]] -
rbp Sin[ArcSin[(l1 - rbp)/Sqrt[xbp^2 + ybp^2]] -
ArcSin[ybp/Sqrt[xbp^2 + ybp^2]]])^2) + \[Sqrt](-rbp^2 +
xbp^2 + ybp^2 + 2 l1 ybp Cos[tauP10st1st21plus[t]] +
l1^2 Cos[tauP10st1st21plus[t]]^2 -
2 l1 xbp Sin[tauP10st1st21plus[t]] +
l1^2 Sin[tauP10st1st21plus[t]]^2)
(*radius-vectors of specific points:*)
P1[t_] := {xbp + rbp, ybp - ybpP1tstart + yP1st21sixth[t], 0}
tauw[t_] := {0, 0, tauP10st1st21plus[t]}
versorz = UnitVector[3, 3];
skalartau = versorz.tauw[t];
l1w = angleVector[l1, skalartau - łP10P9start/(2 l1)];
tauP10st1st21plusstart =
łP10P9start/l1 + tauP93third[l1, rbp, xbp, ybp];
\[CurlyPhi]1drugi[t_] :=
tauP10st1st21plus[t] - tauP10st1st21plusstart + \[CurlyPhi]start2
\[CurlyPhi]w[t] = {0, 0, \[CurlyPhi]1drugi[t]};
skalar\[CurlyPhi]1drugi = versorz.\[CurlyPhi]w[t];
l2w = angleVector[l2, skalar\[CurlyPhi]1drugi];
l5 = l2 Cos[\[CurlyPhi]start2];
\[Beta]w[t_] := {0, 0, \[Beta][t]}
skalarbeta = versorz.\[Beta]w[t];
l4w = angleVector[l4, skalarbeta];
(*velocities of specific points:*)
lcbkw = (1/(m1 + m2)) (m1 l1w + m2 l2w)/
2 ;(* promien wektor Subscript[OC, 2]*)
vcbkw = Cross[D[tauw[t], t], lcbkw];
vP1w = D[P1[t], t];
lBC3w = l4w ((m4/2 + mD)/(m4 + mD));
vBC3w = Cross[D[\[Beta]w[t], t], lBC3w];
vBw = Cross[D[\[CurlyPhi]w[t], t], l2w];
vC3w = vBw + vBC3w;
(*heights of specific points:*)
versory = UnitVector[3, 2];
yC2 = Dot[versory, lcbkw];
ypw[t_] := Dot[versory, P1[t]]
lC3w = lBC3w + l2w;
yC3 = Dot[versory, lC3w];
(*elongation of spring*)
lambda[t_] := ypw[t] - ypw[t2]
(*moments of inertia*)
IIb = 1/3 m2 l2^2;
IIk = 1/3 m1 l1^2;
IIbk = IIb + IIk;
IIDwzgB = mD l4^2;
IIrzwzgB = (m4 l4^2)/3;
IIDrz = IIDwzgB + IIrzwzgB - (m4 + mD) (modul[lBC3w])^2;
(*potential energies with problematic Vspr component*)
VP1 = mpw g ypw[t];
Vspr = 1/2 kspr lambda[t]^2;
VC2 = (m1 + m2) g yC2;
VC3 = (m4 + mD) g yC3;
V = VP1 + Vspr + VC2 + VC3;
(*kinetic energies:*)
TP1r = 0;
TC2r = (IIbk modul[D[tauw[t], t] ]^2)/2;
TC3r = (IIDrz modul[D[\[Beta]w[t], t] ]^2)/2;
TP1p = (mpw modul[vP1w]^2)/2;
TC2p = ((m1 + m2) modul[vcbkw]^2)/2;
TC3p = ((m4 + mD) modul[vC3w]^2)/2;
T = TP1p + TC2p + TC3p + TP1r + TC2r + TC3r;
(*Lagrangian equations *)
Q = 0;
genCoords = {tauP10st1st21plus[t], \[Beta][t]};
LagrangianEquations[T_, V_, Q_: 0, genCoords_List] :=
Module[{L = T - V}, (D[D[L, D[#, t]], t] == Q + D[L, #]) & /@
genCoords]
eqLagrangeIIwSprgphaseIIst21 = LagrangianEquations[T, V, Q, genCoords];
(*data*)
l1 = 0.6096;
l2 = 2.4384;
rbp = 0.06;
xbp = 0.7096;
ybp = -0.1;
CC = 0;
ls0 = 0.5;
lsmax = 0.625;
ll2 = 0.4156500000000001;
rb2 = 0.12;
ybpP1tstart = 0.2;
t1 = 0;
\[CurlyPhi]start = 0.785398;
\[CurlyPhi]start2 = 5.497787;
rb5 = 0.3;
rb6 = 0.4;
rb7 = 0.1;
rb4 = 0.1;
yb4 = 0.5;
\[Beta]4 = (-3*Pi)/4;
\[Omega]\[Beta]3 = -0.5;
l4 = 2.1336;
l5 = 1.72421;
mb = 24.5455;
m1 = 4.9091000000000005;
m2 = 19.636400000000002;
mD = 3.63636;
m4 = 0;
g = 9.81;
mpw = 363.636;
time = 0.6;
kspr = 1000;
t2 = 0.5717686223842463`;
(*boundary conditions*)
intercphaseIIst1st21tau = {tauP10st1st21plus[t2] ==
2.1275269499525282`,
Derivative[1][tauP10st1st21plus][
t2] == -4.645459820712312`, \[Beta][t2] == -0.5484939695351693`,
Derivative[1][\[Beta]][t2] == -9.20429489396812`};
(*solution*)
ndfazaIIst21Spr =
NDSolve[{eqLagrangeIIwSprgphaseIIst21,
intercphaseIIst1st21tau}, {tauP10st1st21plus, \[Beta]
}, {t, t2, 1}, Method -> {"EquationSimplification" -> "Residual"}]