# Finding Fourier transform of a periodic lattice

I have a 1D periodic lattice with 'p' components (unit cells). I want to take a discrete Fourier transform in space to get a reciprocal space, where I will have $$k$$ (reciprocal vector) dependence.

I generate the 1D periodic lattice with "p" components by this MWE:

p = 10;

a = Table[0, {i, 1, p}, {j, 1, p}];

For[i = 1, i <= p, i++,

For[j = 1, j <= p, j++,
a[[i, j]] =
If[(Abs[i - j] == p - 1 \[Or]
Abs[i - j] == 1) \[And] (j <= p \[And] i <= p), 1, 0];
];
];



Now, I would like to generate the reciprocal lattice from the above, where each point $$a[i] = \sum_{k} e^{ik}\, a[k]$$.

reciplatA = Fourier[a, FourierParameters -> {0, 2 \[Pi]/p}];


But I don't think I want this form. It is supposed to be a diagonal matrix, which isn't the case. Thus, how can I have some Fourier variable conjugate to the space variables, i.e., $$k$$ appearing after the transform.
How can we obtain such a form?
Can we extend this to 2D, where we will have two Fourier variables $$\{k_1, k_2\}$$?

• I think your approach is too complicated. You make a one dim problem artificially 2 dim. I think you should define a 1 dimensional potential (in the simplest case using only 0 and 1' s). It makes things easier, if it is symmetric about the origin. This can then be easily Fourier transformed. For 2 and 3 dim. the same approach will work. Mar 1, 2021 at 21:02
• @DanielHuber I agree on that ;) Actually my problem is 2D, orginally, that's why you can find traces of 2D in the MWE. How exactly I Fourier transformed?
– L.K.
Mar 2, 2021 at 10:45
• A simpler way to create your a[[i,j]] matrix is probably to use AdjacencyMatrix@CycleGraph@p... as for obtaining the Fourier transform, it's unclear what you actually want, since the formula you quote doesn't make much sense (a is one-dimensional instead of two-dimensional, i is used as an index and also maybe as the imaginary i, etc) Mar 2, 2021 at 12:36

Here are two most simple examples I can think of. I choose a potential that is periodic and symmetric around the first point in order to get a real FFT.

Note that the output from FFT is a bit confusing. It is a list with coefficients of:{ DC component, increasing positive frequencies, decreasing negative frequencies}. Look it up in the manual or a book.

Here is a 1 dim example with period 10:

d = ConstantArray[0, 100];
Do[d[[i]] = 1, {i, 1, 100, 10}]
fft1 = Fourier[d] // Chop And here a 2 dim example:

d = ConstantArray[0, {100, 100}];
Do[d[[i, j]] = 1, {i, 1, 100, 10}, {j, 1, 100, 10}];
Fourier[d] // Chop

• My great apologies for being late. Actually, I realized I was not very clear in my question at all. Many thanks for your very valuable input. Let me make the question more clear, perhaps.
– L.K.
Mar 5, 2021 at 10:23