問題タブ [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 に答える
5398 参照

python - lsoda警告を出すScipy odeint

私はコーディングがまったく初めてで、これらの 5 つの微分方程式を数値的に解きたいと思っています。Python テンプレートを使用して、自分のケースに適用しました。これが私が書いたものの簡略化されたバージョンです:

次のエラーが表示されます。

いくつかのパラメーターのセットについて、mxstepin odeint で遊んでみると (これも試しhminてみhmaxましたが違いに気づきませんでした)、エラーは解決しませんが、私のグラフは見栄えがよく、影響を受けていませんが、ほとんどの場合は影響を受けています。odeint オプションfull_output=1を指定して実行するように要求されるエラーが表示されることがあります。

検索しても意味がわかりません。

どこに問題があり、どのように解決するのかを理解したいと思います。odeint は私がやろうとしていることにも適していますか?

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

c++ - 「controld_runge_kutta」はクラス テンプレートではありません

これは、次のコードの既知のエラーです。

「controld_runge_kutta」はクラス テンプレートではありません

次のコードでは:

このエラーが発生する理由はわかっています。しかし、私の質問は、 146 行目のgithubの元のブースト ライブラリでどのように機能するかということです。

ありがとうございました。

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

python - Python odeint で配列を渡す

私はPythonを初めて使用するので、次の質問に「当たり前」の答えがある場合はすみません。

そのため、odeint を使用して ODE を解こうとしていて、配列を渡したいと考えています。しかし、 TypeError: can't duplicate sequence by non-int of type 'float' は次の行で発生し続けます:

したがって、コードは次のとおりです。

助けてください。

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

c++ - ブースト ODEINT における get_unit_value の役割

Boost ライブラリの次のコードでは、次のようになります。

...

の役割はget_unit_value私には不明です。それは何をするためのものか?何かを渡すと、同じ値が返されます。なぜ誰かがそれを構造にラップする必要があるのですか? 実行時間を遅くする以外に何かしますか?

このコードはここから呼び出されます:

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

python - odeint の許容範囲を変更しようとしましたが、「不正な入力が検出されました」と「無限ループ」が発生しました

次の微分方程式 y'' + a y' − y + by^3 = c cos(kx) が与えられ、初期条件は y(0) = y'(0) = 0 で、パラメーター値は a = 0.05、b = k = 1 および c = 0.5。

ここで、私がやろうとしているのは、前の反復からの数値解 y(t) の変化が x = x_max で 10^−8 未満になるまで、ソルバーの相対許容誤差を減らすことです。

これが私のコードです:

そして、私は出力を得ています:

異なるR1値で繰り返し...

「不正な入力が検出されました」と「明らかな無限ループ」が発生する理由がわかりません。後者は新しいもので、なぜそれが起こっているのかわかりません。

どんな助けでも大歓迎です。

PSフォーマットについては申し訳ありません。私はこれが初めてで、問題を見栄えよくするために変更する方法がわかりません。

-編集-

提案された「full_output = 1」を試し、Ydiffの5行目を次のように変更しました

そして、私は次のようなものを得るでしょう

また

とても奇妙です。今日、無限ループ エラーは発生しませんでしたが、これらのメッセージは引き続き表示されます。何が起こっているのかを確認するために、同じ行を次のように編集しました。

私は出力として得ました(「nje」が0であることに加えて):

可能であれば、これをどのように修正できるのだろうか。

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

python - odeint のボーデッド ローレンツ パラメーター

パラメータの 1 つが変調されるローレンツ ソリューションを作成しようとしています。

ローレンツ方程式の簡単なセットを作成する場合、odeint を使用するのは簡単です。

上記のコードは、単純なローレンツ システムを作成するのに完全に機能します。ここで、変調されたパラメーター ローレンツ システムを作成して、通信におけるその有効性を調べたいと思います。これは、パラメータ Beta を変調することで実行できます。Beta(t) は、「0」または「1」を表す 4.0 または 4.4 の 2 つの値のいずれかを取ることができます。

ベータを変調するために、ランダムな 1 と 0 を選択し、「1」または「0」あたり 500 サンプルで、それらをベータの 2 つの値 4.0 と 4.4 に割り当てました。

次に、パラメーターの odeint セットへの呼び出しを次のように変更しました。 param = [Sigma, Rho, Bauded_Beta]

これを実行すると、次のようなエラー メッセージが表示されます。 float の適切な配列ではありません。ValueError: 配列要素をシーケンスで設定しています。odepack.error: 関数呼び出しの結果は float の適切な配列ではありません。"

このエラーは、ベータ版が一定ではなくなったことによるものです。しかし、変調されたパラメーターを odeint に渡すにはどうすればよいですか?

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

c++ - Rcpp NumericalMatrix データ型、グローバル宣言

私は C++ にかなり慣れていないので、Rcpp 経由で使用して R コードを高速化しようとしています。

以下のコードは、t0 から t1 までを統合します。これは「lorenz」関数で行われます。Test4 は、「lorenz」「counts」回数を使用して統合します。ただし、時間「t1」で、システムが再実行される前にシステムの状態が「write_lorenz」で変更され、これが問題の場所です。Rからtest4を呼び出して同じプログラムを何度も実行すると、画面への出力は常に同じ結果になりますが、返された行列「u」はそうではなく、最終的に「t1」が何であるかに収束するようです問題。

入力値が変わらないので、メモリリークがあるのか​​、それとも何か他のことが起こっているのか、どうすれば修正できるのか疑問に思っています。また、「u」の初期化が正しくないので、「new」コマンドを使用する必要があるのではないかと考えています。

私が試したのは NumericMatrix* u = NULL; です。*u = 新しい NumericMatrix; 次に、たとえば *u(1,2) として行列の要素にアクセスしようとしましたが、この方法で要素にアクセスすると、u が関数ではないというエラーが発生しました。

どんな助けでも大歓迎です

このコードを次のサイトから変更しました

http://headmyshoulder.github.io/odeint-v2/examples.html

だから私はRcppでそれを使うことができました