modelica练习

正式开始前的小练习

①求解简单的微分方程组,并在坐标轴上表示

学习了class的定义,以及simulate与plot这两个函数,对整个建模、仿真、输出结果的流程有了大概的掌握。

②求解相对复杂的二元微分方程组,并在坐标轴上作图表示

将前一个问题中的数学表达稍复杂化,但就程序员而言并无新的挑战,是一次偏重复的练习。

③仿真范德波尔振荡模型,并作图

应用上,更加接近了实际问题中的物理模型;在编程上,这一部分加入了注释的输入和常量的使用。注释又分两层,一层是描述性注释,标识符为“”;另一层是源代码注释,标识符为//。两者的区别在于后者会在编译时被机器忽略。当建模时需要使用常量时,可供选择的变量类型有parameter和constant两种。

④基于前三个练习,对第一和第二个模型中的参数值进行修改

实际上,在一开始的时候,我与同伴已经这样做了。

一个相对完整的项目

这个项目里,我们需要仿真出Apollo13登月落地时的情况,并作出其高度与速度随时间变化的曲线。

①构建飞行器满足的物理模型

列出相关的方程式,并通过与之前类似的方法构建飞行器模型,值得注意的是,在这里,一个class中的常量可以在仿真前通过class.parameter的语法来进行定义。

②构建目标天体满足的物理模型

通过先定义类CelestialBody,再利用语句CelestialBody moon来定义moon的方法,进一步展示了面向对象编程时,类与对象的概念

③构建飞行器落地的物理模型
抽象出的物理模型是飞行器在只受到万有引力和火箭推力的情况下运动,火箭推力随时间为分段的阶梯函数。在语法上,新习得protected与public来区分是否可以另外赋值的常量。

最后得到的图像与预期相符,实验完成。


实验心得

①要逐步提高科技英文阅读能力和英语思考能力

科技英文阅读能力的提高有助于我们更快更好地了解世界最新的知识,更好地使用相关的软件工具。英语思考能力在能提高我们对于英文的反应速度和表达能力,是更高的要求。

②使用前沿软件Modelica,开拓了眼界

只需要输入由方程“直译”而来的代码,就能实现求解,进而仿真,这让我跳出了之前狭小的视野圈。同时,前沿软件不可避免的bug也让学习过程更加地令人兴奋,暗藏在不成熟下的成长的力量使20岁的我产生了共鸣。



猜你喜欢

转载自blog.csdn.net/zxl15396229773/article/details/79491167