問題タブ [integrator]
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.
max - Simulink で信号の最大値を見つける方法は?
信号の単一の最大値 (値が増加する) を積分器への入力として使用したいと考えています。max-min ブロックを試しましたが、最大値として単一の値を与えていません。また、モデルの 1 回の実行で、信号の最大値を simulink ブロックへの入力値として使用したくありません。Simulink で可能ですか?
積分器の初期状態を、78 から 280 ℃ に上昇する温度信号として与える必要があります。これは、時間とともに変化する可能性があります。別のブロックにも初期値として最大値(例:280)を入力したい。しかし、この増加するシグナルから最大値を取得することはできません。
matlab - モデル内のルックアップ テーブルが小さい振幅値に基づいている場合に、高い電流振幅を持つ入力を使用する方法は?
バッテリーをモデル化するために、モデルをいくつかの測定値に適合させようとしています。私のモデルの入力は電流で、出力はバッテリー端子の電圧です。モデルでいくつかの 3D ルックアップ テーブルを使用しています。
ブレークポイント (次元) は、SOC (充電状態)、温度、電流振幅、およびバッテリ回路要素のインピーダンス値のテーブル データです。
測定は、電流の非常に小さい値 (2 A の範囲) を使用して行われます。モデルを完成させた後、非常に高い電流振幅 (250 A の範囲) を含む電流入力の標準信号を使用して、モデルを検証することになっています。次に、モデルの出力(電圧)を、電流の標準信号を使用した測定からの出力と比較します。
モデルを実行しようとすると、積分器の 1 つで特異点エラーが発生します。これは、入力としての電流の振幅が大きいことが原因であると確信していますが、問題は、飽和ブロックなどを使用して振幅を制限できないことです。また、さまざまなソルバーで問題を解決しようとしましたが、問題を解決できませんでした。この問題を解決する方法を知っている人はいますか?
ここから私のファイルにアクセスしてください。
initialization - カスタム Simulink 離散時間積分器ブロック
台形則を使用して、Simulink で離散時間積分器の独自の単純な実装を設計しようとしていました。これは私の努力の結果です (時間積分間隔として 1 を使用していると考えてください):
次に、すべてが正しく行われたかどうかを再確認するために、結果を標準の Simulink 離散時間積分器ブロック (台形則を使用するように構成) と比較しましたもちろん):
時間 1 でステップを上昇させると、すべて正常に実行されます (カスタム インテグレーター ブロックとデフォルト インテグレーター ブロックの両方が初期条件として 0 を持っています)。
ステップが時間 0 で上昇している間、2 つの積分器ブロックの応答に違いがありました。
- カスタム ブロック: @ Integral(t=0)=0.5; @積分(t=1)=1.5
- デフォルトブロック: @ Integral(t=0)=0; @t=1 積分(t=1)=1
これは、t=0 と初期条件 = 0 の間を統合するカスタム ブロックに依存していると思います (つまり、0 と 1 の間に台形規則を適用すると、0.5 になります)。
これを修正し、カスタム ブロックがゼロ時間でもデフォルトのブロックと同じ動作を示すようにする最善の方法はどれですか? 不足しているパラメーター/設定はありますか?
ありがとうございました!
matlab - 固定小数点データ型の Matlab Simulink Discrete-Time Integrator ブロック
HDL でコンパイルして FPGA にフラッシュするコントローラーを Simulink で設計しました。したがって、Simulink が選択する標準の double ではなく、固定小数点スタイルで使用されるデータ型を定義する必要があります。
私が使用しているすべてのブロックは、離散時間積分器ブロックを除いて、データ型が変更された後も以前とまったく同じように動作しています (もちろん場合によっては精度は別として)。固定小数点データ型 (語長または小数部の長さに関係なく) では、出力値は減少するだけであり、データ型の下限値に達すると、上限値にジャンプして再び減少します。
違いを明確にするために画像を追加しました。double 型の積分器が使用され、2 番目の積分器は、データ型が同時にログに記録されたことを除いてまったく同じです。
私は何を間違っていますか?そして、どうすればこの問題を解決できますか?ありがとうございました!
algorithm - 2 次シンプレクティック指数適合積分器
電磁場の影響下で荷電粒子の運動方程式を解かなければなりません。精度よりも速度に対処する必要があるため、時間がかかりすぎるため、適応ステップサイズ アルゴリズム (Runge-Kutta Cash-Karp など) を使用できませんでした。私は、シンプレクティック (ボリス積分のような) と指数関数的に適合するアルゴリズム (方程式が堅くても運動方程式を解くため) を探していました。私は方法を見つけましたが、それは二次微分方程式用です:
https://www.math.purdue.edu/~xiaj/work/SEFRKN.pdf
後で、4次のシンプレクティックな指数関数的に適合されたルンゲ・クッタを説明する論文を見つけました。
http://users.ugent.be/~gvdbergh/files/publatex/annals1.pdf
私は速度に対処しなければならないので、低次のアルゴリズムを探していました。2 次シンプレクティック指数適合 ODE アルゴリズムは存在しますか?
python - Python インテグレーター: 時間列、データ列
次の結果があります。
最初の列は (シミュレーション) 時間です (等距離ではありません)。2 番目の列は kW での生産です。
ここで、総生産量を kWh で計算したい --> したがって、生産量を統合したいと考えています。Pythonでこれを行う簡単な方法はありますか(numpy?)?
どうぞよろしくお願いいたします。