summaryrefslogtreecommitdiff
path: root/sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb')
-rw-r--r--sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb1360
1 files changed, 1360 insertions, 0 deletions
diff --git a/sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb b/sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb
new file mode 100644
index 00000000..40066b00
--- /dev/null
+++ b/sample_notebooks/Vaibhav Vajani/chapter2_1.ipynb
@@ -0,0 +1,1360 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2: Determinants and Matrices"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.1, page no. 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinant of A is: a*b*c - a*f**2 - b*g**2 - c*h**2 + 2*f*g*h\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "a = sympy.Symbol('a')\n",
+ "h = sympy.Symbol('h')\n",
+ "g = sympy.Symbol('g')\n",
+ "b = sympy.Symbol('b')\n",
+ "f = sympy.Symbol('f')\n",
+ "c = sympy.Symbol('c')\n",
+ "A = sympy.Matrix([[a,h,g],[h,b,f],[g,f,c]])\n",
+ "\n",
+ "print \"Determinant of A is: \", A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.2, page no. 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinanat of a is: 88.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[0,1,2,3],[1,0,3,0],[2,3,0,1],[3,0,1,2]])\n",
+ "print \"Determinant of a is:\",numpy.linalg.det(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.3, page no. 56"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-a**3*b**2*c + a**3*b*c**2 + a**2*b**3*c - a**2*b*c**3 + a**2*b - a**2*c - a*b**3*c**2 + a*b**2*c**3 - a*b**2 + a*c**2 + b**2*c - b*c**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import sympy\n",
+ "\n",
+ "a = sympy.Symbol('a');\n",
+ "b = sympy.Symbol('b');\n",
+ "c = sympy.Symbol('c');\n",
+ "A = sympy.Matrix([[a,a**2,a**3-1],[b,b**2,b**3-1],[c,c**2,c**3-1]])\n",
+ "\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.4, page no. 57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinanat of a is: -24.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[21,17,7,10],[24,22,6,10],[6,8,2,3],[6,7,1,2]])\n",
+ "print \"Determinanat of a is:\",numpy.linalg.det(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "imp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a: x**y*log(x)\n",
+ "b: x**y*y*log(x)/x + x**y/x\n",
+ "c: x**y*y**2*log(x)/x**2 - x**y*y*log(x)/x**2 + 2*x**y*y/x**2 - x**y/x**2\n",
+ "d: x**y*y/x\n",
+ "e: x**y*y*log(x)/x + x**y/x\n",
+ "f: x**y*y**2*log(x)/x**2 - x**y*y*log(x)/x**2 + 2*x**y*y/x**2 - x**y/x**2\n",
+ "Clearly c = f\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x');\n",
+ "y = sympy.Symbol('y')\n",
+ "u = x**y\n",
+ "a = sympy.diff(u, y)\n",
+ "b = sympy.diff(a, x)\n",
+ "c = sympy.diff(b, x)\n",
+ "d = sympy.diff(u, x)\n",
+ "e = sympy.diff(d, y)\n",
+ "f = sympy.diff(e, x)\n",
+ "print \"a: \", a\n",
+ "print \"b: \", b\n",
+ "print \"c: \", c\n",
+ "print \"d: \", d\n",
+ "print \"e: \", e\n",
+ "print \"f: \", f\n",
+ "print \"Clearly c = f\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.17, page no. 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A*B=\n",
+ "[[ 5 9 13]\n",
+ " [-1 2 4]\n",
+ " [-2 2 4]]\n",
+ "\n",
+ "B*A=\n",
+ "[[-1 12 11]\n",
+ " [-1 7 8]\n",
+ " [-2 -1 5]]\n",
+ "Clearly AB is not equal to BA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[1,3,0],[-1,2,1],[0,0,2]])\n",
+ "B = numpy.array([[2,3,4],[1,2,3],[-1,1,2]])\n",
+ "ma = numpy.matrix(A)\n",
+ "mb = numpy.matrix(B)\n",
+ "print \"A*B=\"\n",
+ "print ma*mb\n",
+ "print \"\"\n",
+ "print \"B*A=\"\n",
+ "print mb*ma\n",
+ "print \"Clearly AB is not equal to BA\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.18, page no. 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AB=C−−>B=inv(A)∗C\n",
+ "\n",
+ "[[ 1.00000000e+00 -1.77635684e-15 -8.88178420e-16]\n",
+ " [ -2.22044605e-16 2.00000000e+00 -1.11022302e-16]\n",
+ " [ 1.77635684e-15 0.00000000e+00 1.00000000e+00]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[3,2,2],[1,3,1],[5,3,4]])\n",
+ "C = numpy.matrix([[3,4,2],[1,6,1],[5,6,4]])\n",
+ "print \"AB=C−−>B=inv(A)∗C\"\n",
+ "print \"\"\n",
+ "B = numpy.linalg.inv(A)*C \n",
+ "print B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.19, page no. 66"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Aˆ3−4∗Aˆ2−3A+11*I=\n",
+ "\n",
+ "[[ 0. 0. 0.]\n",
+ " [ 0. 0. 0.]\n",
+ " [ 0. 0. 0.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[1,3,2],[2,0,-1],[1,2,3]])\n",
+ "I = numpy.eye(3)\n",
+ "A = numpy.matrix(A)\n",
+ "print \"Aˆ3−4∗Aˆ2−3A+11*I=\"\n",
+ "print \"\"\n",
+ "print A**3-4*A**2-3*A+11*I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.20, page no. 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Enter the value of n: 3\n",
+ "Calculating A ^ n: \n",
+ "[[ 31 -75]\n",
+ " [ 12 -29]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "0\n",
+ "A = numpy.matrix([[11,-25],[4, -9]])\n",
+ "n = int(raw_input(\"Enter the value of n: \"))\n",
+ "print \"Calculating A ^ n: \"\n",
+ "print A**n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.23, page no. 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.24.1, page no. 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,2,3],[1,4,2],[2,6,5]])\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.24.2, page no. 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[0,1,-3,-1],[1,0,1,1],[3,1,0,2],[1,1,-2,0]])\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.25, page no. 72"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.26, page no. 73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[2,3,-1,-1],[1,-1,-2,-4],[3,1,3,-2],[6,3,0,-7]])\n",
+ "r,p = numpy.linalg.eigh ( A )\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.28, page no. 75"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 1.4 0.2 -0.4]\n",
+ " [-1.5 0. 0.5]\n",
+ " [ 1.1 -0.2 -0.1]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,1],[4,3,-1],[3,5,3]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.31, page no. 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " The equations can be rewritten as AX=B where X=[ x1 ; x2 ; x3 ; x4 ] and \n",
+ "Determinant of A=\n",
+ "8.0\n",
+ "Inverse of A =\n",
+ "[[ 0.5 0.5 0.5 -0.5]\n",
+ " [-0.5 0. 0. 0.5]\n",
+ " [ 0. -0.5 0. 0.5]\n",
+ " [ 0. 0. -0.5 0.5]]\n",
+ "X= [[ 1.]\n",
+ " [-1.]\n",
+ " [ 2.]\n",
+ " [-2.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The equations can be rewritten as AX=B where X=[ x1 ; x2 ; x3 ; x4 ] and \"\n",
+ "A = numpy.matrix([[1,-1,1,1],[1,1,-1,1],[1,1,1,-1],[1,1,1,1]])\n",
+ "B = numpy.matrix([[2],[-4],[4],[0]])\n",
+ "print \"Determinant of A=\"\n",
+ "print numpy.linalg.det(A)\n",
+ "print \"Inverse of A =\"\n",
+ "print numpy.linalg.inv(A)\n",
+ "print \"X=\",numpy.linalg.inv(A)*B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.32, page no. 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The equations can be rewritten as AX=B where X=[x;y;z] and\n",
+ "Determinant of A=\n",
+ "-8.79296635503e-14\n",
+ "Since det(A)=0 , hence, this system of equation will have infinite solutions.. hence, the system is consistent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The equations can be rewritten as AX=B where X=[x;y;z] and\"\n",
+ "A = numpy.matrix([[5,3,7],[3,26,2],[7,2,10]])\n",
+ "B = numpy.matrix([[4],[9],[5]])\n",
+ "print \"Determinant of A=\"\n",
+ "print numpy.linalg.det(A)\n",
+ "print \"Since det(A)=0 , hence, this system of equation will have infinite solutions.. hence, the system is consistent\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.34.1, page no. 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is 3\n",
+ "Equations have only a trivial solution : x=y=z=0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,2,3],[3,4,4],[7,10,12]])\n",
+ "p = numpy.linalg.matrix_rank(A)\n",
+ "print \"Rank of A is\",p\n",
+ "if p==3:\n",
+ " print \"Equations have only a trivial solution : x=y=z=0\"\n",
+ "else:\n",
+ " print \"Equations have infinite no . of solutions.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.34.2, page no. 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is 2\n",
+ "Equations have infinite no. of solutions.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[4,2,1,3],[6,3,4,7],[2,1,0,1]])\n",
+ "p = numpy.linalg.matrix_rank(A)\n",
+ "print \"Rank of A is\",p\n",
+ "if p ==4:\n",
+ " print \"Equations have only a trivial solution : x=y=z=0\"\n",
+ "else:\n",
+ " print \"Equations have infinite no. of solutions.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.38, page no. 83"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The given equations can be written as Y=AX where\n",
+ "Determinant of A is -1.0\n",
+ "Since, its non−singular, hence transformation is regular\n",
+ "Inverse of A is\n",
+ "[[ 2. -2. -1.]\n",
+ " [-4. 5. 3.]\n",
+ " [ 1. -1. -1.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The given equations can be written as Y=AX where\"\n",
+ "A = numpy.matrix([[2,1,1],[1,1,2],[1,0,-2]])\n",
+ "print \"Determinant of A is\",numpy.linalg.det ( A )\n",
+ "print \"Since, its non−singular, hence transformation is regular\"\n",
+ "print\"Inverse of A is\"\n",
+ "print numpy.linalg.inv ( A )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.39, page no. 84"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[-0.66666667 0.33333333 0.66666667]\n",
+ " [ 0.66666667 0.66666667 0.33333333]\n",
+ " [ 0.33333333 -0.66666667 0.66666667]]\n",
+ "A transpose is equal to\n",
+ "[[-0.66666667 0.66666667 0.33333333]\n",
+ " [ 0.33333333 0.66666667 -0.66666667]\n",
+ " [ 0.66666667 0.33333333 0.66666667]]\n",
+ "A∗(transpose of A)=\n",
+ "[[ 1. 0. 0.]\n",
+ " [ 0. 1. 0.]\n",
+ " [ 0. 0. 1.]]\n",
+ "Hence, A is orthogonal\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[-2./3,1./3,2./3],[2./3,2./3,1./3],[1./3,-2./3,2./3]])\n",
+ "print A\n",
+ "print \"A transpose is equal to\"\n",
+ "print A.transpose()\n",
+ "print \"A∗(transpose of A)=\"\n",
+ "print A*A.transpose()\n",
+ "print \"Hence, A is orthogonal\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.42, page no. 87"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "Two eigen vectors are the two columns of U\n",
+ "[[ 4. 1.]\n",
+ " [ 0. 0.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "A = numpy.matrix([[5,4],[1,2]])\n",
+ "print \"Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "P,R= numpy.linalg.eig(A)\n",
+ "U = numpy.zeros([2, 2])\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "U[0,0]= R[0,0]*math.sqrt(17)\n",
+ "U[0,1]= R[0,1]*math.sqrt(17)\n",
+ "U[0,1]= R[1,1]*math.sqrt(2)\n",
+ "print \"Two eigen vectors are the two columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Examle 2.43, page no. 88"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "[-2. 3. 6.]\n",
+ "Three eigen vectors are the three columns of U\n",
+ "[[ -2.82842712 5.19615242 14.69693846]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,5,1],[3,1,1]])\n",
+ "U = numpy.zeros([3,3])\n",
+ "print \"Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\"\n",
+ "R,P = numpy.linalg.eig(A)\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "print R\n",
+ "U[0,0] = R[0]*math.sqrt(2) \n",
+ "U[0,1] = R[1]*math.sqrt(3)\n",
+ "U[0,2] = R[2]*math.sqrt(6)\n",
+ "print \"Three eigen vectors are the three columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.44, page no. 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "[ 3. 2. 5.]\n",
+ "Three eigen vectors are the three columns of U\n",
+ "[[ 3. 2. 18.70828693]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[3,1,4],[0,2,6],[0,0,5]])\n",
+ "U = numpy.zeros([3,3])\n",
+ "print \"Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\"\n",
+ "R,P = numpy.linalg.eig(A)\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "print R\n",
+ "U[0,0] = R[0]*math.sqrt(1) \n",
+ "U[0,1] = R[1]*math.sqrt(1)\n",
+ "U[0,2] = R[2]*math.sqrt(14)\n",
+ "print \"Three eigen vectors are the three columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.45, page no. 90"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigen values of A are\n",
+ "(array([-1., 5.]), matrix([[-0.89442719, -0.70710678],\n",
+ " [ 0.4472136 , -0.70710678]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is ( x−a ) ( x−b)\n",
+ "[-8 -5]\n",
+ "Aˆ2−4∗A−5∗ I=\n",
+ "[[ 0. 0.]\n",
+ " [ 0. 0.]]\n",
+ "Inverse of A=\n",
+ "[[-0.6 0.8]\n",
+ " [ 0.4 -0.2]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[1,4],[2,3]])\n",
+ "I = numpy.eye(2)\n",
+ "print \"Eigen values of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a = -1;\n",
+ "b = 5;\n",
+ "print \"Hence, the characteristic equation is ( x−a ) ( x−b)\"\n",
+ "print ( x - a ) *( x - b )\n",
+ "\n",
+ "print \"Aˆ2−4∗A−5∗ I=\"\n",
+ "print A**2-4*A-5* I\n",
+ "print \"Inverse of A=\"\n",
+ "print numpy.linalg.inv ( A )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.46, page no. 91"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Egenvalues of A are\n",
+ "(array([ 4.25683813, 0.40327935, -4.66011748]), matrix([[ 0.10296232, -0.91299477, -0.48509974],\n",
+ " [-0.90473047, 0.40531299, 0.37306899],\n",
+ " [ 0.41335402, 0.04649661, 0.79088417]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is ( x−a ) ( x−b) ( x−c )\n",
+ "[-10.99999905 8.00000095]\n",
+ "Inverse of A=\n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Egenvalues of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a =4.2568381\n",
+ "b =0.4032794\n",
+ "c = -4.6601175\n",
+ "print \"Hence, the characteristic equation is ( x−a ) ( x−b) ( x−c )\"\n",
+ "p = (x-a)*(x-b)*(x-c)\n",
+ "print p\n",
+ "print \"Inverse of A=\"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.47, page no. 91"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigenvalues of A are\n",
+ "(array([ 3., 1., 1.]), matrix([[ 0.70710678, -0.70710678, -0.40824829],\n",
+ " [ 0. , 0. , 0.81649658],\n",
+ " [ 0.70710678, 0.70710678, -0.40824829]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is (x−a)(x−b)(x−c)=\n",
+ "[ 0 -3]\n",
+ "Aˆ8−5∗Aˆ7+7∗Aˆ6−3∗Aˆ5+Aˆ4−5∗Aˆ3+8∗Aˆ2−2∗A+I =\n",
+ "[[ 8. 5. 5.]\n",
+ " [ 0. 3. 0.]\n",
+ " [ 5. 5. 8.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[2,1,1],[0,1,0],[1,1,2]])\n",
+ "I = numpy.eye(3)\n",
+ "print \"Eigenvalues of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a =1\n",
+ "b =1\n",
+ "c =3\n",
+ "print \"Hence, the characteristic equation is (x−a)(x−b)(x−c)=\"\n",
+ "p = (x-a)*(x-b)*(x-c)\n",
+ "print p\n",
+ "print \"Aˆ8−5∗Aˆ7+7∗Aˆ6−3∗Aˆ5+Aˆ4−5∗Aˆ3+8∗Aˆ2−2∗A+I =\"\n",
+ "print A**8-5*A**7+7*A**6-3*A**5+A**4-5*A**3+8*A**2-2*A+I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.48, page no. 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R is matrix of transformation and D is a diagonal matrix\n",
+ "[-1.65544238 -0.21075588 2.86619826]\n",
+ "[[-0.87936655 -0.34661859 -0.32645063]\n",
+ " [ 0.11410244 0.51222983 -0.85123513]\n",
+ " [-0.46227167 0.78579651 0.41088775]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[-1,2,-2],[1,2,1],[-1,-1,0]])\n",
+ "print \"R is matrix of transformation and D is a diagonal matrix\"\n",
+ "[R,D]= numpy.linalg.eigh(A)\n",
+ "print R\n",
+ "print D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.49, page no. 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R is matrix of transformation and D is a diagonal matrix\n",
+ "R is normalised, let P denotes unnormalised version of R . Then \n",
+ "[ 3. 2. 5.]\n",
+ "[[ 4.24264069 3.46410162 12.24744871]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n",
+ "A^4= [[ 81 65 1502]\n",
+ " [ 0 16 1218]\n",
+ " [ 0 0 625]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[3,1,4],[0,2,6],[0,0,5]])\n",
+ "P = numpy.zeros([3,3])\n",
+ "print \"R is matrix of transformation and D is a diagonal matrix\"\n",
+ "R,D = numpy.linalg.eig(A)\n",
+ "print \"R is normalised, let P denotes unnormalised version of R . Then \"\n",
+ "print R\n",
+ "P[0,0] = R[0]*math.sqrt(2) \n",
+ "P[0,1] = R[1]*math.sqrt(3)\n",
+ "P[0,2] = R[2]*math.sqrt(6)\n",
+ "print P\n",
+ "print \"A^4= \",A**4"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.50, page no. 94"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "3∗xˆ2+5∗yˆ2+3∗zˆ2−2∗y∗z+2∗z∗x−2∗x∗y\n",
+ "The matrix of the given quadratic form is\n",
+ "Let R represents the matrix of transformation and Prepresents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "So, canonical form is 2∗xˆ2+3∗yˆ2+6∗zˆ2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"3∗xˆ2+5∗yˆ2+3∗zˆ2−2∗y∗z+2∗z∗x−2∗x∗y\"\n",
+ "print \"The matrix of the given quadratic form is\"\n",
+ "A = numpy.matrix([[3,-1,1],[-1,5,-1],[1,-1,3]])\n",
+ "print \"Let R represents the matrix of transformation and Prepresents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "[R,P] = numpy.linalg.eig(A)\n",
+ "print \"So, canonical form is 2∗xˆ2+3∗yˆ2+6∗zˆ2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.51, page no. 95"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2∗x1∗x2+2∗x1∗x3−2∗x2∗x3\n",
+ "The matrix of the given quadratic form is\n",
+ "Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "so, canonical form is −2∗xˆ2+yˆ2+ zˆ2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"2∗x1∗x2+2∗x1∗x3−2∗x2∗x3\"\n",
+ "print \"The matrix of the given quadratic form is\"\n",
+ "A = numpy.matrix([[0,1,1],[1,0,-1],[1,-1,0]])\n",
+ "print \"Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "[R,P] = numpy.linalg.eig(A)\n",
+ "print \"so, canonical form is −2∗xˆ2+yˆ2+ zˆ2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.52, page no. 96"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A∗= [[ 2.-1.j -5.-0.j]\n",
+ " [ 3.-0.j 0.-1.j]\n",
+ " [-1.-3.j 4.+2.j]]\n",
+ "AA∗= [[ 24.+0.j -20.+2.j]\n",
+ " [-20.-2.j 46.+0.j]]\n",
+ "Clearly, AA∗ is hermitian matrix\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "'''\n",
+ "A=[2+%i 3 -1+3*%i;-5 %i 4-2*%i]\n",
+ "'''\n",
+ "\n",
+ "A = numpy.matrix([[2+1j,3,-1+3*1j],[-5,1j,4-2*1j]])\n",
+ "#A = A.getH()\n",
+ "print \"A∗=\", A.getH()\n",
+ "print \"AA∗=\", A*(A.getH())\n",
+ "print \"Clearly, AA∗ is hermitian matrix\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.53, page no. 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " A∗= [[ 0.-0.j 0.-0.j]\n",
+ " [-0.-0.j 0.-0.j]]\n",
+ "AA∗= [[ 0.+0.j 0.+0.j]\n",
+ " [ 0.+0.j 0.+0.j]]\n",
+ "A∗A= [[ 0.+0.j 0.+0.j]\n",
+ " [ 0.+0.j 0.+0.j]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy \n",
+ "\n",
+ "A = numpy.matrix([[(1/2)*(1+1j),(1/2)*(-1+1j)],[(1/2)*(1+1j),(1/2)*(1-1j)]])\n",
+ "print \"A∗=\", A.getH()\n",
+ "print \"AA∗=\", A*(A.getH())\n",
+ "print \"A∗A=\", (A.getH())*A"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.54, page no. 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "I−A=\n",
+ "inverse of (I+A)=\n",
+ "[[ 0.16666667+0.j -0.16666667-0.33333333j]\n",
+ " [ 0.16666667-0.33333333j 0.16666667+0.j ]]\n",
+ "((I−A)(inverse(I+A)))∗((I−A)(inverse(I+A)))=\n",
+ "[[ 1.11111111e-01-0.44444444j -2.77555756e-17+0.88888889j]\n",
+ " [ -2.77555756e-17+0.88888889j 1.11111111e-01+0.44444444j]]\n",
+ "((I−A)(inverse(I+A)))((I−A)(inverse(I+A)))∗=\n",
+ "[[ 1.11111111e-01+0.44444444j 1.11022302e-16+0.88888889j]\n",
+ " [ 1.11022302e-16+0.88888889j 1.11111111e-01-0.44444444j]]\n",
+ "Clearly, the product is an identity matrix.hence, it is a unitary matrix\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[0,1+2*1j],[-1+2*1j,0]])\n",
+ "I = numpy.eye(2)\n",
+ "print \"I−A=\"\n",
+ "I-A\n",
+ "print \"inverse of (I+A)=\"\n",
+ "print numpy.linalg.inv(I+A)\n",
+ "print \"((I−A)(inverse(I+A)))∗((I−A)(inverse(I+A)))=\"\n",
+ "print (((I-A)*(numpy.linalg.inv(I+A))).T)*((I-A)*(numpy.linalg.inv(I+A)))\n",
+ "print \"((I−A)(inverse(I+A)))((I−A)(inverse(I+A)))∗=\"\n",
+ "print ((I-A)*(numpy.linalg.inv(I+A)))*(((I-A)*(numpy.linalg.inv(I+A))).T)\n",
+ "print \"Clearly, the product is an identity matrix.hence, it is a unitary matrix\""
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "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.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}