三维空间模拟小球轨迹代码
时间: 2023-07-09 09:11:53 浏览: 81
以下是一个简单的三维空间模拟小球轨迹的 Python 代码示例,它使用了欧拉法(Euler Method)对小球的位置和速度进行更新,模拟了小球在重力作用下的运动轨迹:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 定义常数
G = 6.674e-11 # 万有引力常数
M = 5.98e24 # 地球质量
R = 6.37e6 # 地球半径
# 定义初始状态
x0 = np.array([0, 0, R+5000]) # 初始位置,纬度、经度、高度
v0 = np.array([7000, 0, 0]) # 初始速度,x、y、z方向速度
# 定义模拟参数
dt = 0.1 # 时间步长
T = 10000 # 模拟时间
# 定义轨迹数组
x = [x0]
v = [v0]
# 进行模拟
for i in range(int(T/dt)):
r = np.linalg.norm(x[-1]) # 计算距离
F = -G*M/r**3 * x[-1] # 计算受力
x_new = x[-1] + v[-1] * dt # 计算新位置
v_new = v[-1] + F * dt # 计算新速度
x.append(x_new)
v.append(v_new)
# 将轨迹数组转化为 numpy 数组
x = np.array(x)
# 绘制轨迹
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x[:, 0], x[:, 1], x[:, 2])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
```
注:上述代码中的单位是国际单位制(SI)。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)