作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在具有指定自相关函数的 1D 或 2D 空间中生成随机势,并且根据一些数学推导,包括 Wiener-Khinchin 定理和傅立叶变换的性质,结果证明这可以使用以下等式完成:
哪里phi(k)
在区间 [0, 1) 内均匀分布。而这个函数满足 ,这是为了确保产生的势总是真实的。
自相关函数应该不会影响我在这里做的事情,我取了一个简单的高斯分布 .phi(k)
相项的选择和条件基于以下属性
phi(k)
综上所述。然后我执行了 numpy(逆)快速傅立叶变换。
import numpy as np
from numpy.fft import fft, ifft
import matplotlib.pyplot as plt
## The Gaussian autocorrelation function
def c(x, V0, rho):
return V0**2 * np.exp(-x**2/rho**2)
x_min, x_max, interval_x = -10, 10, 10000
x = np.linspace(x_min, x_max, interval_x, endpoint=False)
V0 = 1
## the correlation length
rho = 1
## (Uniformly) randomly generated array for k>0
phi1 = np.random.rand(int(interval_x)/2)
phi = np.concatenate((-1*phi1[::-1], phi1))
phase = np.exp(2j*np.pi*phi)
C = c(x, V0, rho)
V = ifft(np.power(fft(C), 0.5)*phase)
plt.plot(x, V.real)
plt.plot(x, V.imag)
plt.show()
最佳答案
连接时需要更加小心:
phi1 = np.random.rand(int(interval_x)//2-1)
phi = np.concatenate(([0], phi1, [0], -phi1[::-1]))
关于python - 使用快速傅立叶变换生成相关随机势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662698/
我是一名优秀的程序员,十分优秀!