{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## FRESENELOVA DIFRAKCIJA U 1 Dimenziji" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import math\n", "from scipy.fftpack import fft\n", "from scipy.fftpack import ifftshift, fftshift\n", "from mpl_toolkits.mplot3d import Axes3D\n", "plt.style.use('dark_background')\n", "plt.rcParams['image.cmap'] = 'plasma' " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "def Fresnel_input(lambd,w,z):\n", " N=1048 #rezolucija\n", " L=5. # širina zaslona \n", "\n", " lamb=lambd*10**(-6) #(mm)\n", "# w=1. #širina otvora (mm)\n", "# z=20. #udaljenost otvor - zaslon (mm)\n", " k=2*np.pi/lamb \n", "\n", " delta_src=L/N #frekvencija uzorkovanja\n", " #critical_sampl_z=N*delta_src*z/lamb\n", "\n", " xv=np.linspace(-N/2,N/2-1,N)\n", " yv=np.linspace(-N/2,N/2-1,N)\n", " [x1,y1]=np.meshgrid(xv,yv)\n", " x1=x1*delta_src #(mm)\n", " y1=y1*delta_src # (mm) \n", " \n", " #definisati kvadratni otvor\n", " X=np.where(np.abs(x1)-0.15*w)]=1.0\n", " X[np.logical_and(x1<0.15*w, x1>0.05*w)]=1.0\n", "\n", "\n", " u1=X\n", " ap1=u1\n", " \n", " \n", "# return (u1,k,x1,X)\n", "\n", "#def Fresnel_FFT(u1,k,lamb,x1,z):\n", " g=u1*np.exp(1j*np.pi/(lamb*z)*x1**2)\n", " G=fftshift(np.fft.fft(g))\n", " h=np.exp(1j*k*z)/1j*lamb*z*np.exp(1j*np.pi/(lamb*z)*x1**2)\n", " u2=h*G\n", " identity=np.ones((N,N))\n", " u2=u2*identity\n", " \n", " \n", " I=1./(lamb*z)**2*(np.abs(u2))**2\n", " I_1d=np.zeros(N, dtype='complex128')\n", " for a in range (1,N):\n", " I_1d[a]=I[0][a]\n", " \n", " \n", " I_1d=I_1d/I_1d.max()\n", " \n", " return(u2,I_1d,y1,ap1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "lamb=632.\n", "w=1.\n", "z=20.\n", "\n", "u1,I1,x1,ap1=Fresnel_input(lamb,2*w,30.)\n", "u2,I2,x2,ap2=Fresnel_input(lamb,w/4,30.)\n", "u3,I3,x3,ap3=Fresnel_input(lamb,0.6*w,200)\n", "\n", "I1=I1/I1.max()\n", "I2=I2/I2.max()\n", "I3=I3/I3.max()\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "fig2=plt.figure(figsize=(11,10)) \n", "\n", "ax1=fig2.add_subplot(4,3,1)\n", "#plt.title('(A) z = 20 mm, w = 2 mm')\n", "plt.imshow(np.abs(ap1))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.axis('off')\n", "\n", "ax1=fig2.add_subplot(4,3,2)\n", "#plt.title('(A) z = 20 mm, w = 2 mm')\n", "plt.imshow(np.abs(ap2))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.axis('off')\n", "\n", "ax1=fig2.add_subplot(4,3,3)\n", "#plt.title('(A) z = 20 mm, w = 2 mm')\n", "plt.imshow(np.abs(ap3))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.axis('off')\n", "\n", "\n", "ax1=fig2.add_subplot(4,3,4)\n", "plt.title('(A) z = 30 mm, w = 2 mm')\n", "plt.imshow(np.abs(u1))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.axis('off')\n", "#tick_locs = [131,393,524,655,786]\n", "#tick_lbls = [-2,-1,0,1,2]\n", "#plt.xticks(tick_locs, tick_lbls)\n", "#plt.yticks(tick_locs, tick_lbls)\n", "plt.xlabel('(A)')\n", "#plt.ylabel('Y(mm)')\n", "\n", "ax2=fig2.add_subplot(4,3,5)\n", "plt.title('(B) z = 30 mm, w = 0.25 mm')\n", "plt.imshow(np.abs(u2))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.xlabel('(B)')\n", "plt.axis('off')\n", "\n", "ax3=fig2.add_subplot(4,3,6)\n", "plt.title('(C) z = 200 mm, w = 0.6 mm')\n", "plt.imshow(np.abs(u3))\n", "plt.xlim(324,724)\n", "plt.ylim(460,588)\n", "plt.xlabel('(C)')\n", "plt.axis('off')\n", "\n", "ax4=fig2.add_subplot(2,1,2)\n", "plt.title('Fresnelova difrakcija - dvostruka pukotina')\n", "\n", "ax4_1=ax4.plot(x1,np.abs(I1),'r-')\n", "ax4_2=ax4.plot(x2,np.abs(I2),'b-')\n", "ax4_3=ax4.plot(x2,np.abs(I3),'y:')\n", "\n", "ax4.text(-0.6,0.5,'(A)', color='red',fontsize=16)\n", "ax4.text(0.4,0.5,'(B)', color='blue',fontsize=16)\n", "ax4.text(0.05,0.,'(C)', color='yellow',fontsize=16)\n", "\n", "plt.xlabel('X(mm)')\n", "plt.ylabel('Relativni intenzitet')\n", "fig2.savefig('Fresnel_2slit.png')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1048" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "III=np.abs(I2)\n", "III.size" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 2 }