EstimatorRegulator[sspec,{l,κ}]
给出系统 sspec 的输出反馈控制器,其中估计器和调节器的增益分别为 l 和 κ.
EstimatorRegulator[…,"prop"]
给出属性 "prop" 的值.
EstimatorRegulator
EstimatorRegulator[sspec,{l,κ}]
给出系统 sspec 的输出反馈控制器,其中估计器和调节器的增益分别为 l 和 κ.
EstimatorRegulator[…,"prop"]
给出属性 "prop" 的值.
更多信息和选项
- EstimatorRegulator 亦称为观测器控制器或估计器控制器.
- EstimatorRegulator 用于组装由估计器和调节或跟踪控制器组成的控制系统.
- 调节控制器旨在将系统在有扰动
将其推开的情况下保持在平衡状态. - 调节控制器由
形式的控制律给出,其中
是计算得到的增益矩阵. - 跟踪控制器旨在有扰动
干扰的情况下跟踪参考信号. 典型的例子包括汽车的巡航控制系统或机器人的路径跟踪. - 跟踪控制器由以下形式的控制律给出
,其中
是为增强系统计算的增益矩阵,包括系统 sys 以及
. - 系统规约 sspec 是系统 sys 以及 uf、ue、yt 和 yref 规约.
- 系统指定 sspec 可采用以下形式:
-
StateSpaceModel[…] 线性控制输入和线性状态 AffineStateSpaceModel[…] 线性控制输入和非线性状态 NonlinearStateSpaceModel[…] 非线性控制输入和非线性状态 SystemModel[…] 一般系统模型 <|…|> 用 Association 给出的详细系统指定 - 详细系统指定中可含有以下键:
-
"InputModel" sys 任意一个模型 "FeedbackInputs" All 反馈输入 uf "ExogenousInputs" None 外源输入 ue "MeasuredOutputs" All 测量输出 ym "TrackedOutputs" None 追踪的输出 yt - 输入和输出可采用以下形式:
-
{num1,…,numn} StateSpaceModel、AffineStateSpaceModel 和 NonlinearStateSpaceModel 使用的编号输入或输出 numi {name1,…,namen} SystemModel 使用的已命名输入或输出 namei All 使用所有输入或输出 None 不使用任何输入或输出 - 可用 EstimatorGains、LQEstimatorGains 或 DiscreteLQEstimatorGains 计算估计器的增益 l.
- 可用 StateFeedbackGains、LQRegulatorGains、LQOutputRegulatorGains 或 DiscreteLQRegulatorGains 计算反馈增益 κ.
- EstimatorRegulator[…,"Data"] 返回一个 SystemsModelControllerData 对象 cd,可通过 cd["prop"] 提取其他属性.
- 可用 EstimatorRegulator[…,"prop"] 直接获取 cd["prop"] 的值.
- 属性 "prop" 可取的值包括:
-
"BlockDiagram" csys 的框图 {"BlockDiagram",<|"SampledData"True|>} 创建 csys 的采样数据框图 "ClosedLoopPoles" "ClosedLoopSystem" 的极点 "ClosedLoopSystem" 系统 csys {"ClosedLoopSystem",cspec} 对闭环系统形式的详细控制 "ControllerModel" 以
、ue、ym 为输入,uf 为输出的模型 cm"Design" 控制器设计的类型 "DesignModel" 设计时使用的模型 "EstimatorGains" 增益矩阵 ℓ "EstimatorRegulatorModel" 模型 erm "ExogenousInputs" sys 系统的确定性和非反馈输入 ue "FeedbackGains" 增益矩阵 κ 或其等价物 "FeedbackGainsModel" 模型 gm 或 {gm1,gm2} "FeedbackInputs" 用于反馈的 sys 的输入 uf "InputModel" 输入模型 sys "InputsCount" sys 的输入 u 的个数 "MeasuredOutputs" sys 的测量输出 ym "OpenLoopPoles" 线性化 sys 的极点 "OutputsCount" sys 的输出 y 的个数 "SamplingPeriod" sys 的采样周期 "StateEstimatorModel" 模型 sem "StateOutputEstimatorModel" 模型 soem "StatesCount" sys 的状态 x 的个数 "TrackedOutputs" 被追踪的 sys 的输出 yt - cspec 的可能的键包括:
-
"InputModel" csys 中的输入模型 "Merge" 是否合并 csys "ModelName" csys 的名称 "NoisyOutputs" 有噪声的 ym 的子集 "SamplingPeriod" 创建采样数据 csys - 控制器的布局图.
- 跟踪器布局图.
范例
打开所有单元 关闭所有单元基本范例 (6)
构建一个 EstimatorRegulator:
EstimatorRegulator[StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}},
SamplingPeriod -> None, SystemsModelLabels -> None], {(ℓ), (κ)}]ssm = StateSpaceModel[{{{3, 2}, {1, -1}}, {{-1}, {0}}, {{1, 0}}, {{0.1}}}, SamplingPeriod -> 0.1,
SystemsModelLabels -> None];{ℓ, κ} = {(| |
| ---- |
| 1 |
| -0.5 |), (-2.6 -2.7)};EstimatorRegulator[ssm, {ℓ, κ}]nssm = NonlinearStateSpaceModel[{{-2 + 3*Subscript[x, 2],
u + 3*Subscript[x, 1] - Subscript[x, 2]},
{Subscript[x, 1] + 4*Subscript[x, 2]}},
{{Subscript[x, 1], 1}, {Subscript[x, 2], 1}}, {{u, 1}},
{Automatic}, Automatic, SamplingPeriod -> None];{ℓ, κ} = {(| |
| - |
| 3 |
| 2 |), (4 1)};EstimatorRegulator[nssm, {ℓ, κ}]sspec = <|"InputModel" -> StateSpaceModel[{{{-1, 2}, {0, -3.}}, {{0, 1}, {1, 0}}, {{1, 0}, {0, 2}}, {{0, 0}, {0, 0}}},
SamplingPeriod -> None, SystemsModelLabels -> None], "MeasuredOutputs" -> 1, "FeedbackInputs" -> 1|>;{ℓ, κ} = {(| |
| --- |
| 9 |
| 0.5 |), (7 3)};EstimatorRegulator[sspec, {ℓ, κ}]ssm = StateSpaceModel[{{{2, 1}, {-5, -3}}, {{0}, {1}}, {{5, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];κ = LQRegulatorGains[ssm, {{{10, 0}, {0, 10}}, {{0.1}}}]ℓ = LQEstimatorGains[{ssm, 1, 1}, {{{}}, (0.1)}]EstimatorRegulator[ssm, {ℓ, κ}]ℯ𝓇 = EstimatorRegulator[StateSpaceModel[{{{2, 1}, {-3, 1.5}}, {{1}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(| |
| - |
| 2 |
| 5 |), (1 4)}, "Data"]ℯ𝓇[{"ClosedLoopSystem", "EstimatorModel", "InputCount"}]范围 (31)
基本用法 (8)
StateSpaceModel[{{{1}}, {{1}}, {{1}}}, SystemsModelLabels -> {"uf", "ym"}]EstimatorRegulator[%, {(7), (4)}]sspec = <|"InputModel" -> StateSpaceModel[{{{2}}, {{2.5, 0.1}}, {{1}}, {{0, 0}}}, SamplingPeriod -> None,
SystemsModelLabels -> {{"uf", "uw"}, "ym", None}], "FeedbackInputs" -> 1|>;EstimatorRegulator[sspec, {(8), (2.4)}]sspec = <|"InputModel" -> StateSpaceModel[{{{2}}, {{2.5, 0.1}}, {{1}}, {{0, 0}}}, SamplingPeriod -> None,
SystemsModelLabels -> {{uf, ue}, ym, None}], "FeedbackInputs" -> 1, "ExogenousInputs" -> 2|>;EstimatorRegulator[sspec, {(8), (2.4)}]sspec = <|"InputModel" -> StateSpaceModel[{{{0, 1}, {-1, -1}}, {{0}, {1}}, {{1, 0}, {0, 1}}, {{0}, {0}}},
SamplingPeriod -> None, SystemsModelLabels -> {{uf},
{xm, vm}}], "MeasuredOutputs" -> 1|>;EstimatorRegulator[sspec, {(| |
| -- |
| 12 |
| 29 |), (9 5)}]ssm = StateSpaceModel[{{{1, 1}, {1, 0}}, {{0}, {-1}}, {{2, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];κ = StateFeedbackGains[ssm, {-2 + 0.7I, -2 - 0.7I}]ℓ = EstimatorGains[ssm, {-5, -6}]EstimatorRegulator[ssm, {ℓ, κ}]ssm = StateSpaceModel[{{{1, 1}, {1, 0}}, {{0}, {-1}}, {{2, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];κ = LQRegulatorGains[ssm, {(| | |
| --- | --- |
| 0.5 | 0 |
| 0 | 0.1 |), (0.01)}]ℓ = LQEstimatorGains[{ssm, 1, 1}, {{{}}, {{1.0}}}]EstimatorRegulator[ssm, {ℓ, κ}]ssm = StateSpaceModel[{{{1, 1}, {1, 0}}, {{0}, {-1}}, {{2, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];κ = LQRegulatorGains[ssm, {(| | |
| --- | --- |
| 0.5 | 0 |
| 0 | 0.1 |), (0.01)}]ℓ = EstimatorGains[ssm, {-5 + 1.5 I, -5 - 1.5 I}]EstimatorRegulator[ssm, {ℓ, κ}]ssm = StateSpaceModel[{{{1, 1}, {1, 0}}, {{0}, {-1}}, {{2, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];𝒸𝒹 = LQRegulatorGains[ssm, {(| | |
| --- | --- |
| 0.5 | 0 |
| 0 | 0.1 |), (0.01)}, "Data"]ℓ = EstimatorGains[ssm, {-5 + 1.5 I, -5 - 1.5 I}]EstimatorRegulator[ssm, {ℓ, 𝒸𝒹}]工厂模型 (5)
连续时间 StateSpaceModel:
ssm = StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}},
SamplingPeriod -> None, SystemsModelLabels -> None];er = EstimatorRegulator[ssm, {(ℓ), (κ)}]SystemsConnectionsModel[{ssm, er, StateSpaceModel[{{}, {}, {}, {{1, -1}}}, SamplingPeriod -> None, SystemsModelLabels -> None]}, {{3, 1} -> {1, 1}, {3, 1} -> {2, 1}, {1, 1} -> {2, 2}, {2, 1} -> {3, 2}}, {{3, 1}}, {{1, 1}} ]//SystemsModelMergecsys = EstimatorRegulator[ssm, {(ℓ), (κ)}, "ClosedLoopSystem"]//SimplifyTransferFunctionPoles[TransferFunctionModel[csys, s]][[1]]离散时间 StateSpaceModel:
ssm = StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}},
SamplingPeriod -> τ, SystemsModelLabels -> None] ;er = EstimatorRegulator[ssm, {(ℓ), (κ)}]csys = EstimatorRegulator[ssm, {(ℓ), (κ)}, "ClosedLoopSystem"]//SimplifyTransferFunctionPoles[TransferFunctionModel[csys]]//Flatten描述符 StateSpaceModel:
ssm = StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}},
{{e}}}, SamplingPeriod -> None, SystemsModelLabels -> None];er = EstimatorRegulator[ssm, {(ℓ), (κ)}]csys = EstimatorRegulator[ssm, {(ℓ), (κ)}, "ClosedLoopSystem"]//SimplifyTransferFunctionPoles[TransferFunctionModel[csys]]//Flatten具有一组增益的 AffineStateSpaceModel:
assm = AffineStateSpaceModel[{{a[x]}, {{b[x]}},
{c[x]}, {{d[x]}}},
{{x, Subscript[𝓍, 0]}},
{{u, Subscript[𝓊, 0]}}, {Automatic}, Automatic, SamplingPeriod -> None];
gains = {ℓ, {-Subscript[𝓊, 0] + κ(x - Subscript[𝓍, 0])}};er = EstimatorRegulator[assm, gains]csys = EstimatorRegulator[assm, gains, "ClosedLoopSystem"]poles = TransferFunctionPoles @* TransferFunctionModel;
poles[csys]poles[EstimatorRegulator[StateSpaceModel@assm, {(ℓ), (κ)}, "ClosedLoopSystem"]]% - %%//Flatten具有一组增益的NonlinearStateSpaceModel:
nssm = NonlinearStateSpaceModel[{{f[x, u]},
{g[x, u]}},
{{x, Subscript[𝓍, 0]}},
{{u, Subscript[𝓊, 0]}}, {y}, Automatic,
SamplingPeriod -> None];
gains = {(ℓ), {-Subscript[𝓊, 0] + κ(x - Subscript[𝓍, 0])}};EstimatorRegulator[nssm, gains]csys = EstimatorRegulator[nssm, gains, "ClosedLoopSystem"]poles = TransferFunctionPoles @* TransferFunctionModel;
poles[csys]poles[EstimatorRegulator[StateSpaceModel@nssm, {(ℓ), (κ)}, "ClosedLoopSystem"]]% - %%//Flatten属性 (10)
默认情况下,EstimatorRegulator 返回包含估计器和调节器的控制器:
ssm = StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];
gains = {(49), (1.9)};EstimatorRegulator[ssm, gains]EstimatorRegulator[ssm, gains, "EstimatorRegulatorModel"]EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "StateEstimatorModel"]EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "FeedbackGainsModel"]EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "ClosedLoopSystem"]EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "BlockDiagram"]EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "ClosedLoopPoles"]sspec = <|"InputModel" -> StateSpaceModel[{{{0, -4}, {1, -5}}, {{2, -4}, {1, -1}}, {{0, 1}}, {{0, 1}}},
SamplingPeriod -> None, SystemsModelLabels -> None], "FeedbackInputs" -> 1|>;
gains = {{{16}, {4}}, {{1, -4}}};erf = EstimatorRegulator[sspec, gains, "EstimatorRegulatorFeedbackModel"]{estim, reg} = EstimatorRegulator[sspec, gains, {"StateEstimatorModel", "FeedbackGainsModel"}]SystemsModelFeedbackConnect[SystemsModelSeriesConnect@@{estim , reg}, {{1, 1}}]SystemsModelFeedbackConnect[SystemsModelSeriesConnect@@{estim , reg}, {{1, 1}}]{SystemsModelFeedbackConnect[sspec["InputModel"], erf, {1}, {1}], EstimatorRegulator[sspec, gains, "ClosedLoopSystem"]}EstimatorRegulator[StateSpaceModel[{{{-0.1}}, {{1.}}, {{0.1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {(49), (1.9)}, "Design"]Dataset[Table[{prop, EstimatorRegulator[IconizedObject[«sspec»], IconizedObject[«gains»], prop]}, {prop, IconizedObject[«props»]}]]𝒸𝒹 = EstimatorRegulator[IconizedObject[«sspec»], IconizedObject[«gains»], "Data"]𝒸𝒹["Properties"]𝒸𝒹["EstimatorGains"]追踪 (5)
sspec = <|"InputModel" -> StateSpaceModel[{{{0, 1}, {-5, -3}}, {{0}, {1}}, {{5, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], "TrackedOutputs" -> 1|>;{ℓ, 𝒸𝒹} = {EstimatorGains[sspec, {-8 + I, -8 - I}], StateFeedbackGains[sspec, {-4 + 2I, -4 - 2I, -2}, "Data"]}ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, 𝒸𝒹}, "Data"]OutputResponse[ℯ𝓇["ClosedLoopSystem"], 1, {t, 0, 5}];
Plot[{1, %}, {t, 0, 5}, IconizedObject[«plotOpts»]]A block diagram of the closed-loop system:
ℯ𝓇["BlockDiagram"]sspec = <|"InputModel" -> StateSpaceModel[{{{0, 1.}, {0.5, -2.3}}, {{0}, {1.}}, {{1., 0}}, {{0}}}, SamplingPeriod -> 0.1,
SystemsModelLabels -> None], "TrackedOutputs" -> 1|>;{ℓ, κ} = {EstimatorGains[sspec, {0.1 + 0.1I, 0.1 - 0.1I}], StateFeedbackGains[sspec, {0.2 + 0.1I, 0.2 - 0.1I, 0.3}, "Data"]}ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, κ}, "Data"]ref = Table[1, 15];
OutputResponse[ℯ𝓇["ClosedLoopSystem"], ref];
ListStepPlot[{ref, %[[1]]}, IconizedObject[«plotOpts»]]sspec = <|"InputModel" -> StateSpaceModel[{{{2., 0}, {0, -2}}, {{1., 0}, {0, 1}}, {{1, 0}, {3., 1}}, {{0, 0}, {0, 0}}},
SamplingPeriod -> None, SystemsModelLabels -> None], "TrackedOutputs" -> {1, 2}|>;𝒸𝒹 = LQRegulatorGains[sspec, {(| | | | |
| - | - | -- | -- |
| 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 0 | 50 | 0 |
| 0 | 0 | 0 | 30 |), (| | |
| - | - |
| 1 | 0 |
| 0 | 1 |)}, "Data"]ℓ = EstimatorGains[sspec, {-2, -3}]ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, 𝒸𝒹}, "Data"]refs = RandomInteger[{-15, -5}, 2];
or = OutputResponse[ℯ𝓇["ClosedLoopSystem"], refs, {t, 0, 10}];Plot[Evaluate[Riffle[refs, or]], {t, 0, 10}, IconizedObject[«plotOpts»]]sspec = <|"InputModel" -> StateSpaceModel[{{{0, 1}, {-5, -3}}, {{0}, {1}}, {{5, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], "TrackedOutputs" -> 1|>;𝒸𝒹 = LQRegulatorGains[sspec, {(| | | |
| -- | - | -- |
| 10 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 10 |), {{0.1}}}, "Data"]ℓ = EstimatorGains[sspec, {-2, -2.5}]ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, 𝒸𝒹}, "Data"]cm = ℯ𝓇["ControllerModel"]ref = {1};
csys = 𝒸𝒹["ClosedLoopSystem"];
n = SystemsModelOrder[sspec["InputModel"]];cinps = Join[ref, OutputResponse[csys, ref, {t, 0, 5}], StateResponse[csys, ref, {t, 0, 5}][[1 ;; n]]]OutputResponse[cm, cinps, {t, 0, 5}];
Plot[%, {t, 0, 5}, PlotRange -> All]tSig = Function[{r, t}, r''[t] + r[t]]m = Max[Join[Cases[tSig[r, t], Derivative[n_][r][t] :> n], {0}]]ref1 = r[t] /. DSolve[Join[{tSig[r, t] == 0}, {r[0] == 1, r'[0] == 0}], r[t], t]
ref2 = r[t] /. DSolve[Join[{tSig[r, t] == 0}, {r[0] == 0, r'[0] == 1}], r[t], t]ref = RandomReal[{1, 5}] ref1 + RandomReal[{1, 5}] ref2sspec = <|"InputModel" -> StateSpaceModel[{{{-1}}, {{1}}, {{1}}, {{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None], "TrackedOutputs" -> {1}, "TrackedSignal" -> tSig|>;{q, k} = {Length[sspec["TrackedOutputs"]], SystemsModelOrder[sspec["InputModel"]]}{qq, rr} = {(| | | |
| - | - | - |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |), {{0.1}}};
Join[Dimensions[qq], {k + m q}]𝒸𝒹 = LQRegulatorGains[sspec, {qq, rr}, "Data"]ℯ𝓇 = EstimatorRegulator[sspec, {{{-3}}, 𝒸𝒹}, "Data"]OutputResponse[ℯ𝓇["ClosedLoopSystem"], ref, {t, 0, 15}];
Plot[{ref, %}, {t, 0, 15}, IconizedObject[«plotOpts»]]闭环系统 (3)
assm = AffineStateSpaceModel[{{Subscript[x, 2], -Subscript[x, 2] -
Subscript[x, 1]*(1 + Subscript[x, 2])},
{{0}, {-1 - Subscript[x, 1] - Subscript[x, 2]}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2]}, {u}, {Automatic}, Automatic, SamplingPeriod -> None];{ℓ, κ} = {{{10}, {19}}, {{-3.01, -3}}};csysNL = EstimatorRegulator[assm, {ℓ, κ}, "ClosedLoopSystem"]//ExpandAllssm = StateSpaceModel[assm];
csysL = EstimatorRegulator[ssm, {ℓ, κ}, "ClosedLoopSystem"]Table[OutputResponse[{sys, {7}}, {0, 0}, {t, 0, 10}], {sys, {csysL, csysNL}}];
Plot[%, {t, 0, 10}, IconizedObject[«plotOpts»]]将合并的工厂闭环系统与 EstimatorRegulator 组合在一起:
ssm = StateSpaceModel[{{{0, -2.02}, {1, -10.2}}, {{1}, {0}}, {{0, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];{ℓ, κ} = {{{6}, {-4}}, {{-7.2, 73.42}}};EstimatorRegulator[ssm, {ℓ, κ}, "ClosedLoopSystem"]erUm = EstimatorRegulator[ssm, {ℓ, κ}, {"ClosedLoopSystem", <|"Merge" -> False|>}]SystemsModelMerge[erUm]EstimatorRegulator[ssm, {ℓ, κ}, {"ClosedLoopSystem", <|"Merge" -> True|>}]sm = CreateSystemModel["UnstableSystem", {x''[t] == x[t] + u[t], y[t] == x[t]}, t, {"u"∈"Modelica.Blocks.Interfaces.RealInput", "y"∈"Modelica.Blocks.Interfaces.RealOutput"}];csysName = "StabilizedSystem";csys = EstimatorRegulator[sm, {EstimatorGains[sm, {-3, -4}], StateFeedbackGains[sm, {-2 + 0.7I, -2 - 0.7I}]}, {"ClosedLoopSystem", <|"ModelName" -> csysName|>}]csys["ModelName"]SystemModelSimulate[csysName, {"y"}, 7, <|"InitialValues" -> {"sys.x" -> 0.1}|>]SystemModelPlot[%, All, PlotRange -> All]应用 (11)
机械系统 (3)
ssm = StateSpaceModel[{{{0, 1, 0, 0, 0, 0},
{-(Subscript[k, 1] + α*Subscript[k, 2])/
Subscript[m, 1], 0, α*(Subscript[k, 2]/
Subscript[m, 1]), 0, 0, 0}, {0, 0, 0, 1, 0, 0},
{α*(Subscript[k, 2]/Subscript[m, 2]), 0,
(-α)*(Subscript[k, 2]/Subscript[m, 2]), 0, 0, 0},
{0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, -Subscript[k, 2]/Subscript[m, 2],
0}}, {{0}, {Subscript[m, 1]^(-1)}, {0}, {0}, {0}, {0}},
{{1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}}, {{0}, {0}}},
{{Subscript[x, 1][t], 0}, Subscript[, 1],
{Subscript[x, 2][t], 0}, Subscript[, 2],
{Subscript[y, 2][t], 0}, Subscript[, 3]},
{{F[t], 0}}, Automatic, t, SamplingPeriod -> None,
SystemsModelLabels -> None] /. α -> (Δl/Subscript[l, 0] + Δl) /. IconizedObject[«pars»];ControllableModelQ[ssm]ctrsys = ControllableDecomposition[ssm][[2]]//ChopStateResponse[{ssm, {0.2, 0, 0.5, 0, -0.3, 0}}, 0, {t, 0, 5}][[{1, 3, 5}]];
Table[Plot[𝓈𝓇[[1]], {t, 0, 5}, IconizedObject[«plotOpts»]], {𝓈𝓇, ({%, {Subscript[x, 1], Subscript[x, 2], Subscript[y, 2]}})}]𝒸𝒹 = LQRegulatorGains[ctrsys, {DiagonalMatrix[{10^3, 1, 10^3, 1}], {{1}}}, "Data"]ℓ = EstimatorGains[ctrsys, {-8, -7.5, -6.5, -6}]ℯ𝓇 = EstimatorRegulator[ctrsys, {ℓ, 𝒸𝒹}, "Data"]csys = ℯ𝓇[{"ClosedLoopSystem", <|"InputModel" -> ssm, "Merged" -> True|>}]sr = StateResponse[{csys, {0.2, 0, 0.5, 0, -0.3, 0}}, 0, {t, 0, 10}][[{1, 3, 5}]];
Table[Plot[𝓈𝓇[[1]], {t, 0, 10}, IconizedObject[«plotOpts»]], {𝓈𝓇, ({sr[[1 ;; 2]], {Subscript[x, 1], Subscript[x, 2]}})}]Plot[sr[[3]], {t, 0, 10}, PlotRange -> All, ImageSize -> Small, PlotLabel -> Subscript[y, 2]]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[{0}, sr[[1 ;; 2]]], {t, 0, 10}];
Plot[%, {t, 0, 10}, PlotRange -> All]
ssm = StateSpaceModel[IconizedObject[«eqns»] /. IconizedObject[«pars»], {Subscript[x, 1][t], Subscript[x, 2][t], Subscript[x, 3][t]}, f[t], {Subscript[x, 1][t], Subscript[x, 2][t], Subscript[x, 3][t]}, t, IconizedObject[«labels»]]OutputResponse[ssm, UnitBox[t - 1 / 2], {t, 0, 120}];
Plot[%, {t, 0, 120}, PlotRange -> All, PlotLegends -> {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}]κ = LQRegulatorGains[ssm, {DiagonalMatrix[{10^2, 10^4, 10^2, 10^4, 10^2, 10^4}], {{10}}}]p = {-8.58, -2.08, -0.16 + 1.58 I, -0.16 - 1.58 I, -0.24 + 0.84 I, -0.24 - 0.84 I};
MatrixForm[ℓ = EstimatorGains[ssm, p]]ℯ𝓇 = EstimatorRegulator[ssm, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]//SystemsModelMergesr = StateResponse[csys, UnitBox[t - 1 / 2], {t, 0, 60}];
Plot[Evaluate[sr[[{1, 3, 5}]]], {t, 0, 60}, IconizedObject[«plotOpts»]]cm = ℯ𝓇["ControllerModel"]//SystemsModelMergeOutputResponse[cm, Join[{0}, sr], {t, 0, 60}];
Plot[%, {t, 0, 60}, PlotRange -> All]
cpend = NonlinearStateSpaceModel[IconizedObject[«eqns»] /. IconizedObject[«pars»], {Subscript[θ, 1][t], Subscript[θ, 2][t]}, 𝒯[t], {Subscript[θ, 1][t], Subscript[θ, 2][t]}, t]cpend = NonlinearStateSpaceModel[cpend, Automatic, Automatic, Automatic, None];
OutputResponse[{cpend, {π, 0, -π, 0} / 12}, 0, {t, 0, 10}];
Plot[%, {t, 0, 10}, PlotRange -> All, PlotLegends -> {Subscript[θ, 1], Subscript[θ, 2]}]ℓ = EstimatorGains[cpend, {-7 + 2I, -7 - 2I, -6, -5}];
MatrixForm[%]κ = LQRegulatorGains[cpend, {DiagonalMatrix[{10^4, 10^-1, 10^4, 10^-1}], {{0.01}}}]ℯ𝓇 = EstimatorRegulator[cpend, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]sr = StateResponse[{csys, PadRight[{π, 0, -π} / 12, 8]}, 0, {t, 0, 10}];
Plot[Evaluate@sr[[{1, 3}]], {t, 0, 10}, PlotRange -> All, PlotLegends -> {Subscript[θ, 1], Subscript[θ, 2]}]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[{0}, sr[[1 ;; 4]]], {t, 0, 10}];
Plot[%, {t, 0, 10}, PlotRange -> All]航空航天系统 (3)
sat = StateSpaceModel[IconizedObject[«eqns»], {x[t], x'[t], y[t], y'[t]}, {Subscript[f, x][t], Subscript[f, y][t]}, {x[t], y[t]}, t, IconizedObject[«labels»]] /. ω -> 0.0011dSat = ToDiscreteTimeModel[sat, τ = 0.05]//ChopOutputResponse[{dSat, {0, 0.2, 0, 0.3}}, Table[{0, 0}, 100]];
ListStepPlot[%, DataRange -> {0, 99 τ}, IconizedObject[«plotOpts»]]MatrixForm[κ = StateFeedbackGains[dSat, {-0.2, -0.15, -0.3, -0.25}]]MatrixForm[ℓ = EstimatorGains[dSat, 2 {-0.2, -0.15, -0.3, -0.25}]]ℯ𝓇 = EstimatorRegulator[dSat, {ℓ, κ}, "Data"]csys = SystemsModelMerge@ℯ𝓇["ClosedLoopSystem"]//Chopor = OutputResponse[{csys, {0.25, 15, -0.25, 15, 0, 0, 0, 0}}, Table[{0, 0}, 15]];
ListStepPlot[or, DataRange -> {0, 14 τ}, PlotRange -> All, PlotLegends -> {"x", "y"}]cm = SystemsModelMerge@ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[Table[{0, 0}, 15], or]];
ListStepPlot[%, DataRange -> {0, 14 τ}, PlotRange -> All, PlotLegends -> {Subscript[f, x], Subscript[f, y]}]ℯ𝓇[{"ClosedLoopSystem", <|"Merged" -> False|>}]
ssm = StateSpaceModel[IconizedObject[«eqns»] /. IconizedObject[«pars»], {θ[t], θ'[t], x'[t]}, δ[t], θ[t], t, IconizedObject[«labels»]]PoleZeroPlot[ssm]κ = StateFeedbackGains[ssm, {-1.5 + 0.5I, -1.5 - 0.5 I, -2}]ℓ = EstimatorGains[ssm, {-3 + 0.5 I , -3 - 0.5I, -5}]ℯ𝓇 = EstimatorRegulator[ssm, {ℓ, κ}, "Data"]csys = SystemsModelMerge[ℯ𝓇["ClosedLoopSystem"]]sr = StateResponse[{csys, PadRight[{0.1°, 0, 0.1}, 6]}, 0, {t, 0, 10}];
Table[Plot[𝓈𝓇[[1]], {t, 0, 10}, IconizedObject[«plotOpts»]], {𝓈𝓇, ({sr[[1 ;; 3]], {θ, θ', x}})}]Plot[-κ.sr[[4 ;; 6]], {t, 0, 10}, PlotRange -> All]
drone = NonlinearStateSpaceModel[IconizedObject[«eqns»], IconizedObject[«states»], IconizedObject[«ins»], IconizedObject[«outs»], t] /. IconizedObject[«pars»]
drone = NonlinearStateSpaceModel[drone, Automatic, Automatic, Automatic, None];OutputResponse[{drone, {0, 0, 0, 0, 0, 0, 100, 0}}, {0, 0, 0, 0}, {t, 0, 4}];
Plot[%[[1]], {t, 0, 4}, PlotRange -> All]wts = {(| | | | | | | | | |
| - | -- | - | -- | - | -- | - | -- | -- |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 10 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 10 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 10 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 10 |), (1/9^2)IdentityMatrix[4]};sspec = <|"InputModel" -> drone, "TrackedOutputs" -> 1|>;𝒸𝒹 = LQRegulatorGains[sspec, wts, "Data"]p = {-15, -2 + I, -2 - I, -1.5 + I, -1.5 - I, -1 + 0.8I, -1 - 0.8I, -2};
MatrixForm[ℓ = EstimatorGains[sspec, p]]ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, 𝒸𝒹}, "Data"]Style[csys = ℯ𝓇["ClosedLoopSystem"]//Simplify//Chop, Small]ref = {10};
sr = StateResponse[csys, {ref}, {t, 0, 100}];
Plot[{%[[7]], ref}, {t, 0, 10}, IconizedObject[«plotOpts»]]cm = ℯ𝓇["ControllerModel"]//N//Simplify//ChopShort[cinps = Join[{ref}, OutputResponse[csys, ref, {t, 0, 100}], sr[[1 ;; 8]]]]OutputResponse[cm, cinps, {t, 0, 10}][[1]];
Plot[%, {t, 0, 10}, PlotRange -> All]生物系统 (1)
nssm = NonlinearStateSpaceModel[IconizedObject[«eqns»] /. IconizedObject[«pars»], {𝒢[t], 𝒳[t], 𝒴[t]}, {{𝒾[t], 16.6667}, h[t]}, 𝒢[t], t]olp = TransferFunctionPoles[TransferFunctionModel[nssm]]OutputResponse[nssm, {0, UnitStep[t]}, {t, 0, 360}];
Plot[%, {t, 0, 360}, PlotRange -> All]sspec = <|"InputModel" -> NonlinearStateSpaceModel[nssm, Automatic, Automatic, Automatic, None], "FeedbackInputs" -> 1|>;κ = LQRegulatorGains[sspec, {DiagonalMatrix[{1000, 0.5, 0.5}], {{0.1}}}]ℓ = EstimatorGains[sspec, {-3, -5, -6}]ℯ𝓇 = EstimatorRegulator[sspec, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]sr = StateResponse[csys, {0, UnitStep[t]}, {t, 0, 60}];
Plot[%[[1]], {t, 0, 60}, PlotRange -> All]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[{0}, sr], {t, 0, 60}];
Plot[%, {t, 0, 60}, PlotRange -> All]化学系统 (2)
调节等温恒量发酵罐中的生物质浓度:»
ferm = NonlinearStateSpaceModel[IconizedObject[«eqns»], {{𝒳[t], x0}, {𝒮[t], s0}}, {{ℱ[t], f0}}, 𝒳[t], t] /. IconizedObject[«pars»]OutputResponse[{ferm, {0.1, 0.3}}, 0, {t, 0, 10}];
Plot[%, {t, 0, 10}, PlotRange -> All]ferm = NonlinearStateSpaceModel[ferm, Automatic, Automatic, Automatic, None];
κ = LQRegulatorGains[ferm, {{{10, 0}, {0, 10}}, {{0.1}}}]ℓ = EstimatorGains[ferm, {-1 + 2I, -1 - 2I}]ℯ𝓇 = EstimatorRegulator[ferm, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]//Simplifysr = StateResponse[{csys, {5.1, 0.3, 0, 0}}, 0, {t, 0, 20}];
Plot[sr[[1]], {t, 0, 20}, PlotRange -> All]Plot[-κ /. Thread[{𝒳, 𝒮} -> sr[[1 ;; 2]]], {t, 0, 20}, PlotRange -> All]
tank = StateSpaceModel[IconizedObject[«eqns»], IconizedObject[«vars»], {{Subscript[q, 1][t], Subscript[q, 10]}, {Subscript[q, 2][t], Subscript[q, 20]}}, {q[t], c[t]}, t, DescriptorStateSpace -> True, IconizedObject[«labels»]] /. IconizedObject[«pars»]OutputResponse[tank, {UnitBox[t], UnitBox[t]}, {t, 0, 300}];
Plot[%, {t, 0, 300}, PlotRange -> All, PlotLegends -> {"SubscriptBox[c, 1]", "SubscriptBox[c, 2]"}]Table[ControllableModelQ[{tank, i}], {i, {"Fast", "Slow"}}]𝒸𝒹 = StateFeedbackGains[tank, {-1.5, -2}, "Data"]ℓ = EstimatorGains[tank, {-3, -5}]ℯ𝓇 = EstimatorRegulator[tank, {ℓ, 𝒸𝒹}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]or = OutputResponse[csys, {UnitBox[t], UnitBox[t]}, {t, 0, 4}];
Plot[%, {t, 0, 4}, PlotRange -> All, PlotLegends -> {"q", "c"}]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[{0, 0}, or], {t, 0, 4}];
Plot[%, {t, 0, 4}, PlotRange -> All, PlotLegends -> {"SubscriptBox[q, 1]", "SubscriptBox[q, 2]"}]电子系统 (2)
dcm = StateSpaceModel[IconizedObject[«eqns»], {Subscript[i, l][t], Subscript[u, c][t], Subscript[i, a][t], ω[t]}, δ[t], ω[t], t, IconizedObject[«labels»]] /. IconizedObject[«pars»]p = Eigenvalues[First@Normal@dcm]OutputResponse[{dcm, {0, 0, 0, 10}}, 0, {t, 0, 100}];
Plot[%, {t, 0, 100}, PlotRange -> All]κ = StateFeedbackGains[dcm, {-5088, -2270, -124, -1}]ℓ = LQEstimatorGains[{dcm, All}, {{{10}}, {{10^3}}}]ℯ𝓇 = EstimatorRegulator[dcm, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]sr = StateResponse[{csys, {0, 0, 0, 10, 0, 0, 0, 0}}, 0, {t, 0, 20}];
Plot[%[[4]], {t, 0, 10}, PlotRange -> All]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, Join[{0}, sr], {t, 0, 14}];
Plot[%, {t, 0, 14}, PlotRange -> All]
psys = StateSpaceModel[{{{0, 377, 0, 0, 0, 0, 0}, {-0.246, -0.156, -0.137, -0.123, -0.0124, -0.0546, 0},
{0.109, 0.262, -2.17, 2.3, -0.0171, -0.0753, 1.27}, {-4.58, 0, 30, -34.3, 0, 0, 0},
{-0.161, 0, 0, 0, -8.44, 6.33, 0}, {-1.7, 0, 0, 0, 15.2, -21.5, 0},
{-33.9, -23.1, 6.86, -59.5, 1.5, 6.63, -114}}, {{0}, {0}, {0}, {0}, {0}, {0}, {17.6}},
{{-0.123, 1.05, 0.23, 0.207, -0.105, -0.46, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> {{Subscript[v, f]},
{Subscript[v, term]}, {θ, ω,
Subscript[v, q], Subscript[ϕ, d],
Subscript[v, d], Subscript[ϕ, q],
Subscript[v, ext]}}];Cases[Chop[Eigenvalues[First[Normal[psys]]]], _Complex]OutputResponse[{psys, {0.175, 0, 0, 0, 0, 0, 0}}, 0, {t, 0, 10}];
Plot[%, {t, 0, 10}, PlotRange -> All]p = {-60, -25, -20, -7.5 + 0.5 I, -7.5 - 0.5 I, -5, -4};
MatrixForm[κ = StateFeedbackGains[psys, p]]MatrixForm[ℓ = EstimatorGains[psys, 2 p]]ℯ𝓇 = EstimatorRegulator[psys, {ℓ, κ}, "Data"]csys = ℯ𝓇["ClosedLoopSystem"]or = OutputResponse[{csys, PadRight[{0.175}, 14]}, 0, {t, 0, 2}];
Plot[or, {t, 0, 2}, PlotRange -> All]cm = ℯ𝓇["ControllerModel"]OutputResponse[cm, or, {t, 0, 2}];
Plot[%, {t, 0, 2}, PlotRange -> All]属性和关系 (7)
ssm = StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];EstimatorRegulator[ssm, {(ℓ), (κ)}, "ClosedLoopPoles"]StateOutputEstimator[ssm, (ℓ)];
Eigenvalues[First[Normal[%]]]SystemsModelStateFeedbackConnect[ssm, (κ)];
Eigenvalues[First[Normal[%]]]使用 StateFeedbackGains 和 EstimatorGains 中的增益组合估计器-调节器:
ssm = StateSpaceModel[{{{0, 1}, {-3, -0.5}}, {{0}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];
p = {-2 + 3I, -2 - 3I};ℓ = EstimatorGains[ssm, 2p]𝒸𝒹 = StateFeedbackGains[ssm, p, "Data"];
κ = 𝒸𝒹["FeedbackGainsModel"]Table[EstimatorRegulator[ssm, {ℓ, sf}], {sf, {κ, 𝒸𝒹}}]使用 LQRegulatorGains 和 EstimatorGains 中的增益对估计器-调节器进行组合:
ssm = StateSpaceModel[{{{0, 1}, {-2, -1.5}}, {{0}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];
p = {-1 + 2I, -1 - 2I};ℓ = EstimatorGains[ssm, p]𝒸𝒹 = LQRegulatorGains[ssm, {(| | |
| -- | -- |
| 10 | 0 |
| 0 | 10 |), {{1}}}, "Data"];
κ = 𝒸𝒹["FeedbackGains"]Table[EstimatorRegulator[ssm, {ℓ, k}], {k, {κ, 𝒸𝒹}}]使用 DiscreteLQRegulatorGains 和 DiscreteLQEstimatorGains 中的增益对估计器-调节器进行组合:
ssm = StateSpaceModel[{{{0, 1}, {-3, -0.5}}, {{0, 1}, {1, 0}}, {{1, 0}}, {{0, 0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];
τ = 0.1;ℓ = DiscreteLQEstimatorGains[ssm, {(| | |
| --- | -- |
| 100 | 0 |
| 0 | 10 |), {{1}}}, τ]κ = DiscreteLQRegulatorGains[ssm, {(| | |
| - | - |
| 1 | 0 |
| 0 | 1 |), (| | |
| - | - |
| 1 | 0 |
| 0 | 1 |)}, τ]StateSpaceModel[EstimatorRegulator[ssm, {ℓ, κ}], SamplingPeriod -> τ]使用 EstimatorRegulator 组装 LQGRegulator:
ssm = StateSpaceModel[{{{-2.9, 5}, {0.8, -1.3}}, {{-1.1}, {0}}, {{1, 0}}, {{0.1}}}, SamplingPeriod -> 1,
SystemsModelLabels -> None];{cvs, wts} = {{{{}}, (0.1)}, {(| | |
| ---- | ---- |
| 10^4 | 0 |
| 0 | 10^2 |), (10^2)}};lqg = LQGRegulator[ssm, cvs, wts]κ = LQRegulatorGains[ssm, wts]ℓ = LQEstimatorGains[{ssm, 1, 1}, cvs]er = EstimatorRegulator[ssm, {ℓ, κ}]Normal[lqg] - Normal[er]ssm = StateSpaceModel[{{{0, 0, 6}, {1, 0, -1}, {0, 1, -4}}, {{2}, {1}, {0}}, {{0, 0, 1}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];p = Eigenvalues[First[Normal[ssm]]];Table[{i, ControllableModelQ[{ssm, {i}}]}, {i, p}]Subscript[p, est] = {-10, -6, -3};
ℓ = EstimatorGains[ssm, Subscript[p, est]]κ = LQRegulatorGains[ssm, {DiagonalMatrix[{10, 10, 1000}], {{1.}}}]Subscript[p, csys] = EstimatorRegulator[ssm, {ℓ, κ}, "ClosedLoopPoles"]//ChopSubscript[p, reg] = Complement[Subscript[p, csys], Subscript[p, est], SameTest -> (Chop[#1 - #2] == 0.&)]Intersection[p, Subscript[p, reg], SameTest -> (Chop[#1 - #2] == 0.&)]sspec = <|"InputModel" -> StateSpaceModel[{{{0, -1.5}, {1., -2.}}, {{1, 0.1}, {0, 0}}, {{0, 1.}}, {{0, 0}}},
SamplingPeriod -> None, SystemsModelLabels -> {{uf, uw},
ym, None}], "FeedbackInputs" -> 1|>;κ = StateFeedbackGains[sspec, p = {-2, -3}]ℓ = Table[EstimatorGains[sspec["InputModel"], i p], {i, {2, 6, 18}}];
gnorm = Norm /@ ℓcsys = Table[EstimatorRegulator[sspec, {i, κ},
{"ClosedLoopSystem", <|"NoisyOutputs" -> 1|>}], {i, ℓ}]u𝓋 = Interpolation[Thread[{Range[0, 9.9, 0.1],
RandomReal[ NormalDistribution[0, 0.05], {100}]}], t];
Plot[%, {t, 0, 9.9}]or = Table[OutputResponse[{i, {1, 0}}, {0, 0, u𝓋}, {t, 0, 6}][[1]], {i, csys}]orNorm = NIntegrate[Abs[or], {t, 0, 6}, MaxRecursion -> 20];
Table[Plot[i[[2]], {t, 0, 6}, IconizedObject[«plotOpts»]], {i, IconizedObject[«list»]}]ListLinePlot[Thread[{gnorm, orNorm}], IconizedObject[«plotOpts»]]相关指南
-
▪
- 使用状态空间模型进行设计 ▪
- 非线性控制系统
文本
Wolfram Research (2010),EstimatorRegulator,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EstimatorRegulator.html (更新于 2021 年).
CMS
Wolfram 语言. 2010. "EstimatorRegulator." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/EstimatorRegulator.html.
APA
Wolfram 语言. (2010). EstimatorRegulator. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/EstimatorRegulator.html 年
BibTeX
@misc{reference.wolfram_2026_estimatorregulator, author="Wolfram Research", title="{EstimatorRegulator}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/EstimatorRegulator.html}", note=[Accessed: 13-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_estimatorregulator, organization={Wolfram Research}, title={EstimatorRegulator}, year={2021}, url={https://reference.wolfram.com/language/ref/EstimatorRegulator.html}, note=[Accessed: 13-September-2026]}