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]