Ваша проблема в том, что Plot [] делает некоторые забавные вещи, чтобы сделать построение графиков более удобным, и одна из вещей, которые он делает, это просто не чертит вещи, которые он не может оценить численно. Итак, в выражении, которое вы разместили,
Plot[x[t], {t, 0, 10}]
просто идет вперед и оценивает перед тем, как выполнит замену правила решением из NDSolve, создавая графический объект пустого графика. Этот графический объект не содержит ссылки на x, поэтому заменить его нечем.
Вы хотите убедиться, что замена сделана до начала печати. Если вы также хотите убедиться, что подстановка может быть выполнена в нескольких местах, вы хотите сохранить решение в переменной.
sol = NDSolve[{x'[s] == - x[s], x[0] == 1}, x, {s, 0, 10}];
{Plot[Evaluate[x[t] /. sol], {t, 0, 10}], x[4] /. sol}
Evaluate [] на графике гарантирует, что Mathematica выполняет замену только один раз, а не один раз для каждой точки графика. Для такой простой замены правил это не важно, но это хорошая привычка использовать ее на тот случай, если вы захотите построить что-то более сложное.
Для того, чтобы сделать эту работу в Манипуляции, простой способ состоит в использовании With [], который является одной из областей видимости Mathematica; это тот, который нужно использовать, когда вы просто хотите заменить что-либо, не используя его в качестве переменной, которую вы можете изменить.
Например,
Manipulate[
With[{sol = NDSolve[{x'[s] == - x[s], x[0] == 1}, x, {s, 0, 10}]},
{Plot[x[t] /. sol // Evaluate, {t, 0, 10}, PlotRange -> {0, 1}],
x[4] /. sol}],
{{a, 1}, {0, 5}}]
Используйте параметр PlotRange, чтобы зафиксировать ось Y; в противном случае вещи будут безобразно прыгать по мере изменения стоимости. Когда вы делаете более сложные вещи с помощью Manipulate, есть ряд опций для контроля скорости обновлений, которые могут быть важны, если ваш ODE достаточно сложен, и его решение занимает некоторое время.