level 2
hsfakj
楼主
Manipulate[
Module[{sol, plt, A, C0, C2, h1, Q0, Q1, h2, Q2, Q11}, A = 25*\[Pi];
C0 = 31.6; C2 = 63.2;
sol = Quiet[
NDSolve[{A*D[h1[t], {t, 1}] == Q1[t] - Q2[t],
Q2[t] == If[h1[t] - h2[t] < 0, 0, C2*Sqrt[h1[t] - h2[t]]],
A*D[h2[t], {t, 1}] == Q2[t] - Q0[t],
Q0[t] == If[h2[t] < 0, 0, C0*Sqrt[h2[t]]],
Q11[t] == 500*(0.5 - Kp*(h2[t] - 5)),
Q1[t] == If[Q11[t] > 500, 500, If[Q11[t] < 0, 0, Q11[t]]],
h1[0] == 0, h2[0] == 0}, {h1[t], h2[t], Q0[t], Q1[t], Q2[t],
Q11[t]}, {t, 0, 100}]];
plt = Plot[{h1[t], h2[t]} /. sol, {t, -80, 80},
PlotRange -> {-20, 20}, PlotStyle -> {Thick},
ImageSize -> {500, 350}, Frame -> True,
FrameLabel -> {"time", "tank height"}]], {{Kp, 0.48,
"proportional gain"}, 0.1, 0.5, 0.01, Appearance -> "Labeled"},
TrackedSymbols :> {Kp}, SynchronousUpdating -> False]
我的目的是用比例控制两个液罐的水位,,希望各位指出mma程序中的错误之处
2021年03月14日 11点03分
1
Module[{sol, plt, A, C0, C2, h1, Q0, Q1, h2, Q2, Q11}, A = 25*\[Pi];
C0 = 31.6; C2 = 63.2;
sol = Quiet[
NDSolve[{A*D[h1[t], {t, 1}] == Q1[t] - Q2[t],
Q2[t] == If[h1[t] - h2[t] < 0, 0, C2*Sqrt[h1[t] - h2[t]]],
A*D[h2[t], {t, 1}] == Q2[t] - Q0[t],
Q0[t] == If[h2[t] < 0, 0, C0*Sqrt[h2[t]]],
Q11[t] == 500*(0.5 - Kp*(h2[t] - 5)),
Q1[t] == If[Q11[t] > 500, 500, If[Q11[t] < 0, 0, Q11[t]]],
h1[0] == 0, h2[0] == 0}, {h1[t], h2[t], Q0[t], Q1[t], Q2[t],
Q11[t]}, {t, 0, 100}]];
plt = Plot[{h1[t], h2[t]} /. sol, {t, -80, 80},
PlotRange -> {-20, 20}, PlotStyle -> {Thick},
ImageSize -> {500, 350}, Frame -> True,
FrameLabel -> {"time", "tank height"}]], {{Kp, 0.48,
"proportional gain"}, 0.1, 0.5, 0.01, Appearance -> "Labeled"},
TrackedSymbols :> {Kp}, SynchronousUpdating -> False]
我的目的是用比例控制两个液罐的水位,,希望各位指出mma程序中的错误之处