主要内容gydF4y2Ba

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。gydF4y2Ba

代数ループの概念gydF4y2Ba

金宝app®gydF4y2Baモデルでは,gydF4y2Ba“代数ループ”gydF4y2Baは,信号ループがループ内の直達ブロックによってのみ存在しているときに発生します。gydF4y2Ba"直達"gydF4y2Baとは,金宝app仿真软件で現在のタイムステップで出力を計算するためには,そのブロックの入力信号の値が必要であることを意味します。このような信号ループでは,同じタイムステップ内においてブロックの出力と入力の間に循環依存関係が生じます。その結果,各タイムスステップで解を求める必要のある代数方程式が生成され,シミュレーションの計算コストが高まります。gydF4y2Ba

直達入力をもつブロックには,いくつかの例があります。gydF4y2Ba

"非直達"gydF4y2Baブロックの場合は,状態変数が維持されます。2つの例として,gydF4y2Ba积分器gydF4y2BaとgydF4y2Ba单位延迟gydF4y2Baがあります。gydF4y2Ba

ヒントgydF4y2Ba

ブロックに直達があるかどうかを判断するには,ブロックのリファレンスページのgydF4y2Ba[特性]gydF4y2Baセクションを参照します。gydF4y2Ba

次の図は,代数ループの例を示しています。gydF4y2Ba总和gydF4y2Baブロックは,最初の入力uからxgydF4y2Ba一个gydF4y2Baを引いた値に等しくなるように制約されている代数変数xgydF4y2Ba一个gydF4y2Ba(たとえば,gydF4y2BaxgydF4y2Ba一个gydF4y2Ba= u - xgydF4y2Ba一个gydF4y2Ba)です。gydF4y2Ba

この単純ループの解はgydF4y2BaxgydF4y2Ba一个gydF4y2Ba= u / 2gydF4y2Baです。gydF4y2Ba

数学的な解釈gydF4y2Ba

金宝app仿真软件には,gydF4y2Ba“常微分方程式(ODE)”gydF4y2Baのシミュレーションに使用する一連の数値ソルバーが含まれています。常微分方程式は次のように表現される連立方程式です。gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

ここでxは状態ベクトルで,tは独立時間変数です。gydF4y2Ba

連立方程式には,状態ベクトルの微分係数ではなく,独立変数と状態ベクトルに関する追加の制約を含むものがあります。このような方程式をgydF4y2Ba“微分代数方程式(DAE)”gydF4y2Baと呼びます。gydF4y2Ba

"代数"gydF4y2Baは微分係数を含まない方程式を意味します。工学で使用されるDAEは,以下のような半陽的な形式で表現できます。gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 0gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

ここで,gydF4y2Ba

  • fgydF4y2BaとgydF4y2BaggydF4y2Baはベクトル関数の場合があります。gydF4y2Ba

  • 最初の方程式は微分方程式です。gydF4y2Ba

  • 2番目の方程式は代数方程式です。gydF4y2Ba

  • 微分方程式の変数のベクトルはgydF4y2BaxgydF4y2Baです。gydF4y2Ba

  • 代数方程式の変数のベクトルはgydF4y2BaxgydF4y2Ba一个gydF4y2Baです。gydF4y2Ba

金宝app仿真软件モデルでは,代数ループは代数制約です。代数ループをもつモデルは微分代数方程式を定義します。金宝app仿真软件は颂歌ソルバーの各ステップで代数方程式(代数ループ)をxgydF4y2Ba一个gydF4y2Baに関して数値的に解きます。gydF4y2Ba

この図のgydF4y2BaモデルgydF4y2Baは,この半陽的な方程式系と等価です。gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba 0gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba −gydF4y2Ba xgydF4y2Ba +gydF4y2Ba ugydF4y2Ba −gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba .gydF4y2Ba

ODEソルバーの各ステップでは,gydF4y2Ba xgydF4y2Ba ˙gydF4y2Ba の微分係数を計算する前に,代数ループソルバーでxgydF4y2Ba一个gydF4y2Baに関する代数制約を解かなければなりません。gydF4y2Ba

物理的な解釈gydF4y2Ba

代数制約:gydF4y2Ba

  • 物理的なシステムのモデル化で発生します。多くの場合,質量とエネルギーの保存などの保存法則に関係して発生します。gydF4y2Ba

  • モデルに特定の座標系を選択すると発生します。gydF4y2Ba

  • 動的システムにおいてシステム応答に設計制約を課すことができます。gydF4y2Ba

Simscape™を使用して,物理ネットワークとしての機械,電気,油圧、その他の物理領域にまたがるシステムをモデル化します。Simscapeは,モデルの動作を特徴付けるDAEを作成します。ソフトウェアは,これらの方程式をモデルの他の部分と統合してから,DAEを直接解きます。金宝app仿真软件は異なる物理領域のコンポーネントの変数を同時に解いて,代数ループの問題を回避します。gydF4y2Ba

疑似代数ループgydF4y2Ba

原子子系统または模型ブロックによって仿真软件が代数ループを検出する設定に金宝appなっているときは,サブシステムの内容に入力から出力への直達が含まれていない場合であっても,gydF4y2Ba“疑似代数ループ”が発生します。原子子系统を作成するときは,すべての尺寸ブロックは直達となるため,代数ループが発生します。gydF4y2Ba

まず,含められたモデルで考えてみましょう。このモデルの表すプラントのシンプルな比例制御は,次の式で表されます。gydF4y2Ba

$ frc {1}{s^2+2s+1}$ frc {1}{s^2+2s+1gydF4y2Ba

これは,次のような状態空間形式で書き直すことができます。gydF4y2Ba

$ $ & # xA;左\点{x} = \ [& # xA;开始\{数组}{cc} & # xA;2 38 & #;1 \ \ & # xA; 1 & # 38;0 xA & #;结束\{数组}& # xA;正确\]& # xA; + \离开(& # xA; \开始{数组}{c} & # xA; 0 \ \ 1 & # xA;结束\{数组}& # xA; \右)& # xA; $ $gydF4y2Ba

左$ $ & # xA; y = \[开始\{数组}{cc} 0 & # 38; 1 \结束数组{}\]& # xA; $ $gydF4y2Ba

この方程式は,代数変数も直達ももたず,代数ループももちません。gydF4y2Ba

以下の手順に従って,モデルを変更します。gydF4y2Ba

  1. サブシステムに控制器ブロックと植物ブロックを含めます。gydF4y2Ba

  2. 子系统ダイアログボックスで,gydF4y2Ba(原子サブシステムとして扱う)gydF4y2Baを選択してサブシステムを原子にします。gydF4y2Ba

  3. [モデルコンフィギュレーションパラメーター]のgydF4y2Ba[診断]gydF4y2Baペインで,gydF4y2Ba(代数ループ]gydF4y2Baパラメーターを[gydF4y2Ba错误gydF4y2Ba]に設定します。gydF4y2Ba

このモデルをシミュレーションすると,原子子系统内のパスは直達ではありませんが,サブシステムが直達であるために,代数ループが発生します。シミュレーションは代数ループエラーで停止します。gydF4y2Ba

代数ループソルバーの動作gydF4y2Ba

モデルに代数ループが含まれている場合,金宝app仿真软件は各タイムステップで非線形ソルバーを使って代数ループの解を求めます。ソルバーは反復処理を実行し,その代数制約の解がある場合はそれを決定します。その結果,代数ループをもつモデルは,もたないモデルよりも実行が遅くなります。gydF4y2Ba

金宝app仿真软件は,狗腿信頼領域アルゴリズムを使用して,代数ループの解を求めます。使われる許容誤差は,颂歌ソルバーgydF4y2BaReltolgydF4y2BaとgydF4y2BaAbstolgydF4y2Baより小さくなります。これは,金宝app仿真软件が“明示的颂歌メソッド”を使って,インデックスが1の微分代数方程式(DAE)を解くためです。gydF4y2Ba

代数ループソルバーが機能するには,gydF4y2Ba

  • ループソルバーによってループを切断してループを解くことができるブロックが1つ存在していなければなりません。gydF4y2Ba

  • モデルは実数の倍精度信号でなければなりません。gydF4y2Ba

  • 基本となっている代数制約は平滑化関数でなければならない。gydF4y2Ba

たとえば,モデルに2つの入力(1つは加算,もう1つは減算)をもつ总和ブロックがあるとします。总和ブロックの出力を入力の 1 つに接続した場合、すべてのブロックが直達を含んでいる代数ループが形成されます。

总和ブロックは入力が不明であれば出力を計算できません。金宝app仿真软件は代数ループを検出し,ソルバーは反復ループを使用して解を求めます。总和ブロックの例では,次のようにして正しい解が計算されます。gydF4y2Ba

xgydF4y2Ba一个gydF4y2Ba(t) = u(t) / 2gydF4y2Ba (1)gydF4y2Ba

代数ループソルバーは勾配に基づいた検索方法を使用します。この方法では,代数ループに対応する代数制約について連続の1次導関数が必要になります。その結果,代数ループに不連続性が含まれる場合には,代数ループソルバーが失敗する可能性があります。gydF4y2Ba

詳細については,gydF4y2Ba用MATLAB和Simulink求解Index-1 DAEs金宝appgydF4y2Baを参照してください。gydF4y2Ba[gydF4y2Ba1gydF4y2Ba]gydF4y2Ba

代数ループソルバーのアルゴリズム:信頼領域法とライン探索法gydF4y2Ba

金宝app仿真软件代数ループソルバーは次の2つのアルゴリズムのいずれかを使って代数ループの解を求めます。gydF4y2Ba

  • 信頼領域法gydF4y2Ba

  • ライン探索法gydF4y2Ba

既定では,金宝app仿真软件が最適な代数ループソルバーを選択し,シミュレーション中にこの2つの方法を切り替える場合があります。モデルの自動代数ループソルバーの選択を明示的に有効にするには,MATLABgydF4y2Ba®gydF4y2Baコマンドラインで次を入力します。gydF4y2Ba

set_param (model_name“AlgebraicLoopSolver”、“汽车”);gydF4y2Ba

信頼領域法アルゴリズムに切り替えるには,MATLABコマンドラインで次のように入力します。gydF4y2Ba

set_param (model_name ' AlgebraicLoopSolver ', ' TrustRegion ');gydF4y2Ba

代数ループソルバーが信頼領域アルゴリズムで代数ループの解を見つけることができない場合,他のアルゴリズムを使ってモデルのシミュレーションを試すことができます。gydF4y2Ba

ライン探索法アルゴリズムに切り替えるには,MATLABコマンドラインで次のように入力します。gydF4y2Ba

set_param (model_name ' AlgebraicLoopSolver ', ' LineSearch ');gydF4y2Ba

詳細については,以下を参照してください。gydF4y2Ba

代数ループソルバーの限界gydF4y2Ba

代数ループの解を求める処理は反復処理です。金宝app仿真软件の代数ループソルバーは代数ループが一定値に収束しなければ解くことができません。ループが収束しない,または収束が遅過ぎる場合は,シミュレーションはエラーを出して終了します。gydF4y2Ba

代数ループソルバーは次の項目を含む代数ループを解くことはできません。gydF4y2Ba

  • 離散値の出力をもつブロックgydF4y2Ba

  • 倍精度以外の出力または複素数の出力をもつブロックgydF4y2Ba

  • 不连续gydF4y2Ba

  • StateflowgydF4y2Ba®gydF4y2BaチャートgydF4y2Ba

モデル内の代数ループの影響gydF4y2Ba

モデルに代数ループが含まれている場合。gydF4y2Ba

  • モデルのコードを生成できません。gydF4y2Ba

  • 金宝app仿真软件代数ループソルバーが代数ループを解けない場合があります。gydF4y2Ba

  • 金宝app仿真软件が代数ループを解こうとする間,シミュレーションの速度が低下する可能性があります。gydF4y2Ba

    ほとんどのモデルでは,代数ループソルバーは最初のタイムステップで多くのリソースを計算に費やします。後続のタイムステップでは,良好なxgydF4y2Ba一个gydF4y2Baの開始点を前のタイムステップから利用できるので,仿金宝app真软件ソルバーは短時間で解を出します。gydF4y2Ba

参考gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

関連するトピックgydF4y2Ba


[gydF4y2Ba1gydF4y2Ba]gydF4y2Ba香品,劳伦斯·F, m·w·雷切特和j·a·基尔赞卡"在MATLAB和Simulink中求解Index-1 DAEs。金宝appgydF4y2Ba暹罗。gydF4y2Ba研究概述,第三,1999年,pp.538 - 552。gydF4y2Ba

[gydF4y2Ba2gydF4y2Ba]gydF4y2Ba更多,j,狗屁Garbow, K.E.Hillstrom。gydF4y2BaMINPACK-1的用户指南gydF4y2Ba.阿贡,IL:阿贡国家实验室,1980。gydF4y2Ba

[gydF4y2Ba3.gydF4y2Ba]gydF4y2BaRabinowitz,菲利普。gydF4y2Ba非线性代数方程的数值方法gydF4y2BaGordon和Breach Science Publishers, 1970年。gydF4y2Ba