2015-12-22 3 views
1

Пожалуйста, помогите мне с простой задачей.Как найти одно событие в Modelica?

У меня есть функция delta = f (время). См. Изображение.

enter image description here

Мне нужно найти значение «время», когда «дельта» стала нулевой и присвоить значение расчетного времени для какого-либо параметра. Например, я могу видеть на картинке, что время, которое совпадает с delta = 0, составляет приблизительно 9,3. Я могу назначить реальную переменную X = 9.3. Но могу ли я сделать это автоматически? Я имею в виду, может Modelica может назначить от 9.3 до X?

P.S. Я использую команду while/while/if, но они работают до длительности, но мне нужно найти одно событие (когда delta = 0).

ответ

3

Я не понимаю ваш PS. when пункт является способ сделать это, и это просто:

Real X; 
equation 
when delta<=0 then 
    X := time; 
end when; 

В чем проблема с этим?

+0

Здравствуйте, Майкл! Спасибо за ваш ответ, вашу книгу и твой твиттер - я прочитал их все, и меня это очень интересует.) Проблема в том, что я использую предложение «когда», я получаю переменную зазора (см. Рисунок ниже). Но я хочу найти точно значение 9.3 (как константу без пробела). Это ясно? http://hostingkartinok.com/show-image.php?id=25852cefe1a14f61428b296eea02dd94 – Ascold

+1

Две вещи, которые следует учитывать. Сначала используйте '<=' vs. '<'. Но что более важно, решатель * численный *, поэтому он не может точно решить. Таким образом, он решает в пределах некоторого * толерантности *. Вы можете указать этот допуск (как это сделать, от инструмента к инструменту, но все они позволяют указать его). Поэтому попробуйте подтянуть свои допуски. Удачи. –

 Смежные вопросы

  • Нет связанных вопросов^_^