Комбинирование асинхронных измерений
Жидкость течет из двух резервуаров и объединяется в единый поток. Отдельные потоки из каждого резервуара рассчитываются на основе измерения уровня жидкости в каждом резервуаре и моделируется с помощью временных рядов. Рассчитаем комбинированный поток жидкости из обоих резервуаров.
h1 = TemporalData[TimeSeries, {{
StructuredArray[QuantityArray, {101},
StructuredArray`StructuredData[QuantityArray, CompressedData["
1:eJwBNQPK/CFib1JlAQAAAGUAAADe5APaz4oAQCSFr48qYgBAQzBMKDxTAEDX
ymqz2x8AQNOLnrenpP8/Kmwvk1Ia/z8huN4wvNb+P4rfuUg5z/4/mdIrXD7C
/j/Uwimro3P+PxLt/Jvz4/0/qjRGTexP/T+BerQGpvj8P89ndGK45/w/uSuU
QGrm/D/3+kpQAbD8P6MLVq3yMPw/4lTjuNuY+z9wTWvQuS77P9Lv9rulD/s/
//pavhEU+z8YLJKVKfT6P+YyAQjbifo/QKWO0djz+T/A5FSVYHn5P9wGcJO5
SPk/s14mlqhM+T8WL8Ql9T/5PzZrds4O7fg/5iLiH0xf+D+CvLZMftj3P+3W
qeZulPc/BmCaoeOR9z+FMpKnwpP3P7+KpFA/Wfc/735hFG3Z9j++3QIdd0v2
P87+0M7j8/U/oJ8LlpTl9T+KFYiNavD1P1yaFoaDzfU/ddD7xmhg9T/9saxT
N9H0P7+BjKTCZ/Q/jidTHYdJ9D9A+nBKMlf0P9b8SZ1xSfQ/3ZNSCoXy8z/B
8GpwT2jzPxZGDC848PI/HzcSGFq/8j/6I6RCr8nyPx+uXV8fzfI/Mvnt4kWO
8j+lcOh1DA/yP1yDkX7qjPE/7W3IZGBI8T+9GiYLqEnxP152KqElWfE/9Zck
XIky8T8wIG3wnMPwP04gUh4EPfA/WedE9gjL7z/8E27037HvPxCrWcsl3e8/
4hlDFD+97z9nOo3taQjvP+h16WqI/u0/J0/Rkm8u7T+urSnBhPLsP8WXTrap
He0/bRLmuLQk7T9tTK7IZp7sP2u9NqEupOs/J3WK3Mq66j8bzo9SOljqP3/m
Tig4d+o/OWJ4ihuc6j8Upnb4hkbqP08bxY1wZ+k/QrxSy/Zu6D8Tx6a6S+Xn
PwYq0SZz7ec/ndGUjRUl6D+4gEpd7f7nP2Kb8eanROc/FZ293t1I5j+9YnNA
IJvlP6EruLryg+U/LLUSnx7C5T+Q8wcHr8blP4TvD3hdOOU/Wl/dx6lF5D+Z
/JtJH3rjP4Nyzev7PeM/ZcZaRVl24z93vVHo6Z3jPwwN4rqOP+M/aTuqJv5h
4j9XG7Zkp4HhP0VTVME+HuE/9dGrFA==
"], "Meters", {{1}}]]}, {
TemporalData`DateSpecification[{2016, 2, 3, 17, 0, 0.}, {2016, 2, 7,
21, 0, 0}, {1, "Hour"}]}, 1, {"Continuous", 1}, {"Discrete", 1},
1, {ResamplingMethod -> {
"Interpolation", InterpolationOrder -> 1}}}, True, 314.1];
h2 = TemporalData[TimeSeries, {{
StructuredArray[QuantityArray, {101},
StructuredArray`StructuredData[QuantityArray, CompressedData["
1:eJwBNQPK/CFib1JlAQAAAGUAAADe5APaz4oAQCOFr48qYgBAWwPf4N9MAEBS
Om4VdZn+PwngPIFrVfw/w0NCHNWZ+z9a09uBZsf8Pxe3P5fCfv4/ss8cEKDm
/j9YFSmc6l39P5tC/AfYC/s/AuMHBPbM+T+AxXXML336P+AErK6XMfw/oeO4
kWwU/T+VJkksOBX8P32SqPG33/k/lmsozcI5+D/2xRoL6mD4PyP1dj3D6fk/
Ez6I2lQn+z9rGrkfDLf6P6iE3q7kw/g/DtWOrkXa9j9h6QGSL3n2P1fJJ+hT
tPc/mXtDXuwm+T8KWSKioj75P/bpYbSxq/c/KZ3c+IGl9T8gGf0U2sj0PyaB
IA5KnfU/Z4uDEF4d9z8a3WXPFav3P6Hb1msJjPY/eG3sElyQ9D9aBVrA4E7z
P+VlDz+PrvM/Ot4sO24W9T8yXSYgSf/1P5XHmyBiXPU/5XIOMrWO8z+C/ifc
mQbyP4FPhVQb7/E/goxHzU4e8z/yOQXGjkH0P5HPQ+F1F/Q/8hzXvYuU8j+R
H7wjQOjwPz7fXelsYvA/ZeCYyYBA8T/t50aD6nryP+dNdqScu/I/ZyQA5B+X
8T/DSwWmlNPvP0LAfkiUEO4/1MyQlYgN7z+Ad8BdLbbwP3USRUfmSvE/SgME
ROiN8D+S13+SyP/tP81vGU/Jues/EBlSmGjw6z87i6MVxv3tP3gbv1aYle8/
9Ca3+aTm7j9ga3NGEj7sP5Wwax17suk/LYTLxm8x6T+9Mlb+gsDqP5sdtOk9
h+w/OLwD2HeK7D9YKMteHXnqP/PR9gS95+c/ogVVcVPR5j94zJwiUcjnP0b7
k3+Mf+k/yzWCkxAK6j9p8Rw1DZ/oP6BooC9NQ+Y/058TsNzJ5D+x4cno0iTl
PwgutSnBleY/kbmhed9u5z+9Gd9kjKLmPzSKhEg+reQ/ojbXlLsO4z+zPmb0
IOHiP9R0w+wu4uM/pCGvgmbH5D9reNbsHnrkP/Ko3Wy9DOM/RtvVUBGQ4T+k
hbaMlgbhP/MowdSsfuE/XFEVpd8i4j/yDMcEJRjiPxyQlJ3qROE/fqHOrPZG
4D/MgGaimHDfP3Bp5/unEN8/l3mlKQ==
"], "Meters", {{1}}]]}, {
TemporalData`DateSpecification[{2016, 2, 3, 17, 30, 0.}, {2016, 2, 7,
21, 30, 0}, {1, "Hour"}]}, 1, {"Continuous", 1}, {
"Discrete", 1}, 1, {
ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}},
True, 314.1];
Покажем уровень жидкости на графике.
DateListPlot[{h1, h2}, FrameLabel -> Automatic, Joined -> False,
Filling -> Axis]
Измерения уровня жидкости не являются одновременными. Как следствие, временные ряды имеют различные временные метки.
SameQ[h1["Dates"], h2["Dates"]]
Объем жидкости, вытекающей из каждого резервуара представлен в виде коэффициента с, и зависит от площади сечения воронки резервуаров и уровня жидкости, и задается в виде следующей функции.
flowFun[c_, a_, height_] :=
Evaluate[c*a*
Sqrt[2*UnitConvert[Entity["Planet", "Earth"]["Gravity"]]]*
Sqrt[height ]]
Вычислим отток из каждого резервуара, применяя формулу для каждого временного ряда.
flow1 = flowFun[.7, Quantity[\[Pi] 0.25^2, "Meters Squared"], h1];
flow2 = flowFun[.7, Quantity[\[Pi] 0.26^2, "Meters squared"], h2];
Вычислим общий отток жидкости.
TotalFlow = flow1 + flow2;
Временные штампы суммы объединяют временные отметки от обоих временных рядов в общий временной диапазон.
newtimes =
Union[Complement[flow1["Dates"], {flow1["FirstDate"]}],
Complement[flow2["Dates"], {flow2["LastDate"]}]];
SameQ[newtimes, TotalFlow["Dates"]]
Отобразим отток жидкости на графике.