{
 "metadata": {
  "name": "",
  "signature": "sha256:eb36bd65b4a83ec123fa29550d3c2d667495d3d3383848faa667d8b6a5548ac3"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h1>Chapter 1: Vector Analysis<h1>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.1, Page number: 8<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "\n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "A=array([10,-4,6])            \n",
      "B=array([2,1,0])\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",
      "Ay=dot(A,ay)                     #Component of A along y direction\n",
      "l=scipy.sqrt(dot(3*A-B,3*A-B))   #Magnitude of the vector 3A-B\n",
      "\n",
      " #Defining the x,y and z components of the unit vector along A+2B\n",
      " \n",
      "ux=round(dot(A+2*B,ax)/scipy.sqrt(dot(A+2*B,A+2*B)),4)\n",
      "uy=round(dot(A+2*B,ay)/scipy.sqrt(dot(A+2*B,A+2*B)),4)\n",
      "uz=round(dot(A+2*B,az)/scipy.sqrt(dot(A+2*B,A+2*B)),4)\n",
      "\n",
      "u=array([ux,uy,uz])\n",
      "\n",
      "#Results\n",
      "\n",
      "print 'The component of A along y direction is',Ay\n",
      "print 'Magnitude of 3A-B =',round(l,2)\n",
      "print 'Unit vector along A+2B is',u"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The component of A along y direction is -4\n",
        "Magnitude of 3A-B = 35.74\n",
        "Unit vector along A+2B is [ 0.9113 -0.1302  0.3906]\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.2, Page number: 9<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "P=array([0,2,4])            \n",
      "Q=array([-3,1,5])\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",
      "origin=array([0,0,0])            #Defining the origin\n",
      "\n",
      "#Calculations\n",
      "\n",
      "PosP=P-origin                    #The position vector P\n",
      "Dpq=Q-P                          #The distance vector from P to Q\n",
      "l=scipy.sqrt(dot(Dpq,Dpq))       #Magnitude of the distance vector from P to Q\n",
      "\n",
      " #Defining the x,y and z components of the unit vector along Dpq\n",
      " \n",
      "ux=round(dot(Dpq,ax)/l,4)\n",
      "uy=round(dot(Dpq,ay)/l,4)\n",
      "uz=round(dot(Dpq,az)/l,4)\n",
      "\n",
      "vect=array([ux*10,uy*10,uz*10])  #Vector parallel to PQ with magntude of 10\n",
      "\n",
      "#Results\n",
      "\n",
      "print 'The position vector P is',PosP\n",
      "print 'The distance vector from P to Q is',Dpq\n",
      "print 'The distance between P and Q is',round(l,3)\n",
      "print 'Vector parallel to PQ with magntude of 10 is',vect"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The position vector P is [0 2 4]\n",
        "The distance vector from P to Q is [-3 -1  1]\n",
        "The distance between P and Q is 3.317\n",
        "Vector parallel to PQ with magntude of 10 is [-9.045 -3.015  3.015]\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.3, Page number: 10<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "vriver=10              #Speed of river in km/hr\n",
      "vman=2                 #Speed of man relative to boat in km/hr\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",
      " #Velocity of boat\n",
      "\n",
      "Vboat=vriver*(scipy.cos(scipy.pi/4)*ax-       \n",
      " scipy.sin(scipy.pi/4)*ay) \n",
      " \n",
      " #Relative velocity of man with respect to boat\n",
      "\n",
      "Vrelman=vman*(-scipy.cos(scipy.pi/4)*ax-      \n",
      " scipy.sin(scipy.pi/4)*ay) \n",
      " \n",
      " #Absolute velocity of man\n",
      " \n",
      "Vabs=Vboat+Vrelman\n",
      " \n",
      "mag=scipy.sqrt(dot(Vabs,Vabs))               #Magnitude of the velocity of man\n",
      "Vabsx=dot(Vabs,ax)                           #X component of absolute velocity\n",
      "Vabsy=dot(Vabs,ay)                           #Y component of absolute velocity\n",
      "angle=scipy.arctan(Vabsy/Vabsx)*180/scipy.pi #Angle made with east in degrees\n",
      "\n",
      "#Result\n",
      "\n",
      "print 'The velocity of the man is',round(mag,1),'km/hr at an angle of'\n",
      "print -round(angle,1),'degrees south of east'\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The velocity of the man is 10.2 km/hr at an angle of\n",
        "56.3 degrees south of east\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.4, Page number: 17<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "\n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "A=array([3,4,1])\n",
      "B=array([0,2,-5])\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",
      "magA=scipy.sqrt(dot(A,A))                  #Magnitude of A\n",
      "magB=scipy.sqrt(dot(B,B))                  #Magnitude of B\n",
      "angle=scipy.arccos(dot(A,B)/(magA*magB))   #Angle between A and B in radians\n",
      "angled=angle*180/scipy.pi                  #Angle between A and B in degrees\n",
      "\n",
      "\n",
      "#Result\n",
      "\n",
      "print 'The angle between A and B =',round(angled,2),'degrees'\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The angle between A and B = 83.73 degrees\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.5, Page number: 17<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "\n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "P=array([2,0,-1])\n",
      "Q=array([2,-1,2])\n",
      "R=array([2,-3,1])\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",
      "ansa=cross((P+Q),(P-Q))\n",
      "ansb=dot(Q,cross(R,P))\n",
      "ansc=dot(P,cross(Q,R))\n",
      "lqxr=scipy.sqrt(dot(cross(Q,R),cross(Q,R)))   #Magnitude of QXR\n",
      "lq=scipy.sqrt(dot(Q,Q))                       #Magnitude of Q\n",
      "lr=scipy.sqrt(dot(R,R))                       #Magnitude of R\n",
      "ansd=lqxr/(lq*lr)\n",
      "anse=cross(P,cross(Q,R))\n",
      "\n",
      "#Finding unit vector perpendicular to Q and R\n",
      "\n",
      "ux=dot(cross(Q,R),ax)/lqxr    #X component of the unit vector\n",
      "uy=dot(cross(Q,R),ay)/lqxr    #Y component of the unit vector\n",
      "uz=dot(cross(Q,R),az)/lqxr    #Z component of the unit vector\n",
      "\n",
      "ansf=array([round(ux,3),round(uy,3),round(uz,3)])\n",
      "\n",
      "ansg=round((float(dot(P,Q))/dot(Q,Q)),4)*Q\n",
      "\n",
      "\n",
      "#Results\n",
      "\n",
      "print '(P+Q)X(P-Q) =',ansa\n",
      "print 'Q.(R X P) =',ansb\n",
      "print 'P.(Q X R) =',ansc\n",
      "print 'Sin(theta_QR) =',round(ansd,4)\n",
      "print 'P X (Q X R) =',anse\n",
      "print 'A unit vector perpendicular to both Q and R =',ansf\n",
      "print 'The component of P along Q =',ansg\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(P+Q)X(P-Q) = [ 2 12  4]\n",
        "Q.(R X P) = 14\n",
        "P.(Q X R) = 14\n",
        "Sin(theta_QR) = 0.5976\n",
        "P X (Q X R) = [2 3 4]\n",
        "A unit vector perpendicular to both Q and R = [ 0.745  0.298 -0.596]\n",
        "The component of P along Q = [ 0.4444 -0.2222  0.4444]\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h3>Example 1.7, Page number: 21<h3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "import scipy\n",
      "from numpy import *\n",
      "\n",
      "#Variable Declaration\n",
      "\n",
      "P1=array([5,2,-4])\n",
      "P2=array([1,1,2])\n",
      "P3=array([-3,0,8])\n",
      "P4=array([3,-1,0])\n",
      "\n",
      "#Calculations\n",
      "\n",
      "R12=P2-P1;                                      #Distance vector from P1 to P2\n",
      "R13=P3-P1;                                      #Distance vector from P1 to P3\n",
      "R14=P4-P1;                                      #Distance vector from P1 to P4\n",
      "s=cross(R12,R13)\n",
      "x=cross(R14,R12)\n",
      "d=scipy.sqrt(dot(x,x))/scipy.sqrt(dot(R12,R12)) #Distance from line to P4 \n",
      "\n",
      "#Results\n",
      "\n",
      "print 'The cross product of the distance vectors R12 and R14 =',s\n",
      "print 'So they are along same direction and hence P1, P2 and P3 are collinear.'\n",
      "print 'The shortest distance from the line to point P4 =',round(d,3)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The cross product of the distance vectors R12 and R14 = [0 0 0]\n",
        "So they are along same direction and hence P1, P2 and P3 are collinear.\n",
        "The shortest distance from the line to point P4 = 2.426\n"
       ]
      }
     ],
     "prompt_number": 6
    }
   ],
   "metadata": {}
  }
 ]
}