前提
Scipyのintegrate.dblquadを用いた重積分の計算をNumbaで高速化したいのですがエラーが出てしまいます。エラーの原因や解決方法など教えていただきたいです。
※Numbaなしだと普通に実行できます。
実現したいこと
Numbaを用いてdblquadの計算を高速化する。
発生している問題・エラーメッセージ
Cannot capture the non-constant value associated with variable 'Z0' in a function that will escape. File "AppData\Local\Temp\ipykernel_2752\956814281.py", line 9: <source missing, REPL/exec in use?>
該当のソースコード
from scipy import integrate import numpy as np from numba import jit @jit def Shannon_m0(): f = lambda Y, X, σ=1/6*1E-6, μ=1.5*1E-6, a=1.5E-6 , c=0.5E-6, c0=0.5E-6, kBT = 4.14E-21, t=0, f=1/4, f2=1/3, f3=1, σ2=1/12*1E-6:np.exp(-(-1E-25/((2*np.pi)**(1/2)*σ)*(1/2)*(np.exp(-((X**2+Y**2)**(1/2)-μ)**2/(2*σ**2))+np.exp(-(((X/3)**2+Y**2)**(1/2))**2/(2*σ**2))-f2*t*np.exp(-(((X/1.5)**2+Y**2)**(1/2))**2/(2*σ2**2))+(1/3)*np.exp(-(((X+c)**2+Y**2)**(1/2))**2/(2*σ**2))+(1/3)*np.exp(-(((X-c)**2+Y**2)**(1/2))**2/(2*σ**2))-np.exp(-(X**2+(Y-a)**2)/(2*σ**2))-np.exp(-(X**2+(Y+a)**2)/(2*σ**2))))/(kBT)) Z0, err = integrate.dblquad(f, -3E-6, 3E-6, lambda X: -3E-6, lambda X: 3E-6) g = lambda Y, X, σ=1/6*1E-6, μ=1.5*1E-6, a=1.5E-6 , c=0.5E-6, c0=0.5E-6, kBT = 4.14E-21, t=0, f=1/4, f2=1/3, f3=1, σ2=1/12*1E-6:1/Z0*np.exp(-(-1E-25/((2*np.pi)**(1/2)*σ)*(1/2)*(np.exp(-((X**2+Y**2)**(1/2)-μ)**2/(2*σ**2))+np.exp(-(((X/3)**2+Y**2)**(1/2))**2/(2*σ**2))-f2*t*np.exp(-(((X/1.5)**2+Y**2)**(1/2))**2/(2*σ2**2))+(1/3)*np.exp(-(((X+c)**2+Y**2)**(1/2))**2/(2*σ**2))+(1/3)*np.exp(-(((X-c)**2+Y**2)**(1/2))**2/(2*σ**2))-np.exp(-(X**2+(Y-a)**2)/(2*σ**2))-np.exp(-(X**2+(Y+a)**2)/(2*σ**2))))/(kBT))*np.log(1/Z0*np.exp(-(-1E-25/((2*np.pi)**(1/2)*σ)*(1/2)*(np.exp(-((X**2+Y**2)**(1/2)-μ)**2/(2*σ**2))+np.exp(-(((X/3)**2+Y**2)**(1/2))**2/(2*σ**2))-f2*t*np.exp(-(((X/1.5)**2+Y**2)**(1/2))**2/(2*σ2**2))+(1/3)*np.exp(-(((X+c)**2+Y**2)**(1/2))**2/(2*σ**2))+(1/3)*np.exp(-(((X-c)**2+Y**2)**(1/2))**2/(2*σ**2))-np.exp(-(X**2+(Y-a)**2)/(2*σ**2))-np.exp(-(X**2+(Y+a)**2)/(2*σ**2))))/(kBT))) S, Serr = integrate.dblquad(g, -3E-6, 3E-6, lambda X: -3E-6, lambda X: 3E-6) return S Shannon_m0()
試したこと
補足情報(FW/ツールのバージョンなど)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/13 02:57