問題タブ [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.

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

python - 振り子として完全に機能しないodeint()を使用したPythonでの振り子シミュレーション

私は、すべてが段階的に行われる4次のルンゲクッタ微分を使用して振り子シミュレーションを構築しました。

これは素晴らしい動作をしますが、エレガントではないので、odeint()関数を使用して書き直すことにしました。

そして、この新しいバージョンは振り子のようには見えません。誰かが私が間違っていることを教えてもらえますか?

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

matlab - ode45 の使用中に予期しない結果が得られる

Matlab でコードを記述して微分方程式系を解こうとしています。誰かが私を助けてくれることを願って、私はこのフォーラムに投稿しています。10 個の結合微分方程式のシステムがあります。これは、人間の集団と昆虫の集団の間での病気の伝染を捉えたベクター宿主流行モデルです。これは微分方程式の単純なシステムであるode45ため、非スティッフな問題タイプにはソルバー ( ) を使用しています。

10 個の微分方程式があり、それぞれが 10 個の異なる状態変数を表しています。10 連成 ODE の同じシステムを持つ関数が 2 つあります。NoEffects_derivative_6_15_2012.mODE の元のシステムを含む1 つが呼び出されます。もう 1 つの関数が呼び出さOnlyLethal_derivative_6_15_2012.mれます。この関数には、同じ ODE のシステムが含まれており、時間から始まる引き出し率が増加しgamma=32 %days、その引き出し率は時間とともに指数関数的に減衰します。

ode45同じ初期条件を使用して、両方のシステムを解決するために使用します。時間ベクトルも両方のシステムで同じで、 から に進みt0ますtfinal。このベクトルには からまでtspanの時間値が含まれており、それぞれが 0.25 日の増分で、合計 157 の時間値になります。t0tfinal

解の値は、行列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

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

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 は正の整数または論理値でなければなりません。

  1. 私の代理はx=X(1); y=X(2); cos(y)=X(3);大丈夫ですか?
  2. エラーを解決するには?ありがとうございました
0 投票する
1 に答える
1896 参照

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方程式を解きます。

長すぎる場合はお詫び申し上げます。

再度、感謝します。

0 投票する
4 に答える
14599 参照

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:

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

python - ODEのシステムへのデータのフィッティング-Scipy/Numpy/Pythonでラムダ関数を使用したタイプエラー

コードを実行すると、次のエラーが発生します。

Typeerror:lambda()は正確に4つの引数を取ります(3つ指定)

これが私のコードです-私のエラーは、Scipyの最適化アルゴリズムを実装しようとしているコードの最後の行(私は思う)から来ていますfmin

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

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 が得られる曲線です。

ここに画像の説明を入力

私の間違いは何ですか?

0 投票する
0 に答える
332 参照

probability - Fokker-Planck: 2 方向の対流

私はフォッカー・プランク過程をシミュレートしようとしています。粒子は時間の一部 x で方向 A に移動し、(1-x) で方向 B に移動します。式を設定するにはどうすればよいですか? または、移流成分ごとに 1 つずつ、2 つのフォッカー プランク方程式を解き、それぞれの積を対応する分数で合計することは可能ですか?

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

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 ) . いずれにせよ、この微分方程式の解き方がわかりません。

どんなガイダンスでも大歓迎です。

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

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 に戻し、期待される出力を受け取るために私がしなければならないことを誰かが知っていますか? どうもありがとう!