程序报错,求解答
mathematica吧
全部回复
仅看楼主
level 2
vcdal 楼主
Gk = k/(s (s^2 + s + 1));
Manipulate[
Module[{p2, p3, a, b}, Switch[ctrl, 1, a = f[k, d]; b = g[k, d];
p2 = Quiet@
Plot[{1, a}, {t, 0, 50}, PerformanceGoal -> "Quality",
PlotRange -> {{0, 45}, {0, 1.8}}, AspectRatio -> 1,
Frame -> True, ImageSize -> {400, 400}, GridLines -> Automatic,
Filling -> {1 -> {2}}, FillingStyle -> LightGray,
PlotStyle -> {{Thick, Darker@Red, Dashed@Small}, {Thick,
Darker@Green}},
FrameLabel -> {Style["Time", 16, Blue, Italic],
Style["Response", 16, Blue, Italic]}];
p3 = BodePlot[b, {1, 100}];
Show[p2], 2, Show[p3]]], {{ctrl, 1, ""}, {1 -> "Time Response",
2 -> "Bode Diagram"}}, {{k, 1.25, "Proportional Gain Kp"}, 0.1, 6,
0.01, Appearance -> "Labeled"}, {{d, 1, "Feedback Coefficient V"},
1, 10, 0.05, Appearance -> "Labeled"},
SynchronousUpdating -> False, SynchronousInitialization -> False,
TrackedSymbols :> {k, d},
Initialization :> {f[k_, d_] :=
InverseLaplaceTransform[
1/s (k (1 + s))/(k + 5 d s (1 + 3 s + 2 s^2)), s, t] // Chop;
g[k_, d_] :=
TransferFunctionModel[
1/s (k (1 + s))/(k + 5 d s (1 + 3 s + 2 s^2)), s],
ImageSize -> {400, 400}}, ControlPlacement -> Top]
2019年12月02日 03点12分 1
吧务
level 10
我的不报错,你重启试试。如果复现了结果截张报错信息图上来。
2019年12月04日 10点12分 2
[惊哭]好的,画伯德图 出错
2019年12月09日 13点12分
level 2
vcdal 楼主
2019年12月09日 13点12分 3
吧务
level 10
原来是第二个选项出了问题,我没试……
已发现问题:
1.要输出的表达式g和p3在分支2中未被计算
2.BodePlot默认返回Grid,而你对其作用了一个Show
解决方案:
1.把算g和p3那两行挪走
2.对BodePlot设选项PlotLayout->"List"
2019年12月09日 14点12分 4
吧务
level 10
Gk = k/(s (s^2 + s + 1));
Manipulate[
Module[{p2, p3, a, b},
Switch[ctrl,
1, a = f[k, d];
p2 = Quiet@Plot[{1, a}, {t, 0, 50}
, PerformanceGoal -> "Quality",
PlotRange -> {{0, 45}, {0, 1.8}}, AspectRatio -> 1,
Frame -> True, ImageSize -> {400, 400}, GridLines -> Automatic,
Filling -> {1 -> {2}}, FillingStyle -> LightGray,
PlotStyle -> {{Thick, Darker@Red, Dashed@Small}, {Thick,
Darker@Green}},
FrameLabel -> {Style["Time", 16, Blue, Italic],
Style["Response", 16, Blue, Italic]}];
Show[p2],
2, b = g[k, d]; p3 = BodePlot[b, {1, 100}, PlotLayout -> "List"];
Show[p3]]], {{ctrl, 1, ""}, {1 -> "Time Response",
2 -> "Bode Diagram"}}, {{k, 1.25, "Proportional Gain Kp"}, 0.1, 6,
0.01, Appearance -> "Labeled"}, {{d, 1, "Feedback Coefficient V"},
1, 10, 0.05, Appearance -> "Labeled"}, SynchronousUpdating -> False,
SynchronousInitialization -> False, TrackedSymbols :> {k, d},
Initialization :> {f[k_, d_] :=
InverseLaplaceTransform[
1/s (k (1 + s))/(k + 5 d s (1 + 3 s + 2 s^2)), s, t] // Chop;
g[k_, d_] :=
TransferFunctionModel[
1/s (k (1 + s))/(k + 5 d s (1 + 3 s + 2 s^2)), s],
ImageSize -> {400, 400}}, ControlPlacement -> Top]
2019年12月09日 14点12分 5
[乖]感谢万分!!!!!
2019年12月10日 01点12分
1