第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Numba在SciPy中使用任意數(shù)量的變量和參數(shù)執(zhí)行多重集成?

如何使用Numba在SciPy中使用任意數(shù)量的變量和參數(shù)執(zhí)行多重集成?

qq_笑_17 2021-04-06 10:19:45
我想使用Numba裝飾多重積分的被積分,以便SciPy的Nquad函數(shù)可以將它作為LowLevelCallable進行調用。理想情況下,裝飾器應允許使用任意數(shù)量的變量,以及Nquad的args參數(shù)中任意數(shù)量的其他參數(shù)。這是從今年初以來出色的問答環(huán)節(jié)建立的,但是擴展到了多個變量和參數(shù)的情況。例如,假設以下具有N個變量和K個參數(shù)的多重積分:以下代碼有效,但僅適用于兩個變量和兩個參數(shù)(N = 2,K = 2)。它不適用于更一般的情況。這是因為裝飾器中的某些參數(shù)是手動枚舉的(包裝函數(shù)內部的xx [0],xx [1],xx [2],xx [3] )。裝飾器將必須針對每個不同數(shù)量的變量或參數(shù)進行編輯。如果可能的話,我想避免這種情況。請注意,被積函數(shù)本身利用了Numpy對象和方法,因此不會出現(xiàn)此問題。import numpy as npimport scipy.integrate as siimport numbafrom numba import cfunc,carrayfrom numba.types import intc, CPointer, float64from scipy import LowLevelCallabledef jit_integrand_function(integrand_function):    jitted_function = numba.jit(integrand_function, nopython=True)    @cfunc(float64(intc, CPointer(float64)))    def wrapped(n, xx):        return jitted_function(xx[0], xx[1], xx[2], xx[3])        #xx = carray(xx,len(xx))        #return jitted_function(xx)    return LowLevelCallable(wrapped.ctypes)@jit_integrand_functiondef integrand(*args):    d = np.array([args])    return -np.exp(d.prod())#Two variable, two parameter exampleparms = np.array([2,3])print si.nquad(integrand,[[0,1],[0,1]],parms)理想的代碼將只使用一個裝飾上積函數(shù)也運行:#Three variable, three parameter exampleparms2 = np.array([1,2,3])print si.nquad(integrand,[[0,1],[0,1],[0,1]],parms2)Numba文檔引用了carray函數(shù),在給定回調中的低級指針和數(shù)組大小時,該函數(shù)應返回Numpy數(shù)組??赡艿氖?,這可以用于推廣超出二變量二參數(shù)情況的代碼。我(未成功)嘗試實現(xiàn)這一點的是在兩行注釋掉的代碼行中。幫助將不勝感激。實際上,一位Numba開發(fā)人員指出SciPy集成是編寫Numba的原因之一,但是缺少該領域的文檔和示例。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號