1

さまざまな開始値について、解を導きたい微分方程式がいくつかありますN_0

方程式は次のとおりです。

dN\dt= bN^2 - aN

dN\dt = bN^2 (1 - N\K) - aN

どうすればいいですか?

使われている言語はあまり気にしません。専用の数学に関しては、コンピューターに mathematica と matlab があります。メイプルにアクセスできました。私はこのことをもっとやらなければなりません。どの言語を使用して学習したいかを理解するのに役立つので、任意の言語の例が欲しいです。

4

4 に答える 4

7

最初の問題は解析的に解けないふりをして、mathematica で一般的な ODE をどのように扱うかを示します。

定義

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}}]

これは、初期値が異なるいくつかの解をプロットします。

ここに画像の説明を入力

または、解に対する洞察を得るためにabとの値をインタラクティブに操作でき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 (および多くの偏微分方程式) にも適用できます。

于 2011-07-23T11:39:59.693 に答える
2

いくつかの良い答えに加えて、多くの開始値に対する ODE の解の簡単なスケッチが必要な場合は、ガイダンスとしていつでも one-line を実行できますStreamPlota==1b==1、およびと仮定しdy/dx == x^2 - xます。

StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}]

ここに画像の説明を入力

StreamStyle -> "Line"矢印はなく、線だけが表示されます。

于 2011-07-26T12:44:14.797 に答える
0

MathematicaではNDSolveを使用します(解析的に解ける場合を除いて、DSolveを使用します。最初の方程式では次のことを試しました。

b = 1.1; a = 2;
s = NDSolve[{n'[t] == b n[t]^2 - a n[t], n[0] == 1}, n, {t, 0, 10}];
Plot[Evaluate[n[t] /. s], {t, 1, 10}, PlotRange -> All]

a、b、またはN0に何を使用するかわかりませんでしたが、次の結果が得られました。

n[t]のプロット

于 2011-07-23T06:12:50.117 に答える
0

方程式を数値的に解くことに満足している場合はMATLAB、便利な ODE ソルバーのセットがあります。ここode45で関数のドキュメントを確認してください。

一般的なアプローチは、微分方程式の右辺を記述する "ode 関数" を定義することです。次に、この関数を初期条件と積分範囲と共にodeソルバーに渡します。

このタイプのアプローチの魅力的な特徴の 1 つは、結合された ODE の複雑なシステムに簡単に拡張できることです。

お役に立てれば。

于 2011-07-23T08:55:32.343 に答える