Векторизация интеграции на Python (оценка интегралов для массива параметров) - PullRequest
1 голос
/ 13 января 2020

У меня возникают трудности при попытке выяснить, как интегрировать векторизацию на Python. Мой интеграл имеет вид erf c (x * a), и я хочу оценить интеграл для различных параметров unq = [0,1,2,3, ..... 1000]. В настоящее время я использую scipy.integrate для оценки интеграла по интервалам [0,50] с использованием FOR l oop. Тем не менее, это не является вычислительно эффективным при выполнении длинных симуляций.

import scipy.integrate as integrate
import scipy.special as special
import numpy as np
import matplotlib.pyplot as plt
import math as ma


unq = np.array([1,2,3,4,5,6])
F0 = np.arange(84600,86400*50,86400)
Z = 25
H = 50
k = 3.5
g_function_list = list()


for F in F0:
    buffer = list()
    for v,i in enumerate(unq):
            T = lambda H:(((special.erfc(ma.sqrt(i**2+(Z-H)**2)/(2*ma.sqrt(F))))/(ma.sqrt(i**2+(Z-H)**2)))-((special.erfc(ma.sqrt(i**2+(Z+H)**2)/(2*ma.sqrt(F))))/(ma.sqrt(i**2+(Z+H)**2))))
            results = integrate.quad(T,0,H)
            buffer.append(results[0])

    g_function_list.append(np.array(buffer)*(1/(4*np.pi*k)))

print(g_function_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...