# 双摆运动仿真桌面版 **Repository Path**: cgper/double-pendulum-motion-simulation-desktop ## Basic Information - **Project Name**: 双摆运动仿真桌面版 - **Description**: 将双摆运动仿真网页版打包成桌面版。 - **Primary Language**: JavaScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2020-09-09 - **Last Updated**: 2023-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 双摆运动仿真桌面版 ### 介绍 将双摆运动仿真网页版打包成桌面版。 ### 截图 ![](https://images.gitee.com/uploads/images/2020/1019/171234_e9581135_2020534.gif "GIF4.gif") ### 安装教程 [请前往发行版下载](https://gitee.com/cgper/double-pendulum-motion-simulation-desktop/releases) ### 在线体验 [点击在线体验](http://cgper.gitee.io/double-pendulum-motion-simulation-online/) ### 注意 由于Linux下electron实现圆角UI有问题,所以Linux版源码请修改css去掉圆角。上面展示的源码只适合Windows和Mac使用。 ### 原理 双摆的运动微分方程: ![](https://images.gitee.com/uploads/images/2020/0904/200305_94d1c8cb_2020534.png "微分方程.png") 用四阶龙格-库塔算法进行迭代计算: ![](https://images.gitee.com/uploads/images/2020/0904/200348_f284bcc6_2020534.png "龙格库塔.png") 虽然这只是个小项目,但背后却蕴藏着一些物理和数学原理,需要用到理论力学和工程数学知识,有兴趣的可以看详细的解读:[双摆运动仿真背后的原理](https://www.jianshu.com/p/844287eb0b34?utm_campaign=shakespeare&utm_content=note&utm_medium=reader_share&utm_source=weixin) ### 精度 首先,要知道双摆是一种混沌运动。所谓的混沌就是运动轨迹是实实在在确定的,即在理论上可用数学计算出,可以提前预测的。但却在实际中,无法准确预测,因为混沌运动对初始条件极其敏感,注意,是极其。初始条件一点点的细微不同,会导致后期巨大的差异。 所以无论Matlab或js计算精度有多高,总会有细微误差。故均不能长期准确计算出双摆的理论轨迹。这也是为什么不能长期预测天气的原因。 虽然不能长期准确预测运动轨迹,但还是要简单对比一下js和Matlab的计算精度。毕竟仿真不是看动画做得多逼真多好看,而是与真实情况多接近。 首先来看看短期仿真对比,因为短期仿真与真实值接近: ![左js,右matlab](https://images.gitee.com/uploads/images/2020/0904/201202_80a356a0_2020534.png "Snipaste_2020-09-04_19-56-08.png") 还是看得出有不小的区别的。这里不得不说Matlab在计算上还是很厉害,仅用0.1的迭代步长就可以算出比较稳定的数据。而上图JavaScript用的0.0001的迭代步长(即计算量比Matlab多1000倍),并且不同的步长算出的数据也不太稳定。当然,Matlab用的自带的算法,具体我也不知道用的啥算法,但我估计使用了修正算法。而此项目用的四阶龙格-库塔算法,大概没有修正,越到后越远离真实值。哎,被Matlab无情吊打。不过还是要说一下,由于混沌运动的特性,算到后面Matlab也不会很准确。 总结:此应用对双摆运动的仿真短期还行,时间长了精度较差,娱乐一下还行吧。 ### 致谢 [vue](https://cn.vuejs.org/) [electron](https://www.electronjs.org/) [vue-cli-plugin-electron-builder](https://github.com/nklayman/vue-cli-plugin-electron-builder) [Echarts](https://echarts.apache.org/zh/index.html) [Element](https://element.eleme.cn/#/zh-CN/)