上のパラメータ推定: Scilabの:私は、次のリンクのスクリプトを再現しようとしたロトカボルテラモデルのScilab
Parameters estimation on Lotka Volterra model with Scilab
そして、私はそれに記載されたものに結果で同様のエラーが発生します。.. あなたは私を導くことができエラーなしでスクリプトを実行します。 Scilabの5.5.1のためのグラシアス エルメス上のパラメータ推定: Scilabの:私は、次のリンクのスクリプトを再現しようとしたロトカボルテラモデルのScilab
Parameters estimation on Lotka Volterra model with Scilab
そして、私はそれに記載されたものに結果で同様のエラーが発生します。.. あなたは私を導くことができエラーなしでスクリプトを実行します。 Scilabの5.5.1のためのグラシアス エルメス問題は、ソルバーは何とかそれはすべてのt
にODEを解決し、ある時点で停止することはできませんポイントに到達することです。したがって、y_calc
は、y_exp
のサイズより小さくなります。
これはあなたのための問題ではありません場合は、
diffmat = y_calc' - y_exp(1:size(y_calc',1),:)
のためのソリューションode
関数にDifferences
機能の6行目にdiffmat
を変更になりましたときにエラーを発生させますScilab 6.XXで計算できない
try ... catch ... end
ステートメントを使用して、プログラムで処理させることができます。
だから、間違った(以降、なぜ私が説明します)ソリューションは、あなたはまだODEからの警告になるだろう
try // test if ode works normally
[y_calc,odew,odeiw]=ode(y0',t0,t,list(LotkaVolterra,c,n,m,e))
catch // if an error is raised
y_calc = y_exp' // Put a value when the computations fails
end
diffmat = y_calc' - y_exp(1:size(y_calc',1),:)
にDifferences
機能の5行目を変更しています。
try catch
ステートメントを使用しました悪いですなぜ。貴方はするべきではない。つまり、パラメータが不適切に選択されているか、数値的に解決できません。私は、プログラムの裏にある数学に取り組み、なぜいくつかのパラメータがode
アルゴリズムを壊すかもしれないことを知ることを勧めます。
また、私の答えに従わない理由もあります。あなたが見るように、私がエラーをキャッチすると、私はy_calc
にいくつかの値を与えます。しかし、これは数学的には不合理です。なぜなら、最適化の問題は、解が初期の問題に近似しているという事実に依存しているからです。私は99%がy_calc = y_exp'
ステートメントがあなたに使用できない結果を与えると確信しています。
[ScilabによるLotka Volterraモデルのパラメータ推定]の可能な複製(https://stackoverflow.com/questions/22614164/parameters-estimation-on-lotka-volterra-model-with-scilab) – bummi