На оригинальный вопрос ответил @rcollyer. Я отвечаю на вопрос, который вы опубликовали в своем первом комментарии к ответу rcollyer:
Но что, если вместо этого наш s это "s: = NDSolve [{x '[t] ^ 2 == -x [t] ^ 3 - x [t] + 1, x [0] == 0,5}, x, {t, 0, 5}] "Тогда функция FindRoot просто возвращает ошибку, в то время как график показывает, что существует ноль около 0,6 или около того.
Итак:
s = NDSolve[{x'[t]^2 == -x[t]^3 - x[t] + 1, x[0] == 0.5},
x, {t, 0, 1}, Method -> "StiffnessSwitching"];
Plot[Evaluate[{x[t]} /. s], {t, 0, 1}]
FindRoot[x[t] /. s[[1]], {t, 0, 1}]
{t -> 0.60527}
Редактировать
Отвечая на комментарий rcollyer, «вторая строка» происходит от квадрата производной, как в:
s = NDSolve[{x'[t]^2 == Sin[t], x[0] == 0.5}, x[t], {t, 0, Pi}];
Plot[Evaluate[{x[t]} /. s], {t, 0, Pi}]
Исходя из:
DSolve[{x'[t]^2 == Sin[t]}, x[t], t]
(*
{{x[t] -> C[1] - 2 EllipticE[1/2 (Pi/2 - t), 2]},
{x[t] -> C[1] + 2 EllipticE[1/2 (Pi/2 - t), 2]}}
*)