У меня есть переменная T, которая является вектором. Переменная зависит от своей производной и, следовательно, зависит от времени:
T = function(der(T))
Я хотел бы сделать что-то вроде этого:
T = function(der(T));
T = Modelica.Math.Vectors.sort(T);
Это нельзя реализовать как таковое, иначе выскакивает ошибка. Я использовал следующий обходной путь:
T = function(der(T));
T2 = Modelica.Math.Vectors.sort(T);
when sample(0,t) then
reinit(T, T2);
end when;
Есть ли лучший способ сделать это без необходимости в случае когда или в дополнительной переменной?
РЕДАКТИРОВАТЬ:
function(der(T)) не является простым алгебраическим выражением. Эта функция состоит из нескольких выражений, содержащихся в циклах for и if case.
T=function(der(T))
илиT=sort(function(der(T)))
, но не оба. Вы понимаете, почему (т. е. единственное правило присваивания)? - person Michael Tiller   schedule 14.05.2014T
и отдельный, например.T2
, который содержит отсортированный. У вас не может быть одной переменной, которая содержит оба. - person Michael Tiller   schedule 14.05.2014der(T)
? Поэтому вы хотите, чтобыT
иT2
были одинаковыми? В общем, это не сработает по причинам, которые вы упомянули в своем редактировании. Вы хотите взять производную отT
, но, как вы указываете, она содержитfor
циклов иif
утверждений (которые, как правило, не могут быть дифференцированы). Опять же, я бы посоветовал вам уточнить, почему вам нужно это сделать, и может оказаться, что это даже не нужно. - person Michael Tiller   schedule 15.05.2014