我想从数字的角度理解混合建模(特别是状态事件)背后的一般思路(虽然我不是数学家:)).鉴于以下Modelica模型:
model BouncingBall
constant Real g=9.81
Real h(start=1);
Real v(start=0);
equation
der(h)=v;
der(v)=-g;
algorithm
when h < 0 then
reinit(v,-pre(v));
end when;
end BouncingBall;
Run Code Online (Sandbox Code Playgroud)
我理解的概念when和reinit.
when声明中的等式仅在条件成立时才有效吗?2sec.由于我使用多步求解器,这意味着求解器"超过2秒",识别出h<0(假设在模拟time = 2.5sec中h = -0.7).这是什么意思"使用交叉函数搜索事件的时间?是否有简单的解释(示例)?pre()在这种情况下,操作意味着什么?noEvent():"表达式是字面意义而不是生成交叉函数.由于没有交叉函数,因此没有要求表达式可以在事件限制之外进行评估":这是什么意思?给出与弹跳球相同的例子:求解器在时间2.5检测到h = 0.7.有没有区别noEvent()?我已经为JModelica安装了商业解决方案包(OCT)(基于python) - >当我想通过"Ipython"打开JModelica时,我收到以下错误消息:
Traceback (most recent call last):
File "C:\OCT-1.0b1\Python27\scripts\ipython-script.py", line 5, in <module>
from pkg_resources import load_entry_point
File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2825, in
<module>
add_activation_listener(lambda dist: dist.activate())
File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 710, in
subscribe
callback(dist)
File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2825, in
<lambda>
add_activation_listener(lambda dist: dist.activate())
File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2260, in
activate
map(declare_namespace, self._get_metadata('namespace_packages.txt'))
File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 1836, in
declare_namespace
path = sys.modules[parent].__path__
KeyError: 'pyomo'
Run Code Online (Sandbox Code Playgroud)
我通过spyder/Anaconda2(64位)与pyomo合作
如果有人可以帮助我,那会很棒!
我是"物理系统建模"主题的新手.我阅读了一些基础文献,并在Modelica和Simulink/Simscape中做了一些教程.如果我理解以下内容,我想问你:
非常感谢您的回答.