এফএফটি বিষক্রিয়ারের জন্য তাত্ত্বিক রূপান্তর হার কত?
আমি একটি পইসন সমীকরণ সমাধানে করছি: সঙ্গে এন ( এক্স , Y , z- র ) = 3
এখানে NumPy ব্যবহার করে এমন একটি প্রোগ্রাম রয়েছে যা গণনা করে।
from numpy import empty, pi, meshgrid, linspace, sum
from numpy.fft import fftn, fftfreq
E_exact = 128/(35*pi)
print "Hartree Energy (exact): %.15f" % E_exact
f = open("conv.txt", "w")
for N in range(3, 384, 10):
print "N =", N
L = 2.
x1d = linspace(0, L, N)
x, y, z = meshgrid(x1d, x1d, x1d)
nr = 3 * ((x-1)**2 + (y-1)**2 + (z-1)**2 - 1) / pi
ng = fftn(nr) / N**3
G1d = N * fftfreq(N) * 2*pi/L
kx, ky, kz = meshgrid(G1d, G1d, G1d)
G2 = kx**2+ky**2+kz**2
G2[0, 0, 0] = 1 # omit the G=0 term
tmp = 2*pi*abs(ng)**2 / G2
tmp[0, 0, 0] = 0 # omit the G=0 term
E = sum(tmp) * L**3
print "Hartree Energy (calculated): %.15f" % E
f.write("%d %.15f\n" % (N, E))
f.close()
এবং এখানে একটি রূপান্তর গ্রাফ রয়েছে ( conv.txt
উপরের স্ক্রিপ্ট থেকে কেবল প্লট করা , এখানে একটি নোটবুক রয়েছে যা আপনি যদি নিজে নিজে খেলতে চান এটি এটি করে):
আপনি দেখতে পাচ্ছেন যে, রূপান্তরটি লিনিয়ার, যা আমার জন্য একটি বিস্ময়কর ছিল, আমি ভেবেছিলাম যে এফএফটি তার চেয়ে অনেক দ্রুত রূপান্তরিত করে।
আপডেট :
সীমাটিতে সলিউশনটির ক্রপ রয়েছে (আমি এটি আগে বুঝতে পারি নি)। এফএফটি দ্রুত রূপান্তর করার জন্য, সমাধানটিতে অবশ্যই সমস্ত ডেরাইভেটিভগুলি মসৃণ করতে হবে। সুতরাং আমি নীচের ডানদিকে চেষ্টা করেছি:
nr = 3*pi*sin(pi*x)*sin(pi*y)*sin(pi*z)/4
, যা অসীম পার্থক্যযোগ্য হওয়া উচিত। এই ক্ষেত্রে সঠিক অবিচ্ছেদ্য হয়। তবুও এফএফটি সলভার এখনও এই সঠিক সমাধানের জন্য কেবল রৈখিকভাবে রূপান্তর করে, যেমন উপরের স্ক্রিপ্টটি চালানো এবং কনভার্জেনশন প্লট করে ( প্লটের সাথে আপডেট নোটবুক ) পরীক্ষা করা যেতে পারে ।
কেউ কি 3 ডি তে কোনও মানদণ্ড জানে যাতে আমি লিনিয়ারের চেয়ে দ্রুত অভিযোজনটি দেখতে পারি?