Я сделаю вид, что первое не может быть решено аналитически, чтобы показать, как можно играть с общим ОДУ в математике.
Определять
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}]
который возвращает решение ОДУ, т. е. 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}]
который дает что-то вроде
с активными элементами управления (т. е. вы перемещаете их, и сюжет меняется; попробуйте вживую, чтобы увидеть, что я имею в виду; обратите внимание, что вы можете установить параметры, для которых начальные условия дают расходящиеся решения).
Конечно, это можно сделать произвольно более сложным. Кроме того, в этом конкретном случае это ОДУ достаточно легко интегрировать аналитически, но этот численный подход может быть применен к общим ОДУ (и ко многим УЧП тоже).
person
acl
schedule
23.07.2011