Facebook
From Capacious Hog, 7 Years ago, written in Python.
This paste is a reply to Untitled from Perl Agouti - go back
Embed
Viewing differences between Untitled and Re: Untitled
from math import cos,sin,pi,sqrt
import matplotlib.pyplot as plt

def simpson(xl, xr, ndiv, fun): #liczy całke
        h=(xr-xl)/ndiv/2.
        integ=0.
        for i in range(0,ndiv):
                integ=integ+2.*h*(fun(xl+i*2.*h)+4.*fun(xl+i*2.*h+h)+fun(xl+i*2.*h+2*h))/6.
        return integ

def real_amp(x):
        r=sqrt(d*d+(y-x)**2)
        return ampl*cos(k*r)/(sqrt(r))

def imag_amp(x):
        r=(d*d+(y-x)**2)**(1./2.)
        return ampl*sin(k*r)/(sqrt(r))


 
ndiv=100 #kroki w simpsonie
ampl=1. #amplituda
lmbd=2 #długosc fali
k=2.*pi/lmbd #liczba falowa

a=1. #polozenie szczelin
d=20. #odleglosc
yl=-30.
yr=30.
ny=1000 #dokładnosc sumowana amplitudy



hy=(yr-yl)/(ny-1)

yarr=[] #os
iarr=[] #ampiltuda z pierwszej szczeliny
jarr=[] #ampiltuda z drugiej szczeliny
karr=[] #suma amplitud

for iy in range(1,ny):
    y=yl+(iy-1.)*hy 
    yarr.append(y)
    i=simpson(-5.*a,-3.*a,ndiv,real_amp)+simpson(-5.*a,-3.*a,ndiv,imag_amp)
    j=simpson(3.*a,5*a,ndiv,real_amp)+simpson(3.*a,5.*a,ndiv,imag_amp)

    iarr.append(i)
    jarr.append(j)
    #yarr.append(y)
    karr.append((i+j)**2) #natezenie
    
#n=2
   
#for p in range(0,ny-1):
#    k=0
 #   k=k+(iarr[p]+jarr[p]) 
 #   karr.append(k)
    
 
plt.xlabel("odleglosci")
plt.title("Dyfrakcja na dwoch szczelinach")    
plt.plot(yarr,karr)