問題タブ [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.
c++ - odeint のタグ システムを使用して、さまざまな種類のステッパーに対して特定の作業を行う方法
odeint のステッパー クラスでいくつかの作業を実行できるテンプレート化されたクラスがあり、それをステッパーのカテゴリごとに特定の (異なる) 作業にしたいと考えています。
問題は、次のコンパイラ エラーが発生することです。
error C2244: 'foo<Stepper>::do_specific_work' : unable to match function definition to an existing declaration
`
などのメソッドが実装されているのと同じ方法で実行しようとしましたがintegrate_adaptive
、私の場合との違いは、それらがスタンドアロン関数 (クラスのメンバーではない) であり、前方宣言を必要としないことです。必要なものを達成するためにコードを変更する方法は? 前もって感謝します!
c++ - 変化が一定の OdeInt を使用したスティッフ システム
私は Integrate_adaptive と統合したい堅いシステムと (boost::) odeint からの制御された rosenbrock4 ステッパーを持っています。
ほとんどの条件では、最初のステップを適切に予測できますが、「確実に」失敗する場合もあります。
問題は、1 つの変更が定数に依存することだと思います。
状態への依存はヤコビアンに現れますが、C にはありません。しかし、C は大きな影響を与える可能性があります。ステッパーに C の影響を知らせる方法はありますか?
私が得るエラーを明確にするために:
別の推測では、States[0] と他の状態の大きさが異なることが原因です。
私は構造的な例を挙げようとしましたが、完全な例は大きすぎて、すべての要素が 1 に設定されています。
C
場合によっては、states
それに応じてヤコビアンが設定されます。
c++ - gcc 4.8 で icc 14.01 を使用すると、std::bind でエラーが発生するのはなぜですか?
この短いコードのコンパイルに問題があります。
更新: 同じエラーを生成するはるかに単純なコード フラグメントがありますが、古いものは投稿の最後に表示されます。
私はそれがうまくコンパイルできる1台のコンピューターを持っています:
このコンピュータでは両方
と
仕事。
別のコンピューターで
動作しますが、
次のエラー メッセージが表示されます。
古いコード:
エラーメッセージ:
これはboost::odeintに固有のものではなく、std::bind、std::functionなどを使用するときに発生する奇妙なコンパイラの問題だと感じています(これは本当で、投稿の上部にある新しいコードを参照してください)
c++ - C++ Boost odeint ライブラリを使用した 2 次微分方程式
boost c++ odeint ライブラリを使用して、次のように定義された 2 次微分方程式を解くことは可能ですか?
ここで、x の初期値は、0 から 2*pi までの一様に生成された N 個の乱数のベクトルまたは配列です。odeint の runge_kutta ステッパーを使用して上記の方程式を統合したいですか?
eqnの上に書くことで解決できます。2つの一次微分方程式で、しかしその場合、odeintステッパーはどのように書かれたり修正されたりするでしょうか?
c++ - odeint を使用した単純な 2D システム (配列を使用) がコンパイルされない
ブースト1.55でMint 12でg ++ 4.7を実行しています。私は odeint で ode の単純な 2d システムを解決しようとしています - ここで 1d の例に従ってください: 1d。1d の例は、元のバージョンと回答の修正バージョンの両方で問題なくコンパイルされます。ここで、2D システムが必要で double[2] を使用すると、うまくいきません。
エラーメッセージはめちゃくちゃですが、次で終わります:
/usr/include/boost/numeric/odeint/algebra/range_algebra.hpp:129:47: エラー: 配列を返す関数
配列 double[2] は問題ですか? そして、どうすれば修正できますか?おそらくベクトルを使用していますか?ちなみに両方使ってみた
1dの回答で提案されているとおりですが、役に立ちません。また、古いブーストを搭載した古いマシン(どのバージョンかは覚えていません)では、すべてが問題なくコンパイルされたことにも言及する必要があります。ご提案ありがとうございます。
python - 関数 scipy odeint 内の初期条件を変更する方法
微分方程式を解こうとすると、初期条件が以前とは異なることがわかりました。初期条件は :f(0)=0,f'(a)=0
で、条件とは異なりますf(0)=0,f'(0)=b
関数 odeint パラメータ
y0 : array
y の初期条件 (ベクトルにすることができます) (scipy.org による引用)
初期条件 y0 を変更するにはどうすればよいですか?
c++11 - boost odeint を使用した正確な多次元積分
boost odeint を使用して高精度で多次元積分を計算するための推奨される方法は何ですか? 次のコードは、f=x*y を -1 から 2 に統合しますが、解析解に対する誤差は 1 % を超えています (gcc 4.8.2、-std=c++0x):
プリント:
内部積分でより厳しい停止条件を使用する必要がありますか、これを行うためのより高速で正確な方法はありますか? ありがとう!