Main Content

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

スパース モデルの基礎

モデル オブジェクト

sparss オブジェクトと mechss オブジェクトを使用して、スパースな 1 次システムと 2 次システムをそれぞれ表します。このようなスパース モデルは有限要素解析 (FEA) から発生し、構造解析、流体の流れ、熱伝達、電磁などの分野で役立ちます。FEA には有限要素法 (FEM) を使用した問題の解析が含まれます。この方法では、大規模なシステムが多数の小さいコンポーネントまたは有限要素 (FE) に分割され、その後、個別に解析されます。これらの多数のコンポーネントを組み合わせると大規模なスパース モデルになり、ss などの従来の密なモデル オブジェクトで表現するには計算量が多く、非効率的です。

スパース行列は大部分がゼロの double または logical データの効率的なストレージを提供します。非スパース行列 (密行列) は、値に関係なく個々の要素をメモリに保存しますが、スパース行列は 0 以外の要素とその行インデックスだけを保存します。このため、スパース行列を使用すると、データ ストレージに必要なメモリ量を大幅に削減できます。詳細については、スパース行列の計算上の利点を参照してください。

次の表は、表現できるスパース モデルのタイプを示しています。

モデル タイプ数学的表現モデル オブジェクト
連続時間スパース 1 次モデル

Edxdt=A x(t)+B u(t)y(t)=C x(t)+D u(t)

sparss
離散時間スパース 1 次モデル

E x[k+1]=A x[k]+B u[k]y[k]=C x[k]+D u[k]

sparss
連続時間スパース 2 次モデル

q¨(t)+q˙(t)+q(t) = B u(t)y(t) = F q(t)+q˙(t)+u(t)

mechss
離散時間スパース 2 次モデル

q[k+2]+q[k+1]+q[k] = B u[k]y[k] = F q[k]+q[k+1]+u[k]

mechss

sparssdata および mechssdata を使用してスパース形式のモデル行列にアクセスできます。spy (sparss)spy (mechss) などのコマンドを使用して 1 次および 2 次モデル行列のスパース性をそれぞれ可視化することもできます。

また、任意の非 FRD モデルを sparss または mechss オブジェクトにそれぞれ変換することもできます。逆に、full コマンドを使用すると、スパース モデルを密度の高いストレージ ss に変換できます。大規模なスパース モデルでは、密度の高いストレージに変換するとメモリ使用量が大きくなりパフォーマンスが低下するため推奨されません。

スパース モデルの組み合わせ

信号ベースの接続

モデルの相互接続にリストされている標準の信号ベースの接続はすべて、スパース モデル オブジェクトでサポートされています。信号を使用する相互接続モデルでは、制御システム用のモデルを作成できます。制御システムは、フィードバック構成で接続されているプラントやコントローラーなど、複数の相互接続されたコンポーネントを含んでいるブロック線図として概念化できます。モデル演算または相互接続コマンドを使用して、これらの各コンポーネントのモデルを 1 つのモデルに統合し、ブロック線図で全体を表現します。

sparss モデルの接続の直列接続とフィードバック接続では、内部信号を取り除くと、A 行列に望ましくない非スパース要素が発生します。これを回避するために、A のスパース性に影響しない信号のみが取り除かれ、残りの信号は状態ベクトルに追加されます。通常、これにより、A 行列に次の図に示すブロック矢印構造がある相互接続の微分代数方程式 (DAE) モデルが生成されます。

ここでは、各対角ブロックはスパース モデルのサブコンポーネントです。最後の行と列は Interface グループと Signal グループを組み合わせてコンポーネント間のすべての結合と接続を取得します。

2 次 mechss モデル オブジェクトに対しても同様の規則が適用されます。showStateInfo を使用して、コンポーネント、インターフェイス、および信号に対する状態ベクトルの分割の概要を出力できます。

xsort コマンドを使用して、状態の分割に基づいて状態を並べ替えます。並べ替えられたモデルでは、すべてのコンポーネントが最初に表示され、インターフェイスが続き、その後にすべての内部信号の単一グループが続きます。

例については、sparss および mechss のリファレンス ページを参照してください。

物理結合

interface コマンドを使用して mechss モデルのコンポーネント間の物理的インターフェイスを指定できます。interface "双対アセンブリ" 形式を使用し、自由度 (DoF) のグローバル セットが保持され、g がインターフェイスの力、λ がラグランジュ乗数である平衡条件 g=BTλ を満たすことでアセンブリが作成されます。ラグランジュ乗数は物理的なインターフェイスで DoF を接続するインターフェイスの力を表します。互換性を一致させるために、2 番目の方程式がシステムに追加され、変位を処理するようになります。

M q¨+C q˙+Kq+BTλ=f,        Bq=0

詳細については、interface およびモデル コンポーネントの剛体アセンブリを参照してください。

タイプが異なるモデルの組み合わせ

次の優先順位ルールは、タイプが異なるモデルを組み合わせるときに適用されます。

  • スパース モデルを FRD モデルと組み合わせると frd モデル オブジェクトが生成される

  • スパース モデルを tfss、および zpk などの任意の非 FRD モデルと組み合わせるとスパース モデル オブジェクトが生成される

  • sparss モデルと mechss モデルを組み合わせると mechss モデル オブジェクトが生成される

  • 現在、スパース モデルを一般化モデルまたは不確かさを持つモデルである genss および uss (Robust Control Toolbox) と組み合わせることはできない

例については、mechss のリファレンス ページを参照してください。

時間領域解析

時間領域および周波数領域解析にリストされている標準の時間領域解析関数はすべて、sparss モデル オブジェクトと mechss モデル オブジェクトでサポートされています。

スパース モデルに対する周波数応答関数の周波数のベクトルを指定しなければなりません。以下に例を示します。

tf = 10;
step(sys,tf)

t = 0:0.001:1;
initial(sys,x0,t)

時間応答関数は、特に大規模なスパース モデル用に開発されたカスタムの固定ステップ DAE ソルバーに依存します。DAE ソルバー タイプを構成し、sparss モデル オブジェクトと mechss モデル オブジェクトの SolverOptions プロパティを使用することで並列計算を有効化できます。各入力チャネルの応答は並列でシミュレーションされるため、並列計算は多入力モデルに対する step または impulse 応答シミュレーションを加速するために使用できます。並列計算の有効化には Parallel Computing Toolbox™ ライセンスが必要です。

使用可能なソルバー オプションを、次の表に示します。

DAE ソルバー説明使用方法
'trbdf2'[2]精度が o(h^2) の固定ステップ ソルバー。ここで、h はステップ サイズです。'trbdf2''hht' より 50% 計算量が多くなります。これは sparss モデルと mechss モデル両方に対する既定の DAE ソルバー オプションです。sparss モデルと mechss モデルの両方で使用できます。
'trbdf3'精度が o(h^3) の固定ステップ ソルバー。'trbdf3''trbdf2' より 50% 計算量が多くなります。sparss モデルと mechss モデルの両方で使用できます。
'hht'[1]精度が o(h^2) の固定ステップ ソルバー。ここで、h はステップサイズです。'hht' は最速ですが、システムのインパルス応答など、初期の加速度が高いと問題が発生する場合があります。mechss モデルでのみ使用可能です。

並列計算とソルバーの選択を有効にするには、次の構文を使用します。

sys.SolverOptions.UseParallel = true;
sys.SolverOptions.DAESolver = 'trbdf3';

例については、片持ちビームの過渡的なモデル化および線形解析を参照してください。

周波数領域解析

時間領域および周波数領域解析にリストされている標準の周波数領域解析関数はすべて、sparss モデル オブジェクトと mechss モデル オブジェクトでサポートされています。周波数応答計算の場合、並列計算を有効にすると、使用可能な複数のワーカー間で一連の周波数が分散され、応答計算が高速化されます。並列計算の有効化には Parallel Computing Toolbox ライセンスが必要です。

スパース モデルの周波数応答関数に対する最終時間または時間ベクトルを指定しなければなりません。以下に例を示します。

w = logspace(0,8,1000);
bode(sys,w)
sigma(sys,w)

例については、片持ちビームの過渡的なモデル化および線形解析を参照してください。

連続と離散の変換

c2dd2c および d2d を使用して連続時間と離散時間の間の変換を行い、sparss モデルをリサンプリングできます。次の表に、sparss モデルに使用可能な方法を示します。

メソッド説明使用方法
'tustin'双一次 (Tustin) 近似関数 c2dd2c および d2d で使用できます。
'damped'TRBDF2[2]式に基づいて減衰された (Tustin) 近似。'tustin' メソッドとは対照的に、このメソッドでは減衰が無限大に提供されます。つまり、高周波数のダイナミクスはフィルターで除外され、離散モデルで z = -1 に近いモードの累積に寄与しません (数値的不安定性の原因)。c2d でのみ使用できます。

メモ

現在、mechss モデルは連続と離散の変換ではサポートされていません。離散化に対しては sparss モデル形式に変換します。

スパース線形化

Descriptor State-Space (Simulink) または Sparse Second Order ブロックがある場合、Simulink® モデルからスパース線形化モデルを取得できます。

  • Sparse Second Order ブロックは常に mechss モデルに線形化されるように構成されます。その結果、線形化されたモデル全体は、このブロックが存在する場合に 2 次スパース モデルになります。

  • Descriptor State-Space (Simulink) ブロックで [スパース モデルに線形化します] オプションをオンにして sparss モデルを線形化します。これは、Descriptor State-Space (Simulink)LinearizerToSparse パラメーターを 'on' に設定して実行することもできます。既定では、[Linearize to sparse] ボックスはオフになっていて、LinearizerToSparse'off' です。ブロックレベルの LinearizeToSparse 設定は、SCDBlockLinearizationSpecification ブロック パラメーターまたは linearize (Simulink Control Design) に対する blocksub 入力のいずれかを使用してブロックの置換を指定すると無視されます。

例については、スパース 2 次モデル オブジェクトへの Simulink モデルの線形化を参照してください。

その他のサポートされる機能

また、以下の機能が現在、スパース モデルでサポートされています。

  • dcgain を使用した低周波ゲインの計算

  • evalfr および freqresp を使用した周波数応答の評価

  • inv を使用したモデルの反転

  • imp2exp を使用した暗黙的-明示的な関係の変換

  • pade を使用したパデ近似

  • 入力、出力、および内部遅延の指定

  • I/O の選択およびインデックス付け

制限

以下の操作は現在、スパース モデルでサポートされていません。

  • 極/零点および安定余裕の計算

  • 補償器の設計および調整

  • モデル次数の低次元化

full コマンドを使用して小規模なスパース モデルを密度の高いストレージ ss に変換し、前述の操作を実行します。大規模なスパース モデルで密度の高いストレージに変換すると利用可能なメモリが飽和し、パフォーマンスが大幅に低下する場合があるため、推奨されません。

スパース線形化には次の制限があります。

  • linearize (Simulink Control Design) オプション BlockReduction'off' に設定すると、モデルは常に密度の高い ss モデルに線形化されます。これは、この場合、ブロックの置換が無効になるためです。

  • スパース線形化は、調整可能なモデルまたは不確かさをもつモデルに関連するブロックの置換と互換性がありません。genss モデルまたは uss (Robust Control Toolbox) モデルに線形化する場合、[スパース モデルに線形化します] オプションをオフにしなければなりません。

  • Descriptor State-Space (Simulink) または Sparse Second Order ブロックが存在する場合、スナップショットの線形化は動作しない可能性があります。スナップショットの線形化にはシミュレーションが必要なため、シミュレーション機能は現在 Descriptor State-Space (Simulink) ブロックと Sparse Second Order ブロックに制限されています。

参照

[1] H. Hilber, T. Hughes & R. Taylor. " Improved numerical dissipation for time integration algorithms in structural dynamics." Earthquake Engineering and Structural Dynamics, vol. 5, no. 3, pp. 283-292, 1977.

[2] M. Hosea and L. Shampine. "Analysis and implementation of TR-BDF2." Applied Numerical Mathematics, vol. 20, no. 1-2, pp. 21-37, 1996.

参考

| | | | | | | | | | (Simulink) |

関連するトピック