2016-10-27 8 views
1

に格納結果Iのように定義された基底関数のセットを持っている:私は今重複がSII =積分(シリコン(Si Si)のDX)を積分計算する重なり積分 - アレイ

def HO_wavefunction(x, n, x0, omega, m=1):  
    N = 1.0/math.sqrt(2**n * math.factorial(n)) * ((m * omega)/(math.pi))**(0.25) # Normaliziation constant 
    y = (np.sqrt(m * omega)) * (x - x0)     
    return N * np.exp(-y * y/2.0) * sp.hermite(n)(y) 

#Define the basis 
def enol_basis(x, n): 
    return HO_wavefunction(x, n, x0=Enolminx, omega=wenol) 

を、SJJ =基底関数の積分((Sj Sj)dx)とSij =積分((Si * Sj)dx)を計算し、それらをある種の配列に格納する。私は以下を試しました:

G = 10 
S = np.empty([G,G]) 

for n in range (G-1): 
    for m in range (G-1): 
     S[n][m]= np.trapz(enol_basis(x,n)*enol_basis(x,m),x) 
print (S[n][m]) 

これは、配列に格納されたすべての結果ではなく、単一の値を返します。上記のように重なり積分を計算して結果を配列に格納するのに役立つ人があれば、本当に感謝します。

+0

'プリント(S [n]は[M])を'あなたのforループの外側にあるので、それが唯一の最終的な 'N'でS' 'の要素を印刷すると' m。あなたが 'print(S [n] [m])'をインデントすると、問題は解決しますか? –

+0

これで修正されます。 G = 10 のS =のnp.zeros([G、G])の範囲内のnの (G):誰がこの問題に実行されている場合範囲でmに対して (G): S [N] [ m] = np.trapz(enol_basis(x、n)* enol_basis(x、m)、x) print(S) – XBB

+0

ありがとうございました。私は実際にそれを持っていた! – XBB

答えて

1

対処:

G = 50 
S = np.zeros([G,G]) 

for n in range (G): 
    for m in range (G): 
     S[n,m]= np.trapz(enol_basis(x,n)*enol_basis(x,m),x) 
print (S) 
関連する問題