在python

时间:2018-05-08 19:01:16

标签: python

我在大学的任务是模拟两个粒子的碰撞。一个子任务是根据常数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

0 个答案:

没有答案