粒子运动模拟 - Verlet积分算法简介

http://www.techbrood.com/zh/news/webgl/%E7%B2%92%E5%AD%90%E8%BF%90%E5%8A%A8%E6%A8%A1%E6%8B%9F---verlet%E7%A7%AF%E5%88%86%E7%AE%97%E6%B3%95%E7%AE%80%E4%BB%8B.html


Verlet算法是经典力学(牛顿力学)中的一种最为普遍的积分方法,被广泛运用在分子运动模拟(Molecular Dynamics Simulation),行星运动以及织物变形模拟等领域。Verlet算法要解决的问题是,给定粒子t时刻的位置r和速度v,得到t+dt时刻的位置r(t+dt)和速度v(t+dt)。最简单的方法是前向计算(考虑当前和未来)的速度位移公式,也就是显式欧拉方法,但精度不够,且不稳定。Verlet积分是一种综合过去、现在和未来的计算方法(居中计算),精度为O(4), 稳定度好,且计算复杂度不比显式欧拉方法高多少。

对于Verlet算法详细的介绍,可以参考维基百科:Verlet integration .

Verlet算法简要介绍

1. 将 x(t+Δt) 和 x(t-Δt) 进行泰勒展开

taylor expansions

2. 将以上两个表达式进行相加,得到位置表达式

displacement expression in verlet algorithm

这个式子就显明,如果知道当前时刻的位置和加速度,前一时刻的位置,就可以推算出下一时刻的位置。

3. 将1中的两个式子相减,再同时除以 2Δt 即可获得速度表达式

velocity expression in verlet algorithm

这个式子显明,只有在知道前一时刻和后一时刻的位置时,才有可能知道当前时刻的速度。也就是说,在当前时刻不能获得速度信息,必须要等到下一时刻的位置确定以后,才能返回来计算当前的速度。

4. 力(加速度)根据当前的位置 x(t),基于一定的势函数进行更新

Verlet算法积分步运行过程

根据verlet算法,要计算t' ( = t+Δt)时刻的位置,必须知道 t'-2Δt 时刻和 t'-Δt 时刻的位置, t'-2Δt 的速度和 t'-Δt 时刻的加速度具体演绎过程如下:

1. 根据 t'-Δt 和 t'-2Δt 时刻的位置、 t'-Δt 时刻的加速度 ,获得当前时刻 t' 的位置。

2. 根据当前时刻 t' 的位置,更新当前位置下的加速度(受力)。

3. 同时,可以更新 t'-Δt 时刻的速度。(速度是附带更新了,不更新速度并不妨碍积分过程继续下去。)

那么,现在就获得了 t' 时刻的位置, t'-Δt 时刻的速度和 t' 时刻的加速度,相当于将已知条件向前推进了一步(可以对比红色的部分)。

接下来的过程就是重复上面的过程。下图生动的反映了这个过程。

1469256656172035.jpg

其中t表示时间,r表示位置,v表示速度,a表示加速度。


### 如何在 Windows 上将 Node.js 升级到指定版本 对于希望在 Windows 平台上升级 Node.js 到特定版本的用户来说,使用 NVM (Node Version Manager) 是一种推荐的方法[^1]。下面提供具体的操作指南。 #### 安装适用于 Windows 的 NVM 首先需要安装 nvm-windows 工具来管理不同版本的 Node.js: 1. 访问 [nvm-windows 发布页面](https://github.com/coreybutler/nvm-windows/releases),下载最新版的 `nvm-setup.zip` 文件并解压。 2. 运行解压缩后的 `.exe` 文件完成安装过程。 3. 打开命令提示符窗口验证安装是否成功,输入 `nvm version` 应显示已安装的 nvm 版本号。 #### 使用 NVM 安装或切换 Node.js 版本 一旦有了 nvm-windows 后,就可以方便地安装所需的 Node.js 版本以及设置默认使用的版本: - 查询可用的远程版本列表:`nvm list available` - 安装某个特定版本(例如 v14.17.0):`nvm install 14.17.0` - 设置当前会话中的活动版本为刚安装的那个版本:`nvm use 14.17.0` - 将该版本设为全局默认版本:`nvm alias default 14.17.0` 以上操作完成后,可以通过运行 `node -v` 来确认现在正在使用的 Node.js 是否已经是所期望的目标版本。 ```bash # 验证安装情况 nvm --version # 显示所有本地已安装版本 nvm list # 更新至目标版本 nvm install <target_version> nvm use <target_version> ``` 为了确保环境配置正确无误,在每次更改 Node.js 版本之后建议重启任何打开的应用程序和服务端口以便使新的版本生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值