問題タブ [odeint]

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 に答える
370 参照

boost - boost::numeric::odeint をスティッフ システムに使用すると、解析的なヤコビ行列を取得できない場合はどうなるでしょうか。

boost::numeric::odeint rosenbrock4 インテグレーターを使用しています。問題は、解析的ヤコビ行列を取得できないことです。これを修正する解決策はありますか?

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

python - ループとプロットでnumpy配列を設定する方法

scipy クックブックのコードを変更しようとしています

scipy クックブックは、いくつかの状態方程式を解いてから出力します。

scipy クックブックでは、プログラムを実行し、印刷物をファイルに保存する必要があります。

program.py > file.dat

次に、別のプロット関数でそのファイルからデータをロードする必要があります

作図前

t、x1、x2とプロットを設定したいだけです

誰でもその方法を教えてもらえますか?

これは私が変更しようとしているものです:

http://wiki.scipy.org/Cookbook/CoupledSpringMassSystem

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

c++ - odeint で不連続性を処理する方法

odeint を使用して不連続性を処理するための最良の (計算効率が高く、見栄えの良いコード) 方法を知りたいです。サンプルコードはありますか?

ロータリーエンコーダーによって角度がデジタル的に測定されるフィードバック制御モーターのようなものをシミュレートしています。ロータリー エンコーダの出力 y は、y=floor(angle) のようにモデル化できます。ここで、角度は実数です。

概念的には、何をすべきかはわかっています。シミュレーション中に、角度が整数値と交差する時間を見つけてから、前のステップに戻り、その交差時間まで積分し、不連続性に従って状態 y を調整し、同じ点から積分を再開する必要があります。時間。

いくつかのグーグルの後、私は以下のコードを見つけました。しかし、ライブラリで使用できる関数 make_const_step_time_range が見つかりません。

http://meetingcpp.com/tl_files/mcpp/slides/12/odeint.pdfの 18 ページ:

私はboost_1_54_0を使用しています。

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

odeint - odeint: 統合中に中間結果をログに記録するにはどうすればよいですか?

odeint による積分中に状態以外の値をログに記録する方法を知りたいです。全角運動量 L と内部車輪の運動量 h の微分方程式として記述される衛星ダイナミクスのシミュレーションがあります。シミュレーションは正しく実行されています。しかし、状態変数だけでなく、外部トルク (N) や角速度 (オメガ) などの他の値も記録する必要があります。これは、Jinv*L です。ここで、Jinv は 3x3 定数の衛星慣性行列です。ある意味で、私のシミュレーターの目的は L と h を計算することではなく、「他の」変数の時間履歴を生成することです。

私が何をしているのかを示すために、以下は現在のコードを少し簡略化したものです。

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

python - scipy.integrate.odeint を使用して ODE のシステムを解くときに実際のデータを組み込む

ODE のシステムで表され、scipy の odeint 関数を使用して解決される加熱システムの単純なモデルを構築しようとしています。

このモデルに「実際の」データ、たとえば外部温度 (以下の正弦波としてシミュレート) を組み込みたいと思います。以下のコードは、FindVal という関数を使用して実際のデータを odeint によって評価されるタイムスタンプに補間する、私の現在のソリューション/ハックを示しています。

これは非常に遅いので、これをより良い方法で行う方法についての提案を探しています。

これがコードです...

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

c++ - 導関数とヤコビアンを使用して odeint クラスをブーストする

MCMC ルーチンで Boost odeint ライブラリを使用して、ODE モデルのパラメーターを推定するつもりです。これらの ODE はスティッフな可能性があるため、導関数を使用してヤコビアンをソルバーに渡すことができる必要があります。パラメーターと初期値をプライベート メンバーとして持ち、派生、ヤコビアン、およびパラメーターを変更するメソッドをパブリック メソッドとして持つクラスを作成したいと考えています。odeint Web サイトの堅い例を変更して、両方を含む 1 つのクラスを使用しようとしましたが、コンパイル時に「エラー: 'Fitzhugh::deriv() への呼び出しに一致する関数がありません」というエラーが表示されます。私は経験豊富な C++ プログラマーではないので、これはおそらく概念的な間違いです。これがコードです。

ここに完全な出力があります

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

python - scipy odeint で numpy 配列を使用する

scipy を使用して常微分方程式系を解いています。簡単にするために、私のコードを次のようにします。

しかし今、定数「a」のいくつかの値についてこのシステムを解きたいと思います。したがって、たとえば a = -2.0 だけではなく、次のようにします。

a の各値についてシステムを解きます。配列の各要素をループせずにこれを行う方法はありますか? 一度に全部できますか?