問題タブ [differential-equations]
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.
python - 振り子として完全に機能しないodeint()を使用したPythonでの振り子シミュレーション
私は、すべてが段階的に行われる4次のルンゲクッタ微分を使用して振り子シミュレーションを構築しました。
これは素晴らしい動作をしますが、エレガントではないので、odeint()関数を使用して書き直すことにしました。
そして、この新しいバージョンは振り子のようには見えません。誰かが私が間違っていることを教えてもらえますか?
matlab - ode45 の使用中に予期しない結果が得られる
Matlab でコードを記述して微分方程式系を解こうとしています。誰かが私を助けてくれることを願って、私はこのフォーラムに投稿しています。10 個の結合微分方程式のシステムがあります。これは、人間の集団と昆虫の集団の間での病気の伝染を捉えたベクター宿主流行モデルです。これは微分方程式の単純なシステムであるode45
ため、非スティッフな問題タイプにはソルバー ( ) を使用しています。
10 個の微分方程式があり、それぞれが 10 個の異なる状態変数を表しています。10 連成 ODE の同じシステムを持つ関数が 2 つあります。NoEffects_derivative_6_15_2012.m
ODE の元のシステムを含む1 つが呼び出されます。もう 1 つの関数が呼び出さOnlyLethal_derivative_6_15_2012.m
れます。この関数には、同じ ODE のシステムが含まれており、時間から始まる引き出し率が増加しgamma=32 %days
、その引き出し率は時間とともに指数関数的に減衰します。
ode45
同じ初期条件を使用して、両方のシステムを解決するために使用します。時間ベクトルも両方のシステムで同じで、 から に進みt0
ますtfinal
。このベクトルには からまでtspan
の時間値が含まれており、それぞれが 0.25 日の増分で、合計 157 の時間値になります。t0
tfinal
解の値は、行列ye0
およびに格納されyeL
ます。これらの行列はどちらも、157 行と 10 列 (10 個の状態変数値) を含みます。10 番目の状態変数の値をtime=tfinal
行列ye0
で比較しyeL
、差をプロットすると、いくつかの時間値で負になっていることがわかります。(コマンドを使用: plot(te0,ye0(:,10)-yeL(:,10))
)。これは想定外です。t0
からまでのすべての時間値についてtfinal
、10 状態変数の値は、増加した引き出し率が適用されていない ODE のシステムから得られた解であるため、より大きくなるはずです。
私の matlab コードにバグがあると言われました。そのバグを見つける方法がわかりません。または、私が使用している matlab のソルバー ( ode45
) が効率的でなく、この種の問題が発生する可能性があります。誰でも助けることができます。
私も試してみode23
ましode113
たが、それでも同じ問題が発生します。図 (2) は、時間値 32 と 34 で負になる曲線を示しており、これは予期しない結果を示しています。この曲線は、すべての時間値に対して正の値を持つ必要があります。誰かが提案できる他のフォーラムはありますか?
メインのスクリプト ファイルは次のとおりです。
関数ファイル:NoEffects_derivative_6_15_2012
関数ファイル:OnlyLethal_derivative_6_15_2012
関数ファイル:artificialdeathrate1
関数ファイル:iOFt
関数ファイル:oOFt
matlab - 常微分方程式表現の誤り
更新リンクLE で指定されたリアプノフ指数を見つけようとしています。私の場合、次の式を使用して、それを理解し、理解しようとしています。これらは一連の常微分方程式です (これらは cos と sin を ODE として扱う方法をテストするためのものです)
とx=X(1); y=X(2); cos(y)=X(3);
f1 はdx/dt
;f2dy/dt
を意味し、この場合の f3 は になります-10sinx
。ただし、x=X(1);y=X(2); と表現する場合、cos をどのように表現すればよいかわかりません。 cos、sin などの項を別の変数の関数として。
ode45 を使用してこれらの方程式を解く場合
次のエラーがスローされます
??? (2) にアクセスしようとしました。index は正の整数または論理値でなければなりません。
- 私の代理は
x=X(1); y=X(2); cos(y)=X(3);
大丈夫ですか? - エラーを解決するには?ありがとうございました
genetic-algorithm - GA 内で呼び出されたときに matlab ode15s が機能しない
ブッシングの数学的 (パラメトリック) モデルがあります。モデルへの入力は変位 (正弦波) で、力は出力 (それぞれのタイムステップ) です。
モデルのパラメーターは GA を使用して識別され、力の方程式は ode15s ソルバーを使用して解かれます。
ソルバーは、一連のパラメーターが (GA を使用せずに) 想定されている場合に出力を提供しますが、GA から呼び出されると、次のエラーがn
何度も発生します。
警告: 行列が特異であるか、特異に近いか、スケールが不適切です。結果が不正確になる場合があります。RCOND = NaN。
そして最後に
警告: t=1.570796e+000 で失敗。時間 t で許容される最小値 (3.552714e-015) よりもステップ サイズを小さくしないと、積分許容誤差を満たすことができません。
コードは GA を使用せずに、GA を使用せずに正常に動作するため、少し困惑しています。ご意見をお寄せいただき、誠にありがとうございました。
よろしくお願いします。
コード : メインコール
GA_test 関数:
my_force_Curve
個々のモデルの力を計算します:
differential_BW
方程式を解きます。
長すぎる場合はお詫び申し上げます。
再度、感謝します。
python - Scipy & Numpy 経由で Python を使用して ODE のシステムにデータを適合させる
Scipy & Numpy を使用して MATLAB コードを Python に変換する際に問題が発生しています。ODE のシステムが 10 個の観測データ ポイントに適合するように最適なパラメーター値 (k0 と k1) を見つける方法に行き詰まっています。現在、k0 と k1 の最初の推測があります。MATLAB では、「fminsearch」と呼ばれるものを使用できます。これは、ODE 系、観測されたデータ ポイント、および ODE 系の初期値を取得する関数です。次に、観測データに適合する新しいパラメーター k0 と k1 のペアを計算します。データに適合する最適なパラメータ値 k0 と k1 を見つけるために、ある種の「fminsearch」を実装するのに役立つかどうかを確認するために、コードを含めました。これを行うコードを lsqtest.py ファイルに追加したいと思います。
ode.py、lsq.py、および lsqtest.py の 3 つの .py ファイルがあります。
ode.py:
lsq.py:
lsqtest.py:
python - ODEのシステムへのデータのフィッティング-Scipy/Numpy/Pythonでラムダ関数を使用したタイプエラー
コードを実行すると、次のエラーが発生します。
Typeerror:lambda()は正確に4つの引数を取ります(3つ指定)
これが私のコードです-私のエラーは、Scipyの最適化アルゴリズムを実装しようとしているコードの最後の行(私は思う)から来ていますfmin
matlab - matlabで2つの結合された2次微分方程式を解くエラー
matlabで次の微分方程式を解こうとしています。(これらは、フーフィー ポリアコフ モノポール ansatz の yang-mills-higgs ラグランジアンから得られた方程式です)。これは私の関数ファイルです。2 つの変数 h と k と、変数 t に対するそれらの導関数があります。私の x(1)=h、x(2)=k、x(3)=dh\dt、x(4)=dk\dt. すべての関数の初期値は 0 です。
次のコードを実行すると >
私は何も得ていません。グラフ ウィンドウが表示されますが、何も含まれていません。この方程式には解があるはずです。点線の曲線は、1 から始まる曲線が k で、0 から h が得られる曲線です。
私の間違いは何ですか?
probability - Fokker-Planck: 2 方向の対流
私はフォッカー・プランク過程をシミュレートしようとしています。粒子は時間の一部 x で方向 A に移動し、(1-x) で方向 B に移動します。式を設定するにはどうすればよいですか? または、移流成分ごとに 1 つずつ、2 つのフォッカー プランク方程式を解き、それぞれの積を対応する分数で合計することは可能ですか?
random - Mathematica でランダム係数を持つ線形微分方程式を解く方法
私は次のような微分システムを持っています
dx/dt = A x(t) + B y(t)
dy/dt = C x(t) + D y(t)
ここで、A、B、C、および D は実定数です。ここで、A が定数ではなく、特定の範囲に均一に分布する乱数である場合のシステムの動作を調べる必要があります。定性的にチェックするしかない。私は確率積分のバックグラウンドがないため、これが実際に伊藤積分に関連するものであるかどうかはわかりません(そしてこの質問https://mathematica.stackexchange.com/questions/3141/how-can-you-compute-it -integrals-with-mathematica ) . いずれにせよ、この微分方程式の解き方がわかりません。
どんなガイダンスでも大歓迎です。
python - Python: odeint を使用したしきい値モデルの実装
私が扱っている問題 (示されている例は非常に単純化されています) は一般的な問題のようですが、まだ解決策を見つけていません。v1、v2、v3 の 3 つの異なる反応があり、次のように定義されています。
v1: R <-> A + C; v1 = k1*(R - A*C/5000.)
v2: R <-> B + C; v2 = k2*(R - B*C/5000.)
v3: A + B -> P; v3 = k3*A*B
リソース R を使用して、最初の 2 つの反応はそれぞれ A と C および B と C を生成しますが、3 番目の反応は A と B を生成物 P に変換します (k1、k2、k3 は定数で、ここでは 1 に設定されています)。
3 番目の反応は、C が Cthr (ここでは Cthr = 25) と呼ばれる特定のしきい値を超えた場合にのみ発生すると想定されています。それ以外の場合は v3 は 0 です。製品Pの.
私はそれを次のように実装しました:
シミュレーションの出力は次のようになります: http://i50.tinypic.com/apdvkj.png
したがって、最初にしきい値に達するまで (v3 が 0、P が生成されない) 動作するようですが、その後は C が 0 に設定されず、理由がわかりません。
私が取得したいのは、C がしきい値まで生成され、0 に低下し、再び生成され、0 に低下するなど、のこぎり波のように見えることです。
P の時間経過は階段のように見えるはずです (Cthr を超えた場合にのみ生成されます)。
C を 0 に戻し、期待される出力を受け取るために私がしなければならないことを誰かが知っていますか? どうもありがとう!