SystemModelSimulateSensitivity[model,{p1,p2,…}]
エクスペリメント設定に基づいて,model とパラメータ piに対する感度のシミュレーションを行う.
SystemModelSimulateSensitivity[model,tmax,{p1,p2,…}]
0から tmaxまでシミュレーションを行う.
SystemModelSimulateSensitivity[model,{tmin,tmax},{p1,p2,…}]
tminから tmaxまでシミュレーションを行う.
SystemModelSimulateSensitivity[model,vars,{tmin,tmax},{p1,p2,…}]
変数 vars についてのシミュレーションデータのみを保存する.
SystemModelSimulateSensitivity
SystemModelSimulateSensitivity[model,{p1,p2,…}]
エクスペリメント設定に基づいて,model とパラメータ piに対する感度のシミュレーションを行う.
SystemModelSimulateSensitivity[model,tmax,{p1,p2,…}]
0から tmaxまでシミュレーションを行う.
SystemModelSimulateSensitivity[model,{tmin,tmax},{p1,p2,…}]
tminから tmaxまでシミュレーションを行う.
SystemModelSimulateSensitivity[model,vars,{tmin,tmax},{p1,p2,…}]
変数 vars についてのシミュレーションデータのみを保存する.
詳細とオプション
- SystemModelSimulateSensitivityは,システムモデルのパラメータ値を変更した場合のシミュレーション結果の変動の推定に使われる.
- model は以下の形にできる.
-
SystemModel[…] 一般的なシステムモデル StateSpaceModel[…] 状態空間モデル TransferFunctionModel[…] 伝達関数モデル AffineStateSpaceModel[…] アフィン状態空間モデル NonlinearStateSpaceModel[…] 非線形状態空間モデル DiscreteInputOutputModel[…] 離散入出力モデル - SystemModelSimulateSensitivityはSystemModelSimulationDataオブジェクトを返す.
- SystemModelSimulateSensitivityは,すべての実変数
について解
と,
のときの微分係数
,
, …を生成する. - 感度は,sd["SensitivityNames"]を使ってSystemModelSimulationDataオブジェクト sd にリストすることができる.
- 保存されたシミュレーション変数 vars は次の値を持つことができる.
-
Automatic 何を保存するか自動的に選択する {v1,v2,…} 変数 viのみを保存する All 全変数を保存する - SystemModelSimulateSensitivity[…,spec]は初期値,パラメータ,入力にAssociation specを使う.
-
"ParameterValues" {p1val1,…} パラメータ piは値 valiを持つ "InitialValues" {v1val1,…} 変数 viは初期値 valiを持つ "Inputs" {in1fun1,…} 入力 iniは時点 t で値 funi[t]を持つ - "ParameterValues"または"InitialValues"を{pi{c1,c2,…},…}に設定すると,pi が cjの値を取って,シミュレーションが並列で実行される.
- "InitialValues"はModelicaモデルの start プロパティに相当する.
- 次は,使用可能なオプションである.
-
InterpolationOrder Automatic イベント間の出力の連続次数 Method Automatic 使用するシミュレーションメソッド ProgressReporting $ProgressReporting 進捗表示を制御する - 通常,オプション設定をAutomaticは,設定値が model あるいはそのエクスペリメント設定から取られることを意味する.
- Method{"Sensitivity""WSM"}を用いると,状態変数に対する感度は,SystemModel model についてCVODESソルバを用いて計算される.
- その他のMethodシミュレーション部分オプションは,SystemModelSimulateに示されている通りである.
例題
すべて開く すべて閉じる例 (3)
モデルのエクスペリメント設定の時間間隔でのパラメータ感度を調べる:
sim = SystemModelSimulateSensitivity[[image], {"a"}]sim["SensitivityNames"]SystemModelPlot[sim, {{"y", "a"}, {"z", "a"}}]sim = SystemModelSimulateSensitivity[[image], {"y", "z"}, 5, {"a"}]SystemModelPlot[sim, {{"y", "a", 0.1}, {"z", "a", 0.1}}]SystemModel["IntroductoryExamples.ComponentBased.ElectricCircuit"]sim = SystemModelSimulateSensitivity[[image], {"capacitor1.v"}, 5, {"sineVoltage1.f"}]スコープ (17)
モデル (3)
NonlinearStateSpaceModelのシミュレーションの際に変数と感度を計算する:
sim = SystemModelSimulateSensitivity[NonlinearStateSpaceModel[{{Cos[x] + 4*a*Sin[x/2]},
{x + Sin[x]}}, {x}, {}, {Automatic}, Automatic,
SamplingPeriod -> None], 10, {a}, <|"ParameterValues" -> {a -> 1}|>]sim["SensitivityNames"]SystemModelPlot[sim, {{x, a}, {Subscript[, 1], a}}, PlotRange -> All]SystemModelPlot[sim, {{x, a, 0.4}}, PlotRange -> All]AffineStateSpaceModelについてパラメータスイープにおける感度を計算する:
sims = SystemModelSimulateSensitivity[AffineStateSpaceModel[{{Cos[x2], (-1 - a)*x2 +
Cos[x1^2]}, {{0}, {1}}, {x2}, {{0}}},
{x1, x2}, Automatic, {Automatic}, Automatic, SamplingPeriod -> None], 5, {a}, <|"ParameterValues" -> {a -> {1, 10}}|>]SystemModelPlot[sims, {{x2, a, 0.5}}]DiscreteInputOutputModelについて感度を計算する:
diom = DiscreteInputOutputModel[{u[0] + y[-1] + a y[-2], u[1] + u[0] + u[-1]}, {{u, {-2, -1, 1}}}, {{y, {-1, -1, -1}}}]sim = SystemModelSimulateSensitivity[diom, {a}, <|"Inputs" -> {1 -> Range[-20, 20]}, "ParameterValues" -> {a -> 1}|>]SystemModelPlot[sim, {{y, a, 0.05}}]シミュレーション時間 (3)
sim = SystemModelSimulateSensitivity[[image], {"a"}]sim["SimulationInterval"]sim = SystemModelSimulateSensitivity[[image], 5, {"a"}]sim["SimulationInterval"]sim = SystemModelSimulateSensitivity[[image], {2, 10}, {"a"}]sim["SimulationInterval"]感度結果 (6)
sim = SystemModelSimulateSensitivity[[image], 50, {"a"}]sim["SensitivityNames"]SystemModelPlot[sim, {{"y", "a"}}]sim = SystemModelSimulateSensitivity[[image], 5, {"a"}];sim["SensitivityNames"]{ySensA} = sim[{{"y", "a"}}]sim = SystemModelSimulateSensitivity[[image], 5, {"sineVoltage1.f"}];sim["SensitivityNames"]//ShortSystemModelPlot[sim, {{"capacitor1.v", "sineVoltage1.f"}}]sim = SystemModelSimulateSensitivity[[image], 50, {"a"}]sim["SensitivityNames"]aにおける変化に対するyの感度を,yについての名目軌跡とともに得る:
{ySensA, y} = sim[{{"y", "a"}, "y"}, t]もとのパラメータaとパラメータaを0.05大きくしたものでyをプロットする:
Plot[{Tooltip[y, "Nominal"], Tooltip[y + 0.05 ySensA, "Perturbed"]}, {t, 0, 50}]sim = SystemModelSimulateSensitivity[[image], 5, {"a"}];sim["SensitivityNames"]aにおける変化に対するyおよびzの感度を,名目軌跡および値とともに得る:
{ySensA, zSensA, y, z, a0} = sim[{{"y", "a"}, {"z", "a"}, "y", "z", "a"}, t];aの感度を10%変化させた場合の,yおよびzの境界をプロットする:
{dY, dZ} = {a0 0.1ySensA, a0 0.1zSensA};Plot[{Tooltip[y, "y"], y + dY, y - dY, Tooltip[z, "z"], z + dZ, z - dZ}, {t, 0, 5}, Filling -> {2 -> {3}, 5 -> {6}}]sim = SystemModelSimulateSensitivity[[image], 50, {"a"}]{ySensA, y} = sim[{{"y", "a"}, "y"}, t];パラメータaが絶対値0.1で変化する際のyにおける変化を計算する:
dY = 0.1 ySensA;Plot[{Tooltip[y, "y"], y + dY, y - dY}, {t, 0, 50}, Filling -> {2 -> {3}}]変数,パラメータ,入力 (3)
Subscript[sim, 1] = SystemModelSimulateSensitivity[[image], 50, {"a"}];Subscript[sim, 2] = SystemModelSimulateSensitivity[[image], 50, {"a"}, <|"InitialValues" -> {"y" -> 2.85}|>];SystemModelPlot[{Subscript[sim, 1], Subscript[sim, 2]}, {{"y", "a"}}]Subscript[sim, 1] = SystemModelSimulateSensitivity[[image], 50, {"a"}];Subscript[sim, 2] = SystemModelSimulateSensitivity[[image], 50, {"a"}, <|"ParameterValues" -> {"a" -> 2.95}|>];SystemModelPlot[{Subscript[sim, 1], Subscript[sim, 2]}, {{"y", "a"}}]変数についての入力関数を与え,ゲインパラメータに対する出力の感度を調べる:
sim = SystemModelSimulateSensitivity[[image], 10, {"gain.k"}, <|"Inputs" -> {"u" -> Sin}|>]SystemModelPlot[sim, {{"integrator.y", "gain.k", 0.1}}]結果の保存 (2)
sim = SystemModelSimulateSensitivity[[image], {"y", "a"}, {"a"}]{sim["VariableNames"], sim["ParameterNames"]}選択した変数のみを保存し,指定されたシミュレーション間隔でシミュレーションを行う:
sim = SystemModelSimulateSensitivity[[image], {"TR", "lambda"}, {0, 50}, {"lambda"}]SystemModelPlot[sim, {{"TR", "lambda", 0.2}}]一般化と拡張 (1)
デバッグメッセージはメッセージグループの"WSMDebug"に集められる:
Hold["WSMDebug"] /. $MessageGroupsOn[SystemModelSimulateSensitivity::dinit]SystemModelSimulateSensitivity["DocumentationExamples.Basic.OneParameter", {0, 1}, {"a"}, Method -> {"Sensitivity" -> "WSM"}]"WSMDebug"に関するすべてのデバッグメッセージが出ないようにする:
Off["WSMDebug"]オプション (4)
InterpolationOrder (1)
{Subscript[sim, 1], Subscript[sim, 2]} = Table[SystemModelSimulateSensitivity[[image], 7, {"a"}, Method -> {Automatic, "InterpolationPoints" -> 3}, InterpolationOrder -> intOrder], {intOrder, {1, 3}}];SystemModelPlot[{Subscript[sim, 1], Subscript[sim, 2]}, {{"y", "a"}}]Method (2)
Method{"Sensitivity""WSM"}のとき,SystemModelに対する状態変数の感度はCVODESソルバを用いて計算される:
simWSM = SystemModelSimulateSensitivity[[image], 5, {"a"}, Method -> {"Sensitivity" -> "WSM"}]simWSM["SensitivityNames"]デフォルトメソッドを用いてすべての実変数に対する感度を計算する:
sim = SystemModelSimulateSensitivity[[image], 5, {"a"}]sim["SensitivityNames"]モデルが設定した数の補間点でSystemModelのシミュレーションを行い,感度を計算する:
sim = SystemModelSimulateSensitivity[[image], 5, {"a"}];
SystemModelPlot[sim, {{"y", "a"}, {"z", "a"}, {Derivative[1]["z"], "a"}}]カスタム数の補間点でシミュレーションを行い,感度を計算する:
sim = SystemModelSimulateSensitivity[[image], 5, {"a"}, Method -> {"InterpolationPoints" -> 5}];
SystemModelPlot[sim, {{"y", "a"}, {"z", "a"}, {Derivative[1]["z"], "a"}}]補間点数をカスタム指定して,状態変数に対する感度をシミュレートおよび計算する:
simWSM = SystemModelSimulateSensitivity[[image], 5, {"a"}, Method -> {"Sensitivity" -> "WSM", "InterpolationPoints" -> 5}];
SystemModelPlot[simWSM, {{"y", "a"}, {"z", "a"}}]ProgressReporting (1)
ProgressReportingで進捗状況のレポートを制御する:
SystemModelSimulateSensitivity[[image], {"a"}, ProgressReporting -> False]アプリケーション (5)
sim = SystemModelSimulateSensitivity[[image], {"y"}, 40, {"a"}];{y, ysensa} = sim[{"y", {"y", "a"}}, t];a0 = First[sim[{"a"}]]{peakVal, {peakTime}} = NMaximize[{0.05 a0 ysensa, 0 < t < 40}, {t}]Plot[Evaluate[{y, y + 0.05 a0 ysensa, y - 0.05 a0 ysensa}], {t, 0, 40}, Filling -> {2 -> {3}}, GridLines -> {{peakTime[[2]]}, None}]sim = SystemModelSimulateSensitivity[[image], {"integrator1.y", "integrator2.y", "integrator3.y"}, 1, {"sine.f"}];10%感度境界は"integrator3.y"がパラメータに最も敏感であることを示している:
SystemModelPlot[sim, Table[{v, "sine.f", 0.1}, {v, {"integrator1.y", "integrator2.y", "integrator3.y"}}]]sim = SystemModelSimulateSensitivity[[image], {"wheel1.x", "wheel1.y"}, 10, {"wheel1.radius", "wheel1.m"}]{x, y, xsensrad, ysensrad, xsensmass, ysensmass} = sim[{"wheel1.x", "wheel1.y", {"wheel1.x", "wheel1.radius"}, {"wheel1.y", "wheel1.radius"}, {"wheel1.x", "wheel1.m"}, {"wheel1.y", "wheel1.m"}}, t];{r0, m0} = sim[{"wheel1.radius", "wheel1.m"}]輪の半径と質量を4%変化させた場合の輪の経路をそれぞれ示す:
d = 0.04;
ParametricPlot[{{x, y}, {x + v d #[[1]], y + v d #[[2]]}}, {v, -1, 1}, {t, 0, 10}, PlotPoints -> 40, Mesh -> None, Axes -> None, PlotLabel -> #[[3]], FrameTicks -> {{Automatic, None}, {None, None}}]& /@ {{xsensrad r0, ysensrad r0, "Wheel radius"}, {xsensmass m0, ysensmass m0, "Wheel mass"}}model = \!\(\*GraphicsBox[«8»]\);data = Import["ExampleData/inertiaTestData.dat"];{p1, p2, var} = {"Resistor1.R", "SpringDamper1.d", "Inertia2.w"};シミュレーションのキャッシュを設定し,SystemModelSimulateSensitivityを使って勾配を得る:
g[p_ ? NumericQ, q_ ? NumericQ] := g[p, q] = Quiet[AssociationThread[{var, {var, p1}, {var, p2}}, SystemModelSimulateSensitivity[model, {var}, 40, {p1, p2}, <|"ParameterValues" -> {p1 -> p, p2 -> q}|>, ProgressReporting -> False][{var, {var, p1}, {var, p2}}]], {SystemModelSimulateSensitivity::gen}]特定のパラメータ値についてのシミュレーションの結果をプロットする:
Plot[g[0.1, 0.25][var][t], {t, 0, 40}]AbsoluteTiming[FindFit[data, g[p, q][var][t], {{p, 0.1}, {q, 0.25}}, t, Gradient -> "FiniteDifference"]]AbsoluteTiming[pars = FindFit[data, g[p, q][var][t], {{p, 0.1}, {q, 0.25}}, t, Gradient :> Comap[Lookup[g[p, q], {{var, p1}, {var, p2}}], t]]]sim = SystemModelSimulate[model, {0, 40}, <|"ParameterValues" -> ({p1 -> p, p2 -> q} /. pars)|>];Show[SystemModelPlot[sim, {var}, PlotStyle -> Orange], ListPlot[data]]sim = SystemModelSimulateSensitivity[[image], 30, {"a"}]sim["SensitivityNames"]{y, ysensa} = sim[{"y", {"y", "a"} }, t];a0 = First[sim[{"a"}]]dY = 0.05 * a0 ysensa;Plot[Evaluate[{y, y + dY, y - dY}], {t, 0, 30}, Filling -> {2 -> {3}}]simv = SystemModelSimulate[[image], 30, <|"ParameterValues" -> {"a" -> a0 Range[0.95, 1.05, 0.02]}|>];yV = Table[sd[{"y"}, t][[1]], {sd, simv}];軌跡のほとんどが近似された感度境界に含まれていることを示す:
Plot[Evaluate[{y, y + dY, y - dY, yV}], {t, 0, 30}, Filling -> {2 -> {3}}]特性と関係 (4)
感度のシミュレーションを対応する微分方程式の感度と比較する:
sim = SystemModelSimulateSensitivity[[image], 50, {"a"}];SystemModelPlot[sim, {"y", {"y", "a"}}]y = DSolve[{f'[t] + Sin[a]f[t] == 0, f[0] == b}, f[t], t][[1, 1, 2]];ySensA = D[y, a]Plot[Evaluate[{y, ySensA} /. {a -> 3, b -> 1}], {t, 0, 50}, PlotRange -> All]sim = SystemModelSimulateSensitivity[[image], 5, {"a"}];{ySensA, y, a0} = sim[{{"y", "a"}, "y", "a"}, t];dY = a0 0.1ySensA;Plot[{Tooltip[y, "y"], y + dY, y - dY}, {t, 0, 5}, Filling -> {2 -> {3}}, AxesLabel -> {"t", None}]代りにSystemModelPlotを使う:
SystemModelPlot[sim, {{"y", "a", 0.1}}]{par, var} = {"sineVoltage1.f", "capacitor1.v"};sim = SystemModelSimulateSensitivity[[image], {var}, 5, {par}];{p0} = sim[{par}];sim2 = SystemModelSimulate[[image], {var}, 5, <|"ParameterValues" -> {par -> {0.9p0, 1.1p0}}|>];プロット内で比較すると,10%の変動で軌跡が計算限界の外に出ることが分かる:
Show[SystemModelPlot[sim, {{var, par, 0.1}}, {2.5, 3.5}], SystemModelPlot[sim2, {var}]]SystemModelParametricSimulateをさまざまな値について評価可能な関数に使う:
sols = SystemModelParametricSimulate[[image], "capacitor1.v", {"sineVoltage1.f"}]fns = Table[sols[hz], {hz, 1, 5}]Table[Plot[fn[t], {t, 0, 10}], {fn, fns}]おもしろい例題 (1)
Rabinovich–Fabrikant方程式における
軸と
軸についての感度境界を示す:
sim = SystemModelSimulateSensitivity[[image], {"x", "y", "z"}, 100, {"a", "g"}, <|"ParameterValues" -> {"a" -> 0.01, "g" -> 0.05}|>];{x, y, z, dx, dy, dz} = sim[{"x", "y", "z", {"x", "a"}, {"y", "a"}, {"z", "a"}}, t];d = 0.04;
ParametricPlot[{x + v d dx, y + v d dy}, {v, 0, 1}, {t, 0, 19}, PlotPoints -> 40, Axes -> None, ColorFunction -> ColorData["HypsometricTints"], Mesh -> False]Graphics3D[Tube@@Transpose@Table[{{x, y, z}, 0.0005Norm[{dx, dy, dz}]}, {t, 10, 55, 0.05}], Axes -> True]関連するガイド
関連リンク
テキスト
Wolfram Research (2018), SystemModelSimulateSensitivity, Wolfram言語関数, https://reference.wolfram.com/language/ref/SystemModelSimulateSensitivity.html.
CMS
Wolfram Language. 2018. "SystemModelSimulateSensitivity." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SystemModelSimulateSensitivity.html.
APA
Wolfram Language. (2018). SystemModelSimulateSensitivity. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SystemModelSimulateSensitivity.html
BibTeX
@misc{reference.wolfram_2026_systemmodelsimulatesensitivity, author="Wolfram Research", title="{SystemModelSimulateSensitivity}", year="2018", howpublished="\url{https://reference.wolfram.com/language/ref/SystemModelSimulateSensitivity.html}", note=[Accessed: 03-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_systemmodelsimulatesensitivity, organization={Wolfram Research}, title={SystemModelSimulateSensitivity}, year={2018}, url={https://reference.wolfram.com/language/ref/SystemModelSimulateSensitivity.html}, note=[Accessed: 03-August-2026]}