
彭芳麟《计算物理基础》第五章练习第2题
研究平方反比斥力场中粒子的运动。以粒子在重核场中的运动为例,设重核位于力心且固定不动,
粒子的质量为
,它到重核的距离为
,所受到库仑斥力
,
为由库仑定律确定的常量。要求:
本题微分方程
(1)画出粒子在不同初始条件下的轨道,通过改变初始条件研究影响散射角的因素。
令
得
代码实现:
# 导入所需模块
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
plt.rcParams['axes.linewidth'] = 1.5
plt.rcParams['lines.linewidth'] = 3
plt.rcParams['xtick.labelsize'] = 20
plt.rcParams['ytick.labelsize'] = 20
from scipy.integrate import odeint #直角坐标系下的微分方程
def fun(y,t):
k = 3
return np.array([y[1],#x一阶导
k*y[0]/np.sqrt(y[0]**2+y[2]**2)**3,#x二阶导
y[3],#y一阶导
k*y[2]/np.sqrt(y[0]**2+y[2]**2)**3])#y二阶导
#初始条件
y0=np.array([[-10,1,10,0],
[-10,1,-10,0],
[-10,1,2,0],
[-10,1,-2,0],
[-10,2,2,0],
[-10,2,-2,0],
[-10,1,4,0],
[-10,1,-4,0],
[-10,1,15,0],
[-10,1,-15,0],
[-10,1,7,0],
[-10,2,-7,0],
[-10,2,7,0],
[-10,1,-7,0],
[-10,1,0,0.4],
[-10,1,0,-0.4]])
t = np.arange(0,35,0.1)
plt.figure(figsize=(15,8),dpi=300)
for i in range(len(y0)):
res = odeint(fun, y0[i], t)
x,y = res[:,0],res[:,2]
plt.plot(x,y)
plt.plot(0,0,'ko',ms=10)
plt.text(0.5,-0.4,'靶粒子',fontsize=20)
plt.axis([-10,20,-20,20])
图像:

散射结果
(2)根据解决问题的需要来选择坐标系,本题就是选择直角坐标系而不是极坐标系。
如有错误,欢迎指正!