diff options
author | Trupti Kini | 2016-06-22 23:30:24 +0600 |
---|---|---|
committer | Trupti Kini | 2016-06-22 23:30:24 +0600 |
commit | c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942 (patch) | |
tree | f340a2fdaea4e2ef1b3d6bcb4ef38b7414b6ab2e /Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb | |
parent | cb31e70cbb51dc799740b24a3d1adac53452d072 (diff) | |
download | Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.tar.gz Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.tar.bz2 Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.zip |
Added(A)/Deleted(D) following books
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.png
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.png
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.png
Diffstat (limited to 'Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb')
-rw-r--r-- | Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb | 561 |
1 files changed, 561 insertions, 0 deletions
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb new file mode 100644 index 00000000..6f1bfe72 --- /dev/null +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb @@ -0,0 +1,561 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 - Inner product spaces" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 271 Example 8.1" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n = 5\n", + "a = [[ 1. 4. 2. 8. 8.]]\n", + "b = [[ 10. 8. 3. 1. 8.]]\n", + "Then, (a|b) = \n", + "\n", + "[[ 10. 40. 20. 80. 80.]\n", + " [ 8. 32. 16. 64. 64.]\n", + " [ 3. 12. 6. 24. 24.]\n", + " [ 1. 4. 2. 8. 8.]\n", + " [ 8. 32. 16. 64. 64.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "n=np.random.randint(2,9)\n", + "a=np.random.rand(1,n)\n", + "b=np.random.rand(1,n)\n", + "for i in range(0,n):\n", + " a[0,i]=round(a[0,i]*10)\n", + " b[0,i]=round(b[0,i]*10)\n", + "print 'n = ',n\n", + "print 'a = ',a\n", + "print 'b = ',b\n", + "print 'Then, (a|b) = \\n\\n',a*np.transpose(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 271 Example 8.2" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a = [[ 4. 3.]]\n", + "b = [[ 7. 5.]]\n", + "Then, a|b = 47.0\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "a=np.random.rand(1,2)\n", + "b=np.random.rand(1,2)\n", + "for i in range(0,2):\n", + " a[0,i]=round(a[0,i]*10)\n", + " b[0,i]=round(b[0,i]*10)\n", + "print 'a = ',a\n", + "print 'b = ',b\n", + "x1 = a[0,0]#\n", + "x2 = a[0,1]#\n", + "y1 = b[0,0]#\n", + "y2 = b[0,1]#\n", + "t = x1*y1 - x2*y1 - x1*y2 + 4*x2*y2#\n", + "print 'Then, a|b = ',t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 307 Example 8.28" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x1 and x2 are two real nos. i.e., x1**2 + x2**2 = 1\n", + "x1 = 0.383547227589\n", + "x2 = 0.923521263539\n", + "B = \n", + "[[ 0.38354723 0.92352126 0. ]\n", + " [ 0. 1. 0. ]\n", + " [ 0. 0. 1. ]]\n", + "Applying Gram-Schmidt process to B:\n", + "a1 = [ 0.38354723 0.92352126 0. ]\n", + "a2 = [-0.35421402 0.14710848 0. ]\n", + "a3 = [0 0 1]\n", + "U = \n", + "[[[ 0.38354723 0.92352126 0. ]]\n", + "\n", + " [[-0.92352126 0.38354723 0. ]]\n", + "\n", + " [[ 0. 0. 1. ]]]\n", + "M = \n", + "[[ 1. 0. 0. ]\n", + " [-2.40784236 2.60724085 0. ]\n", + " [ 0. 0. 1. ]]\n", + "inverse(M) * U = [[[ 3.83547228e-01 -4.25822963e-17 0.00000000e+00]\n", + " [ 3.54214020e-01 3.54214020e-01 0.00000000e+00]\n", + " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00]]\n", + "\n", + " [[ -9.23521264e-01 -1.76848356e-17 0.00000000e+00]\n", + " [ -8.52891524e-01 1.47108476e-01 0.00000000e+00]\n", + " [ -0.00000000e+00 0.00000000e+00 0.00000000e+00]]\n", + "\n", + " [[ 0.00000000e+00 -0.00000000e+00 0.00000000e+00]\n", + " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00]\n", + " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]]\n", + "So, B = inverse(M) * U\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "print 'x1 and x2 are two real nos. i.e., x1**2 + x2**2 = 1'\n", + "x1 = np.random.rand()\n", + "x2 = np.sqrt(1 - x1**2)\n", + "print 'x1 = ',x1\n", + "print 'x2 = ',x2\n", + "B = np.array([[x1, x2, 0],[0, 1, 0],[0, 0, 1]])\n", + "print 'B = \\n',B\n", + "print 'Applying Gram-Schmidt process to B:'\n", + "a1 = np.array([x1, x2, 0])\n", + "a2 = np.array([0 ,1 ,0]) - x2 * np.array([x1 ,x2 ,0])\n", + "a3 = np.array([0, 0, 1])\n", + "print 'a1 = ',a1\n", + "print 'a2 = ',a2\n", + "print 'a3 = ',a3\n", + "U = np.array([[a1],[a2/x1],[a3]])\n", + "print 'U = \\n',U\n", + "M = np.array([[1, 0, 0],[-x2/x1, 1/x1, 0],[0, 0, 1]])\n", + "print 'M = \\n',M\n", + "print 'inverse(M) * U = ',np.linalg.inv(M) * U\n", + "print 'So, B = inverse(M) * U'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 278 Example 8.9" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(x,y) = [[ 5. 3.]]\n", + "(-y,x) = [-3.0, 5.0]\n", + "Inner product of these vectors is:\n", + "(x,y)|(-y,x) = 0.0\n", + "So, these are orthogonal.\n", + "------------------------------------------\n", + "If inner product is defined as:\n", + "(x1,x2)|(y1,y2) = x1y1- x2y1 - x1y2 + 4x2y2\n", + "Then, (x,y)|(-y,x) = -x*y+y**2-x**2+4*x*y = 0 if,\n", + "y = 1/2(-3 + sqrt(13))*x\n", + "or\n", + "y = 1/2(-3 - sqrt(13))*x\n", + "Hence,\n", + "[[ 5. 3.]]\n", + "is orthogonal to\n", + "[-3.0, 5.0]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "#a = round(rand(1,2) * 10)#\n", + "a=np.random.rand(1,2)\n", + "for j in [0,1]:\n", + " a[0,j]=round(a[0,j]*10)\n", + "\n", + "x = a[0,0]\n", + "y = a[0,1]\n", + "b = [-y, x]#\n", + "print '(x,y) = ',a\n", + "print '(-y,x) = ',b\n", + "print 'Inner product of these vectors is:'\n", + "t = -x*y + y*x#\n", + "print '(x,y)|(-y,x) = ',t\n", + "\n", + "print 'So, these are orthogonal.'\n", + "print '------------------------------------------'\n", + "print 'If inner product is defined as:'\n", + "print '(x1,x2)|(y1,y2) = x1y1- x2y1 - x1y2 + 4x2y2'\n", + "print 'Then, (x,y)|(-y,x) = -x*y+y**2-x**2+4*x*y = 0 if,'\n", + "print 'y = 1/2(-3 + sqrt(13))*x'\n", + "print 'or'\n", + "print 'y = 1/2(-3 - sqrt(13))*x'\n", + "print 'Hence,'\n", + "if y == (1./2*(-3 + np.sqrt(13))*x) or (1./2*(-3 - np.sqrt(13))*x):\n", + " print a\n", + " print 'is orthogonal to'\n", + " print b\n", + "else:\n", + " print a\n", + " print 'is not orthogonal to'\n", + " print b\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 282 Example 8.12" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b1 = [3 0 4]\n", + "b2 = [-1 0 7]\n", + "b3 = [ 2 9 11]\n", + "Applying the Gram-Schmidt process to b1,b2,b3:\n", + "a1 = [3 0 4]\n", + "a2 = [2 0 3]\n", + "a3 = [2 9 4]\n", + "{a1,a2,a3} are mutually orthogonal and hence forms orthogonal basis for R**3\n", + "Any arbitrary vector {x1,x2,x3} in R**3 can be expressed as:\n", + "y = {x1,x2,x3} = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3\n", + "x1 = 1\n", + "x2 = 2\n", + "x3 = 3\n", + "y = [0 0 0]\n", + "i.e. y = [x1 x2 x3], according to above equation.\n", + "Hence, we get the orthonormal basis as:\n", + ", [ 0.6 0. 0.8]\n", + ", [ 0.4 0. 0.6]\n", + "[ 0.22222222 1. 0.44444444]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "b1 = np.array([3, 0, 4])\n", + "b2 = np.array([-1 ,0 ,7])\n", + "b3 = np.array([2 ,9 ,11])\n", + "print 'b1 = ',b1\n", + "print 'b2 = ',b2\n", + "print 'b3 = ',b3\n", + "print 'Applying the Gram-Schmidt process to b1,b2,b3:'\n", + "a1 = b1\n", + "print 'a1 = ',a1\n", + "a2 = b2-(np.transpose((b2*np.transpose(b1)))/25*b1)\n", + "print 'a2 = ',a2\n", + "a3 = b3-(np.transpose(b3*np.transpose(b1))/25*b1) - (np.transpose(b3*np.transpose(a2))/25*a2)\n", + "print 'a3 = ',a3\n", + "print '{a1,a2,a3} are mutually orthogonal and hence forms orthogonal basis for R**3'\n", + "print 'Any arbitrary vector {x1,x2,x3} in R**3 can be expressed as:'\n", + "print 'y = {x1,x2,x3} = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3'\n", + "x1 = 1#\n", + "x2 = 2#\n", + "x3 = 3#\n", + "y = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3#\n", + "print 'x1 = ',x1\n", + "print 'x2 = ',x2\n", + "print 'x3 = ',x3\n", + "print 'y = ',y\n", + "print 'i.e. y = [x1 x2 x3], according to above equation.'\n", + "print 'Hence, we get the orthonormal basis as:'\n", + "\n", + "print ',',1./5*a1\n", + "print ',',1./5*a2\n", + "print 1/9.*a3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 283 Example 8.13" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A = [[ 1.25598176 1.81258697]\n", + " [ 0.6193707 0.80341686]]\n", + "b1 = [ 1.25598176 1.81258697]\n", + "b2 = [ 0.6193707 0.80341686]\n", + "Applying the orthogonalization process to b1,b2:\n", + "[1.255981755902444, 1.8125869670307564] a1 = \n", + "[] a2 = \n", + "a2 is not equal to zero if and only if b1 and b2 are linearly independent.\n", + "That is, if determinant of A is non-zero.\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "A = np.random.rand(2,2)\n", + "A[0,:] = A[0,:] + 1# #so b1 is not equal to zero\n", + "a = A[0,0]\n", + "b = A[0,1]\n", + "c = A[1,0]\n", + "d = A[1,1]\n", + "b1 = A[0,:]\n", + "b2 = A[1,:]\n", + "print 'A = ',A\n", + "print 'b1 = ',b1\n", + "print 'b2 = ',b2\n", + "print 'Applying the orthogonalization process to b1,b2:'\n", + "\n", + "a1 = [a, b]\n", + "a2 = (np.linalg.det(A)/(a**2 + b**2))*[-np.transpose(b), np.transpose(a)]\n", + "print a1,'a1 = '\n", + "print a2,'a2 = '\n", + "print 'a2 is not equal to zero if and only if b1 and b2 are linearly independent.'\n", + "print 'That is, if determinant of A is non-zero.'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 286 Example 8.14" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v = [-10 2 8]\n", + "u = [ 3 12 -1]\n", + "Orthogonal projection of v1 on subspace W spanned by v2 is given by:\n", + "[-3 0 1]\n", + "Orthogonal projection of R**3 on W is the linear transformation E given by:\n", + "(x1,x2,x3) -> (3*x1 + 12*x2 - x3)/%d * (3 12 -1) 154\n", + "Rank(E) = 1\n", + "Nullity(E) = 2\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "v = np.array([-10 ,2 ,8])\n", + "u = np.array([3, 12, -1])\n", + "print 'v = ',v\n", + "print 'u = ',u\n", + "print 'Orthogonal projection of v1 on subspace W spanned by v2 is given by:'\n", + "a = (np.transpose(u*np.transpose(v)))/(u[0]**2 + u[1]**2 + u[2]**2) * u\n", + "print a\n", + "print 'Orthogonal projection of R**3 on W is the linear transformation E given by:'\n", + "print '(x1,x2,x3) -> (3*x1 + 12*x2 - x3)/%d * (3 12 -1)',(u[0]**2 + u[1]**2 + u[2]**2)\n", + "print 'Rank(E) = 1'\n", + "print 'Nullity(E) = 2'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 288 Example 8.15" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f = (sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2\n", + "Integration (f dt) in limits 0 to 1 = 2.0\n" + ] + } + ], + "source": [ + "from sympy.mpmath import quad,cos,sin,pi,sqrt\n", + "\n", + "#part c\n", + "print 'f = (sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2'\n", + "print 'Integration (f dt) in limits 0 to 1 = ',\n", + "x0 = 0#\n", + "x1 = 1#\n", + "X = quad(lambda t:(sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2,[x0,x1])\n", + "print X" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page 294 Example 8.17" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matrix of projection E in orthonormal basis is:\n", + "A = 1/154 * [[ 9 36 -3]\n", + " [ 36 144 -12]\n", + " [ -3 -12 1]]\n", + "A* = [[ 9 36 -3]\n", + " [ 36 144 -12]\n", + " [ -3 -12 1]]\n", + "Since, E = E* and A = A*, then A is also the matrix of E*\n", + "a1 = [154, 0, 0]\n", + "a2 = [145, -36, 3]\n", + "a3 = [-36, 10, 12]\n", + "{a1,a2,a3} is the basis.\n", + "Ea1 = [9, 36, -3]\n", + "Ea2 = [0, 0, 0]\n", + "Ea3 = [0, 0, 0]\n", + "Matrix B of E in the basis is:\n", + "B = \n", + "[[-1 0 0]\n", + " [-1 0 0]\n", + " [ 0 0 0]]\n", + "B* = \n", + "[[-1 -1 0]\n", + " [ 0 0 0]\n", + " [ 0 0 0]]\n", + "Since, B is not equal to B*, B is not the matrix of E*\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "#Equation given in example 14 is used.\n", + "def transform(x,y,z):\n", + " x1 = 3*x#\n", + " x2 = 12*y#\n", + " x3 = -z#\n", + " m = [x1 ,x2, x3]\n", + " return m\n", + "\n", + "print 'Matrix of projection E in orthonormal basis is:'\n", + "t1 = transform(3,3,3)#\n", + "t2 = transform(12,12,12)#\n", + "t3 = transform(-1,-1,-1)#\n", + "A = np.vstack([t1,t2,t3])#[t1# t2# t3]#\n", + "print 'A = 1/154 * ',A\n", + "\n", + "A1 = np.transpose(np.conj(A))\n", + "print 'A* = ',A1\n", + "print 'Since, E = E* and A = A*, then A is also the matrix of E*'\n", + "a1 = [154, 0, 0]#\n", + "a2 = [145 ,-36, 3]#\n", + "a3 = [-36 ,10 ,12]#\n", + "print 'a1 = ',a1\n", + "print 'a2 = ',a2\n", + "print 'a3 = ',a3\n", + "print '{a1,a2,a3} is the basis.'\n", + "Ea1 = [9 ,36 ,-3]#\n", + "Ea2 = [0 ,0, 0]#\n", + "Ea3 = [0 ,0 ,0]#\n", + "print 'Ea1 = ',Ea1\n", + "print 'Ea2 = ',Ea2\n", + "print 'Ea3 = ',Ea3\n", + "B = np.array([[-1, 0, 0],[-1, 0 ,0],[0, 0, 0]])\n", + "print 'Matrix B of E in the basis is:'\n", + "print 'B = \\n',B\n", + "B1 = np.transpose(np.conj(B))\n", + "print 'B* = \\n',B1\n", + "print 'Since, B is not equal to B*, B is not the matrix of E*'" + ] + } + ], + "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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |