I can solve this system of parametric ODE (`u` is the parameter,while `g`,`e` and `zi` are constants depends on the physic of the problem)
zi = -1/2;
g = 1;
e = .2;
Y[t_] := g/(2 zf) y[t] + u z[t];
Z[t_] := -g + g/zf z[t] - u y[t];
sol =
FullSimplify[
DSolve[{y'[t] == Y[t], z'[t] == Z[t],y[0] == 0 , z[0] == -zf},
{y[t], z[t]}, t]]
Then, I make the assignement:
zsol[t_] := Evaluate[z[t] /. sol[[1]][[2]]]
ysol[t_] := Evaluate[y[t] /. sol[[1]][[1]]]
My problem is to compare the time `t(u)` taken by trajectories `{y[t,u],z[t,u]}` to reach a neighborhood of `zf` whit radius `e`, with the time `trelax`, relative to `u=0` (`zf` is the fixed point of free dynamic). Not for all `u` the problem has solution: in general, for `u` large enough, trajectories reaches some fixed point in an infinity time following a spiral (as I seen plotting the system for various `u`), cause of the exponential-complex solutions, and there's a set of `u` without solutions (i.e, a set of `u` for which trajectories pass no close to `zf`). Then I have thought to use an iterative costruct, a `do-loop` mixed with an `If`. For simplicity, I've started, in particular, with:
trelax = Log[(-e/(2 zf))]*zf/g;
Do[Do[
If[N[Abs[zsol[T]] <= (zf + e) && N[Abs[ysol[T]] <= e,
If[Nsolve[ysol[t], t] <= trelax],
Print[{T, u}]]], {T, 0, .9, .01}], {u, 0, 40, .2}]
Remark_1: `trelax` is the correct analytic result of dynamical system for `u=0`.
Remark_2: I expect from this code to obtain a list of couple `{t,u}`, with `t<=trelax` and `u>0`, but really I don't obtain nothing! I think I'm wrong in the definition of the variable in the function...and in many other things!
Finally I ask you if is it possible to change the loop to obtain directly a plot `{t,u}`, i.e. a curve to compare with constant `trelax`...
Thank you
P.S: If you want to see some plots, I attach the ad hoc code:
u = 5;
ParametricPlot[{y[t] /. sol[[1]][[1]], z[t] /. sol[[1]][[2]]}, {t, 0, 10}, PlotRange-> All]