Я сделаю вид, что первое не может быть решено аналитически, чтобы показать, как можно играть с общим ODE в mathematica.
Определить
p1[n0_, a_, b_, uplim_: 10] :=(n /. First@NDSolve[
{n'[t] == b*n[t]^2 - a*n[t], n[0] == n0},n, {t, 0, uplim}]
, который возвращаетрешение ODE, то есть a = p1[.1, 2., 3.]
, а затем, например, a[.3]
говорит вам n(.3)
.Затем можно сделать что-то вроде
Show[Table[ans = p1[n0, 1, 1];
Plot[ans[t], {t, 0, 10}, PlotRange \[Rule] Full],
{n0, 0, 1, .05}], PlotRange \[Rule] {{0, 5}, {0, 1}}]
, которое строит несколько решений с различными начальными значениями:
или, чтобы получить некоторое представление о решениях,можно в интерактивном режиме манипулировать значениями a
, b
и n0
:
Manipulate[
ans = p1[n0, a, b];
Plot[ans[t], {t, 0, 10},PlotRange -> {0, 1}],
{{n0, .1}, 0, 1},
{{a, 1}, 0, 2},
{{b, 1}, 0, 2}]
, что дает что-то вроде
с помощью элементов управленияактивный (т.е. вы перемещаете их, и график меняется; попробуйте вживую, чтобы понять, что я имею в виду; обратите внимание, что вы можете установить параметры, для которых начальные условия дают расходящиеся решения).
Конечно, это может быть сделано произвольно большесложно.Также в этом конкретном случае этот ODE достаточно прост для аналитической интеграции, но этот численный подход может быть применен к универсальным ODE (и ко многим PDE тоже).