gpt4 book ai didi

python - 如何从 (1000, 1) 和索引槽 n 值创建 (1000, 500) 数组?

转载 作者:行者123 更新时间:2023-12-01 08:14:47 25 4
gpt4 key购买 nike

我需要将变量 phi、En 和 Cn 放入适当大小的数组中。我能够在 Matlab 中成功地做到这一点,因为从 Matlab 到 python 的转换很困难。我将如何进行这个计算。当 n = 1 时,我基本上需要将整个 x 数组相乘,当 n = 2, ..., n = 500 时再次相乘,并获得 En 和 Cn 的正确大小的数组。

def Gaussan_wave_packet():

quantum_number = 500
x = np.linspace(0,100,1000).astype(complex)
x0 = 50, a = 10, l = 1
A = (1/(4*a**2))**(1/4.0)
m = 0.511*10**6 #mass
hbar = 6.58211951*10**(-16)
L = x[-1]

#Gaussian wave packet
psi_x0 = np.exp((-(x - x0)**2)/(4*a**2))*np.exp(1j*l*x)

#Normalize wave function
A = (1/(np.sqrt(np.trapz((np.conj(psi_x0)*psi_x0),x))))
psi_x0_normalized = np.outer(psi_x0,A) # Makes a (1000,1) array

phi_result = np.array([])
En_result = np.array([])
Cn_result = np.array([])

for n in range(0,quantum_number):

phi = ( np.sqrt( 2/L ) * np.sin( ( n * x * np.pi )/L ) ) # Needs to be (1000,500)
En = ( ( np.power(n,2))*(np.pi**2)*(hbar**2))/(2*m*L**2) # Needs to be (1,500)
Cn = np.trapz( ( np.conj(phi) * psi_x0_normalized ), x ) # Needs to be (1,500)

最佳答案

您可以将元素明智乘法与np.multiply(a,b)结合使用。并 reshape x 以便使用隐式扩展并避免 for 循环:

n = np.arange(quantum_number)
phi = np.sqrt(2/L) * np.sin((np.multiply(n,x.reshape(1000,1)*np.pi)/L ))

您可以将相同的逻辑应用于 EnCn

matlab 的等价物是:

n = 0:(quantum_number-1);
phi = (2/L)^0.5*sin(n.*x.'*pi/L);

关于python - 如何从 (1000, 1) 和索引槽 n 值创建 (1000, 500) 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55048915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com