我基本上想要的是比较时间值(t1和tuit)(以小时为单位)来确定在名为'stijghoogteverlaging'的函数中用于计算'S'和'k'的方法。然后可以使用这些值进行拟合曲线。
我尝试了多种方法,比如在两种方法下放置'return s'。
api
但是我得到了一条错误的拟合曲线,如下图所示。 现在我尝试只放一个'return s',但是这需要永远计算,我必须打断内核。
api(options, resp => {
console.log(resp.headers.get('x-expires-at'));
});
有没有人有解决方案?
t1和pb1的使用值:
绘制错误的拟合曲线(以分钟为单位的时间)。
答案 0 :(得分:0)
函数stijghoogteverlaging
一遍又一遍地执行无意义操作:
def stijghoogteverlaging(t, k, S):
for i in range(len(t1)):
if t1[i] < tuit:
s = Q / (4 * np.pi * k * D) * exp1(S * r**2 / (4 * k * D * t))
else:
s = Q / (4 * np.pi * k * D) * ((exp1(S * r**2 / (4 * k * D * t))) - (exp1(S * r**2 / (4 * k * D * (t - tuit)))))
return s
您正在迭代len(t1)
次,并且在每次迭代中,您每次都在计算s
的完整向量化值。这意味着您每次调用计算len(t)**2
个值,并使用Python for
循环作为外部循环来执行此操作。作为次要问题,您将x-data作为全局变量t1
而不是传入的本地值t
。
你的功能应该看起来更像这样:
def stijghoogteverlaging(t, k, S):
return np.where(t < tuit,
Q / (4 * np.pi * k * D) * exp1(S * r**2 / (4 * k * D * t)),
Q / (4 * np.pi * k * D) * ((exp1(S * r**2 / (4 * k * D * t))) - (exp1(S * r**2 / (4 * k * D * (t - tuit)))))
)
这会计算每次调用的len(t) * 2
值,而不是len(t)**2
,并为t
的每个值从相应的结果中选择一个值。