問題タブ [ode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1667 参照

matlab - ネストされた関数を使用せずに ODE を解くにはどうすればよいですか?

MATLAB の ODE ソルバーを使用して解く必要のある微分方程式がいくつかあります。微分方程式自体はかなり単純ですが、多くの「定数」に依存しています。これらの定数は普遍的ではなく、呼び出し元が提供する必要があります。

この種の ODE の例は次のようになります。

ここで、j、k、l は定数で、x は変数です。

私がこれまでにこれらを解決してきた方法は、すべての初期値と定数のすべての値 (約 10 個あります) を引数として取り、次に内部の「ステップ」関数を呼び出す関数を使用することです。 MATLAB が ODE ソルバーに期待する形式のベクトル。そう...

ただし、変数の数とコードのサイズが大きくなるにつれて、これはますます洗練されなくなり、ほとんど判読できないコードの混乱が生じます。したがって、私がやりたいことは、a) 入力ベクトルのステップ関数に定数を渡すか、b) グローバル変数を使用することなく、各システムのステップ関数を独自のファイルに移動することです。これを行う合理的な方法はありますか、それとも単にそれを吸い上げて醜いコードを書くべきですか?

0 投票する
2 に答える
629 参照

wolfram-mathematica - Mathematicaでの非線形ODEの初期条件

MathematicaのNDSolve[]を使用して、結合されたODEを使用して球に沿った測地線を計算しようとしています。

問題は、x(0)とx'(0)の初期条件しか入力できず、ソルバーはx "= 0の解に満足していることです。問題は、球上の測地線の初期条件がxであるということです。 "(0)= -x(0)、これは数学にどのように伝えるかわかりません。これを条件として追加すると、条件のリストにTrueを追加していると表示されます。

これが私のコードです:

これを変更して、初期加速度がゼロではなく、になるようにします-x(0)

ありがとう

0 投票する
2 に答える
3804 参照

math - Mathematica でオイラー法を書く

オイラー法に必要な操作を実行するループを含む関数を書きたいと思います。その下に私の貧弱な試み。

0 投票する
1 に答える
16289 参照

java - Javaの微分方程式

JavaでSIRエピデミックモデルの簡単なシミュレーションプログラムを作成しようとしています。

基本的に、SIRは次の3つの微分方程式のシステムによって定義されます
。S'(t)= --l(t)* S(t)
I'(t)= l(t)* S(t)--g(t)* I(t)
R'(t)= g(t)* I(t)

S-感受性の高い人、I-感染した人、R-回復した人。

l(t)= [c * x * I(t)] / N(T)

c-接触の数、x-感染性(病気の人との接触後に病気になる確率)、N(t)-総人口(一定)。

Javaでこのような微分方程式を解くにはどうすればよいですか?私はそれを行うための有用な方法を知らないと思うので、私の実装はゴミを生成します。

}

よろしくお願いします。よろしくお願いします。

0 投票する
1 に答える
7327 参照

java - Javaの微分方程式系のルンゲクッタ法(RK4)

この引用は主にこのスレッドの結果です:Javaの微分方程式
基本的に、私はJason S.のアドバイスに従い、ルンゲクッタ法(RK4)を介して微分方程式の数値解法を実装しようとしました。

みなさん、こんにちは。JavaでSIRエピデミックモデルの簡単なシミュレーションプログラムを作成しようとしています。基本的に、SIRは次の3つの微分方程式のシステムによって定義されます
。S'(t)= --lamda(t)* S(t)
I'(t)= lamda(t)* S(t)-gamma(t)* I(t)
R'(t)= gamma(t)* I(t)
S-影響を受けやすい人々、I-感染した人々、R-回復した人々。lamda(t)= [c * x * I(t)] / N(T)c-接触の数、x-感染性(病気の人との接触後に病気になる確率)、N(t)-総人口(一定です)。
gamma(t)= 1 /病気の期間(一定)

最初の試みはあまり成功しませんでしたが、ルンゲクッタ法でこの方程式を解こうとしましたが、この試みの結果、次のコードが生成されました。

病気の人(I)の数は最初に増加し、次に約0に減少し、回復した人の数は厳密に増加する必要があるため、これは機能していないようです。病気+健康+回復の総数は100になるはずですが、私のコードはいくつかの奇妙な結果を生成します:

間違いは見つかりません、アドバイスしてください!よろしくお願いします!

0 投票する
3 に答える
5935 参照

c# - .netで最高の無料常微分方程式ライブラリ

大学の論文プロジェクトのODEを解決するためのライブラリを探しています...見つけたいライブラリには、次の機能が必要でした。

  • イベント計算(制約に達したなどの内部イベントによって停止された連続計算のようなもの)

  • 私はC#4.0を使用しているので、どのライブラリでも問題ないと思います

  • パフォーマンスが良い

  • いいえ$$^^ "

0 投票する
1 に答える
577 参照

matlab - 3 次 ODE と直線の間の交点を見つけますか?

3 次 ODE の解と直線 y=x の交点を見つけるにはどうすればよいですか?

私のODEのコードは

0 投票する
1 に答える
144 参照

ode - オードの解き方

私は dy/dt=t/y と y(0)=1 を解決できる matlab コードを持っています。これを一般化して dy/dt=f(t,y), y(o)=y_0 を特定の ANY に対して解決するにはどうすればよいですか? f(t,y)?

0 投票する
1 に答える
1423 参照

r - ネストされた常微分方程式を解く方法

RのdeSolveパッケージを常微分方程式(ODE)に使用できますが、2つのネストされたODE方程式を解く方法が見つかりません。

ここで、'は差別化を意味します。どうすれば解決できaますbか?のa'関数であるように、同時にb解く必要があります。ab

エラーが発生しました:

lsoda(y、times、func、parms、...)のエラー:使用されているソルバーの組み合わせをネストできません。

bの常微分方程式の解の中に解を追加しようとしたときa

0 投票する
1 に答える
632 参照

python - odeint <-> interp1d 相互作用の潜在的なバグ?

私はPythonとscipyに比較的慣れておらず、MATLABからの変換です。scipy.integrate の odeint 関数の簡単なテストを行っていたところ、この潜在的なバグに遭遇しました。次のスニペットを検討してください。

両方の結果の違いを示すプロットを作成しました。ここをクリックしてください

少なくとも私にとっては、不当な結果の違いについてどう思いますか? Python 2.6.6 の上で NumPy バージョン 1.5.0 と SciPy バージョン 0.8.0 を使用しています