Как эффективно интегрировать шестиугольную область с помощью Cubature в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно интегрировать шестиугольную область с помощью Cubature в Python?

Сообщение Anonymous »

Мне нужно численно интегрировать функцию с двумя переменными с помощью пакета Cubature на Python. Двумерная область, по которой я хочу интегрировать, представляет собой шестиугольник. Интегрировать его в круговую область в полярных координатах можно быстро, но когда я пытаюсь интегрировать его в шестиугольную область, код становится медленным.
Я выполнил интегрирование в полярных координатах. Поскольку я (думаю) не могу установить r как функцию тэты в пределах интегрирования. Вместо этого я определил подынтегральную функцию так, что она становится нулевой за пределами шестиугольной границы. Есть ли эффективный/лучший способ сделать это?
#function for hexagonal boundary
def rfun(theta):
pt = np.pi/3
phi = theta % pt
return (3*s)/(2*(np.cos(phi) + np.cos(pt-phi)))

def myfunction(kk,para):
k=kk[0]
theta=kk[1]
cond=rfun(theta)
if k > cond:
ans=np.array([0.0,0.0])
else:
# contains my function
return ans

def integralfunction(para):
kmin = np.array([0.0, 0.0], np.float64) # kr, ktheta
kmax = np.array([s, 2*np.pi], np.float64) # kr, ktheta
kdim = 2 # kr, ktheta
fdim = 2 # real, imag

val, err = cubature(myfunction, kdim, fdim, kmin, kmax, args=(para),
adaptive='h', relerr=1e-5, maxEval=1e6, vectorized=False)

ireal, iimag = val
fresult= somefunction(ireal,iimag)
return fresult


Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»