我在大学的任务是模拟两个粒子的碰撞。一个子任务是根据常数b计算两个粒子的最小距离。
我必须改变常量b,我想通过在整个linspace上应用下面的函数来实现。但是,该函数只返回一个值而不是一个解决方案数组。
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
#given constants
sigma = 1
eps = 0.5
n_b = 100
b_var = np.linspace(0,3,n_b)
E = 0.2
def U(r):
return 4*eps*((sigma/r)**12 - (sigma/r)**6)
def r_min(b):
F = lambda r: E*(1 - (b**2/r**2)) - U(r)
return fsolve(F,1)[0]
print(r_min(b_var))
>>> 0.98549755197