两个储罐的液位比例控制
mathematica吧
全部回复
仅看楼主
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
吧务
level 10
NDSolve应该不是这么用的
2021年03月14日 19点03分 2
您是指里面的if语句么
2021年03月15日 02点03分
@hsfakj 主要是你这些很多代数方程
2021年03月15日 13点03分
我看的官网上的一个项目上就是这么写的
2021年03月16日 00点03分
@asdasd1dsadsa 怎么让h1[0]和h2[0]的初值尽可能地接近于0
2021年03月22日 01点03分
1