gpt4 book ai didi

python - 如何使我的 python 集成更快?

转载 作者:太空狗 更新时间:2023-10-29 20:24:19 25 4
gpt4 key购买 nike

您好,我想集成一个从 0 到几个不同上限(大约 1000)的函数。我已经编写了一段代码来使用 for 循环并将每个值附加到一个空数组来执行此操作。但是我意识到我可以通过做更小的积分然后将先前的积分结果添加到刚刚计算的结果来使代码更快。所以我会做相同数量的积分,但在更小的间隔内,然后只需添加先前的积分以获得从 0 到该上限的积分。这是我目前的代码:

import numpy as np                              #importing all relevant modules and functions
from scipy.integrate import quad
import pylab as plt
import datetime
t0=datetime.datetime.now() #initial time
num=np.linspace(0,10,num=1000) #setting up array of values for t
Lt=np.array([]) #empty array that values for L(t) are appended to
def L(t): #defining function for L
return np.cos(2*np.pi*t)
for g in num: #setting up for loop to do integrals for L at the different values for t
Lval,x=quad(L,0,g) #using the quad function to get the values for L. quad takes the function, where to start the integral from, where to end the integration
Lv=np.append(Lv,[Lval]) #appending the different values for L at different values for t

我需要做哪些更改才能采用我建议的优化技术?

最佳答案

基本上,我们需要跟踪 Lvalg 的先前值。 0 对两者来说都是一个很好的初始值,因为我们想从第一个积分加 0 开始,而 0 是区间的开始。你可以用这个替换你的 for 循环:

last, lastG = 0, 0
for g in num:
Lval,x = quad(L, lastG, g)
last, lastG = last + Lval, g
Lv=np.append(Lv,[last])

在我的测试中,这明显更快。

正如@askewchan 在评论中指出的那样,这甚至更快:

Lv = []
last, lastG = 0, 0
for g in num:
Lval,x = quad(L, lastG, g)
last, lastG = last + Lval, g
Lv.append(last)
Lv = np.array(Lv)

关于python - 如何使我的 python 集成更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20484394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com