在python中的numpy linspace上使用函数

在python中的numpy linspace上使用函数,python,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.linsp

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

函数
r_min(b)
只返回数组的一个索引
return fsolve(F,1)[0]
您希望它如何返回数组?没有“[0]”也是一样的,只是结果是[0.98549755197]。如果我理解得很好,您需要二维函数的所有根,关于其中一个维度。在这种情况下,
fsolve
不起作用。请看这里: