গাউসীয় দৈব ক্ষেত্র

জ্যোতির্বিজ্ঞান থেকে
(Gaussian random field থেকে পুনর্নির্দেশিত)

গাউসিয়ান ড়্যান্ডম ফিল্ড (জিআরএফ) যার বাংলা করা যায় গাউসীয় দৈব ক্ষেত্র। আমাদের গ্যালাক্সিতে সিনক্রোট্রন এবং ব্রেমস্ট্রালুং বিকিরণের মানচিত্র তৈরির জন্য এই ক্ষেত্র খুব উপযোগী। কারণ তিনটি জিনিসকে গাউসীয় দৈব ক্ষেত্র বা জিআরএফ হিসেবে ডিজাইন করা যায়:

  1. আকাশগঙ্গার দৈব চৌম্বক ক্ষেত্র। আন্তঃনাক্ষত্রিক মাধ্যমে দুই ধরণের চৌম্বক ক্ষেত্র থাকে: নিয়মিত এবং দৈব। দৈব অংশটাকে জিআরএফ দিয়ে ডিজাইন করা হয়।
  2. আলোর কাছাকাছি বেগের ইলেকট্রনগুলোর শক্তি বিন্যাসের পাওয়ার ল ইনডেক্স
  3. তাপীয় ইলেকট্রনের ঘনত্ব

সুতরাং বোঝাই যাচ্ছে জিআরএফ কত গুরুত্বপূর্ণ। বিশ্বতত্ত্ব অর্থাৎ কসমোলজিতেও এটা খুব গুরুত্বপূর্ণ, কারণ স্বয়ং আদি মহাবিশ্বের ঘনত্বের ব্যত্যয়কে গাউসীয় দৈব ক্ষেত্র ধরা হয়।

গাউসীয় তথা নরমাল বিন্যাসের কথা আমরা সবাই জানি। যে ক্ষেত্রের প্রতিটি বিন্দুর মান গাউসীয় বিন্যাস অনুসরণ করে তাকে গাউসীয় দৈব ক্ষেত্র বলা হয়। যেমন আকাশপটের একটা তলের কথা কল্পনা করা যাক। এই তলের একটি নির্দিষ্ট স্থানে তাপীয় ইলেকট্রনের ঘনত্ব অনেকগুলো সংখ্যা হতে পারে, এই সম্ভাব্য মানগুলোকে একসাথে করলে একটা গাউসীয় বিন্যাস পাওয়া যাবে। এভাবে ক্ষেত্রটির যেকোন স্থান বা পিক্সেলের মান গাউসীয় বিন্যাস দিয়ে নির্ধারিত হয়। সুতরাং একে এক ধরণের দ্বিমাত্রিক গাউসীয় প্রক্রিয়া বলা যেতে পারে। উল্লেখ্য একমাত্রিক গাউসীয় দৈব ক্ষেত্রকে বলা হয় গাউসীয় প্রক্রিয়া।

গাউসীয় দৈব ক্ষেত্র তৈরির প্রক্রিয়া

আমরা কাজ করব ফুরিয়ে স্পেসে। প্রথমে নিচের সমীকরণ (অয়লার সমীকরণ) মনে রাখতে হবে:

<math>e^{i\phi} = \cos\phi + i\sin\phi</math>

তারপর বিপরীত ফুরিয়ে রূপান্তরের সূত্র মনে করতে হবে:

<math>f(x) = \int_{-\infty}^\infty F(s) e^{2\pi i sx} ds</math>

যেখানে s,x চলক যাদের গূণফল মাত্রাবিহীন। F(s) হচ্ছে অ্যামপ্লিচুড বা বিস্তার এবং <math>2\pi sx</math> হচ্ছে ফেইজ বা দশা।

আমরা কাজ করব উপরের সমীকরণের ডান পাশের অংশে। বিস্তার এবং দশা আমাদের তৈরি করতে হবে। তারপর বিপরীত ফুরিয়ে রূপান্তর করলে আসল ফাংশনটা পেয়ে যাব। মজার ব্যাপার হচ্ছে: ফুরিয়ে স্পেসে বিস্তার যদি গাউসীয় এবং দশা যদি দৈব সংখ্যা হয় তাহলে তার বিপরীত ফুরিয়ে রূপান্তর করলে একটি গাউসীয় দৈব ক্ষেত্র পাওয়া যায়। অবশ্যই মনে রাখতে হবে আমি এখানে একমাত্রিক সমীকরণ লিখেছি। আমরা কাজ করব দুই মাত্রায়। তো বিস্তার ও দশা তৈরির জন্য অয়লার সমীকরণের দ্বারস্থ হলে বলা যায়, ফুরিয়ে স্পেসে বাস্তব অংশ (যদি বিস্তার A এবং দশা <math>\phi</math> হয়):

<math>FTR = A\cos\phi</math>

এবং জটিল বা কাল্পনিক অংশ:

<math>FTI = A\sin\phi</math>

তাহলে,

<math>FT = A\cos\phi + iA\sin\phi = Ae^{i\phi}</math>

এভাবে গাউসীয় A এবং দৈব \phi এর জন্য ফুরিয়ে উপাদান F তৈরি করে তাকে বিপরীত ফুরিয়ে রূপান্তর করলেই পেয়ে যাব বাস্তব জগতের গাউসীয় দৈব ক্ষেত্র। এটাই করা হয়েছে নিচের পাইথন কোডে।

পাইথন কোড (অসম্পূর্ণ)

একটি দ্বিমাত্রিক গাউসীয় দৈব ক্ষেত্র তৈরির জন্য পাইথন কোড। তবে এটা কাজ করবে না।

সমস্যা হচ্ছে, ফুরিয়ে রূপান্তরে কিছু প্রতিসাম্য থাকে যার বর্ণনা এই লিংকে পাওয়া যাবে। এই প্রতিসাম্যগুলো পুরো করতে না পারলে বিপরীত ফুরিয়ে রূপান্তর কোন ফল দেবে না। যেকারণে এখনও কোন ফল পাচ্ছি না। আমি মূলটা দেয়ার আগে কেউ যদি প্রতিসাম্য ঠিক করে ফেলতে পারে তাহলে তো খুবই ভাল। যাহোক কোডটা দিচ্ছি। ম্যাটল্যাব বা আইডিএল এ এই কোড লেখা কঠিন হবে না। আর পাইথন থাকলে তো কথাই নেই। প্রোগ্রামিং নিয়ে যেকোন প্রশ্ন আমাকে করার জন্য অনুরোধ করছি।

##### python code to make a 2d gaussian random field

# importing necessary libraries
from numpy import *
from matplotlib.pyplot import *
from scipy.fftpack import *

n=32 # number of grids or pixels in both x and y direction
pli=-2 # the power law index of the Gaussian distributed amplitudes

kamp=zeros((n,n)) # creating the n*n grid for amplitudes, each pixel has an amplitude and phase
kx=zeros(n) # amplitudes in x direction
kx[0:n/2]=arange(n/2) # make the amplitudes almost Gaussian
kx[n/2:n]=arange(n/2-1,-1,-1) # make the amplitudes almost Gaussian
ky=kx # amplitudes in y-direction are the same
for i in range(n):
  for j in range(n):
    kamp[i,j]=sqrt(kx[i]**2+ky[j]**2) # this will fill all the pixels with appropriate amplitude values
amp=pow(kamp,pli) # imposing the power law index
phi=random.randn(n,n)*2*pi # phases are just random values of n*n, nothing special

FR=sqrt(amp)*cos(phi) # real part of the Fourier component
FI=sqrt(amp)*sin(phi) # imaginary part of the Fourier component

# symmetries
FR[n/2+1:n,1:n]=rot90(rot90(FR[1:n/2,1:n]))
FI[n/2+1:n,1:n]=(-1.)*rot90(rot90(FI[1:n/2,1:n]))

# need some more symmetries to make this code work

# zeros
FR[0,0],FI[0,0],FI[0,n/2],FI[n/2,0],FI[n/2,n/2]=0,0,0,0,0

Fmap=FR[:,:]+1j*FI[:,:] # the total map in Fourier space
map=ifft2(Fmap) # 2-dimentional inverse Fourier transform (ifft2) to get the real 2D Gaussian map

# Then you need to make an image from 'map'