肇庆cms建站系统,易建筑友科技有限公司网站,网站建设 技术可行性,重庆seo排力计算
我们将假设一个由 N N N 个点粒子组成的系统#xff0c;索引为 i 1 , … , N i1, \ldots, N i1,…,N。每个粒子都有一个#xff1a; 质量 m i m_i mi 位置 r i [ x i , y i , z i ] r_{\boldsymbol{i}}\left[x_i, y_i, z_i\right] ri[xi,yi,zi] 速…力计算
我们将假设一个由 N N N 个点粒子组成的系统索引为 i 1 , … , N i1, \ldots, N i1,…,N。每个粒子都有一个 质量 m i m_i mi 位置 r i [ x i , y i , z i ] r_{\boldsymbol{i}}\left[x_i, y_i, z_i\right] ri[xi,yi,zi] 速度 v i [ v x i , v y i , v z i ] \mathbf{v}_{\boldsymbol{i}}\left[\mathrm{vx}_i, \mathrm{v} y_i, \mathrm{v} z_i\right] vi[vxi,vyi,vzi]
根据牛顿万有引力定律著名的“平方反比定律”每个粒子都会感受到所有其他粒子的引力。也就是说每个粒子都会感受到加速度 a i G ∑ j ≠ i m j r j − r i ∣ r j − r i ∣ 3 \mathbf{a}_iG \sum_{j \neq i} m_j \frac{\mathbf{r}_j-\mathbf{r}_i}{\left|\mathbf{r}_j-\mathbf{r}_i\right|^3} aiGji∑mj∣rj−ri∣3rj−ri
Python计算矩阵
时间积分
位置和速度使用蛙跳方案进行更新。对于每个时间步 Δt每个粒子都会受到半步“跳” v i v i Δ t 2 × a i \mathbf{v}_i\mathbf{v}_i\frac{\Delta t}{2} \times \mathbf{a}_i vivi2Δt×ai
Python加速度函数
上述代码的性能在Python中实际上可以通过向量化来提高。 也就是说用向量和矩阵运算来表述问题。 它通常可以带来 100 倍的加速还使代码更具可读性。 缺点是在矩阵内存储中间计算会占用大量内存。 这是计算所有粒子加速度的函数的矢量化版本
Python矢量加速度计算
Python动能和势能
我们的代码计算这些量并跟踪总能量以确保通过数值方法近似守恒。
MatLab再实现
参阅 - 亚图跨际