Ukázka řešení rovnice difuze v 2+1 jako počáteční úlohy
(pro zjednodušení se používají periodické hraniční podmínky)

Načtení obrázku, který bude tvořit počáteční podmínky

img1 = ImageData[Import[NotebookDirectory[]<>"1foot.png"]][[;;,;;,1]];
n=Length[img1]
On[Assert];Assert[n==Length[img1[[1]]]];

ListDensityPlot[img1,ColorFunctionScaling->False,ColorFunction->GrayLevel]

Rovnice vední tepla:  (∂_t) u[x,y] = Δ u[x,y]

four=Fourier[ img1 ];
MatrixPlot[%[[1;;n/2,1;;n/2]]]

Vysvětlení výpočtu  (Subscript[k, x]^2)+(Subscript[k, y]^2)  

Úloha: Obarvěte všechna neulová čísla v tabulce načerveno.

u[kx,ky] == (With[{n=6,kx=2,ky=1},
Fourier@Table[2Cos[kx x 2Pi/n]Cos[ky y 2 Pi/n],{x,0,n-1},{y,0,n-1}]
]//Chop//MatrixForm)

k^2==(With[{n=6},
Table[(Min[kx,n-kx]^2+Min[ky,n-ky]^2),{kx,0,n-1},{ky,0,n-1}]
]//MatrixForm)

2D FFT obrázku + evoluce čase + inverzní FFT

rovnice vední tepla:  (∂_t) u[x,y] = Δ u[x,y]
evoluce ve frekvenční doméně   (Subscript[u, t])[(Subscript[k, x]),(Subscript[k, y])] = (e^(-t ((Subscript[k, x]^2)+(Subscript[k, y]^2)))) (Subscript[u, t=0])[(Subscript[k, x]),(Subscript[k, y])]

four=Fourier[ img1 ];
MatrixPlot[%[[1;;n/2,1;;n/2]]]

k2=Table[(Min[kx,n-kx]^2+Min[ky,n-ky]^2)/2.1,{kx,0,n-1},{ky,0,n-1}];

U2=Chop[2^(-k2),1/1000];

four2=four*U2;
MatrixPlot[four2[[1;;n/2,1;;n/2]]]

img9=InverseFourier[four2];
ListDensityPlot[Abs[%],ColorFunctionScaling->False,ColorFunction->GrayLevel,ImageSize->577]

four2=four2*(2^(+k2));
img9=InverseFourier[four2];
img9/=Max[Abs[img9]];
ListDensityPlot[Abs[%],ColorFunctionScaling->False,ColorFunction->GrayLevel,ImageSize->577]

Demonstrace evoluce ve frekvenčním a souřadnicovém obraze

four=Fourier[ img1 ];
Table[ 
k2=Table[(Min[kx,n-kx]^2+Min[ky,n-ky]^2),{kx,0,n-1},{ky,0,n-1}];
U2=Chop[2^(-k2*t),1/1000];
four2=four*U2;
img9=Abs@InverseFourier[four2]/1.001;
Row[{MatrixPlot[four2[[1;;n/4,1;;n/4]],ColorFunction->(Hue[Arg[#]/(2Pi)+0.5,1,Sqrt@Sqrt@Abs[#]]&),PlotRange->Full,ColorFunctionScaling->False,Frame->False,ImageSize->444],
ListDensityPlot[img9,ColorFunctionScaling->False,ColorFunction->GrayLevel ,Frame->False,PlotRange->{0,1},ImageSize->444]}]
,{t,{0,0.001,0.005,0.01,0.02,0.03,0.1,0.5,1,2,4}}]

ListPlot[{img1[[;;,70]],img9[[;;,70]]}]