summaryrefslogtreecommitdiff
path: root/Elements_of_Electromagnetics/chapter_3.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Elements_of_Electromagnetics/chapter_3.ipynb')
-rw-r--r--Elements_of_Electromagnetics/chapter_3.ipynb389
1 files changed, 389 insertions, 0 deletions
diff --git a/Elements_of_Electromagnetics/chapter_3.ipynb b/Elements_of_Electromagnetics/chapter_3.ipynb
new file mode 100644
index 00000000..88c80683
--- /dev/null
+++ b/Elements_of_Electromagnetics/chapter_3.ipynb
@@ -0,0 +1,389 @@
+{
+ "metadata": {
+ "name": "chapter_3.ipynb"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 3: Vector Calculus<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 3.1, Page number: 58<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''\n",
+ "Consider the object shown in Figure 3.7. Calculate \n",
+ "(a) The distance BC \n",
+ "(b) The distance CD \n",
+ "(c) The surface area ABCD \n",
+ "(d) The surface area ABO \n",
+ "(e) The surface area AOFD \n",
+ "(f) The volume ABDCFO '''\n",
+ "\n",
+ "import scipy\n",
+ "from numpy import *\n",
+ "import scipy.integrate\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "A=array([5,0,0])\n",
+ "B=array([0,5,0])\n",
+ "C=array([0,5,10])\n",
+ "D=array([5,0,10])\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ " #A,B,C,D in cylindrical coordinates\n",
+ " \n",
+ "A=array([5,0,0])\n",
+ "B=array([5,scipy.pi,0])\n",
+ "C=array([5,scipy.pi,10])\n",
+ "D=array([5,0,10])\n",
+ "\n",
+ "p=5\n",
+ "\n",
+ "def BC(z): \n",
+ " return 1\n",
+ "ansa, erra = scipy.integrate.quad(BC, 0, 10)\n",
+ " \n",
+ "def CD(phi): \n",
+ " return p\n",
+ "ansb, errb = scipy.integrate.quad(CD, 0, scipy.pi/2)\n",
+ "ansbb=ansb/scipy.pi #answer in multiples of pi\n",
+ "\n",
+ "def ABCD(phi,z): \n",
+ " return p\n",
+ "ansc, errc = scipy.integrate.dblquad(lambda z , phi: ABCD(phi,z), \n",
+ " 0, scipy.pi/2, lambda z: 0, lambda z: 10) \n",
+ "anscc=ansc/scipy.pi #answer in multiples of pi\n",
+ " \n",
+ "def ABO(phi,rho): \n",
+ " return rho\n",
+ "ansd, errd = scipy.integrate.dblquad(lambda rho , phi: ABO(phi,rho), \n",
+ " 0, scipy.pi/2, lambda rho: 0, lambda rho: 5)\n",
+ "ansdd=ansd/scipy.pi #answer in multiples of pi\n",
+ "\n",
+ "def AOFD(rho,z): \n",
+ " return 1\n",
+ "anse, erre = scipy.integrate.dblquad(lambda z , rho: AOFD(rho,z), \n",
+ " 0, 10, lambda z: 0, lambda z: 5)\n",
+ " \n",
+ "def ABDCFO(z,phi,rho):\n",
+ " return rho\n",
+ "ansf, errf=scipy.integrate.tplquad(ABDCFO,0,5,lambda rho:0,\n",
+ " lambda rho:scipy.pi/2,lambda rho,phi:0,lambda rho,phi:10)\n",
+ "ansff=ansf/scipy.pi #answer in multiples of pi\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print 'The distance BC =',ansa\n",
+ "print 'The distance CD =',ansbb,'pi'\n",
+ "print 'The surface area ABCD =',anscc,'pi'\n",
+ "print 'The surface area ABO =',ansdd,'pi'\n",
+ "print 'The surface area AOFD =',anse\n",
+ "print 'The volume ABDCFO =',ansff,'pi'\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The distance BC = 10.0\n",
+ "The distance CD = 2.5 pi\n",
+ "The surface area ABCD = 25.0 pi\n",
+ "The surface area ABO = 6.25 pi\n",
+ "The surface area AOFD = 50.0\n",
+ "The volume ABDCFO = 62.5 pi\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 3.2, Page number: 61<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''\n",
+ "Given that F = x^2 a_x - xza_y - y^2 a_z , calculate the \n",
+ "circulation of F around the (closed) path shown in Figure 3.10. '''\n",
+ "\n",
+ "import scipy\n",
+ "from numpy import *\n",
+ "import scipy.integrate\n",
+ "from fractions import Fraction\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "ax=array([1,0,0]) #Unit vector along x direction\n",
+ "ay=array([0,1,0]) #Unit vector along y direction\n",
+ "az=array([0,0,1]) #Unit vector along z direction\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "def C1(x): \n",
+ " return x**2\n",
+ "seg1, err1 = scipy.integrate.quad(C1, 1, 0) #segment 1\n",
+ "Seg1=Fraction(seg1).limit_denominator(100) #converting to fraction\n",
+ "\n",
+ "def C2(y): \n",
+ " return 0\n",
+ "seg2, err2 = scipy.integrate.quad(C2, 0, 1) #segment 2\n",
+ "\n",
+ "def C3(x): \n",
+ " return (x**2-1)\n",
+ "seg3, err3 = scipy.integrate.quad(C3, 0, 1) #segment 3\n",
+ "Seg3=Fraction(seg3).limit_denominator(100) #converting to fraction\n",
+ "\n",
+ "def C4(y): \n",
+ " return (-y-y**2)\n",
+ "seg4, err4 = scipy.integrate.quad(C4, 1, 0) #segment 4\n",
+ "Seg4=Fraction(seg4).limit_denominator(100) #converting to fraction\n",
+ "\n",
+ "seg=Seg1+seg2+Seg3+Seg4 #total circulation around path\n",
+ "Seg=Fraction(seg).limit_denominator(100) #converting to fraction\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print 'F along segment 1 is',Seg1\n",
+ "print 'F along segment 2 is',seg2\n",
+ "print 'F along segment 3 is',Seg3\n",
+ "print 'F along segment 4 is',Seg4\n",
+ "print 'Circulation of F around the path is',Seg"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "F along segment 1 is -1/3\n",
+ "F along segment 2 is 0.0\n",
+ "F along segment 3 is -2/3\n",
+ "F along segment 4 is 5/6\n",
+ "Circulation of F around the path is -1/6\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Example 3.4, Page number: 68"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''\n",
+ "Given W = x^2 y^2 + xyz, compute VW and the direction derivative dW/dl in the direction \n",
+ "3a_x + 4a_y + 12a_z at (2, -1, 0). '''\n",
+ "\n",
+ "import scipy\n",
+ "from fractions import Fraction\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "ax=array([1,0,0]) #Unit vector along x direction\n",
+ "ay=array([0,1,0]) #Unit vector along y direction\n",
+ "az=array([0,0,1]) #Unit vector along z direction\n",
+ "Al=array([3,4,12])\n",
+ "x=2\n",
+ "y=-1\n",
+ "z=0\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "gradW=(2*x*y**2+y*z)*ax+(2*x**2*y+x*z)*ay+(x*y)*az\n",
+ "gradWl=Fraction(dot(gradW,Al)/scipy.sqrt(dot(Al,Al))).limit_denominator(1000)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print 'dW/dl =',gradWl\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "dW/dl = -44/13\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Example 3.7, Page number: 74"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''\n",
+ "If G(r) = lOe^-2z(pa_p + a_z\u001f), determine the flux of G out of the entire surface of the cylinder \n",
+ "p = 1, 0 < Z < 1. Confirm the result using the divergence theorem. '''\n",
+ "\n",
+ "import scipy\n",
+ "import scipy.integrate\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "ap=array([1,0,0]) #Unit vector along radial direction\n",
+ "az=array([0,0,1]) #Unit vector along z direction\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "def psi1(phi,p): \n",
+ " return 10*scipy.e**(-2)*p\n",
+ "psit, errt = scipy.integrate.dblquad(lambda p , phi: psi1(phi,p), #flux through top\n",
+ " 0, 2*scipy.pi, lambda p: 0, lambda p: 1) \n",
+ "\n",
+ "def psi2(phi,p): \n",
+ " return -10*p\n",
+ "psib, errb = scipy.integrate.dblquad(lambda p , phi: psi2(phi,p), #flux through bottom\n",
+ " 0, 2*scipy.pi, lambda p: 0, lambda p: 1) \n",
+ "\n",
+ "def psi3(phi,z): \n",
+ " return 10*scipy.exp(-2*z)\n",
+ "psis, errs = scipy.integrate.dblquad(lambda z , phi: psi3(phi,z), #flux through side\n",
+ " 0, scipy.pi*2, lambda z: 0, lambda z: 1) \n",
+ "\n",
+ "psi=psit+psib+psis #total flux through cylinder\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print 'The total flux through the cylinder is',psi\n",
+ "print 'The total flux through cylinder using divergence theorem is also 0'\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The total flux through the cylinder is 0.0\n",
+ "The total flux through cylinder using divergence theorem is also 0\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 3.9, Page number: 81<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''\n",
+ "If A = p cos(phi) a_p + sin(phi)a_phi, evaluate closed integral A\u00b7dl\n",
+ "around the path shown in Figure 3.22. \n",
+ "Confirm this using Stokes's theorem. '''\n",
+ "\n",
+ "import scipy\n",
+ "from numpy import *\n",
+ "import scipy.integrate\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "ap=array([1,0,0]) #Unit vector along radial direction\n",
+ "ath=array([0,1,0]) #Unit vector along theta direction\n",
+ "aph=array([0,0,1]) #Unit vector along phi direction\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ " #segment 1\n",
+ "def ab(phi): \n",
+ " return 2*scipy.sin(phi)\n",
+ "seg1,err1 = scipy.integrate.quad(ab,scipy.pi*60/180,scipy.pi*30/180) \n",
+ "\n",
+ " #segment 2\n",
+ "def bc(p): \n",
+ " return p*scipy.cos(scipy.pi*30/180)\n",
+ "seg2,err2 = scipy.integrate.quad(bc,2,5) \n",
+ "\n",
+ " #segment 3\n",
+ "def cd(phi): \n",
+ " return 5*scipy.sin(phi)\n",
+ "seg3,err3 = scipy.integrate.quad(cd,-scipy.pi*30/180,scipy.pi*60/180)\n",
+ "\n",
+ " #segment 4\n",
+ "def da(p): \n",
+ " return p*scipy.cos(scipy.pi*60/180)\n",
+ "seg4,err4 = scipy.integrate.quad(da,5,2)\n",
+ "\n",
+ "I1=seg1+seg2+seg3+seg4\n",
+ "\n",
+ " #using stoke's theorem\n",
+ "\n",
+ "def curlA(phi,p): \n",
+ " return ((1+p)*scipy.sin(phi))\n",
+ "I2, err = scipy.integrate.dblquad(lambda p , phi: curlA(phi,p), \n",
+ " scipy.pi*30/180, scipy.pi*60/180, lambda p: 2, lambda p: 5)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print 'The integral calculated segment wise =',round(I1,3)\n",
+ "print 'The integral calculated using Stokes Theorem =',round(I2,3)\n",
+ "print 'Since I1 = I2, Stokes theorem is verified'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The integral calculated segment wise = 4.941\n",
+ "The integral calculated using Stokes Theorem = 4.941\n",
+ "Since I1 = I2, Stokes theorem is verified\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file