Ciao, voglio integrare una funzione da 0 a diversi limiti superiori (circa 1000). Ho scritto un pezzo di codice per farlo usando un ciclo for e aggiungendo ogni valore a un array vuoto. Tuttavia mi rendo conto che potrei rendere il codice più veloce eseguendo integrali più piccoli e aggiungendo il risultato integrale precedente a quello appena calcolato. Quindi farei lo stesso numero di integrali, ma su un intervallo più piccolo, quindi aggiungo semplicemente l'integrale precedente per ottenere l'integrale da 0 a quel limite superiore. Heres il mio codice in questo momento:Come rendere la mia integrazione Python più veloce?
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
Quali modifiche devo fare per fare la tecnica di ottimizzazione che ho suggerito?
Dovrebbe essere chiamato Lv? Altrimenti Lv non viene inizializzato prima che venga chiamato il metodo append. – Moustache