WSMLink`
WSMLink`

WSMSimulate

WSMSimulateは,バージョン11.3で試験的に導入されたSystemModelSimulateに置き換えられた.

WSMSimulate["mmodel"]

試行の設定に基づいて"mmodel"のシミュレーションを行う.

WSMSimulate["mmodel",tmax]

0から tmaxまでシミュレーションを行う.

WSMSimulate["mmodel",{tmin,tmax}]

tminから tmaxまでのシミュレーションを行う.

WSMSimulate["mmodel",vars,{tmin,tmax}]

変数 vars についてのシミュレーションデータのみを保存する.

詳細とオプション

  • WSMSimulateWSMSimulationDataオブジェクトを返す.
  • "mmodel"は完全修飾Modelica名について言及する.
  • WSMNames["*.mmodel"]が一意的なマッチを与えるところでは,最短の一意的なモデル名 mmodel を使うことができる.
  • 保存されたシミュレーション変数 vars は以下の値を持つことができる.
  • Automatic何を保存するか自動的に選択する
    {v1,v2,}変数 viのみを保存する
    All全変数を保存する
  • 使用可能なオプション:
  • InterpolationOrderAutomaticイベント間の出力の連続次数
    MethodAutomaticどのシミュレーションメソッドを使うか
    WSMInitialValuesAutomatic初期値を無効にする
    WSMInputFunctionsAutomatic入力値を無効にする
    WSMParameterValuesAutomaticパラメータ値を無効にする
    WSMProgressMonitorAutomatic進捗表示を制御する
  • 通常,オプション設定をAutomaticにすると,設定値が"mmodel"あるいはその試行設定から取られるようになる.
  • WSMParameterValuesあるいはWSMInitialValues{pi->{c1,c2,},}に設定すると,picjの値を取って,シミュレーションが並列実行される.
  • WSMInitialValuesは,Modelicaモデルの start プロパティに相当する.
  • WSMInputFunctions->{"var1"->fun1,}funi[t]を時間 t における vari の入力値として使う.
  • MethodMethod->"method"あるいはMethod->{"method","sub1"->val1,}の形式を取る.
  • 次の適応的ステップ法を使うことができる.
  • "DASSL"DASSL微分代数方程式ソルバ
    "CVODES"CVODES常微分方程式ソルバ
  • 適応的ステップ法のサブオプション:
  • "InterpolationPoints"Automatic補間点の数
    "Tolerance"10^-6適応的ステップサイズの許容範囲
  • 次の固定ステップ法を使うことができる.
  • "Euler"階数1の明示的オイラー法
    "Heun"階数2のHeun法
    "RungeKutta"階数4の明治的ルンゲ・クッタ法
  • 固定ステップ法のサブオプション:
  • "StepSize"10^-3固定刻み幅
  • Method->{"NDSolve",sub1->val1,}とすると,ソルバとしてNDSolveが使われる.メソッドオプション subiNDSolveに渡される.

例題

すべて開くすべて閉じる

  (4)

Wolfram SystemModeler Linkをロードする:

エクスペリメント設定から時間間隔のあるモデルのシミュレーションを行う:

電圧オフセットでパラメータスイープを行う:

すべてのシミュレーションについて電圧をプロットする:

モデルの図表示を入力として使う:

上記の出力をコピーペーストする:

スコープ  (13)

シミュレーションの時間  (4)

モデルの設定を使ってシミュレーションを行う:

時間0から5までのシミュレーションを行う:

明示的な時間間隔でシミュレーションを行う:

Quantityを使って時間間隔を指定する:

変数とパラメータ  (5)

異なるパラメータでモデルのシミュレーションを行う:

デフォルトのパラメータを使う:

パラメータを設定する:

各シミュレーション間で変数capacitor1.v^(')を比較する:

変数の初期値はWSMInitialValuesオプションで設定することができる:

パラメータ値はWSMParameterValuesオプションで設定することができる:

指定された入力でモデルのシミュレーションを行う:

2つの入力を追加するモデルのシミュレーションを行う:

入出力をプロットする:

選択した変数のみを保存する:

指定された変数のみが保存される:

シミュレーションの結果  (4)

モデルのシミュレーションを行い,変数x1x2をプロットする:

モデルのシミュレーションを行う:

変数xx'について,シミュレーションの結果を得る:

Plot関数を使って変数をプロットする:

モデルのシミュレーションを行い,最大電圧を求める:

変数angle1vの値を求める:

角度の最大値を求める:

シミュレーションを実行し,プロットする:

WSMSimulateの引数を指定する:

一般化と拡張  (1)

デバッグメッセージはメッセージグループの"WSMLinkDebug"に集められる:

初期化のデバッグメッセージをオンにする:

WSMLinkに関するすべてのデバッグメッセージをオフにする:

オプション  (17)

InterpolationOrder  (1)

補間次数1および3,補間点3でシミュレーションを行う:

x変数を示す:

Method  (8)

固定ステップのソルバを使う:

結果をプロットする:

適応的ステップのソルバを使う:

結果をParametricPlotで示す:

硬い問題については,適応的ステップ法を使う:

補間点が少なすぎる場合のシミュレーションでは不正確なプロットになることがある:

補間点を増やすと結果が向上する:

固定ステップソルバのデフォルトの刻み幅は,必要よりも小さいことがある:

刻み幅を大きくすると計算が速くなる:

結果は同等である:

適応的ソルバにソルバの刻み幅を選ばせる:

モデルのシミュレーションにNDSolveを使う:

結果は,シミュレーションの結果を含むWSMSimulationDataオブジェクトである:

オプションをNDSolveに渡す:

オプションのために確度は低くなる:

WSMInitialValues  (2)

変数xについての変更された初期値でプロットする:

変数xの異なる初期値についてプロットする:

すべてのシミュレーションからの変数xをプロットする:

WSMInputFunctions  (2)

与えられた入力を使ってモデルのシミュレーションを行う:

入力を導くモデルのシミュレーションを行う:

入出力をプロットする:

TimeSeriesを入力として,モデルのシミュレーションを行う:

時系列オブジェクトを定義する:

モデルのシミュレーションを行う:

入出力をプロットする:

WSMParameterValues  (3)

2つのパラメータ値を変える:

シミュレーションの結果のパラメータを確かめる:

電圧のオフセットに対してパラメータの掃引を行う:

すべてのシミュレーションについて電圧をプロットする:

2つのパラメータの範囲を設定すると,範囲内の各位置について1回のシミュレーションが行われる:

WSMProgressMonitor  (1)

WSMProgressMonitorで進捗ダイアログをオフにする:

アプリケーション  (11)

タンクシステムについて,高さのオーバーシュートを計算する:

ピークの最大値を求める:

タンクに送られたステップの値を得る:

オーバーシュートを計算する:

オーバーシュートを示す:

タンクシステム内の高さについて,立ち上がり時間を計算する:

高さについての定常状態の値を見ることで,10%および90%における必要値を得る:

信号がこれらの値に到達する時間を求める:

立ち上がり時間を計算する:

最終的な値,および信号が最終的な値の10%および90%に到達した時における線をプロットする:

タンクシステムにおける高さの設定時間を計算する:

最終的な値の5%境界を求める:

信号がこれらの値内に収まる時間を求める:

境界と求まった設定時間をプロットする:

パラメータ値をインタラクティブに変更する:

輪の軸に沿った異なる初期慣性で,回転する輪のシミュレーションを行う:

輪の軌跡を取り出す:

軌跡をプロットする:

パラメータを変えた際の共鳴のピークを分析する:

異なるバネ定数を使ってシミュレーションを行う:

からTemplateBox[{{H, (, {ⅈ,  , omega}, )}}, Abs]を計算する:

共鳴のピークを示す:

測定データを比較することで,モデル内のパラメータを調べる:

モデルのフィットのための基準関数を設定する:

パラメータをテストデータにフィットする:

フィットされたパラメータでシミュレーションを行う:

テストデータと検査されたモデルを一緒に示す:

Tinker Forge Weather Stationからのサンプルデータにフィルタをかける:

時間をシフトさせ,データの大きさを取り出す:

ローパスフィルタを通して時系列を実行する:

サウンドおよび入力を伴うローバスフィルタのシミュレーションを行う:

入力サウンドを定義する:

与えられた入力サウンドでシミュレーションを行う:

出力を取り出し,比較のために両方を再生する:

ニュートンのゆりかごのシミュレーションを行う:

結果から軌跡を取り出す:

ゆりかごを可視化する:

WaveletScalogramでシミュレーションされたデータを可視化する:

モデルのシミュレーションを行う:

興味のあるデータを抜き出す:

ウェーブレット変換を計算する:

ウェーブレットベクトル係数をプロットする:

特性と関係  (4)

出力形WSMSimulateWSMSimulationDataオブジェクトである:

プロパティを使って変数の軌跡を得る:

WSMSimulateSensitivityを使ってパラメータに対する感度も得る:

コンデンサの電圧感度を"sineVoltage1"の周波数に対してプロットする:

WSMParametricSimulateをさまざまな値について評価可能な関数に使う:

周波数パラメータのさまざまな値についての解を計算する:

解を時間上にプロットする:

WSMRealTimeSimulateを使い,リアルタイムでモデルのシミュレーションを行う:

リアルタイムでプロットを示す:

シミュレーションを開始する:

おもしろい例題  (1)

Van der Polモデルを使う:

シミュレーションを行い,パラメトリックプロットで示す: