python布朗运动模拟
时间: 2023-07-05 08:31:34 浏览: 112
the-real-time-animation.zip_site:www.pudn.com_布朗运动模拟
布朗运动是一种无规则的运动,可以用随机过程来模拟。具体实现可以采用以下步骤:
1.导入所需模块
```
import numpy as np
import matplotlib.pyplot as plt
```
2.设置模拟参数
```
n = 1000 # 粒子数
t = 1000 # 总时间
dt = 0.01 # 时间步长
D = 1 # 扩散系数
```
3.初始化位置和速度
```
x = np.zeros(n)
y = np.zeros(n)
vx = np.sqrt(2*D*dt)*np.random.randn(n)
vy = np.sqrt(2*D*dt)*np.random.randn(n)
```
4.模拟运动
```
for i in range(t):
x += vx * dt
y += vy * dt
vx += np.sqrt(2*D*dt)*np.random.randn(n)
vy += np.sqrt(2*D*dt)*np.random.randn(n)
```
5.绘制结果
```
plt.plot(x, y, 'ro', markersize=1)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
完整代码如下:
```
import numpy as np
import matplotlib.pyplot as plt
n = 1000 # 粒子数
t = 1000 # 总时间
dt = 0.01 # 时间步长
D = 1 # 扩散系数
x = np.zeros(n)
y = np.zeros(n)
vx = np.sqrt(2*D*dt)*np.random.randn(n)
vy = np.sqrt(2*D*dt)*np.random.randn(n)
for i in range(t):
x += vx * dt
y += vy * dt
vx += np.sqrt(2*D*dt)*np.random.randn(n)
vy += np.sqrt(2*D*dt)*np.random.randn(n)
plt.plot(x, y, 'ro', markersize=1)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
阅读全文