使用js计算双摆的轨迹并绘制仿真动画。这是一个Matlab的移植项目。
直接在线体验或者下载整个文件,然后双击index. htm在浏览器中运行。注意目前还需网络。
1 由于目前我还无法完成加载动画的正确添加(不管我如何添加加载动画,它都会计算完成后再显示加载动画,这违背的加载动画的意 义),所以点击开始仿真按钮后请一定耐心等待一下,因为计算需要一定时间,尤其是仿真时长很长的情况下。另外,如果有大佬有好 的解决办法,望告知
2 迭代步长不能太大,否则会导致计算失败。也不建议过小,会导致计算量太大而计算时间过长。个人建议最好在0.001到0.0001之 间。算了,由于容易出错,所以锁定了步长)
双摆的运动微分方程:
用四阶龙格-库塔算法进行迭代计算:
虽然这只是个小项目,但背后却蕴藏着一些物理和数学原理,需要用到理论力学和工程数学知识,有兴趣的可以看详细的解读:双摆运动仿真背后的原理
首先,要知道双摆是一种混沌运动。所谓的混沌就是运动轨迹是实实在在确定的,即在理论上可用数学计算出,可以提前预测的。但却在实际中,无法准确预测,因为混沌运动对初始条件极其敏感,注意,是极其。初始条件一点点的细微不同,会导致后期巨大的差异。
所以无论Matlab或js计算精度有多高,总会有细微误差。故均不能长期准确计算出双摆的理论轨迹。这也是为什么不能长期预测天气的原因。
虽然不能长期准确预测运动轨迹,但还是要简单对比一下js和Matlab的计算精度。毕竟仿真不是看动画做得多逼真多好看,而是与真实情况多接近。
自先来看看短期仿真对比,因为短期仿真与真实值接近:
还是看得出有不小的区别的。这里不得不说Matlab在计算上还是很厉害,仅用0.1的迭代步长就可是算出比较稳定的数据。而上图JavaScript用的0.0001的迭代步长(即计算量比Matlab多1000倍),并且不同的步长算出的数据也不太稳定。当然,Matlab用的自带的算法,具体我也不知道用的啥算法,但我估计使用了修正算法。而此项目用的四阶龙格-库塔算法,大概没有修正,越到后越远离真实值。哎,被Matlab无情吊打。不过还是要说一下,由于混沌运动的特性,算到后面Matlab也不会很准确。
总结:此应用对双摆运动的仿真短期还行,时间长了精度较差,娱乐一下还行吧。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。