2016-09-18 7 views
2

私は、このサイトhttp://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-of-disease-the-differential-equation-modelにWolfram Mathematicaを使って与えられた微分方程式を使って病気の広がりをモデル化しようとしています。Wolfram Mathematica、微分方程式を入力する

は私が入力された:

NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}] 

と2つの引数で呼び出さエラー NDSolveでを受けました。 3つ以上の引数が必要です。

私も

NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}] 

を試してみましたが、私は両方の微分方程式とMathematicaに新人だ、そう誰かが助けることができる場合、私は感謝されると思います、同じエラー

を得ました。

+2

http://mathematica.stackexchange.com –

+3

上のより良いフィットあなたがの真ん中にカンマが欠けていますこれはs '[0] == 0}です。もしあなたがs' [0] == 0}なら、それはうまくいきます。 – Bill

答えて

1

として法案は、これらが何の昏睡状態ではなかったと語りました。 NDSolveの第二引数は関数の集合です。引数なしで、または引数で入力できます。あなたのコードは次のようになります。

NDSolveで:: ivres:NDSolveは微分代数システムのためのゼロ残留を与える初期値を計算した、

sol = NDSolve[ 
    {i'[t] == 1/2 s[t] i[t] - 1/3 i[t], 
    s[t] == -1/2 s[t] i[t], r[t] == 1/3 i[t], 
    r[0] == 0, 
    s[0] == 1, 
    i[0] == 1.27*10^-6, 
    s'[0] == 0}, {i[t], s[t], r[t]}, {t, 0, 10}] 

これは、数値的な問題との接続エラーが発生します一部のコンポーネントは指定されたコンポーネントとは異なります。満足する必要がある場合は、すべての従属変数とその派生物の初期条件を与えることをお勧めします。 >>

しかし、あなたはあなたの結果を印刷することができます。

Plot[{Evaluate[i[t] /. sol], Evaluate[s[t] /. sol], 
    Evaluate[r[t] /. sol]}, {t, 0, 10}] 

solution2.png

たぶん