diff options
Diffstat (limited to 'Linear_Algebra_by_K._Hoffman_and_R._Kunze')
26 files changed, 352 insertions, 9007 deletions
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb index b45b10cf..d1fed764 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb @@ -82,8 +82,8 @@ } ], "source": [ - "import numpy as np\n", - "a = np.array([[2, -1, 3, 2],[1, 4, 0 ,-1],[2, 6, -1, 5]])\n", + "from numpy import array\n", + "a = array([[2, -1, 3, 2],[1, 4, 0 ,-1],[2, 6, -1, 5]])\n", "print 'a=\\n',a\n", "print 'Applying row transformations:'\n", "print 'R1 = R1-2*R2'\n", @@ -165,8 +165,8 @@ } ], "source": [ - "import numpy as np\n", - "a=np.array([[-1, 1J],[-1J, 3],[1 ,2]])\n", + "from numpy import array\n", + "a=array([[-1, 1J],[-1J, 3],[1 ,2]])\n", "print 'a = \\n',a\n", "print 'Applying row transformations:'\n", "print 'R1 = R1+R3 and R2 = R2 + i *R3'\n", @@ -203,23 +203,25 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[ 1. 0. 0. 0. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0. 0. 0. 0.]\n", - " [ 0. 0. 0. 1. 0. 0. 0. 0.]\n", - " [ 0. 0. 0. 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 0. 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0. 0. 0. 1.]]\n", - "This is an Identity matrix of order 8 * 8\n", + "[[ 1. 0. 0. 0. 0. 0. 0.]\n", + " [ 0. 1. 0. 0. 0. 0. 0.]\n", + " [ 0. 0. 1. 0. 0. 0. 0.]\n", + " [ 0. 0. 0. 1. 0. 0. 0.]\n", + " [ 0. 0. 0. 0. 1. 0. 0.]\n", + " [ 0. 0. 0. 0. 0. 1. 0.]\n", + " [ 0. 0. 0. 0. 0. 0. 1.]]\n", + "This is an Identity matrix of order 7 * 7\n", "And It is a row reduced matrix.\n" ] } ], "source": [ - "import numpy as np\n", - "n = np.random.randint(9)\n", - "print np.identity(n)\n", + "from numpy import random, identity\n", + "i=2;\n", + "while i<=2:\n", + " n = random.randint(9)\n", + " i=n\n", + "print identity(n)\n", "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", "print 'And It is a row reduced matrix.'" ] @@ -242,16 +244,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[ 1. 0. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0. 1.]]\n", - "This is an Identity matrix of order 6 * 6\n", + "[[ 1.]]\n", + "This is an Identity matrix of order 1 * 1\n", "And It is a row reduced matrix.\n", - "[[ 0. 0. 0. 0. 0.]]\n", - "This is an Zero matrix of order 1 * 5\n", + "[[ 0. 0. 0. 0.]]\n", + "This is an Zero matrix of order 1 * 4\n", "And It is also a row reduced matrix.\n", "a = \n", "[[ 0. 1. -3. 0. 0.5]\n", @@ -262,17 +259,17 @@ } ], "source": [ - "import numpy as np\n", - "n = np.random.randint(9)\n", - "print np.identity(n)\n", + "from numpy import random,identity, zeros,array\n", + "n = random.randint(9)\n", + "print identity(n)\n", "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", "print 'And It is a row reduced matrix.'\n", - "m = np.random.randint(0,9)\n", - "n = np.random.randint(9)\n", - "print np.zeros([m,n])\n", + "m = random.randint(0,9)\n", + "n = random.randint(9)\n", + "print zeros([m,n])\n", "print 'This is an Zero matrix of order %d * %d'%(m,n)\n", "print 'And It is also a row reduced matrix.'\n", - "a = np.array([[0, 1, -3, 0, 1.0/2],[0, 0, 0, 1, 2],[0, 0 ,0 ,0 ,0]])\n", + "a = array([[0, 1, -3, 0, 1.0/2],[0, 0, 0, 1, 2],[0, 0 ,0 ,0 ,0]])\n", "print 'a = \\n',a\n", "print 'This is a non-trivial row reduced matrix.'\n" ] @@ -330,8 +327,8 @@ } ], "source": [ - "import numpy as np\n", - "A = np.array([[1, -2, 1],[2, 1, 1],[0, 5, -1]])\n", + "from numpy import array\n", + "A = array([[1, -2, 1],[2, 1, 1],[0, 5, -1]])\n", "print 'A = \\n',A\n", "print 'Applying row transformations:'\n", "print 'R2 = R2 - 2*R1'\n", @@ -452,53 +449,53 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array\n", "#Part a\n", - "a = np.array([[1, 0],[-3, 1]])\n", - "b = np.array([[5, -1, 2],[15, 4, 8]])\n", + "a = array([[1, 0],[-3, 1]])\n", + "b = array([[5, -1, 2],[15, 4, 8]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "\n", "print '-----------------------------------------------------------------'\n", "#Part b\n", - "a = np.array([[1, 0],[-2, 3],[5 ,4],[0, 1]])\n", - "b = np.array([[0, 6, 1],[3 ,8 ,-2]])\n", + "a = array([[1, 0],[-2, 3],[5 ,4],[0, 1]])\n", + "b = array([[0, 6, 1],[3 ,8 ,-2]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "print '-----------------------------------------------------------------'\n", "#Part c\n", - "a = np.array([[2, 1],[5, 4]])\n", - "b = np.array([[1],[6]])\n", + "a = array([[2, 1],[5, 4]])\n", + "b = array([[1],[6]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "print '-----------------------------------------------------------------'\n", "#Part d\n", - "a = np.array([[-1],[3]])\n", - "b = np.array([[2, 4]])\n", + "a = array([[-1],[3]])\n", + "b = array([[2, 4]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "print '-----------------------------------------------------------------'\n", "#Part e\n", - "a = np.array([[2, 4]])\n", - "b = np.array([[-1],[3]])\n", + "a = array([[2, 4]])\n", + "b = array([[-1],[3]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "print '-----------------------------------------------------------------'\n", "#Part f\n", - "a = np.array([[0, 1 ,0],[0, 0, 0],[0, 0, 0]])\n", - "b = np.array([[1, -5, 2],[2, 3, 4],[9 ,-1, 3]])\n", + "a = array([[0, 1 ,0],[0, 0, 0],[0, 0, 0]])\n", + "b = array([[1, -5, 2],[2, 3, 4],[9 ,-1, 3]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)\n", "print '-----------------------------------------------------------------'\n", "#Part g\n", - "a = np.array([[1, -5, 2],[2, 3, 4],[9, -1, 3]])\n", - "b = np.array([[0, 1, 0],[0 ,0 ,0],[0, 0, 0]])\n", + "a = array([[1, -5, 2],[2, 3, 4],[9, -1, 3]])\n", + "b = array([[0, 1, 0],[0 ,0 ,0],[0, 0, 0]])\n", "print 'a=\\n',a\n", "print 'b=\\n',b\n", "print 'ab = \\n',a.dot(b)" @@ -532,10 +529,10 @@ } ], "source": [ - "import numpy as np\n", - "a = np.array([[0, 1],[1, 0]])\n", + "from numpy import array,linalg\n", + "a = array([[0, 1],[1, 0]])\n", "print 'a = \\n',a\n", - "print 'inverse a = \\n',np.linalg.inv(a)" + "print 'inverse a = \\n',linalg.inv(a)" ] }, { @@ -547,7 +544,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -584,9 +581,9 @@ } ], "source": [ - "import numpy as np\n", - "a = np.array([[2, -1],[1 ,3]])\n", - "b = np.array([[2, -1],[1 ,3]]) #Temporary variable to store a\n", + "from numpy import array,linalg\n", + "a = array([[2, -1],[1 ,3]])\n", + "b = array([[2, -1],[1 ,3]]) #Temporary variable to store a\n", "print 'a = \\n',a\n", "print 'Applying row tranformations'\n", "print 'Interchange R1 and R2'\n", @@ -604,7 +601,7 @@ "print 'a = \\n',a\n", "print 'Since a has become an identity matrix. So, a is invertible'\n", "print 'inverse of a = '\n", - "print np.linalg.inv(b)# #a was stored in b" + "print linalg.inv(b)# #a was stored in b" ] }, { @@ -616,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -688,10 +685,10 @@ } ], "source": [ - "import numpy as np\n", - "a = np.array([[1 ,1./2, 1.0/3],[1.0/2 ,1.0/3, 1.0/4],[1.0/3, 1.0/4, 1.0/5]])\n", + "from numpy import array,identity,matrix\n", + "a = array([[1 ,1./2, 1.0/3],[1.0/2 ,1.0/3, 1.0/4],[1.0/3, 1.0/4, 1.0/5]])\n", "print 'a = \\n',a\n", - "b = np.identity(3)\n", + "b = identity(3)\n", "print 'b = \\n',b\n", "print 'Applying row transformations on a and b simultaneously,'\n", "print 'R2 = R2 - 1/2 * R1 and R3 = R3 - 1/3*R1'\n", @@ -723,7 +720,7 @@ "print 'R1 = R1 - 1/2 * R2'\n", "a[0,:] = a[0,:] - 1./2 * a[1,:]#\n", "b[0,:] = b[0,:] - 1./2 * b[1,:]#\n", - "print 'a = \\n',np.matrix.round(a)\n", + "print 'a = \\n',matrix.round(a)\n", "print 'b = \\n',b\n", "print 'Since, a = identity matrix of order 3*3. So, b is inverse of a'\n", "print 'inverse(a) = \\n',b" diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb index 1c137a08..24d02247 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb @@ -46,7 +46,7 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array,transpose\n", "print 'a = [x1 x2]'\n", "print 'b = [y1 y2]'\n", "print 'f(a,b) = x1*y1 + x1*y2 + x2*y1 + x2*y2'\n", @@ -54,12 +54,12 @@ "print '[x1 x2] * |1 1| * |y1|'\n", "print ' |1 1| |y2|'\n", "print 'So the matrix of f in standard order basis B = {e1,e2} is:'\n", - "fb = np.array([[1, 1],[1, 1]])\n", + "fb = array([[1, 1],[1, 1]])\n", "print '[f]B = \\n',fb\n", - "P = np.array([[1 ,1],[-1, 1]])\n", + "P = array([[1 ,1],[-1, 1]])\n", "print 'P = \\n',P\n", "print 'Thus, [f]B'' = P''*[f]B*P'\n", - "fb1 = np.transpose(P) * fb * P\n", + "fb1 = transpose(P) * fb * P\n", "print '[f]B'' = \\n',fb1" ] }, @@ -81,23 +81,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "n = 56.0\n", - "a = 410.0\n", - "b = 70.0\n", - "f(a,b) = 28700.0\n", + "n = 24.0\n", + "a = 100.0\n", + "b = 40.0\n", + "f(a,b) = 4000.0\n", "f is non-degenerate billinear form on R**n.\n" ] } ], "source": [ - "import numpy as np\n", - "n = round(np.random.randint(2,90))\n", - "a = round(np.random.randint(1,n) * 10)#\n", - "b = round(np.random.randint(1,n) * 10)#\n", + "from numpy import random,transpose\n", + "n = round(random.randint(2,90))\n", + "a = round(random.randint(1,n) * 10)#\n", + "b = round(random.randint(1,n) * 10)#\n", "print 'n = ',n\n", "print 'a = ',a\n", "print 'b = ',b\n", - "f = a * np.transpose(b)\n", + "f = a * transpose(b)\n", "print 'f(a,b) = ',f\n", "print 'f is non-degenerate billinear form on R**n.'\n", "#end" diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_1.ipynb deleted file mode 100755 index 1c137a08..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_1.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 10 - Bilinear forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 363 Example 10.4" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = [x1 x2]\n", - "b = [y1 y2]\n", - "f(a,b) = x1*y1 + x1*y2 + x2*y1 + x2*y2\n", - "so, f(a,b) = \n", - "[x1 x2] * |1 1| * |y1|\n", - " |1 1| |y2|\n", - "So the matrix of f in standard order basis B = {e1,e2} is:\n", - "[f]B = \n", - "[[1 1]\n", - " [1 1]]\n", - "P = \n", - "[[ 1 1]\n", - " [-1 1]]\n", - "Thus, [f]B = P*[f]B*P\n", - "[f]B = \n", - "[[ 1 -1]\n", - " [-1 1]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print 'a = [x1 x2]'\n", - "print 'b = [y1 y2]'\n", - "print 'f(a,b) = x1*y1 + x1*y2 + x2*y1 + x2*y2'\n", - "print 'so, f(a,b) = '\n", - "print '[x1 x2] * |1 1| * |y1|'\n", - "print ' |1 1| |y2|'\n", - "print 'So the matrix of f in standard order basis B = {e1,e2} is:'\n", - "fb = np.array([[1, 1],[1, 1]])\n", - "print '[f]B = \\n',fb\n", - "P = np.array([[1 ,1],[-1, 1]])\n", - "print 'P = \\n',P\n", - "print 'Thus, [f]B'' = P''*[f]B*P'\n", - "fb1 = np.transpose(P) * fb * P\n", - "print '[f]B'' = \\n',fb1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 365 Example 10.5" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "n = 56.0\n", - "a = 410.0\n", - "b = 70.0\n", - "f(a,b) = 28700.0\n", - "f is non-degenerate billinear form on R**n.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "n = round(np.random.randint(2,90))\n", - "a = round(np.random.randint(1,n) * 10)#\n", - "b = round(np.random.randint(1,n) * 10)#\n", - "print 'n = ',n\n", - "print 'a = ',a\n", - "print 'b = ',b\n", - "f = a * np.transpose(b)\n", - "print 'f(a,b) = ',f\n", - "print 'f is non-degenerate billinear form on R**n.'\n", - "#end" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_oz6KtzL.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_oz6KtzL.ipynb deleted file mode 100644 index 24d02247..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10_oz6KtzL.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 10 - Bilinear forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 363 Example 10.4" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = [x1 x2]\n", - "b = [y1 y2]\n", - "f(a,b) = x1*y1 + x1*y2 + x2*y1 + x2*y2\n", - "so, f(a,b) = \n", - "[x1 x2] * |1 1| * |y1|\n", - " |1 1| |y2|\n", - "So the matrix of f in standard order basis B = {e1,e2} is:\n", - "[f]B = \n", - "[[1 1]\n", - " [1 1]]\n", - "P = \n", - "[[ 1 1]\n", - " [-1 1]]\n", - "Thus, [f]B = P*[f]B*P\n", - "[f]B = \n", - "[[ 1 -1]\n", - " [-1 1]]\n" - ] - } - ], - "source": [ - "from numpy import array,transpose\n", - "print 'a = [x1 x2]'\n", - "print 'b = [y1 y2]'\n", - "print 'f(a,b) = x1*y1 + x1*y2 + x2*y1 + x2*y2'\n", - "print 'so, f(a,b) = '\n", - "print '[x1 x2] * |1 1| * |y1|'\n", - "print ' |1 1| |y2|'\n", - "print 'So the matrix of f in standard order basis B = {e1,e2} is:'\n", - "fb = array([[1, 1],[1, 1]])\n", - "print '[f]B = \\n',fb\n", - "P = array([[1 ,1],[-1, 1]])\n", - "print 'P = \\n',P\n", - "print 'Thus, [f]B'' = P''*[f]B*P'\n", - "fb1 = transpose(P) * fb * P\n", - "print '[f]B'' = \\n',fb1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 365 Example 10.5" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "n = 24.0\n", - "a = 100.0\n", - "b = 40.0\n", - "f(a,b) = 4000.0\n", - "f is non-degenerate billinear form on R**n.\n" - ] - } - ], - "source": [ - "from numpy import random,transpose\n", - "n = round(random.randint(2,90))\n", - "a = round(random.randint(1,n) * 10)#\n", - "b = round(random.randint(1,n) * 10)#\n", - "print 'n = ',n\n", - "print 'a = ',a\n", - "print 'b = ',b\n", - "f = a * transpose(b)\n", - "print 'f(a,b) = ',f\n", - "print 'f is non-degenerate billinear form on R**n.'\n", - "#end" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_1.ipynb deleted file mode 100755 index b45b10cf..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_1.ipynb +++ /dev/null @@ -1,754 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 1 - Linear Equations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 8 Example 1.5" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a=\n", - "[[ 2 -1 3 2]\n", - " [ 1 4 0 -1]\n", - " [ 2 6 -1 5]]\n", - "Applying row transformations:\n", - "R1 = R1-2*R2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 2 6 -1 5]]\n", - "R3 = R3-2*R2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 0 -2 -1 7]]\n", - "R3 = R3/-2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 0 1 0 -3]]\n", - "R2 = R2-4*R3\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R1 = R1+9*R3\n", - "a = \n", - "[[ 0 0 3 -23]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R1 = R1*2/15\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R2 = R2+2*R1\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 3]\n", - " [ 0 1 0 -3]]\n", - "R3 = R3-R1/2\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 3]\n", - " [ 0 1 0 -1]]\n", - "We get the system of equations as:\n", - "2*x1 - x2 + 3*x3 + 2*x4 = 0\n", - "x1 + 4*x2 - x4 = 0\n", - "2*x1 + 6* x2 - x3 + 5*x4 = 0\n", - "and\n", - "x2 - 5/3*x4 = 0 x1 + 17/3*x4 = 0 x3 - 11/3*x4 = 0\n", - "now by assigning any rational value c to x4 in system second, the solution is evaluated as:\n", - "(-17/3*c,5/3,11/3*c,c)\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a = np.array([[2, -1, 3, 2],[1, 4, 0 ,-1],[2, 6, -1, 5]])\n", - "print 'a=\\n',a\n", - "print 'Applying row transformations:'\n", - "print 'R1 = R1-2*R2'\n", - "a[0,:] = a[0,:] - 2*a[1,:]#\n", - "print 'a = \\n',a\n", - "print 'R3 = R3-2*R2'\n", - "a[2,:] = a[2,:] - 2*a[1,:]\n", - "print 'a = \\n',a\n", - "print 'R3 = R3/-2'\n", - "a[2,:] = -1.0/2*a[2,:]#\n", - "print 'a = \\n',a\n", - "print 'R2 = R2-4*R3'\n", - "a[1,:] = a[1,:] - 4*a[2,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1+9*R3'\n", - "a[0,:] = a[0,:] + 9*a[2,:]#\n", - "print 'a = \\n',a\n", - "print 'R1 = R1*2/15'\n", - "a[0,:] = a[0,:] * 2/15\n", - "print 'a = \\n',a\n", - "print 'R2 = R2+2*R1'\n", - "a[1,:] = a[1,:] + 2*a[0,:]\n", - "print 'a = \\n',a\n", - "print 'R3 = R3-R1/2'\n", - "a[2,:] = a[2,:] - 1.0/2*a[0,:]\n", - "print 'a = \\n',a\n", - "print 'We get the system of equations as:'\n", - "print '2*x1 - x2 + 3*x3 + 2*x4 = 0'\n", - "print 'x1 + 4*x2 - x4 = 0'\n", - "print '2*x1 + 6* x2 - x3 + 5*x4 = 0'\n", - "print 'and'\n", - "print 'x2 - 5/3*x4 = 0','x1 + 17/3*x4 = 0','x3 - 11/3*x4 = 0'\n", - "print 'now by assigning any rational value c to x4 in system second, the solution is evaluated as:'\n", - "print '(-17/3*c,5/3,11/3*c,c)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 9 Example 1.6" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[-1.+0.j 0.+1.j]\n", - " [ 0.-1.j 3.+0.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "Applying row transformations:\n", - "R1 = R1+R3 and R2 = R2 + i *R3\n", - "a = \n", - "[[ 0.+0.j 2.+1.j]\n", - " [ 0.+0.j 3.+2.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "R1 = R1 * (1/2+i)\n", - "a = \n", - "[[ 0.+0.j 1.+0.j]\n", - " [ 0.+0.j 3.+2.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "R2 = R2-R1*(3+2i) and R3 = R3 - 2 *R1\n", - "a = \n", - "[[ 0.+0.j 1.+0.j]\n", - " [ 0.+0.j 0.+0.j]\n", - " [ 1.+0.j 0.+0.j]]\n", - "Thus the system of equations is:\n", - "x1 + 2*x2 = 0 -i*x1 + 3*x2 = 0 -x1+i*x2 = 0\n", - "It has only trivial solution x1 = x2 = 0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a=np.array([[-1, 1J],[-1J, 3],[1 ,2]])\n", - "print 'a = \\n',a\n", - "print 'Applying row transformations:'\n", - "print 'R1 = R1+R3 and R2 = R2 + i *R3'\n", - "a[0,:] = a[0,:] +a[2,:]\n", - "a[1,:] = a[1,:] + 1J * a[2,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1 * (1/2+i)'\n", - "a[0,:] = 1.0/(2 + 1J) * a[0,:]\n", - "print 'a = \\n',a\n", - "print 'R2 = R2-R1*(3+2i) and R3 = R3 - 2 *R1'\n", - "a[1,:] = (a[1,:] - (3 + 2 * 1J) * a[0,:])\n", - "a[2,:] = (a[2,:] - 2 * a[0,:])\n", - "print 'a = \\n',a\n", - "print 'Thus the system of equations is:'\n", - "print 'x1 + 2*x2 = 0','-i*x1 + 3*x2 = 0','-x1+i*x2 = 0'\n", - "print 'It has only trivial solution x1 = x2 = 0'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 9 Example 1.7" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 1. 0. 0. 0. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0. 0. 0. 0.]\n", - " [ 0. 0. 0. 1. 0. 0. 0. 0.]\n", - " [ 0. 0. 0. 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 0. 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0. 0. 0. 1.]]\n", - "This is an Identity matrix of order 8 * 8\n", - "And It is a row reduced matrix.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "n = np.random.randint(9)\n", - "print np.identity(n)\n", - "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", - "print 'And It is a row reduced matrix.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 12 Example 1.8" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 1. 0. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0. 1.]]\n", - "This is an Identity matrix of order 6 * 6\n", - "And It is a row reduced matrix.\n", - "[[ 0. 0. 0. 0. 0.]]\n", - "This is an Zero matrix of order 1 * 5\n", - "And It is also a row reduced matrix.\n", - "a = \n", - "[[ 0. 1. -3. 0. 0.5]\n", - " [ 0. 0. 0. 1. 2. ]\n", - " [ 0. 0. 0. 0. 0. ]]\n", - "This is a non-trivial row reduced matrix.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "n = np.random.randint(9)\n", - "print np.identity(n)\n", - "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", - "print 'And It is a row reduced matrix.'\n", - "m = np.random.randint(0,9)\n", - "n = np.random.randint(9)\n", - "print np.zeros([m,n])\n", - "print 'This is an Zero matrix of order %d * %d'%(m,n)\n", - "print 'And It is also a row reduced matrix.'\n", - "a = np.array([[0, 1, -3, 0, 1.0/2],[0, 0, 0, 1, 2],[0, 0 ,0 ,0 ,0]])\n", - "print 'a = \\n',a\n", - "print 'This is a non-trivial row reduced matrix.'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 14 Example 1.9" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 1 -2 1]\n", - " [ 2 1 1]\n", - " [ 0 5 -1]]\n", - "Applying row transformations:\n", - "R2 = R2 - 2*R1\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 5 -1]\n", - " [ 0 5 -1]]\n", - "R3 = R3 - R2\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 5 -1]\n", - " [ 0 0 0]]\n", - "R2 = 1/5*R2\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 1 0]\n", - " [ 0 0 0]]\n", - "R1 = R1 - 2*R2\n", - "A = \n", - "[[1 0 1]\n", - " [0 1 0]\n", - " [0 0 0]]\n", - "The condition that the system have a solution is:\n", - "2*y1 - y2 + y3 = 0\n", - "where, y1,y2,y3 are some scalars\n", - "If the condition is satisfied then solutions are obtained by assigning a value c to x3\n", - "Solutions are:\n", - "x2 = 1/5*c + 1/5*(y2 - 2*y1) x1 = -3/5*c + 1/5*(y1 + 2*y2)\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "A = np.array([[1, -2, 1],[2, 1, 1],[0, 5, -1]])\n", - "print 'A = \\n',A\n", - "print 'Applying row transformations:'\n", - "print 'R2 = R2 - 2*R1'\n", - "A[1,:] = A[1,:] - 2*A[0,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3 - R2'\n", - "A[2,:] = A[2,:] - A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R2 = 1/5*R2'\n", - "A[1,:] = 1.0/5*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R1 = R1 - 2*R2'\n", - "A[0,:] = A[0,:] + 2*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'The condition that the system have a solution is:'\n", - "print '2*y1 - y2 + y3 = 0'\n", - "print 'where, y1,y2,y3 are some scalars'\n", - "print 'If the condition is satisfied then solutions are obtained by assigning a value c to x3'\n", - "print 'Solutions are:'\n", - "print 'x2 = 1/5*c + 1/5*(y2 - 2*y1)','x1 = -3/5*c + 1/5*(y1 + 2*y2)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 17 Example 1.10" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a=\n", - "[[ 1 0]\n", - " [-3 1]]\n", - "b=\n", - "[[ 5 -1 2]\n", - " [15 4 8]]\n", - "ab = \n", - "[[ 5 -1 2]\n", - " [ 0 7 2]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[ 1 0]\n", - " [-2 3]\n", - " [ 5 4]\n", - " [ 0 1]]\n", - "b=\n", - "[[ 0 6 1]\n", - " [ 3 8 -2]]\n", - "ab = \n", - "[[ 0 6 1]\n", - " [ 9 12 -8]\n", - " [12 62 -3]\n", - " [ 3 8 -2]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[2 1]\n", - " [5 4]]\n", - "b=\n", - "[[1]\n", - " [6]]\n", - "ab = \n", - "[[ 8]\n", - " [29]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[-1]\n", - " [ 3]]\n", - "b=\n", - "[[2 4]]\n", - "ab = \n", - "[[-2 -4]\n", - " [ 6 12]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[2 4]]\n", - "b=\n", - "[[-1]\n", - " [ 3]]\n", - "ab = \n", - "[[10]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[0 1 0]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "b=\n", - "[[ 1 -5 2]\n", - " [ 2 3 4]\n", - " [ 9 -1 3]]\n", - "ab = \n", - "[[2 3 4]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[ 1 -5 2]\n", - " [ 2 3 4]\n", - " [ 9 -1 3]]\n", - "b=\n", - "[[0 1 0]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "ab = \n", - "[[0 1 0]\n", - " [0 2 0]\n", - " [0 9 0]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "#Part a\n", - "a = np.array([[1, 0],[-3, 1]])\n", - "b = np.array([[5, -1, 2],[15, 4, 8]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "\n", - "print '-----------------------------------------------------------------'\n", - "#Part b\n", - "a = np.array([[1, 0],[-2, 3],[5 ,4],[0, 1]])\n", - "b = np.array([[0, 6, 1],[3 ,8 ,-2]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part c\n", - "a = np.array([[2, 1],[5, 4]])\n", - "b = np.array([[1],[6]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part d\n", - "a = np.array([[-1],[3]])\n", - "b = np.array([[2, 4]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part e\n", - "a = np.array([[2, 4]])\n", - "b = np.array([[-1],[3]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part f\n", - "a = np.array([[0, 1 ,0],[0, 0, 0],[0, 0, 0]])\n", - "b = np.array([[1, -5, 2],[2, 3, 4],[9 ,-1, 3]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part g\n", - "a = np.array([[1, -5, 2],[2, 3, 4],[9, -1, 3]])\n", - "b = np.array([[0, 1, 0],[0 ,0 ,0],[0, 0, 0]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 22 Example 1.14" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[0 1]\n", - " [1 0]]\n", - "inverse a = \n", - "[[ 0. 1.]\n", - " [ 1. 0.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a = np.array([[0, 1],[1, 0]])\n", - "print 'a = \\n',a\n", - "print 'inverse a = \\n',np.linalg.inv(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 25 Example 1.15" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[ 2 -1]\n", - " [ 1 3]]\n", - "Applying row tranformations\n", - "Interchange R1 and R2\n", - "a = \n", - "[[ 1 3]\n", - " [ 2 -1]]\n", - "R2 = R2 - 2 * R1\n", - "a =\n", - " [[ 1 3]\n", - " [ 0 -7]]\n", - "R2 = R2 *1/(-7)\n", - "a = \n", - "[[1 3]\n", - " [0 1]]\n", - "R1 = R1 - 3 * R2\n", - "a = \n", - "[[1 0]\n", - " [0 1]]\n", - "Since a has become an identity matrix. So, a is invertible\n", - "inverse of a = \n", - "[[ 0.42857143 0.14285714]\n", - " [-0.14285714 0.28571429]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a = np.array([[2, -1],[1 ,3]])\n", - "b = np.array([[2, -1],[1 ,3]]) #Temporary variable to store a\n", - "print 'a = \\n',a\n", - "print 'Applying row tranformations'\n", - "print 'Interchange R1 and R2'\n", - "a[0,:] = a[1,:]\n", - "a[1,:] = b[0,:]\n", - "print 'a = \\n',a\n", - "print 'R2 = R2 - 2 * R1'\n", - "a[1,:] = a[1,:] - 2 * a[0,:]\n", - "print 'a =\\n ',a\n", - "print 'R2 = R2 *1/(-7)'\n", - "a[1,:] = (-1.0/7) * a[1,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1 - 3 * R2'\n", - "a[0,:] = a[0,:] - 3 * a[1,:]\n", - "print 'a = \\n',a\n", - "print 'Since a has become an identity matrix. So, a is invertible'\n", - "print 'inverse of a = '\n", - "print np.linalg.inv(b)# #a was stored in b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 25 Example 1.16" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[ 1. 0.5 0.33333333]\n", - " [ 0.5 0.33333333 0.25 ]\n", - " [ 0.33333333 0.25 0.2 ]]\n", - "b = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "Applying row transformations on a and b simultaneously,\n", - "R2 = R2 - 1/2 * R1 and R3 = R3 - 1/3*R1\n", - "a = \n", - "[[ 1. 0.5 0.33333333]\n", - " [ 0. 0.08333333 0.08333333]\n", - " [ 0. 0.08333333 0.08888889]]\n", - "b = \n", - "[[ 1. 0. 0. ]\n", - " [-0.5 1. 0. ]\n", - " [-0.33333333 0. 1. ]]\n", - "R3 = R3 - R2\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 3.33333333e-01]\n", - " [ 0.00000000e+00 8.33333333e-02 8.33333333e-02]\n", - " [ 0.00000000e+00 2.77555756e-17 5.55555556e-03]]\n", - "b = \n", - "[[ 1. 0. 0. ]\n", - " [-0.5 1. 0. ]\n", - " [ 0.16666667 -1. 1. ]]\n", - "R2 = R2 * 12 and R3 = R3 * 180\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 3.33333333e-01]\n", - " [ 0.00000000e+00 1.00000000e+00 1.00000000e+00]\n", - " [ 0.00000000e+00 4.99600361e-15 1.00000000e+00]]\n", - "b = \n", - "[[ 1. 0. 0.]\n", - " [ -6. 12. 0.]\n", - " [ 30. -180. 180.]]\n", - "R2 = R2 - R3 and R1 = R1 - 1/3*R3\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 -4.44089210e-16]\n", - " [ 0.00000000e+00 1.00000000e+00 -1.33226763e-15]\n", - " [ 0.00000000e+00 4.99600361e-15 1.00000000e+00]]\n", - "b = \n", - "[[ -9. 60. -60.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n", - "R1 = R1 - 1/2 * R2\n", - "a = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. -0.]\n", - " [ 0. 0. 1.]]\n", - "b = \n", - "[[ 9. -36. 30.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n", - "Since, a = identity matrix of order 3*3. So, b is inverse of a\n", - "inverse(a) = \n", - "[[ 9. -36. 30.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a = np.array([[1 ,1./2, 1.0/3],[1.0/2 ,1.0/3, 1.0/4],[1.0/3, 1.0/4, 1.0/5]])\n", - "print 'a = \\n',a\n", - "b = np.identity(3)\n", - "print 'b = \\n',b\n", - "print 'Applying row transformations on a and b simultaneously,'\n", - "print 'R2 = R2 - 1/2 * R1 and R3 = R3 - 1/3*R1'\n", - "a[1,:] = a[1,:] - 1.0/2 * a[0,:]\n", - "a[2,:] = a[2,:] - 1.0/3 * a[0,:]\n", - "b[1,:] = b[1,:] - 1.0/2 * b[0,:]\n", - "b[2,:] = b[2,:] - 1.0/3 * b[0,:]\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R3 = R3 - R2'\n", - "a[2,:] = a[2,:] - a[1,:]#\n", - "b[2,:] = b[2,:] - b[1,:]\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R2 = R2 * 12 and R3 = R3 * 180'\n", - "a[1,:] = a[1,:] *12#\n", - "a[2,:] = a[2,:] * 180#\n", - "b[1,:] = b[1,:] * 12#\n", - "b[2,:] = b[2,:] * 180#\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R2 = R2 - R3 and R1 = R1 - 1/3*R3'\n", - "a[1,:] = a[1,:] - a[2,:]#\n", - "a[0,:] = a[0,:] - 1./3 * a[2,:]#\n", - "b[1,:] = b[1,:] - b[2,:]#\n", - "b[0,:] = b[0,:] - 1./3 * b[2,:]#\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R1 = R1 - 1/2 * R2'\n", - "a[0,:] = a[0,:] - 1./2 * a[1,:]#\n", - "b[0,:] = b[0,:] - 1./2 * b[1,:]#\n", - "print 'a = \\n',np.matrix.round(a)\n", - "print 'b = \\n',b\n", - "print 'Since, a = identity matrix of order 3*3. So, b is inverse of a'\n", - "print 'inverse(a) = \\n',b" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_Zz52w1c.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_Zz52w1c.ipynb deleted file mode 100644 index d1fed764..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1_Zz52w1c.ipynb +++ /dev/null @@ -1,751 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 1 - Linear Equations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 8 Example 1.5" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a=\n", - "[[ 2 -1 3 2]\n", - " [ 1 4 0 -1]\n", - " [ 2 6 -1 5]]\n", - "Applying row transformations:\n", - "R1 = R1-2*R2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 2 6 -1 5]]\n", - "R3 = R3-2*R2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 0 -2 -1 7]]\n", - "R3 = R3/-2\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 4 0 -1]\n", - " [ 0 1 0 -3]]\n", - "R2 = R2-4*R3\n", - "a = \n", - "[[ 0 -9 3 4]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R1 = R1+9*R3\n", - "a = \n", - "[[ 0 0 3 -23]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R1 = R1*2/15\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 11]\n", - " [ 0 1 0 -3]]\n", - "R2 = R2+2*R1\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 3]\n", - " [ 0 1 0 -3]]\n", - "R3 = R3-R1/2\n", - "a = \n", - "[[ 0 0 0 -4]\n", - " [ 1 0 0 3]\n", - " [ 0 1 0 -1]]\n", - "We get the system of equations as:\n", - "2*x1 - x2 + 3*x3 + 2*x4 = 0\n", - "x1 + 4*x2 - x4 = 0\n", - "2*x1 + 6* x2 - x3 + 5*x4 = 0\n", - "and\n", - "x2 - 5/3*x4 = 0 x1 + 17/3*x4 = 0 x3 - 11/3*x4 = 0\n", - "now by assigning any rational value c to x4 in system second, the solution is evaluated as:\n", - "(-17/3*c,5/3,11/3*c,c)\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "a = array([[2, -1, 3, 2],[1, 4, 0 ,-1],[2, 6, -1, 5]])\n", - "print 'a=\\n',a\n", - "print 'Applying row transformations:'\n", - "print 'R1 = R1-2*R2'\n", - "a[0,:] = a[0,:] - 2*a[1,:]#\n", - "print 'a = \\n',a\n", - "print 'R3 = R3-2*R2'\n", - "a[2,:] = a[2,:] - 2*a[1,:]\n", - "print 'a = \\n',a\n", - "print 'R3 = R3/-2'\n", - "a[2,:] = -1.0/2*a[2,:]#\n", - "print 'a = \\n',a\n", - "print 'R2 = R2-4*R3'\n", - "a[1,:] = a[1,:] - 4*a[2,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1+9*R3'\n", - "a[0,:] = a[0,:] + 9*a[2,:]#\n", - "print 'a = \\n',a\n", - "print 'R1 = R1*2/15'\n", - "a[0,:] = a[0,:] * 2/15\n", - "print 'a = \\n',a\n", - "print 'R2 = R2+2*R1'\n", - "a[1,:] = a[1,:] + 2*a[0,:]\n", - "print 'a = \\n',a\n", - "print 'R3 = R3-R1/2'\n", - "a[2,:] = a[2,:] - 1.0/2*a[0,:]\n", - "print 'a = \\n',a\n", - "print 'We get the system of equations as:'\n", - "print '2*x1 - x2 + 3*x3 + 2*x4 = 0'\n", - "print 'x1 + 4*x2 - x4 = 0'\n", - "print '2*x1 + 6* x2 - x3 + 5*x4 = 0'\n", - "print 'and'\n", - "print 'x2 - 5/3*x4 = 0','x1 + 17/3*x4 = 0','x3 - 11/3*x4 = 0'\n", - "print 'now by assigning any rational value c to x4 in system second, the solution is evaluated as:'\n", - "print '(-17/3*c,5/3,11/3*c,c)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 9 Example 1.6" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[-1.+0.j 0.+1.j]\n", - " [ 0.-1.j 3.+0.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "Applying row transformations:\n", - "R1 = R1+R3 and R2 = R2 + i *R3\n", - "a = \n", - "[[ 0.+0.j 2.+1.j]\n", - " [ 0.+0.j 3.+2.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "R1 = R1 * (1/2+i)\n", - "a = \n", - "[[ 0.+0.j 1.+0.j]\n", - " [ 0.+0.j 3.+2.j]\n", - " [ 1.+0.j 2.+0.j]]\n", - "R2 = R2-R1*(3+2i) and R3 = R3 - 2 *R1\n", - "a = \n", - "[[ 0.+0.j 1.+0.j]\n", - " [ 0.+0.j 0.+0.j]\n", - " [ 1.+0.j 0.+0.j]]\n", - "Thus the system of equations is:\n", - "x1 + 2*x2 = 0 -i*x1 + 3*x2 = 0 -x1+i*x2 = 0\n", - "It has only trivial solution x1 = x2 = 0\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "a=array([[-1, 1J],[-1J, 3],[1 ,2]])\n", - "print 'a = \\n',a\n", - "print 'Applying row transformations:'\n", - "print 'R1 = R1+R3 and R2 = R2 + i *R3'\n", - "a[0,:] = a[0,:] +a[2,:]\n", - "a[1,:] = a[1,:] + 1J * a[2,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1 * (1/2+i)'\n", - "a[0,:] = 1.0/(2 + 1J) * a[0,:]\n", - "print 'a = \\n',a\n", - "print 'R2 = R2-R1*(3+2i) and R3 = R3 - 2 *R1'\n", - "a[1,:] = (a[1,:] - (3 + 2 * 1J) * a[0,:])\n", - "a[2,:] = (a[2,:] - 2 * a[0,:])\n", - "print 'a = \\n',a\n", - "print 'Thus the system of equations is:'\n", - "print 'x1 + 2*x2 = 0','-i*x1 + 3*x2 = 0','-x1+i*x2 = 0'\n", - "print 'It has only trivial solution x1 = x2 = 0'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 9 Example 1.7" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 1. 0. 0. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0. 0. 0.]\n", - " [ 0. 0. 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0. 0. 1.]]\n", - "This is an Identity matrix of order 7 * 7\n", - "And It is a row reduced matrix.\n" - ] - } - ], - "source": [ - "from numpy import random, identity\n", - "i=2;\n", - "while i<=2:\n", - " n = random.randint(9)\n", - " i=n\n", - "print identity(n)\n", - "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", - "print 'And It is a row reduced matrix.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 12 Example 1.8" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 1.]]\n", - "This is an Identity matrix of order 1 * 1\n", - "And It is a row reduced matrix.\n", - "[[ 0. 0. 0. 0.]]\n", - "This is an Zero matrix of order 1 * 4\n", - "And It is also a row reduced matrix.\n", - "a = \n", - "[[ 0. 1. -3. 0. 0.5]\n", - " [ 0. 0. 0. 1. 2. ]\n", - " [ 0. 0. 0. 0. 0. ]]\n", - "This is a non-trivial row reduced matrix.\n" - ] - } - ], - "source": [ - "from numpy import random,identity, zeros,array\n", - "n = random.randint(9)\n", - "print identity(n)\n", - "print 'This is an Identity matrix of order %d * %d'%(n,n)\n", - "print 'And It is a row reduced matrix.'\n", - "m = random.randint(0,9)\n", - "n = random.randint(9)\n", - "print zeros([m,n])\n", - "print 'This is an Zero matrix of order %d * %d'%(m,n)\n", - "print 'And It is also a row reduced matrix.'\n", - "a = array([[0, 1, -3, 0, 1.0/2],[0, 0, 0, 1, 2],[0, 0 ,0 ,0 ,0]])\n", - "print 'a = \\n',a\n", - "print 'This is a non-trivial row reduced matrix.'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 14 Example 1.9" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 1 -2 1]\n", - " [ 2 1 1]\n", - " [ 0 5 -1]]\n", - "Applying row transformations:\n", - "R2 = R2 - 2*R1\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 5 -1]\n", - " [ 0 5 -1]]\n", - "R3 = R3 - R2\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 5 -1]\n", - " [ 0 0 0]]\n", - "R2 = 1/5*R2\n", - "A = \n", - "[[ 1 -2 1]\n", - " [ 0 1 0]\n", - " [ 0 0 0]]\n", - "R1 = R1 - 2*R2\n", - "A = \n", - "[[1 0 1]\n", - " [0 1 0]\n", - " [0 0 0]]\n", - "The condition that the system have a solution is:\n", - "2*y1 - y2 + y3 = 0\n", - "where, y1,y2,y3 are some scalars\n", - "If the condition is satisfied then solutions are obtained by assigning a value c to x3\n", - "Solutions are:\n", - "x2 = 1/5*c + 1/5*(y2 - 2*y1) x1 = -3/5*c + 1/5*(y1 + 2*y2)\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "A = array([[1, -2, 1],[2, 1, 1],[0, 5, -1]])\n", - "print 'A = \\n',A\n", - "print 'Applying row transformations:'\n", - "print 'R2 = R2 - 2*R1'\n", - "A[1,:] = A[1,:] - 2*A[0,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3 - R2'\n", - "A[2,:] = A[2,:] - A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R2 = 1/5*R2'\n", - "A[1,:] = 1.0/5*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R1 = R1 - 2*R2'\n", - "A[0,:] = A[0,:] + 2*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'The condition that the system have a solution is:'\n", - "print '2*y1 - y2 + y3 = 0'\n", - "print 'where, y1,y2,y3 are some scalars'\n", - "print 'If the condition is satisfied then solutions are obtained by assigning a value c to x3'\n", - "print 'Solutions are:'\n", - "print 'x2 = 1/5*c + 1/5*(y2 - 2*y1)','x1 = -3/5*c + 1/5*(y1 + 2*y2)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 17 Example 1.10" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a=\n", - "[[ 1 0]\n", - " [-3 1]]\n", - "b=\n", - "[[ 5 -1 2]\n", - " [15 4 8]]\n", - "ab = \n", - "[[ 5 -1 2]\n", - " [ 0 7 2]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[ 1 0]\n", - " [-2 3]\n", - " [ 5 4]\n", - " [ 0 1]]\n", - "b=\n", - "[[ 0 6 1]\n", - " [ 3 8 -2]]\n", - "ab = \n", - "[[ 0 6 1]\n", - " [ 9 12 -8]\n", - " [12 62 -3]\n", - " [ 3 8 -2]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[2 1]\n", - " [5 4]]\n", - "b=\n", - "[[1]\n", - " [6]]\n", - "ab = \n", - "[[ 8]\n", - " [29]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[-1]\n", - " [ 3]]\n", - "b=\n", - "[[2 4]]\n", - "ab = \n", - "[[-2 -4]\n", - " [ 6 12]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[2 4]]\n", - "b=\n", - "[[-1]\n", - " [ 3]]\n", - "ab = \n", - "[[10]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[0 1 0]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "b=\n", - "[[ 1 -5 2]\n", - " [ 2 3 4]\n", - " [ 9 -1 3]]\n", - "ab = \n", - "[[2 3 4]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "-----------------------------------------------------------------\n", - "a=\n", - "[[ 1 -5 2]\n", - " [ 2 3 4]\n", - " [ 9 -1 3]]\n", - "b=\n", - "[[0 1 0]\n", - " [0 0 0]\n", - " [0 0 0]]\n", - "ab = \n", - "[[0 1 0]\n", - " [0 2 0]\n", - " [0 9 0]]\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "#Part a\n", - "a = array([[1, 0],[-3, 1]])\n", - "b = array([[5, -1, 2],[15, 4, 8]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "\n", - "print '-----------------------------------------------------------------'\n", - "#Part b\n", - "a = array([[1, 0],[-2, 3],[5 ,4],[0, 1]])\n", - "b = array([[0, 6, 1],[3 ,8 ,-2]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part c\n", - "a = array([[2, 1],[5, 4]])\n", - "b = array([[1],[6]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part d\n", - "a = array([[-1],[3]])\n", - "b = array([[2, 4]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part e\n", - "a = array([[2, 4]])\n", - "b = array([[-1],[3]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part f\n", - "a = array([[0, 1 ,0],[0, 0, 0],[0, 0, 0]])\n", - "b = array([[1, -5, 2],[2, 3, 4],[9 ,-1, 3]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)\n", - "print '-----------------------------------------------------------------'\n", - "#Part g\n", - "a = array([[1, -5, 2],[2, 3, 4],[9, -1, 3]])\n", - "b = array([[0, 1, 0],[0 ,0 ,0],[0, 0, 0]])\n", - "print 'a=\\n',a\n", - "print 'b=\\n',b\n", - "print 'ab = \\n',a.dot(b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 22 Example 1.14" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[0 1]\n", - " [1 0]]\n", - "inverse a = \n", - "[[ 0. 1.]\n", - " [ 1. 0.]]\n" - ] - } - ], - "source": [ - "from numpy import array,linalg\n", - "a = array([[0, 1],[1, 0]])\n", - "print 'a = \\n',a\n", - "print 'inverse a = \\n',linalg.inv(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 25 Example 1.15" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[ 2 -1]\n", - " [ 1 3]]\n", - "Applying row tranformations\n", - "Interchange R1 and R2\n", - "a = \n", - "[[ 1 3]\n", - " [ 2 -1]]\n", - "R2 = R2 - 2 * R1\n", - "a =\n", - " [[ 1 3]\n", - " [ 0 -7]]\n", - "R2 = R2 *1/(-7)\n", - "a = \n", - "[[1 3]\n", - " [0 1]]\n", - "R1 = R1 - 3 * R2\n", - "a = \n", - "[[1 0]\n", - " [0 1]]\n", - "Since a has become an identity matrix. So, a is invertible\n", - "inverse of a = \n", - "[[ 0.42857143 0.14285714]\n", - " [-0.14285714 0.28571429]]\n" - ] - } - ], - "source": [ - "from numpy import array,linalg\n", - "a = array([[2, -1],[1 ,3]])\n", - "b = array([[2, -1],[1 ,3]]) #Temporary variable to store a\n", - "print 'a = \\n',a\n", - "print 'Applying row tranformations'\n", - "print 'Interchange R1 and R2'\n", - "a[0,:] = a[1,:]\n", - "a[1,:] = b[0,:]\n", - "print 'a = \\n',a\n", - "print 'R2 = R2 - 2 * R1'\n", - "a[1,:] = a[1,:] - 2 * a[0,:]\n", - "print 'a =\\n ',a\n", - "print 'R2 = R2 *1/(-7)'\n", - "a[1,:] = (-1.0/7) * a[1,:]\n", - "print 'a = \\n',a\n", - "print 'R1 = R1 - 3 * R2'\n", - "a[0,:] = a[0,:] - 3 * a[1,:]\n", - "print 'a = \\n',a\n", - "print 'Since a has become an identity matrix. So, a is invertible'\n", - "print 'inverse of a = '\n", - "print linalg.inv(b)# #a was stored in b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 25 Example 1.16" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = \n", - "[[ 1. 0.5 0.33333333]\n", - " [ 0.5 0.33333333 0.25 ]\n", - " [ 0.33333333 0.25 0.2 ]]\n", - "b = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "Applying row transformations on a and b simultaneously,\n", - "R2 = R2 - 1/2 * R1 and R3 = R3 - 1/3*R1\n", - "a = \n", - "[[ 1. 0.5 0.33333333]\n", - " [ 0. 0.08333333 0.08333333]\n", - " [ 0. 0.08333333 0.08888889]]\n", - "b = \n", - "[[ 1. 0. 0. ]\n", - " [-0.5 1. 0. ]\n", - " [-0.33333333 0. 1. ]]\n", - "R3 = R3 - R2\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 3.33333333e-01]\n", - " [ 0.00000000e+00 8.33333333e-02 8.33333333e-02]\n", - " [ 0.00000000e+00 2.77555756e-17 5.55555556e-03]]\n", - "b = \n", - "[[ 1. 0. 0. ]\n", - " [-0.5 1. 0. ]\n", - " [ 0.16666667 -1. 1. ]]\n", - "R2 = R2 * 12 and R3 = R3 * 180\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 3.33333333e-01]\n", - " [ 0.00000000e+00 1.00000000e+00 1.00000000e+00]\n", - " [ 0.00000000e+00 4.99600361e-15 1.00000000e+00]]\n", - "b = \n", - "[[ 1. 0. 0.]\n", - " [ -6. 12. 0.]\n", - " [ 30. -180. 180.]]\n", - "R2 = R2 - R3 and R1 = R1 - 1/3*R3\n", - "a = \n", - "[[ 1.00000000e+00 5.00000000e-01 -4.44089210e-16]\n", - " [ 0.00000000e+00 1.00000000e+00 -1.33226763e-15]\n", - " [ 0.00000000e+00 4.99600361e-15 1.00000000e+00]]\n", - "b = \n", - "[[ -9. 60. -60.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n", - "R1 = R1 - 1/2 * R2\n", - "a = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. -0.]\n", - " [ 0. 0. 1.]]\n", - "b = \n", - "[[ 9. -36. 30.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n", - "Since, a = identity matrix of order 3*3. So, b is inverse of a\n", - "inverse(a) = \n", - "[[ 9. -36. 30.]\n", - " [ -36. 192. -180.]\n", - " [ 30. -180. 180.]]\n" - ] - } - ], - "source": [ - "from numpy import array,identity,matrix\n", - "a = array([[1 ,1./2, 1.0/3],[1.0/2 ,1.0/3, 1.0/4],[1.0/3, 1.0/4, 1.0/5]])\n", - "print 'a = \\n',a\n", - "b = identity(3)\n", - "print 'b = \\n',b\n", - "print 'Applying row transformations on a and b simultaneously,'\n", - "print 'R2 = R2 - 1/2 * R1 and R3 = R3 - 1/3*R1'\n", - "a[1,:] = a[1,:] - 1.0/2 * a[0,:]\n", - "a[2,:] = a[2,:] - 1.0/3 * a[0,:]\n", - "b[1,:] = b[1,:] - 1.0/2 * b[0,:]\n", - "b[2,:] = b[2,:] - 1.0/3 * b[0,:]\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R3 = R3 - R2'\n", - "a[2,:] = a[2,:] - a[1,:]#\n", - "b[2,:] = b[2,:] - b[1,:]\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R2 = R2 * 12 and R3 = R3 * 180'\n", - "a[1,:] = a[1,:] *12#\n", - "a[2,:] = a[2,:] * 180#\n", - "b[1,:] = b[1,:] * 12#\n", - "b[2,:] = b[2,:] * 180#\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R2 = R2 - R3 and R1 = R1 - 1/3*R3'\n", - "a[1,:] = a[1,:] - a[2,:]#\n", - "a[0,:] = a[0,:] - 1./3 * a[2,:]#\n", - "b[1,:] = b[1,:] - b[2,:]#\n", - "b[0,:] = b[0,:] - 1./3 * b[2,:]#\n", - "print 'a = \\n',a\n", - "print 'b = \\n',b\n", - "print 'R1 = R1 - 1/2 * R2'\n", - "a[0,:] = a[0,:] - 1./2 * a[1,:]#\n", - "b[0,:] = b[0,:] - 1./2 * b[1,:]#\n", - "print 'a = \\n',matrix.round(a)\n", - "print 'b = \\n',b\n", - "print 'Since, a = identity matrix of order 3*3. So, b is inverse of a'\n", - "print 'inverse(a) = \\n',b" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb index cac42c12..5659e3a2 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb @@ -101,9 +101,9 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array\n", "\n", - "A = np.array([[1, 2, 0 ,3 ,0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1]])\n", + "A = array([[1, 2, 0 ,3 ,0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1]])\n", "print 'A = \\n',A\n", "print 'The subspace of F**5 spanned by a1 a2 a3(row vectors of A) is called row space of A.'\n", "a1 = A[0,:]\n", @@ -113,7 +113,7 @@ "print 'a2 = ',a2\n", "print 'a3 = ',a3\n", "print 'And, it is also the row space of B.'\n", - "B = np.array([[1, 2, 0, 3, 0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1],[-4, -8, 1 ,-8, 0]])\n", + "B = array([[1, 2, 0, 3, 0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1],[-4, -8, 1 ,-8, 0]])\n", "print 'B = \\n',B" ] }, @@ -137,36 +137,24 @@ "text": [ "V is the space of all polynomial functions over F.\n", "S contains the functions as:\n", - "n = 17\n", + "n = 5\n", "f0(x) = 1\n", "f1(x) = x\n", "f2(x) = x**2\n", "f3(x) = x**3\n", "f4(x) = x**4\n", - "f5(x) = x**5\n", - "f6(x) = x**6\n", - "f7(x) = x**7\n", - "f8(x) = x**8\n", - "f9(x) = x**9\n", - "f10(x) = x**10\n", - "f11(x) = x**11\n", - "f12(x) = x**12\n", - "f13(x) = x**13\n", - "f14(x) = x**14\n", - "f15(x) = x**15\n", - "f16(x) = x**16\n", "Then, V is the subspace spanned by set S.\n" ] } ], "source": [ - "import sympy as sp\n", - "import numpy as np\n", + "from sympy import Symbol\n", + "from numpy import random\n", "print 'V is the space of all polynomial functions over F.'\n", "print 'S contains the functions as:'\n", - "x = sp.Symbol(\"x\")\n", + "x = Symbol(\"x\")\n", "#n = round(rand()*10)#\n", - "n=np.random.randint(0,19)\n", + "n=random.randint(0,19)\n", "print 'n = ',n\n", "for i in range (0,n):\n", " f = x**i#\n", @@ -208,11 +196,11 @@ } ], "source": [ - "import numpy as np\n", - "a1 = np.array([3 ,0, -3])\n", - "a2 = np.array([-1 ,1 ,2])\n", - "a3 = np.array([4 ,2, -2])\n", - "a4 = np.array([2 ,1, 1])\n", + "from numpy import array\n", + "a1 = array([3 ,0, -3])\n", + "a2 = array([-1 ,1 ,2])\n", + "a3 = array([4 ,2, -2])\n", + "a4 = array([2 ,1, 1])\n", "print 'a1 = ',a1\n", "print 'a2 = ',a2\n", "print 'a3 = ',a3\n", @@ -248,27 +236,9 @@ "output_type": "stream", "text": [ "S is the subset of F**n consisting of n vectors.\n", - "n = 10\n", + "n = 1\n", "e1 = \n", - "[ 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", - "e2 = \n", - "[ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", - "e3 = \n", - "[ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n", - "e4 = \n", - "[ 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", - "e5 = \n", - "[ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n", - "e6 = \n", - "[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n", - "e7 = \n", - "[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n", - "e8 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n", - "e9 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n", - "e10 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n", + "[ 1.]\n", "x1,x2,x3...xn are the scalars in F\n", "Putting a = x1*e1 + x2*e2 + x3*e3 + .... + xn*en\n", "So, a = (x1,x2,x3,...,xn)\n", @@ -280,12 +250,12 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array,random,identity\n", "print 'S is the subset of F**n consisting of n vectors.'\n", "#n = round(rand() *10 + 1)#\\\n", - "n=np.random.randint(0,19)\n", + "n=random.randint(0,19)\n", "print 'n = ',n\n", - "I = np.identity(n)\n", + "I = identity(n)\n", "for i in range(0,n):\n", " e = I[i,:]\n", " print 'e%d = '%(i+1)\n", @@ -342,17 +312,17 @@ } ], "source": [ - "import numpy as np\n", - "P = np.array([[-1, 4, 5],[ 0, 2, -3],[ 0, 0, 8]])\n", + "from numpy import array,transpose,linalg\n", + "P = array([[-1, 4, 5],[ 0, 2, -3],[ 0, 0, 8]])\n", "print 'P = \\n',P\n", - "print '\\ninverse(P) = \\n',np.linalg.inv(P)\n", + "print '\\ninverse(P) = \\n',linalg.inv(P)\n", "a1 = P[:,0]\n", "a2 = P[:,1]\n", "a3 = P[:,2]\n", "print 'The vectors forming basis of F**3 are a1'', a2'', a3'''\n", - "print \"a1' = \\n\",np.transpose(a1)\n", - "print \"\\na2' = \\n\",np.transpose(a2)\n", - "print \"\\na3' = \\n\",np.transpose(a3)\n", + "print \"a1' = \\n\",transpose(a1)\n", + "print \"\\na2' = \\n\",transpose(a2)\n", + "print \"\\na3' = \\n\",transpose(a3)\n", "print 'The coordinates x1'',x2'',x3'' of vector a = [x1,x2,x3] is given by inverse(P)*[x1# x2# x3]'\n", "t = -10*a1 - 1./2*a2 - a3#\n", "print 'And, -10*a1'' - 1/2*a2'' - a3'' = ',t" @@ -470,7 +440,7 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array,identity,rank,vstack\n", "a1 = [1 ,2 ,2, 1]#\n", "a2 = [0 ,2 ,0 ,1]#\n", "a3 = [-2, 0, -4, 3]#\n", @@ -480,12 +450,12 @@ "print 'a3 = ',a3\n", "print 'The matrix A from these vectors will be:'\n", "#A = [a1],[a2], [a3]]\n", - "A=np.array([a1,a2,a3])\n", + "A=array([a1,a2,a3])\n", "print 'A = \\n',A\n", "\n", "print 'Finding Row reduced echelon matrix of A that is given by R'\n", "print 'And applying same operations on identity matrix Q such that R = QA'\n", - "Q = np.identity(3)\n", + "Q = identity(3)\n", "print 'Q = \\n',Q\n", "T = A# #Temporary matrix to store A\n", "print 'Applying row transformations on A and Q,we get'\n", @@ -520,7 +490,7 @@ "print 'A = \\n',A\n", "print 'Q = \\n',Q\n", "#part a\n", - "print 'rank of R = ',np.rank(R)\n", + "print 'rank of R = ',rank(R)\n", "\n", "print 'Since, Rank of R is 3, so a1, a2, a3 are independent'\n", "#part b\n", @@ -542,19 +512,19 @@ "print 'Since a1'' a2'' a3'' are all of the form (y1 y2 y3 y4) with y3 = 2*y1, hence they are in W.'\n", "print 'So, they are independent.'\n", "#part d\n", - "c = np.array([c1,c2,c3])\n", - "P = np.identity(3)\n", + "c = array([c1,c2,c3])\n", + "P = identity(3)\n", "for i in range(0,3):\n", " b1 = c[i,0]\n", " b2 = c[i,1]\n", " b4 = c[i,3]\n", - " x1 = np.array([b1, b2, b4]) * Q[:,0]\n", - " x2 = np.array([b1, b2, b4])*Q[:,1]\n", - " x3 = np.array([b1, b2, b4])*Q[:,2]\n", + " x1 = array([b1, b2, b4]) * Q[:,0]\n", + " x2 = array([b1, b2, b4])*Q[:,1]\n", + " x3 = array([b1, b2, b4])*Q[:,2]\n", " \n", "\n", "print 'Required matrix P such that X = PX'' is:'\n", - "P=np.vstack([x1,x2,x3])\n", + "P=vstack([x1,x2,x3])\n", "print 'P = \\n',P\n", "#print x1" ] @@ -686,13 +656,13 @@ } ], "source": [ - "import numpy as np\n", - "A = np.array([[1, 2, 0, 3, 0],[1, 2, -1, -1, 0],[0 ,0 ,1 ,4 ,0],[2, 4 ,1 ,10, 1],[0 ,0 ,0 ,0 ,1]])\n", + "from numpy import array,identity\n", + "A = array([[1, 2, 0, 3, 0],[1, 2, -1, -1, 0],[0 ,0 ,1 ,4 ,0],[2, 4 ,1 ,10, 1],[0 ,0 ,0 ,0 ,1]])\n", "print 'A = \\n',A\n", "#part a\n", "T = A# #Temporary storing A in T\n", "print 'Taking an identity matrix P:'\n", - "P = np.identity(5)\n", + "P = identity(5)\n", "print 'P = \\n',P\n", "print 'Applying row transformations on P and A to get a row reduced echelon matrix R:'\n", "print 'R2 = R2 - R1 and R4 = R4 - 2* R1'\n", diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_1.ipynb deleted file mode 100755 index cac42c12..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_1.ipynb +++ /dev/null @@ -1,822 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 2 - Vector spaces" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 37 Example 2.8" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [1, 2, 0, 3, 0]\n", - "a2 = [0, 0, 1, 4, 0]\n", - "a3 = [0, 0, 0, 0, 1]\n", - "By theorem 3, vector a is in subspace W of F**5 spanned by a1, a2, a3\n", - "if and only if there exist scalars c1, c2, c3 such that\n", - "a= c1a1 + c2a2 + c3a3\n", - "So, a = (c1,2*c1,c2,3c1+4c2,c3)\n", - "c1 = -3\n", - "c2 = 1\n", - "c3 = 2\n", - "Therefore, a = [0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n", - "This shows, a is in W\n", - "And (2,4,6,7,8) is not in W as there is no value of c1 c2 c3 that satisfies the equation\n" - ] - } - ], - "source": [ - "\n", - "a1 = [1, 2 ,0 ,3, 0]#\n", - "a2 =[0, 0 ,1 ,4 ,0]#\n", - "a3 = [0 ,0 ,0 ,0, 1]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'By theorem 3, vector a is in subspace W of F**5 spanned by a1, a2, a3'\n", - "print 'if and only if there exist scalars c1, c2, c3 such that'\n", - "print 'a= c1a1 + c2a2 + c3a3'\n", - "print 'So, a = (c1,2*c1,c2,3c1+4c2,c3)'\n", - "c1 = -3#\n", - "c2 = 1#\n", - "c3 = 2#\n", - "a = c1*a1 + c2*a2 + c3*a3#\n", - "print 'c1 = ',c1\n", - "print 'c2 = ',c2\n", - "print 'c3 = ',c3\n", - "print 'Therefore, a = ',a\n", - "print 'This shows, a is in W'\n", - "print 'And (2,4,6,7,8) is not in W as there is no value of c1 c2 c3 that satisfies the equation'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 38 Example 2.10" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]]\n", - "The subspace of F**5 spanned by a1 a2 a3(row vectors of A) is called row space of A.\n", - "a1 = [1 2 0 3 0]\n", - "a2 = [0 0 1 4 0]\n", - "a3 = [0 0 0 0 1]\n", - "And, it is also the row space of B.\n", - "B = \n", - "[[ 1 2 0 3 0]\n", - " [ 0 0 1 4 0]\n", - " [ 0 0 0 0 1]\n", - " [-4 -8 1 -8 0]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "A = np.array([[1, 2, 0 ,3 ,0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1]])\n", - "print 'A = \\n',A\n", - "print 'The subspace of F**5 spanned by a1 a2 a3(row vectors of A) is called row space of A.'\n", - "a1 = A[0,:]\n", - "a2 = A[1,:]\n", - "a3 = A[2,:]\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'And, it is also the row space of B.'\n", - "B = np.array([[1, 2, 0, 3, 0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1],[-4, -8, 1 ,-8, 0]])\n", - "print 'B = \\n',B" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 39 Example 2.11" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "V is the space of all polynomial functions over F.\n", - "S contains the functions as:\n", - "n = 17\n", - "f0(x) = 1\n", - "f1(x) = x\n", - "f2(x) = x**2\n", - "f3(x) = x**3\n", - "f4(x) = x**4\n", - "f5(x) = x**5\n", - "f6(x) = x**6\n", - "f7(x) = x**7\n", - "f8(x) = x**8\n", - "f9(x) = x**9\n", - "f10(x) = x**10\n", - "f11(x) = x**11\n", - "f12(x) = x**12\n", - "f13(x) = x**13\n", - "f14(x) = x**14\n", - "f15(x) = x**15\n", - "f16(x) = x**16\n", - "Then, V is the subspace spanned by set S.\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "import numpy as np\n", - "print 'V is the space of all polynomial functions over F.'\n", - "print 'S contains the functions as:'\n", - "x = sp.Symbol(\"x\")\n", - "#n = round(rand()*10)#\n", - "n=np.random.randint(0,19)\n", - "print 'n = ',n\n", - "for i in range (0,n):\n", - " f = x**i#\n", - " print 'f%d(x) = '%(i,),f\n", - " \n", - "\n", - "print 'Then, V is the subspace spanned by set S.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 41 Example 2.12" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [ 3 0 -3]\n", - "a2 = [-1 1 2]\n", - "a3 = [ 4 2 -2]\n", - "a4 = [2 1 1]\n", - " Since, 2 * a1 + 2 * a2 - a3 + 0 * a4 = [0 0 0] = 0\n", - "a1,a2,a3,a4 are linearly independent\n", - "Now, e1 = [1, 0, 0]\n", - "e2 = [0, 1, 0]\n", - "e3 = [0, 0, 1]\n", - "Also, e1,e2,e3 are linearly independent.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a1 = np.array([3 ,0, -3])\n", - "a2 = np.array([-1 ,1 ,2])\n", - "a3 = np.array([4 ,2, -2])\n", - "a4 = np.array([2 ,1, 1])\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'a4 = ',a4\n", - "t = 2 * a1 + 2 * a2 - a3 + 0 * a4\n", - "print ' Since, 2 * a1 + 2 * a2 - a3 + 0 * a4 = ',t,'= 0'\n", - "print 'a1,a2,a3,a4 are linearly independent'\n", - "e1 = [1, 0, 0]#\n", - "e2 = [0 ,1 ,0]#\n", - "e3 = [0 ,0, 1]#\n", - "print 'Now, e1 = ',e1\n", - "print 'e2 = ',e2\n", - "print 'e3 = ',e3\n", - "print 'Also, e1,e2,e3 are linearly independent.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 41 Example 2.13" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "S is the subset of F**n consisting of n vectors.\n", - "n = 10\n", - "e1 = \n", - "[ 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", - "e2 = \n", - "[ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", - "e3 = \n", - "[ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n", - "e4 = \n", - "[ 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", - "e5 = \n", - "[ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n", - "e6 = \n", - "[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n", - "e7 = \n", - "[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n", - "e8 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n", - "e9 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n", - "e10 = \n", - "[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n", - "x1,x2,x3...xn are the scalars in F\n", - "Putting a = x1*e1 + x2*e2 + x3*e3 + .... + xn*en\n", - "So, a = (x1,x2,x3,...,xn)\n", - "Therefore, e1,e2..,en span F**n\n", - "a = 0 if x1 = x2 = x3 = .. = xn = 0\n", - "So,e1,e2,e3,..,en are linearly independent.\n", - "The set S = {e1,e2,..,en} is called standard basis of F**n\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print 'S is the subset of F**n consisting of n vectors.'\n", - "#n = round(rand() *10 + 1)#\\\n", - "n=np.random.randint(0,19)\n", - "print 'n = ',n\n", - "I = np.identity(n)\n", - "for i in range(0,n):\n", - " e = I[i,:]\n", - " print 'e%d = '%(i+1)\n", - " print e\n", - "\n", - "print 'x1,x2,x3...xn are the scalars in F'\n", - "print 'Putting a = x1*e1 + x2*e2 + x3*e3 + .... + xn*en'\n", - "print 'So, a = (x1,x2,x3,...,xn)'\n", - "print 'Therefore, e1,e2..,en span F**n'\n", - "print 'a = 0 if x1 = x2 = x3 = .. = xn = 0'\n", - "print 'So,e1,e2,e3,..,en are linearly independent.'\n", - "print 'The set S = {e1,e2,..,en} is called standard basis of F**n'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 54 Example 2.20" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "P = \n", - "[[-1 4 5]\n", - " [ 0 2 -3]\n", - " [ 0 0 8]]\n", - "\n", - "inverse(P) = \n", - "[[-1. 2. 1.375 ]\n", - " [ 0. 0.5 0.1875]\n", - " [ 0. 0. 0.125 ]]\n", - "The vectors forming basis of F**3 are a1, a2, a3\n", - "a1' = \n", - "[-1 0 0]\n", - "\n", - "a2' = \n", - "[4 2 0]\n", - "\n", - "a3' = \n", - "[ 5 -3 8]\n", - "The coordinates x1,x2,x3 of vector a = [x1,x2,x3] is given by inverse(P)*[x1# x2# x3]\n", - "And, -10*a1 - 1/2*a2 - a3 = [ 3. 2. -8.]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "P = np.array([[-1, 4, 5],[ 0, 2, -3],[ 0, 0, 8]])\n", - "print 'P = \\n',P\n", - "print '\\ninverse(P) = \\n',np.linalg.inv(P)\n", - "a1 = P[:,0]\n", - "a2 = P[:,1]\n", - "a3 = P[:,2]\n", - "print 'The vectors forming basis of F**3 are a1'', a2'', a3'''\n", - "print \"a1' = \\n\",np.transpose(a1)\n", - "print \"\\na2' = \\n\",np.transpose(a2)\n", - "print \"\\na3' = \\n\",np.transpose(a3)\n", - "print 'The coordinates x1'',x2'',x3'' of vector a = [x1,x2,x3] is given by inverse(P)*[x1# x2# x3]'\n", - "t = -10*a1 - 1./2*a2 - a3#\n", - "print 'And, -10*a1'' - 1/2*a2'' - a3'' = ',t" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 60 Example 2.21" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Given row vectors are:\n", - "a1 = [1, 2, 2, 1]\n", - "a2 = [0, 2, 0, 1]\n", - "a3 = [-2, 0, -4, 3]\n", - "The matrix A from these vectors will be:\n", - "A = \n", - "[[ 1 2 2 1]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "Finding Row reduced echelon matrix of A that is given by R\n", - "And applying same operations on identity matrix Q such that R = QA\n", - "Q = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "Applying row transformations on A and Q,we get\n", - "R1 = R1-R2\n", - "A = \n", - "[[ 1 0 2 0]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "Q = \n", - "[[ 1. -1. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "R3 = R3 + 2*R1\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 3]]\n", - "Q = \n", - "[[ 1. -1. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 2. -2. 1.]]\n", - "R3 = R3/3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [ 0. 1. 0. ]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "R2 = R2/2\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [ 0. 5. 0. ]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "R2 = R2 - 1/2*R3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [-0.33333333 5.33333333 -0.16666667]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "Row reduced echelon matrix:\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [-0.33333333 5.33333333 -0.16666667]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "rank of R = 2\n", - "Since, Rank of R is 3, so a1, a2, a3 are independent\n", - "Now, basis for W can be given by row vectors of R i.e. p1,p2,p3\n", - "b is any vector in W. b = [b1 b2 b3 b4]\n", - "Span of vectors p1,p2,p3 consist of vector b with b3 = 2*b1\n", - "So,b = b1p1 + b2p2 + b4p3\n", - "And,[p1 p2 p3] = R = Q*A\n", - "So, b = [b1 b2 b3]* Q * A\n", - "hence, b = x1a1 + x2a2 + x3a3 where x1 = [b1 b2 b4] * Q(1) and so on\n", - "Now, given 3 vectors a1 a2 a3:\n", - "a1 = [1, 0, 2, 0]\n", - "a2 = [0, 2, 0, 1]\n", - "a3 = [0, 0, 0, 3]\n", - "Since a1 a2 a3 are all of the form (y1 y2 y3 y4) with y3 = 2*y1, hence they are in W.\n", - "So, they are independent.\n", - "Required matrix P such that X = PX is:\n", - "P = \n", - "[[ 0. -0. 2.]\n", - " [-0. 0. -2.]\n", - " [ 0. -0. 1.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a1 = [1 ,2 ,2, 1]#\n", - "a2 = [0 ,2 ,0 ,1]#\n", - "a3 = [-2, 0, -4, 3]#\n", - "print 'Given row vectors are:'\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'The matrix A from these vectors will be:'\n", - "#A = [a1],[a2], [a3]]\n", - "A=np.array([a1,a2,a3])\n", - "print 'A = \\n',A\n", - "\n", - "print 'Finding Row reduced echelon matrix of A that is given by R'\n", - "print 'And applying same operations on identity matrix Q such that R = QA'\n", - "Q = np.identity(3)\n", - "print 'Q = \\n',Q\n", - "T = A# #Temporary matrix to store A\n", - "print 'Applying row transformations on A and Q,we get'\n", - "print 'R1 = R1-R2'\n", - "A[0,:] = A[0,:] - A[1,:]\n", - "Q[0,:] = Q[0,:] - Q[1,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R3 = R3 + 2*R1'\n", - "A[2,:] = A[2,:] + 2*A[0,:]\n", - "Q[2,:] = Q[2,:] + 2*Q[0,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R3 = R3/3'\n", - "A[2,:] = 1./3*A[2,:]\n", - "Q[2,:] = 1./3*Q[2,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R2 = R2/2'\n", - "A[1,:] = 1./2*A[1,:]\n", - "Q[1,:] = 10/2*Q[1,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R2 = R2 - 1/2*R3'\n", - "A[1,:] = A[1,:] - 1./2*A[2,:]\n", - "Q[1,:] = Q[1,:] - 1./2*Q[2,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix:'\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "#part a\n", - "print 'rank of R = ',np.rank(R)\n", - "\n", - "print 'Since, Rank of R is 3, so a1, a2, a3 are independent'\n", - "#part b\n", - "print 'Now, basis for W can be given by row vectors of R i.e. p1,p2,p3'\n", - "print 'b is any vector in W. b = [b1 b2 b3 b4]'\n", - "print 'Span of vectors p1,p2,p3 consist of vector b with b3 = 2*b1'\n", - "print 'So,b = b1p1 + b2p2 + b4p3'\n", - "print 'And,[p1 p2 p3] = R = Q*A'\n", - "print 'So, b = [b1 b2 b3]* Q * A'\n", - "print 'hence, b = x1a1 + x2a2 + x3a3 where x1 = [b1 b2 b4] * Q(1) and so on' # #Equation 1\n", - "#part c\n", - "print 'Now, given 3 vectors a1'' a2'' a3'':'\n", - "c1 = [1, 0, 2, 0]#\n", - "c2 = [0 ,2 ,0, 1]#\n", - "c3 = [0 ,0 ,0 ,3]#\n", - "print 'a1'' = ',c1\n", - "print 'a2'' = ',c2\n", - "print 'a3'' = ',c3\n", - "print 'Since a1'' a2'' a3'' are all of the form (y1 y2 y3 y4) with y3 = 2*y1, hence they are in W.'\n", - "print 'So, they are independent.'\n", - "#part d\n", - "c = np.array([c1,c2,c3])\n", - "P = np.identity(3)\n", - "for i in range(0,3):\n", - " b1 = c[i,0]\n", - " b2 = c[i,1]\n", - " b4 = c[i,3]\n", - " x1 = np.array([b1, b2, b4]) * Q[:,0]\n", - " x2 = np.array([b1, b2, b4])*Q[:,1]\n", - " x3 = np.array([b1, b2, b4])*Q[:,2]\n", - " \n", - "\n", - "print 'Required matrix P such that X = PX'' is:'\n", - "P=np.vstack([x1,x2,x3])\n", - "print 'P = \\n',P\n", - "#print x1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 63 Example 2.22" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 1 2 0 3 0]\n", - " [ 1 2 -1 -1 0]\n", - " [ 0 0 1 4 0]\n", - " [ 2 4 1 10 1]\n", - " [ 0 0 0 0 1]]\n", - "Taking an identity matrix P:\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 1.]]\n", - "Applying row transformations on P and A to get a row reduced echelon matrix R:\n", - "R2 = R2 - R1 and R4 = R4 - 2* R1\n", - "A = \n", - "[[ 1 2 0 3 0]\n", - " [ 0 0 -1 -4 0]\n", - " [ 0 0 1 4 0]\n", - " [ 0 0 1 4 1]\n", - " [ 0 0 0 0 1]]\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [-1. 1. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0.]\n", - " [-2. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 1.]]\n", - "R2 = -R2 , R3 = R3 - R1 + R2 and R4 = R4 - R1 + R2\n", - "A = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]]\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 1. -1. -0. -0. -0.]\n", - " [-1. 1. 1. 0. 0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [-3. 1. 0. 1. 0.]]\n", - "Mutually interchanging R3, R4 and R5\n", - "Row reduced echelon matrix R = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 0]]\n", - "Invertible Matrix P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 1. -1. -0. -0. -0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0.]]\n", - "Invertible matrix P is not unique. There can be many that depends on operations used to reduce A\n", - "-----------------------------------------\n", - "For the basis of row space W of A, we can take the non-zero rows of R\n", - "It can be given by p1, p2, p3\n", - "p1 = [1 2 0 3 0]\n", - "p2 = [0 0 1 4 0]\n", - "p3 = [0 0 0 0 1]\n", - "-----------------------------------------\n", - "The row space W consists of vectors of the form:\n", - "b = c1p1 + c2p2 + c3p3\n", - "i.e. b = (c1,2*c1,c2,3*c1+4*c2,c3) where, c1 c2 c3 are scalars.\n", - "So, if b2 = 2*b1 and b4 = 3*b1 + 4*b3 => (b1,b2,b3,b4,b5) = b1p1 + b3p2 + b5p3\n", - "then,(b1,b2,b3,b4,b5) is in W\n", - "-----------------------------------------\n", - "The coordinate matrix of the vector (b1,2*b1,b2,3*b1+4*b2,b3) in the basis (p1,p2,p3) is column matrix of b1,b2,b3 such that:\n", - " b1\n", - " b2\n", - " b3\n", - "-----------------------------------------\n", - "Now, to write each vector in W as a linear combination of rows of A:\n", - "Let b = (b1,b2,b3,b4,b5) and if b is in W, then\n", - "we know,b = (b1,2*b1,b3,3*b1 + 4*b3,b5) => [b1,b3,b5,0,0]*R\n", - "=> b = [b1,b3,b5,0,0] * P*A => b = [b1+b3,-b3,0,0,b5] * A\n", - "if b = (-5,-10,1,-11,20)\n", - "b = ( [-4, -1, 0, 0, 20] ) *[ [[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 0]] ]\n", - "-----------------------------------------\n", - "The equations in system RX = 0 are given by R * [x1 x2 x3 x4 x5]\n", - "i.e., x1 + 2*x2 + 3*x4\n", - "x3 + 4*x4\n", - "x5\n", - "so, V consists of all columns of the form\n", - "[ X=\n", - " -2*x2 - 3*x4\n", - " x2\n", - " -4*x4\n", - " x4\n", - " 0\n", - "where x2 and x4 are arbitrary ]\n", - "-----------------------------------------\n", - "Let x2 = 1,x4 = 0 then the given column forms a basis of V\n", - "[[-2], [1], [0], [0], [0]]\n", - "Similarly,if x2 = 0,x4 = 1 then the given column forms a basis of V\n", - "[[-3], [0], [-4], [1], [0]]\n", - "-----------------------------------------\n", - "The equation AX = Y has solutions X if and only if\n", - "-y1 + y2 + y3 = 0\n", - "-3*y1 + y2 + y4 -y5 = 0\n", - "where, Y = (y1 y2 y3 y4 y5)\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "A = np.array([[1, 2, 0, 3, 0],[1, 2, -1, -1, 0],[0 ,0 ,1 ,4 ,0],[2, 4 ,1 ,10, 1],[0 ,0 ,0 ,0 ,1]])\n", - "print 'A = \\n',A\n", - "#part a\n", - "T = A# #Temporary storing A in T\n", - "print 'Taking an identity matrix P:'\n", - "P = np.identity(5)\n", - "print 'P = \\n',P\n", - "print 'Applying row transformations on P and A to get a row reduced echelon matrix R:'\n", - "print 'R2 = R2 - R1 and R4 = R4 - 2* R1'\n", - "A[1,:] = A[1,:] - A[0,:]\n", - "P[1,:] = P[1,:] - P[0,:]\n", - "A[3,:] = A[3,:] - 2 * A[0,:]\n", - "P[3,:] = P[3,:] - 2 * P[0,:]\n", - "print 'A = \\n',A\n", - "print 'P = \\n',P\n", - "print 'R2 = -R2 , R3 = R3 - R1 + R2 and R4 = R4 - R1 + R2'\n", - "A[1,:] = -A[1,:]\n", - "P[1,:] = -P[1,:]\n", - "A[2,:] = A[2,:] - A[1,:]\n", - "P[2,:] = P[2,:] - P[1,:]\n", - "A[3,:] = A[3,:] - A[1,:]\n", - "P[3:] = P[3,:] - P[1,:]\n", - "print 'A = \\n',A\n", - "print 'P = \\n',P\n", - "print 'Mutually interchanging R3, R4 and R5'\n", - "x = A[2,:]\n", - "A[2,:] = A[4,:]\n", - "y = A[3,:]\n", - "A[3,:] = x#\n", - "A[4,:] = y - A[2,:]\n", - "x = P[2,:]\n", - "P[2,:] = P[4,:]\n", - "y = P[3,:]\n", - "P[3,:] = x#\n", - "P[4,:] = y - P[2,:]\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix R = \\n',R\n", - "print 'Invertible Matrix P = \\n',P\n", - "print 'Invertible matrix P is not unique. There can be many that depends on operations used to reduce A'\n", - "print '-----------------------------------------'\n", - "#part b\n", - "print 'For the basis of row space W of A, we can take the non-zero rows of R'\n", - "print 'It can be given by p1, p2, p3'\n", - "p1 = R[0,:]\n", - "p2 = R[1,:]\n", - "p3 = R[2,:]\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'p3 = ',p3\n", - "print '-----------------------------------------'\n", - "#part c\n", - "print 'The row space W consists of vectors of the form:'\n", - "print 'b = c1p1 + c2p2 + c3p3'\n", - "print 'i.e. b = (c1,2*c1,c2,3*c1+4*c2,c3) where, c1 c2 c3 are scalars.'\n", - "print 'So, if b2 = 2*b1 and b4 = 3*b1 + 4*b3 => (b1,b2,b3,b4,b5) = b1p1 + b3p2 + b5p3'\n", - "print 'then,(b1,b2,b3,b4,b5) is in W'\n", - "print '-----------------------------------------'\n", - "#part d\n", - "print 'The coordinate matrix of the vector (b1,2*b1,b2,3*b1+4*b2,b3) in the basis (p1,p2,p3) is column matrix of b1,b2,b3 such that:'\n", - "print ' b1'\n", - "print ' b2'\n", - "print ' b3'\n", - "print '-----------------------------------------'\n", - "#part e\n", - "print 'Now, to write each vector in W as a linear combination of rows of A:'\n", - "print 'Let b = (b1,b2,b3,b4,b5) and if b is in W, then'\n", - "print 'we know,b = (b1,2*b1,b3,3*b1 + 4*b3,b5) => [b1,b3,b5,0,0]*R'\n", - "print '=> b = [b1,b3,b5,0,0] * P*A => b = [b1+b3,-b3,0,0,b5] * A'\n", - "print 'if b = (-5,-10,1,-11,20)'\n", - "b1 = -5#\n", - "b2 = -10#\n", - "b3 = 1#\n", - "b4 = -11#\n", - "b5 = 20#\n", - "x = [b1 + b3,-b3,0,0,b5]#\n", - "print 'b = (',x,')','*[',A,']'\n", - "print '-----------------------------------------'\n", - "#part f\n", - "print 'The equations in system RX = 0 are given by R * [x1 x2 x3 x4 x5]'\n", - "print 'i.e., x1 + 2*x2 + 3*x4'\n", - "print 'x3 + 4*x4'\n", - "print 'x5'\n", - "print 'so, V consists of all columns of the form'\n", - "print '[','X='\n", - "print ' -2*x2 - 3*x4'\n", - "print ' x2'\n", - "print ' -4*x4'\n", - "print ' x4'\n", - "print ' 0'\n", - "print 'where x2 and x4 are arbitrary',']'\n", - "print '-----------------------------------------'\n", - "#part g\n", - "print 'Let x2 = 1,x4 = 0 then the given column forms a basis of V'\n", - "\n", - "x2 = 1#\n", - "x4 = 0#\n", - "print [[-2*x2-3*x4],[ x2],[ -4*x4],[ x4],[ 0]]\n", - "print 'Similarly,if x2 = 0,x4 = 1 then the given column forms a basis of V'\n", - "x2 = 0#\n", - "x4 = 1#\n", - "print [[-2*x2-3*x4],[ x2],[ -4*x4],[ x4],[ 0]]\n", - "print '-----------------------------------------'\n", - "#part h\n", - "print 'The equation AX = Y has solutions X if and only if'\n", - "print '-y1 + y2 + y3 = 0'\n", - "print '-3*y1 + y2 + y4 -y5 = 0'\n", - "print 'where, Y = (y1 y2 y3 y4 y5)'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_ctyqn3t.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_ctyqn3t.ipynb deleted file mode 100644 index 5659e3a2..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2_ctyqn3t.ipynb +++ /dev/null @@ -1,792 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 2 - Vector spaces" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 37 Example 2.8" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [1, 2, 0, 3, 0]\n", - "a2 = [0, 0, 1, 4, 0]\n", - "a3 = [0, 0, 0, 0, 1]\n", - "By theorem 3, vector a is in subspace W of F**5 spanned by a1, a2, a3\n", - "if and only if there exist scalars c1, c2, c3 such that\n", - "a= c1a1 + c2a2 + c3a3\n", - "So, a = (c1,2*c1,c2,3c1+4c2,c3)\n", - "c1 = -3\n", - "c2 = 1\n", - "c3 = 2\n", - "Therefore, a = [0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n", - "This shows, a is in W\n", - "And (2,4,6,7,8) is not in W as there is no value of c1 c2 c3 that satisfies the equation\n" - ] - } - ], - "source": [ - "\n", - "a1 = [1, 2 ,0 ,3, 0]#\n", - "a2 =[0, 0 ,1 ,4 ,0]#\n", - "a3 = [0 ,0 ,0 ,0, 1]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'By theorem 3, vector a is in subspace W of F**5 spanned by a1, a2, a3'\n", - "print 'if and only if there exist scalars c1, c2, c3 such that'\n", - "print 'a= c1a1 + c2a2 + c3a3'\n", - "print 'So, a = (c1,2*c1,c2,3c1+4c2,c3)'\n", - "c1 = -3#\n", - "c2 = 1#\n", - "c3 = 2#\n", - "a = c1*a1 + c2*a2 + c3*a3#\n", - "print 'c1 = ',c1\n", - "print 'c2 = ',c2\n", - "print 'c3 = ',c3\n", - "print 'Therefore, a = ',a\n", - "print 'This shows, a is in W'\n", - "print 'And (2,4,6,7,8) is not in W as there is no value of c1 c2 c3 that satisfies the equation'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 38 Example 2.10" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]]\n", - "The subspace of F**5 spanned by a1 a2 a3(row vectors of A) is called row space of A.\n", - "a1 = [1 2 0 3 0]\n", - "a2 = [0 0 1 4 0]\n", - "a3 = [0 0 0 0 1]\n", - "And, it is also the row space of B.\n", - "B = \n", - "[[ 1 2 0 3 0]\n", - " [ 0 0 1 4 0]\n", - " [ 0 0 0 0 1]\n", - " [-4 -8 1 -8 0]]\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "\n", - "A = array([[1, 2, 0 ,3 ,0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1]])\n", - "print 'A = \\n',A\n", - "print 'The subspace of F**5 spanned by a1 a2 a3(row vectors of A) is called row space of A.'\n", - "a1 = A[0,:]\n", - "a2 = A[1,:]\n", - "a3 = A[2,:]\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'And, it is also the row space of B.'\n", - "B = array([[1, 2, 0, 3, 0],[0, 0, 1, 4, 0],[0, 0, 0, 0, 1],[-4, -8, 1 ,-8, 0]])\n", - "print 'B = \\n',B" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 39 Example 2.11" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "V is the space of all polynomial functions over F.\n", - "S contains the functions as:\n", - "n = 5\n", - "f0(x) = 1\n", - "f1(x) = x\n", - "f2(x) = x**2\n", - "f3(x) = x**3\n", - "f4(x) = x**4\n", - "Then, V is the subspace spanned by set S.\n" - ] - } - ], - "source": [ - "from sympy import Symbol\n", - "from numpy import random\n", - "print 'V is the space of all polynomial functions over F.'\n", - "print 'S contains the functions as:'\n", - "x = Symbol(\"x\")\n", - "#n = round(rand()*10)#\n", - "n=random.randint(0,19)\n", - "print 'n = ',n\n", - "for i in range (0,n):\n", - " f = x**i#\n", - " print 'f%d(x) = '%(i,),f\n", - " \n", - "\n", - "print 'Then, V is the subspace spanned by set S.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 41 Example 2.12" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [ 3 0 -3]\n", - "a2 = [-1 1 2]\n", - "a3 = [ 4 2 -2]\n", - "a4 = [2 1 1]\n", - " Since, 2 * a1 + 2 * a2 - a3 + 0 * a4 = [0 0 0] = 0\n", - "a1,a2,a3,a4 are linearly independent\n", - "Now, e1 = [1, 0, 0]\n", - "e2 = [0, 1, 0]\n", - "e3 = [0, 0, 1]\n", - "Also, e1,e2,e3 are linearly independent.\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "a1 = array([3 ,0, -3])\n", - "a2 = array([-1 ,1 ,2])\n", - "a3 = array([4 ,2, -2])\n", - "a4 = array([2 ,1, 1])\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'a4 = ',a4\n", - "t = 2 * a1 + 2 * a2 - a3 + 0 * a4\n", - "print ' Since, 2 * a1 + 2 * a2 - a3 + 0 * a4 = ',t,'= 0'\n", - "print 'a1,a2,a3,a4 are linearly independent'\n", - "e1 = [1, 0, 0]#\n", - "e2 = [0 ,1 ,0]#\n", - "e3 = [0 ,0, 1]#\n", - "print 'Now, e1 = ',e1\n", - "print 'e2 = ',e2\n", - "print 'e3 = ',e3\n", - "print 'Also, e1,e2,e3 are linearly independent.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 41 Example 2.13" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "S is the subset of F**n consisting of n vectors.\n", - "n = 1\n", - "e1 = \n", - "[ 1.]\n", - "x1,x2,x3...xn are the scalars in F\n", - "Putting a = x1*e1 + x2*e2 + x3*e3 + .... + xn*en\n", - "So, a = (x1,x2,x3,...,xn)\n", - "Therefore, e1,e2..,en span F**n\n", - "a = 0 if x1 = x2 = x3 = .. = xn = 0\n", - "So,e1,e2,e3,..,en are linearly independent.\n", - "The set S = {e1,e2,..,en} is called standard basis of F**n\n" - ] - } - ], - "source": [ - "from numpy import array,random,identity\n", - "print 'S is the subset of F**n consisting of n vectors.'\n", - "#n = round(rand() *10 + 1)#\\\n", - "n=random.randint(0,19)\n", - "print 'n = ',n\n", - "I = identity(n)\n", - "for i in range(0,n):\n", - " e = I[i,:]\n", - " print 'e%d = '%(i+1)\n", - " print e\n", - "\n", - "print 'x1,x2,x3...xn are the scalars in F'\n", - "print 'Putting a = x1*e1 + x2*e2 + x3*e3 + .... + xn*en'\n", - "print 'So, a = (x1,x2,x3,...,xn)'\n", - "print 'Therefore, e1,e2..,en span F**n'\n", - "print 'a = 0 if x1 = x2 = x3 = .. = xn = 0'\n", - "print 'So,e1,e2,e3,..,en are linearly independent.'\n", - "print 'The set S = {e1,e2,..,en} is called standard basis of F**n'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 54 Example 2.20" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "P = \n", - "[[-1 4 5]\n", - " [ 0 2 -3]\n", - " [ 0 0 8]]\n", - "\n", - "inverse(P) = \n", - "[[-1. 2. 1.375 ]\n", - " [ 0. 0.5 0.1875]\n", - " [ 0. 0. 0.125 ]]\n", - "The vectors forming basis of F**3 are a1, a2, a3\n", - "a1' = \n", - "[-1 0 0]\n", - "\n", - "a2' = \n", - "[4 2 0]\n", - "\n", - "a3' = \n", - "[ 5 -3 8]\n", - "The coordinates x1,x2,x3 of vector a = [x1,x2,x3] is given by inverse(P)*[x1# x2# x3]\n", - "And, -10*a1 - 1/2*a2 - a3 = [ 3. 2. -8.]\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,linalg\n", - "P = array([[-1, 4, 5],[ 0, 2, -3],[ 0, 0, 8]])\n", - "print 'P = \\n',P\n", - "print '\\ninverse(P) = \\n',linalg.inv(P)\n", - "a1 = P[:,0]\n", - "a2 = P[:,1]\n", - "a3 = P[:,2]\n", - "print 'The vectors forming basis of F**3 are a1'', a2'', a3'''\n", - "print \"a1' = \\n\",transpose(a1)\n", - "print \"\\na2' = \\n\",transpose(a2)\n", - "print \"\\na3' = \\n\",transpose(a3)\n", - "print 'The coordinates x1'',x2'',x3'' of vector a = [x1,x2,x3] is given by inverse(P)*[x1# x2# x3]'\n", - "t = -10*a1 - 1./2*a2 - a3#\n", - "print 'And, -10*a1'' - 1/2*a2'' - a3'' = ',t" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 60 Example 2.21" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Given row vectors are:\n", - "a1 = [1, 2, 2, 1]\n", - "a2 = [0, 2, 0, 1]\n", - "a3 = [-2, 0, -4, 3]\n", - "The matrix A from these vectors will be:\n", - "A = \n", - "[[ 1 2 2 1]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "Finding Row reduced echelon matrix of A that is given by R\n", - "And applying same operations on identity matrix Q such that R = QA\n", - "Q = \n", - "[[ 1. 0. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "Applying row transformations on A and Q,we get\n", - "R1 = R1-R2\n", - "A = \n", - "[[ 1 0 2 0]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "Q = \n", - "[[ 1. -1. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 0. 0. 1.]]\n", - "R3 = R3 + 2*R1\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 3]]\n", - "Q = \n", - "[[ 1. -1. 0.]\n", - " [ 0. 1. 0.]\n", - " [ 2. -2. 1.]]\n", - "R3 = R3/3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [ 0. 1. 0. ]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "R2 = R2/2\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [ 0. 5. 0. ]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "R2 = R2 - 1/2*R3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [-0.33333333 5.33333333 -0.16666667]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "Row reduced echelon matrix:\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Q = \n", - "[[ 1. -1. 0. ]\n", - " [-0.33333333 5.33333333 -0.16666667]\n", - " [ 0.66666667 -0.66666667 0.33333333]]\n", - "rank of R = 2\n", - "Since, Rank of R is 3, so a1, a2, a3 are independent\n", - "Now, basis for W can be given by row vectors of R i.e. p1,p2,p3\n", - "b is any vector in W. b = [b1 b2 b3 b4]\n", - "Span of vectors p1,p2,p3 consist of vector b with b3 = 2*b1\n", - "So,b = b1p1 + b2p2 + b4p3\n", - "And,[p1 p2 p3] = R = Q*A\n", - "So, b = [b1 b2 b3]* Q * A\n", - "hence, b = x1a1 + x2a2 + x3a3 where x1 = [b1 b2 b4] * Q(1) and so on\n", - "Now, given 3 vectors a1 a2 a3:\n", - "a1 = [1, 0, 2, 0]\n", - "a2 = [0, 2, 0, 1]\n", - "a3 = [0, 0, 0, 3]\n", - "Since a1 a2 a3 are all of the form (y1 y2 y3 y4) with y3 = 2*y1, hence they are in W.\n", - "So, they are independent.\n", - "Required matrix P such that X = PX is:\n", - "P = \n", - "[[ 0. -0. 2.]\n", - " [-0. 0. -2.]\n", - " [ 0. -0. 1.]]\n" - ] - } - ], - "source": [ - "from numpy import array,identity,rank,vstack\n", - "a1 = [1 ,2 ,2, 1]#\n", - "a2 = [0 ,2 ,0 ,1]#\n", - "a3 = [-2, 0, -4, 3]#\n", - "print 'Given row vectors are:'\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'The matrix A from these vectors will be:'\n", - "#A = [a1],[a2], [a3]]\n", - "A=array([a1,a2,a3])\n", - "print 'A = \\n',A\n", - "\n", - "print 'Finding Row reduced echelon matrix of A that is given by R'\n", - "print 'And applying same operations on identity matrix Q such that R = QA'\n", - "Q = identity(3)\n", - "print 'Q = \\n',Q\n", - "T = A# #Temporary matrix to store A\n", - "print 'Applying row transformations on A and Q,we get'\n", - "print 'R1 = R1-R2'\n", - "A[0,:] = A[0,:] - A[1,:]\n", - "Q[0,:] = Q[0,:] - Q[1,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R3 = R3 + 2*R1'\n", - "A[2,:] = A[2,:] + 2*A[0,:]\n", - "Q[2,:] = Q[2,:] + 2*Q[0,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R3 = R3/3'\n", - "A[2,:] = 1./3*A[2,:]\n", - "Q[2,:] = 1./3*Q[2,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R2 = R2/2'\n", - "A[1,:] = 1./2*A[1,:]\n", - "Q[1,:] = 10/2*Q[1,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "print 'R2 = R2 - 1/2*R3'\n", - "A[1,:] = A[1,:] - 1./2*A[2,:]\n", - "Q[1,:] = Q[1,:] - 1./2*Q[2,:]\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix:'\n", - "print 'A = \\n',A\n", - "print 'Q = \\n',Q\n", - "#part a\n", - "print 'rank of R = ',rank(R)\n", - "\n", - "print 'Since, Rank of R is 3, so a1, a2, a3 are independent'\n", - "#part b\n", - "print 'Now, basis for W can be given by row vectors of R i.e. p1,p2,p3'\n", - "print 'b is any vector in W. b = [b1 b2 b3 b4]'\n", - "print 'Span of vectors p1,p2,p3 consist of vector b with b3 = 2*b1'\n", - "print 'So,b = b1p1 + b2p2 + b4p3'\n", - "print 'And,[p1 p2 p3] = R = Q*A'\n", - "print 'So, b = [b1 b2 b3]* Q * A'\n", - "print 'hence, b = x1a1 + x2a2 + x3a3 where x1 = [b1 b2 b4] * Q(1) and so on' # #Equation 1\n", - "#part c\n", - "print 'Now, given 3 vectors a1'' a2'' a3'':'\n", - "c1 = [1, 0, 2, 0]#\n", - "c2 = [0 ,2 ,0, 1]#\n", - "c3 = [0 ,0 ,0 ,3]#\n", - "print 'a1'' = ',c1\n", - "print 'a2'' = ',c2\n", - "print 'a3'' = ',c3\n", - "print 'Since a1'' a2'' a3'' are all of the form (y1 y2 y3 y4) with y3 = 2*y1, hence they are in W.'\n", - "print 'So, they are independent.'\n", - "#part d\n", - "c = array([c1,c2,c3])\n", - "P = identity(3)\n", - "for i in range(0,3):\n", - " b1 = c[i,0]\n", - " b2 = c[i,1]\n", - " b4 = c[i,3]\n", - " x1 = array([b1, b2, b4]) * Q[:,0]\n", - " x2 = array([b1, b2, b4])*Q[:,1]\n", - " x3 = array([b1, b2, b4])*Q[:,2]\n", - " \n", - "\n", - "print 'Required matrix P such that X = PX'' is:'\n", - "P=vstack([x1,x2,x3])\n", - "print 'P = \\n',P\n", - "#print x1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 63 Example 2.22" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 1 2 0 3 0]\n", - " [ 1 2 -1 -1 0]\n", - " [ 0 0 1 4 0]\n", - " [ 2 4 1 10 1]\n", - " [ 0 0 0 0 1]]\n", - "Taking an identity matrix P:\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 0. 1. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0.]\n", - " [ 0. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 1.]]\n", - "Applying row transformations on P and A to get a row reduced echelon matrix R:\n", - "R2 = R2 - R1 and R4 = R4 - 2* R1\n", - "A = \n", - "[[ 1 2 0 3 0]\n", - " [ 0 0 -1 -4 0]\n", - " [ 0 0 1 4 0]\n", - " [ 0 0 1 4 1]\n", - " [ 0 0 0 0 1]]\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [-1. 1. 0. 0. 0.]\n", - " [ 0. 0. 1. 0. 0.]\n", - " [-2. 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 1.]]\n", - "R2 = -R2 , R3 = R3 - R1 + R2 and R4 = R4 - R1 + R2\n", - "A = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]]\n", - "P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 1. -1. -0. -0. -0.]\n", - " [-1. 1. 1. 0. 0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [-3. 1. 0. 1. 0.]]\n", - "Mutually interchanging R3, R4 and R5\n", - "Row reduced echelon matrix R = \n", - "[[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 0]]\n", - "Invertible Matrix P = \n", - "[[ 1. 0. 0. 0. 0.]\n", - " [ 1. -1. -0. -0. -0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [-3. 1. 0. 1. 0.]\n", - " [ 0. 0. 0. 0. 0.]]\n", - "Invertible matrix P is not unique. There can be many that depends on operations used to reduce A\n", - "-----------------------------------------\n", - "For the basis of row space W of A, we can take the non-zero rows of R\n", - "It can be given by p1, p2, p3\n", - "p1 = [1 2 0 3 0]\n", - "p2 = [0 0 1 4 0]\n", - "p3 = [0 0 0 0 1]\n", - "-----------------------------------------\n", - "The row space W consists of vectors of the form:\n", - "b = c1p1 + c2p2 + c3p3\n", - "i.e. b = (c1,2*c1,c2,3*c1+4*c2,c3) where, c1 c2 c3 are scalars.\n", - "So, if b2 = 2*b1 and b4 = 3*b1 + 4*b3 => (b1,b2,b3,b4,b5) = b1p1 + b3p2 + b5p3\n", - "then,(b1,b2,b3,b4,b5) is in W\n", - "-----------------------------------------\n", - "The coordinate matrix of the vector (b1,2*b1,b2,3*b1+4*b2,b3) in the basis (p1,p2,p3) is column matrix of b1,b2,b3 such that:\n", - " b1\n", - " b2\n", - " b3\n", - "-----------------------------------------\n", - "Now, to write each vector in W as a linear combination of rows of A:\n", - "Let b = (b1,b2,b3,b4,b5) and if b is in W, then\n", - "we know,b = (b1,2*b1,b3,3*b1 + 4*b3,b5) => [b1,b3,b5,0,0]*R\n", - "=> b = [b1,b3,b5,0,0] * P*A => b = [b1+b3,-b3,0,0,b5] * A\n", - "if b = (-5,-10,1,-11,20)\n", - "b = ( [-4, -1, 0, 0, 20] ) *[ [[1 2 0 3 0]\n", - " [0 0 1 4 0]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 1]\n", - " [0 0 0 0 0]] ]\n", - "-----------------------------------------\n", - "The equations in system RX = 0 are given by R * [x1 x2 x3 x4 x5]\n", - "i.e., x1 + 2*x2 + 3*x4\n", - "x3 + 4*x4\n", - "x5\n", - "so, V consists of all columns of the form\n", - "[ X=\n", - " -2*x2 - 3*x4\n", - " x2\n", - " -4*x4\n", - " x4\n", - " 0\n", - "where x2 and x4 are arbitrary ]\n", - "-----------------------------------------\n", - "Let x2 = 1,x4 = 0 then the given column forms a basis of V\n", - "[[-2], [1], [0], [0], [0]]\n", - "Similarly,if x2 = 0,x4 = 1 then the given column forms a basis of V\n", - "[[-3], [0], [-4], [1], [0]]\n", - "-----------------------------------------\n", - "The equation AX = Y has solutions X if and only if\n", - "-y1 + y2 + y3 = 0\n", - "-3*y1 + y2 + y4 -y5 = 0\n", - "where, Y = (y1 y2 y3 y4 y5)\n" - ] - } - ], - "source": [ - "from numpy import array,identity\n", - "A = array([[1, 2, 0, 3, 0],[1, 2, -1, -1, 0],[0 ,0 ,1 ,4 ,0],[2, 4 ,1 ,10, 1],[0 ,0 ,0 ,0 ,1]])\n", - "print 'A = \\n',A\n", - "#part a\n", - "T = A# #Temporary storing A in T\n", - "print 'Taking an identity matrix P:'\n", - "P = identity(5)\n", - "print 'P = \\n',P\n", - "print 'Applying row transformations on P and A to get a row reduced echelon matrix R:'\n", - "print 'R2 = R2 - R1 and R4 = R4 - 2* R1'\n", - "A[1,:] = A[1,:] - A[0,:]\n", - "P[1,:] = P[1,:] - P[0,:]\n", - "A[3,:] = A[3,:] - 2 * A[0,:]\n", - "P[3,:] = P[3,:] - 2 * P[0,:]\n", - "print 'A = \\n',A\n", - "print 'P = \\n',P\n", - "print 'R2 = -R2 , R3 = R3 - R1 + R2 and R4 = R4 - R1 + R2'\n", - "A[1,:] = -A[1,:]\n", - "P[1,:] = -P[1,:]\n", - "A[2,:] = A[2,:] - A[1,:]\n", - "P[2,:] = P[2,:] - P[1,:]\n", - "A[3,:] = A[3,:] - A[1,:]\n", - "P[3:] = P[3,:] - P[1,:]\n", - "print 'A = \\n',A\n", - "print 'P = \\n',P\n", - "print 'Mutually interchanging R3, R4 and R5'\n", - "x = A[2,:]\n", - "A[2,:] = A[4,:]\n", - "y = A[3,:]\n", - "A[3,:] = x#\n", - "A[4,:] = y - A[2,:]\n", - "x = P[2,:]\n", - "P[2,:] = P[4,:]\n", - "y = P[3,:]\n", - "P[3,:] = x#\n", - "P[4,:] = y - P[2,:]\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix R = \\n',R\n", - "print 'Invertible Matrix P = \\n',P\n", - "print 'Invertible matrix P is not unique. There can be many that depends on operations used to reduce A'\n", - "print '-----------------------------------------'\n", - "#part b\n", - "print 'For the basis of row space W of A, we can take the non-zero rows of R'\n", - "print 'It can be given by p1, p2, p3'\n", - "p1 = R[0,:]\n", - "p2 = R[1,:]\n", - "p3 = R[2,:]\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'p3 = ',p3\n", - "print '-----------------------------------------'\n", - "#part c\n", - "print 'The row space W consists of vectors of the form:'\n", - "print 'b = c1p1 + c2p2 + c3p3'\n", - "print 'i.e. b = (c1,2*c1,c2,3*c1+4*c2,c3) where, c1 c2 c3 are scalars.'\n", - "print 'So, if b2 = 2*b1 and b4 = 3*b1 + 4*b3 => (b1,b2,b3,b4,b5) = b1p1 + b3p2 + b5p3'\n", - "print 'then,(b1,b2,b3,b4,b5) is in W'\n", - "print '-----------------------------------------'\n", - "#part d\n", - "print 'The coordinate matrix of the vector (b1,2*b1,b2,3*b1+4*b2,b3) in the basis (p1,p2,p3) is column matrix of b1,b2,b3 such that:'\n", - "print ' b1'\n", - "print ' b2'\n", - "print ' b3'\n", - "print '-----------------------------------------'\n", - "#part e\n", - "print 'Now, to write each vector in W as a linear combination of rows of A:'\n", - "print 'Let b = (b1,b2,b3,b4,b5) and if b is in W, then'\n", - "print 'we know,b = (b1,2*b1,b3,3*b1 + 4*b3,b5) => [b1,b3,b5,0,0]*R'\n", - "print '=> b = [b1,b3,b5,0,0] * P*A => b = [b1+b3,-b3,0,0,b5] * A'\n", - "print 'if b = (-5,-10,1,-11,20)'\n", - "b1 = -5#\n", - "b2 = -10#\n", - "b3 = 1#\n", - "b4 = -11#\n", - "b5 = 20#\n", - "x = [b1 + b3,-b3,0,0,b5]#\n", - "print 'b = (',x,')','*[',A,']'\n", - "print '-----------------------------------------'\n", - "#part f\n", - "print 'The equations in system RX = 0 are given by R * [x1 x2 x3 x4 x5]'\n", - "print 'i.e., x1 + 2*x2 + 3*x4'\n", - "print 'x3 + 4*x4'\n", - "print 'x5'\n", - "print 'so, V consists of all columns of the form'\n", - "print '[','X='\n", - "print ' -2*x2 - 3*x4'\n", - "print ' x2'\n", - "print ' -4*x4'\n", - "print ' x4'\n", - "print ' 0'\n", - "print 'where x2 and x4 are arbitrary',']'\n", - "print '-----------------------------------------'\n", - "#part g\n", - "print 'Let x2 = 1,x4 = 0 then the given column forms a basis of V'\n", - "\n", - "x2 = 1#\n", - "x4 = 0#\n", - "print [[-2*x2-3*x4],[ x2],[ -4*x4],[ x4],[ 0]]\n", - "print 'Similarly,if x2 = 0,x4 = 1 then the given column forms a basis of V'\n", - "x2 = 0#\n", - "x4 = 1#\n", - "print [[-2*x2-3*x4],[ x2],[ -4*x4],[ x4],[ 0]]\n", - "print '-----------------------------------------'\n", - "#part h\n", - "print 'The equation AX = Y has solutions X if and only if'\n", - "print '-y1 + y2 + y3 = 0'\n", - "print '-3*y1 + y2 + y4 -y5 = 0'\n", - "print 'where, Y = (y1 y2 y3 y4 y5)'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb index 2e2e4be2..4007526a 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb @@ -41,7 +41,7 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array\n", "a1 = [1, 2]#\n", "a2 = [3 ,4]#\n", "print 'a1 = ',a1\n", @@ -55,7 +55,7 @@ "print 'Now, we find scalars c1 and c2 for that we know T(c1a1 + c2a2) = c1(Ta1) + c2(Ta2))'\n", "print 'if(1,0) = c1(1,2) + c2(3,4), then '\n", "#c = inv([a1#a2]') * [1#0]#\n", - "c=np.array([a1,a2]).dot(np.array([[1],[0]]))\n", + "c=array([a1,a2]).dot(array([[1],[0]]))\n", "c1 = c[0,0]\n", "c2 = c[1,0]\n", "print 'c1 = ',c1\n", @@ -84,27 +84,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "x1 = 5\n", - "x2 = 2\n", - "T(5,2) = [7, 5]\n", + "x1 = 3\n", + "x2 = 8\n", + "T(3,8) = [11, 3]\n", "If, T(x1,x2) = 0, then\n", "x1 = x2 = 0\n", "So, T is non-singular\n", "z1,z2 are two scalars in F\n", "z1 = 0\n", - "z2 = 8\n", - "So, x1 = 8\n", - "x2 = -8\n", + "z2 = 4\n", + "So, x1 = 4\n", + "x2 = -4\n", "Hence, T is onto.\n", - "inverse(T) = [8, -8]\n" + "inverse(T) = [4, -4]\n" ] } ], "source": [ - "import numpy as np\n", + "from numpy import array,random\n", "#x = round(rand(1,2) * 10)#\n", - "x1 = np.random.randint(1,9)\n", - "x2 = np.random.randint(1,9)\n", + "x1 = random.randint(1,9)\n", + "x2 = random.randint(1,9)\n", "T = [x1+x2 ,x1]\n", "print 'x1 = ',x1\n", "print 'x2 = ',x2\n", @@ -115,8 +115,8 @@ "print 'So, T is non-singular'\n", "print 'z1,z2 are two scalars in F'\n", "\n", - "z1 = np.random.randint(0,9)\n", - "z2 = np.random.randint(0,9)\n", + "z1 = random.randint(0,9)\n", + "z2 = random.randint(0,9)\n", "print 'z1 = ',z1\n", "print 'z2 = ',z2\n", "x1 = z2#\n", @@ -183,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -207,14 +207,14 @@ } ], "source": [ - "import numpy as np\n", - "import sympy as sp\n", + "from numpy import array,zeros\n", + "from sympy import Symbol,diff\n", "print 'Differentiation operator D is defined as:'\n", - "D = np.zeros([4,4])\n", - "x=sp.Symbol('x')\n", + "D = zeros([4,4])\n", + "x=Symbol('x')\n", "for i in range(1,5):\n", " t= i-1#\n", - " f = sp.diff(x**t,'x')\n", + " f = diff(x**t,'x')\n", " print '(Df%d)(x) = '%(i),\n", " print f\n", " if not(i == 1):\n", @@ -234,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -263,19 +263,19 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array,transpose,linalg\n", "print 'T is a linear operator on R**2 defined as T(x1,x2) = (x1,0)'\n", "print 'So, the matrix T in standard ordered basis B = {e1,e2} is '\n", - "T = np.array([[1, 0],[0, 0]])\n", + "T = array([[1, 0],[0, 0]])\n", "print '[T]B = ',T\n", "print 'Let B'' is the ordered basis for R**2 consisting of vectors:'\n", - "E1 = np.array([1, 1])\n", - "E2 = np.array([2 ,1])\n", + "E1 = array([1, 1])\n", + "E2 = array([2 ,1])\n", "print 'E1 = ',E1\n", "print 'E2 = ',E2\n", - "P = np.transpose(([E1,E2]))\n", + "P = transpose(([E1,E2]))\n", "print 'So, matrix P = \\n',P\n", - "Pinv=np.linalg.inv(P)\n", + "Pinv=linalg.inv(P)\n", "print 'P inverse = \\n',Pinv\n", "T1 = Pinv*T*P#\n", "print 'So, matrix T in ordered basis B'' is [T]B'' = \\n',T1" @@ -290,7 +290,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -316,24 +316,24 @@ } ], "source": [ - "import sympy as sp\n", - "t = sp.Symbol(\"t\")\n", + "from sympy import Symbol, Matrix\n", + "t = Symbol(\"t\")\n", "print 'g1 = f1'\n", "print 'g2 = t*f1 + f2'\n", "print 'g3 = t**2*f1 + 2*t*f2 + f3'\n", "print 'g4 = t**3*f1 + 3*t**2*f2 + 3*t*f3 + f4'\n", - "P = sp.Matrix(([1, t, t**2, t**3],[0 ,1 ,2*t, 3*t**2],[0, 0, 1, 3*t],[0, 0, 0, 1]))\n", + "P = Matrix(([1, t, t**2, t**3],[0 ,1 ,2*t, 3*t**2],[0, 0, 1, 3*t],[0, 0, 0, 1]))\n", "print 'P = \\n',P\n", "\n", - "print 'inverse P = \\n',sp.Matrix.inv(P)\n", + "print 'inverse P = \\n',Matrix.inv(P)\n", "\n", "\n", "\n", "print 'Matrix of differentiation operator D in ordered basis B is:'# #As found in example 15\n", - "D = sp.Matrix(([0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]))\n", + "D = Matrix(([0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]))\n", "print 'D = \\n',D\n", "print 'Matrix of D in ordered basis B'' is:'\n", - "print 'inverse(P) * D * P = ',sp.Matrix.inv(P)*D*P\n" + "print 'inverse(P) * D * P = ',Matrix.inv(P)*D*P\n" ] }, { @@ -345,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -354,47 +354,41 @@ "name": "stdout", "output_type": "stream", "text": [ - "n = 8\n", + "n = 5\n", "A = \n", - "[[ 7. 3. 0. 4. 6. 8. 4. 4.]\n", - " [ 6. 4. 2. 8. 7. 8. 1. 7.]\n", - " [ 7. 0. 9. 3. 10. 9. 3. 8.]\n", - " [ 7. 5. 10. 1. 8. 6. 6. 5.]\n", - " [ 8. 8. 9. 9. 1. 9. 10. 4.]\n", - " [ 6. 3. 5. 2. 2. 4. 8. 4.]\n", - " [ 5. 1. 1. 2. 6. 9. 9. 5.]\n", - " [ 8. 6. 9. 9. 8. 9. 1. 2.]]\n", + "[[ 5. 9. 7. 8. 6.]\n", + " [ 3. 3. 2. 7. 6.]\n", + " [ 5. 1. 3. 2. 6.]\n", + " [ 1. 2. 10. 4. 1.]\n", + " [ 9. 0. 7. 5. 7.]]\n", "Trace of A:\n", - "tr(A) = 37.0\n", + "tr(A) = 22.0\n", "--------------------------------\n", - "c = 3\n", + "c = 2\n", "B = \n", - "[[ 4. 6. 10. 5. 8. 4. 1. 9.]\n", - " [ 9. 9. 3. 6. 3. 8. 2. 6.]\n", - " [ 1. 6. 0. 7. 7. 2. 8. 4.]\n", - " [ 5. 5. 9. 7. 9. 3. 9. 9.]\n", - " [ 7. 7. 10. 6. 1. 1. 7. 4.]\n", - " [ 0. 3. 10. 9. 5. 2. 8. 4.]\n", - " [ 1. 8. 2. 4. 5. 4. 4. 8.]\n", - " [ 7. 0. 1. 8. 2. 7. 4. 7.]]\n", + "[[ 6. 8. 8. 2. 4.]\n", + " [ 7. 6. 4. 3. 7.]\n", + " [ 6. 9. 8. 4. 8.]\n", + " [ 1. 4. 8. 4. 6.]\n", + " [ 10. 8. 2. 1. 6.]]\n", "Trace of B:\n", - "tr(B) = 34.0\n", - "tr(cA + B) = 145.0\n" + "tr(B) = 30.0\n", + "tr(cA + B) = 74.0\n" ] } ], "source": [ - "import numpy as np\n", + "from numpy import array,random\n", "def trace_matrix(M,n):\n", " tr=0\n", " for i in range(0,n):\n", " tr = tr + M[i,i]#\n", " return tr\n", "#n = round(rand() * 10 + 2)#\n", - "n=np.random.randint(1,9)\n", + "n=random.randint(1,9)\n", "print 'n = ',n\n", "#A = round(rand(n,n) * 10)#\n", - "A=np.random.rand(n,n)\n", + "A=random.rand(n,n)\n", "for x in range(0,n):\n", " for y in range(0,n):\n", " A[x,y]=round(A[x,y]*10)\n", @@ -407,10 +401,10 @@ "print 'tr(A) = ',tr1\n", "print '--------------------------------'\n", "#c = round(rand() * 10 + 2)#\n", - "c=np.random.randint(2,9)\n", + "c=random.randint(2,9)\n", "print 'c = ',c\n", "\n", - "B=np.random.rand(n,n)\n", + "B=random.rand(n,n)\n", "for x in range(0,n):\n", " for y in range(0,n):\n", " B[x,y]=round(B[x,y]*10)\n", @@ -431,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -488,9 +482,9 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array\n", "print 'Matrix represented by given linear functionals on R**4:'\n", - "A = np.array([[1, 2 ,2 ,1],[0, 2, 0, 1],[-2 ,0 ,-4, 3]])\n", + "A = array([[1, 2 ,2 ,1],[0, 2, 0, 1],[-2 ,0 ,-4, 3]])\n", "print 'A = \\n',A\n", "T = A #Temporary matrix to store A\n", "print 'To find Row reduced echelon matrix of A given by R:'\n", @@ -532,7 +526,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -567,7 +561,7 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import array\n", "print 'W be the subspace of R**5 spanned by vectors:'\n", "a1 = [2, -2, 3 ,4 ,-1]#\n", "a2 = [-1, 1, 2, 5, 2]#\n", @@ -578,7 +572,7 @@ "print 'a3 = ',a3\n", "print 'a4 = ',a4\n", "print 'Matrix A by the row vectors a1,a2,a3,a4 will be:'\n", - "A = np.array([a1,a2,a3,a4])\n", + "A = array([a1,a2,a3,a4])\n", "print 'A = \\n',A\n", "print 'After Applying row transformations, we get the row reduced echelon matrix R of A'\n", "\n", diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_1.ipynb deleted file mode 100755 index 2e2e4be2..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_1.ipynb +++ /dev/null @@ -1,637 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 3 - Linear transformation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 70 Example 3.6" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [1, 2]\n", - "a2 = [3, 4]\n", - "a1 and a2 are linearly independent and hence form a basis for R**2\n", - "According to theorem 1, there is a linear transformation from R**2 to R**3 with the transformation functions as:\n", - "Ta1 = [3, 2, 1]\n", - "Ta2 = [6, 5, 4]\n", - "Now, we find scalars c1 and c2 for that we know T(c1a1 + c2a2) = c1(Ta1) + c2(Ta2))\n", - "if(1,0) = c1(1,2) + c2(3,4), then \n", - "c1 = 1\n", - "c2 = 3\n", - "The transformation function T(1,0) will be:\n", - "T(1,0) = [3, 2, 1, 6, 5, 4, 6, 5, 4, 6, 5, 4]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "a1 = [1, 2]#\n", - "a2 = [3 ,4]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a1 and a2 are linearly independent and hence form a basis for R**2'\n", - "print 'According to theorem 1, there is a linear transformation from R**2 to R**3 with the transformation functions as:'\n", - "Ta1 = [3 ,2 ,1]#\n", - "Ta2 = [6, 5, 4]#\n", - "print 'Ta1 = ',Ta1\n", - "print 'Ta2 = ',Ta2\n", - "print 'Now, we find scalars c1 and c2 for that we know T(c1a1 + c2a2) = c1(Ta1) + c2(Ta2))'\n", - "print 'if(1,0) = c1(1,2) + c2(3,4), then '\n", - "#c = inv([a1#a2]') * [1#0]#\n", - "c=np.array([a1,a2]).dot(np.array([[1],[0]]))\n", - "c1 = c[0,0]\n", - "c2 = c[1,0]\n", - "print 'c1 = ',c1\n", - "print 'c2 = ',c2\n", - "print 'The transformation function T(1,0) will be:'\n", - "T = c1*Ta1 + c2*Ta2#\n", - "print 'T(1,0) = ',T\n", - "#end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 81 Example 3.12" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x1 = 5\n", - "x2 = 2\n", - "T(5,2) = [7, 5]\n", - "If, T(x1,x2) = 0, then\n", - "x1 = x2 = 0\n", - "So, T is non-singular\n", - "z1,z2 are two scalars in F\n", - "z1 = 0\n", - "z2 = 8\n", - "So, x1 = 8\n", - "x2 = -8\n", - "Hence, T is onto.\n", - "inverse(T) = [8, -8]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "#x = round(rand(1,2) * 10)#\n", - "x1 = np.random.randint(1,9)\n", - "x2 = np.random.randint(1,9)\n", - "T = [x1+x2 ,x1]\n", - "print 'x1 = ',x1\n", - "print 'x2 = ',x2\n", - "print 'T(%d,%d) = '%(x1,x2),\n", - "print T\n", - "print 'If, T(x1,x2) = 0, then'\n", - "print 'x1 = x2 = 0'\n", - "print 'So, T is non-singular'\n", - "print 'z1,z2 are two scalars in F'\n", - "\n", - "z1 = np.random.randint(0,9)\n", - "z2 = np.random.randint(0,9)\n", - "print 'z1 = ',z1\n", - "print 'z2 = ',z2\n", - "x1 = z2#\n", - "x2 = z1 - z2#\n", - "print 'So, x1 = ',x1\n", - "print 'x2 = ',x2\n", - "print 'Hence, T is onto.'\n", - "Tinv = [z2, z1-z2]# \n", - "print 'inverse(T) = ',Tinv" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 89 Example 3.14" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "T is a linear operator on F**2 defined as:\n", - "T(x1,x2) = (x1,0)\n", - "B = {e1,e2} is a standard ordered basis for F**2,then\n", - "So, Te1 = T(1,0) = [1, 0]\n", - "So, Te2 = T(0,1) = [0, 0]\n", - "so,matrix T in ordered basis B is: \n", - "T = \n", - "[[1, 0], [0, 0]]\n" - ] - } - ], - "source": [ - "print 'T is a linear operator on F**2 defined as:'\n", - "print 'T(x1,x2) = (x1,0)'\n", - "print 'B = {e1,e2} is a standard ordered basis for F**2,then'\n", - "x1 = 1#\n", - "x2 = 0#\n", - "Te1 = [x1, 0]#\n", - "x1 = 0#\n", - "x2 = 1#\n", - "Te2 = [x1 ,0]#\n", - "print 'So, Te1 = T(1,0) = ',Te1\n", - "print 'So, Te2 = T(0,1) = ',Te2\n", - "print 'so,matrix T in ordered basis B is: '\n", - "T = [Te1,Te2]\n", - "print 'T = \\n',T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 89 Example 3.15" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Differentiation operator D is defined as:\n", - "(Df1)(x) = 0\n", - "(Df2)(x) = 1\n", - "(Df3)(x) = 2*x\n", - "(Df4)(x) = 3*x**2\n", - "Matrix of D in ordered basis is:\n", - "[D] = \n", - "[[ 0. 1. 0. 0.]\n", - " [ 0. 0. 2. 0.]\n", - " [ 0. 0. 0. 3.]\n", - " [ 0. 0. 0. 0.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "print 'Differentiation operator D is defined as:'\n", - "D = np.zeros([4,4])\n", - "x=sp.Symbol('x')\n", - "for i in range(1,5):\n", - " t= i-1#\n", - " f = sp.diff(x**t,'x')\n", - " print '(Df%d)(x) = '%(i),\n", - " print f\n", - " if not(i == 1):\n", - " D[i-2,i-1] = i-1#\n", - " \n", - "\n", - "print 'Matrix of D in ordered basis is:'\n", - "print '[D] = \\n',D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 92 Example 3.16" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "T is a linear operator on R**2 defined as T(x1,x2) = (x1,0)\n", - "So, the matrix T in standard ordered basis B = {e1,e2} is \n", - "[T]B = [[1 0]\n", - " [0 0]]\n", - "Let B is the ordered basis for R**2 consisting of vectors:\n", - "E1 = [1 1]\n", - "E2 = [2 1]\n", - "So, matrix P = \n", - "[[1 2]\n", - " [1 1]]\n", - "P inverse = \n", - "[[-1. 2.]\n", - " [ 1. -1.]]\n", - "So, matrix T in ordered basis B is [T]B = \n", - "[[-1. 0.]\n", - " [ 0. -0.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print 'T is a linear operator on R**2 defined as T(x1,x2) = (x1,0)'\n", - "print 'So, the matrix T in standard ordered basis B = {e1,e2} is '\n", - "T = np.array([[1, 0],[0, 0]])\n", - "print '[T]B = ',T\n", - "print 'Let B'' is the ordered basis for R**2 consisting of vectors:'\n", - "E1 = np.array([1, 1])\n", - "E2 = np.array([2 ,1])\n", - "print 'E1 = ',E1\n", - "print 'E2 = ',E2\n", - "P = np.transpose(([E1,E2]))\n", - "print 'So, matrix P = \\n',P\n", - "Pinv=np.linalg.inv(P)\n", - "print 'P inverse = \\n',Pinv\n", - "T1 = Pinv*T*P#\n", - "print 'So, matrix T in ordered basis B'' is [T]B'' = \\n',T1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 93 Example 3.17" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "g1 = f1\n", - "g2 = t*f1 + f2\n", - "g3 = t**2*f1 + 2*t*f2 + f3\n", - "g4 = t**3*f1 + 3*t**2*f2 + 3*t*f3 + f4\n", - "P = \n", - "Matrix([[1, t, t**2, t**3], [0, 1, 2*t, 3*t**2], [0, 0, 1, 3*t], [0, 0, 0, 1]])\n", - "inverse P = \n", - "Matrix([[1, -t, t**2, -t**3], [0, 1, -2*t, 3*t**2], [0, 0, 1, -3*t], [0, 0, 0, 1]])\n", - "Matrix of differentiation operator D in ordered basis B is:\n", - "D = \n", - "Matrix([[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3], [0, 0, 0, 0]])\n", - "Matrix of D in ordered basis B is:\n", - "inverse(P) * D * P = Matrix([[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3], [0, 0, 0, 0]])\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "t = sp.Symbol(\"t\")\n", - "print 'g1 = f1'\n", - "print 'g2 = t*f1 + f2'\n", - "print 'g3 = t**2*f1 + 2*t*f2 + f3'\n", - "print 'g4 = t**3*f1 + 3*t**2*f2 + 3*t*f3 + f4'\n", - "P = sp.Matrix(([1, t, t**2, t**3],[0 ,1 ,2*t, 3*t**2],[0, 0, 1, 3*t],[0, 0, 0, 1]))\n", - "print 'P = \\n',P\n", - "\n", - "print 'inverse P = \\n',sp.Matrix.inv(P)\n", - "\n", - "\n", - "\n", - "print 'Matrix of differentiation operator D in ordered basis B is:'# #As found in example 15\n", - "D = sp.Matrix(([0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]))\n", - "print 'D = \\n',D\n", - "print 'Matrix of D in ordered basis B'' is:'\n", - "print 'inverse(P) * D * P = ',sp.Matrix.inv(P)*D*P\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 98 Example 3.19" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "n = 8\n", - "A = \n", - "[[ 7. 3. 0. 4. 6. 8. 4. 4.]\n", - " [ 6. 4. 2. 8. 7. 8. 1. 7.]\n", - " [ 7. 0. 9. 3. 10. 9. 3. 8.]\n", - " [ 7. 5. 10. 1. 8. 6. 6. 5.]\n", - " [ 8. 8. 9. 9. 1. 9. 10. 4.]\n", - " [ 6. 3. 5. 2. 2. 4. 8. 4.]\n", - " [ 5. 1. 1. 2. 6. 9. 9. 5.]\n", - " [ 8. 6. 9. 9. 8. 9. 1. 2.]]\n", - "Trace of A:\n", - "tr(A) = 37.0\n", - "--------------------------------\n", - "c = 3\n", - "B = \n", - "[[ 4. 6. 10. 5. 8. 4. 1. 9.]\n", - " [ 9. 9. 3. 6. 3. 8. 2. 6.]\n", - " [ 1. 6. 0. 7. 7. 2. 8. 4.]\n", - " [ 5. 5. 9. 7. 9. 3. 9. 9.]\n", - " [ 7. 7. 10. 6. 1. 1. 7. 4.]\n", - " [ 0. 3. 10. 9. 5. 2. 8. 4.]\n", - " [ 1. 8. 2. 4. 5. 4. 4. 8.]\n", - " [ 7. 0. 1. 8. 2. 7. 4. 7.]]\n", - "Trace of B:\n", - "tr(B) = 34.0\n", - "tr(cA + B) = 145.0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "def trace_matrix(M,n):\n", - " tr=0\n", - " for i in range(0,n):\n", - " tr = tr + M[i,i]#\n", - " return tr\n", - "#n = round(rand() * 10 + 2)#\n", - "n=np.random.randint(1,9)\n", - "print 'n = ',n\n", - "#A = round(rand(n,n) * 10)#\n", - "A=np.random.rand(n,n)\n", - "for x in range(0,n):\n", - " for y in range(0,n):\n", - " A[x,y]=round(A[x,y]*10)\n", - "print 'A = \\n',A\n", - "\n", - "\n", - "tr = 0#\n", - "print 'Trace of A:'\n", - "tr1 = trace_matrix(A,n)#\n", - "print 'tr(A) = ',tr1\n", - "print '--------------------------------'\n", - "#c = round(rand() * 10 + 2)#\n", - "c=np.random.randint(2,9)\n", - "print 'c = ',c\n", - "\n", - "B=np.random.rand(n,n)\n", - "for x in range(0,n):\n", - " for y in range(0,n):\n", - " B[x,y]=round(B[x,y]*10)\n", - "print 'B = \\n',B\n", - "\n", - "print 'Trace of B:'\n", - "tr2 = trace_matrix(B,n)#\n", - "print 'tr(B) = ',tr2\n", - "print 'tr(cA + B) = ',(c*tr1+tr2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 103 Example 3.23" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matrix represented by given linear functionals on R**4:\n", - "A = \n", - "[[ 1 2 2 1]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "To find Row reduced echelon matrix of A given by R:\n", - "Applying row transformations on A,we get\n", - "R1 = R1-R2\n", - "A = \n", - "[[ 1 0 2 0]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "R3 = R3 + 2*R1\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 3]]\n", - "R3 = R3/3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 1]]\n", - "R2 = R2/2\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "R2 = R2 - 1/2*R3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Row reduced echelon matrix of A is:\n", - "R = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Therefore,linear functionals g1,g2,g3 span the same subspace of (R**4)* as f1,f2,f3 are given by:\n", - "g1(x1,x2,x3,x4) = x1 + 2*x3\n", - "g1(x1,x2,x3,x4) = x2\n", - "g1(x1,x2,x3,x4) = x4\n", - "The subspace consists of the vectors with\n", - "x1 = -2*x3\n", - "x2 = x4 = 0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print 'Matrix represented by given linear functionals on R**4:'\n", - "A = np.array([[1, 2 ,2 ,1],[0, 2, 0, 1],[-2 ,0 ,-4, 3]])\n", - "print 'A = \\n',A\n", - "T = A #Temporary matrix to store A\n", - "print 'To find Row reduced echelon matrix of A given by R:'\n", - "print 'Applying row transformations on A,we get'\n", - "print 'R1 = R1-R2'\n", - "A[0,:] = A[0,:] - A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3 + 2*R1'\n", - "A[2,:] = A[2,:] + 2*A[0,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3/3'\n", - "A[2,:] = 1./3*A[2,:]#\n", - "print 'A = \\n',A\n", - "print 'R2 = R2/2'\n", - "A[1,:] = 1./2*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R2 = R2 - 1/2*R3'\n", - "A[1,:] = A[1,:] - 1./2*A[2,:]\n", - "print 'A = \\n',A\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix of A is:'\n", - "print 'R = \\n',R\n", - "print 'Therefore,linear functionals g1,g2,g3 span the same subspace of (R**4)* as f1,f2,f3 are given by:'\n", - "print 'g1(x1,x2,x3,x4) = x1 + 2*x3'\n", - "print 'g1(x1,x2,x3,x4) = x2'\n", - "print 'g1(x1,x2,x3,x4) = x4'\n", - "print 'The subspace consists of the vectors with'\n", - "print 'x1 = -2*x3'\n", - "print 'x2 = x4 = 0'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 104 Example 3.24" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "W be the subspace of R**5 spanned by vectors:\n", - "a1 = [2, -2, 3, 4, -1]\n", - "a2 = [-1, 1, 2, 5, 2]\n", - "a3 = [0, 0, -1, -2, 3]\n", - "a4 = [1, -1, 2, 3, 0]\n", - "Matrix A by the row vectors a1,a2,a3,a4 will be:\n", - "A = \n", - "[[ 2 -2 3 4 -1]\n", - " [-1 1 2 5 2]\n", - " [ 0 0 -1 -2 3]\n", - " [ 1 -1 2 3 0]]\n", - "After Applying row transformations, we get the row reduced echelon matrix R of A\n", - "R = \n", - "[[ 1 -1 0 -1 0]\n", - " [ 0 0 1 2 0]\n", - " [ 0 0 0 0 1]\n", - " [ 0 0 0 0 0]]\n", - "Then we obtain all the linear functionals f by assigning arbitrary values to c2 and c4\n", - "Let c2 = a, c4 = b then c1 = a+b, c3 = -2b, c5 = 0.\n", - "So, W0 consists all linear functionals f of the form\n", - "f(x1,x2,x3,x4,x5) = (a+b)x1 + ax2 -2bx3 + bx4\n", - "Dimension of W0 = 2 and basis {f1,f2} can be found by first taking a = 1, b = 0. Then a = 0,b = 1\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print 'W be the subspace of R**5 spanned by vectors:'\n", - "a1 = [2, -2, 3 ,4 ,-1]#\n", - "a2 = [-1, 1, 2, 5, 2]#\n", - "a3 = [0 ,0 ,-1, -2, 3]#\n", - "a4 = [1 ,-1, 2, 3 ,0]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'a4 = ',a4\n", - "print 'Matrix A by the row vectors a1,a2,a3,a4 will be:'\n", - "A = np.array([a1,a2,a3,a4])\n", - "print 'A = \\n',A\n", - "print 'After Applying row transformations, we get the row reduced echelon matrix R of A'\n", - "\n", - "T = A# #Temporary matrix to store A\n", - "#R1 = R1 - R4 and R2 = R2 + R4\n", - "A[0,:] = A[0,:] - A[3,:]#\n", - "A[1,:] = A[1,:] + A[3,:]#\n", - "#R2 = R2/2\n", - "A[1,:] = 1./2 * A[1,:]#\n", - "#R3 = R3 + R2 and R4 = R4 - R1\n", - "A[2,:] = A[2,:] + A[1,:]#\n", - "A[3,:] = A[3,:] - A[0,:]#\n", - "#R3 = R3 - R4\n", - "A[2,:] = A[2,:] - A[3,:]#\n", - "#R3 = R3/3\n", - "A[2,:] = 1./3 * A[2,:]#\n", - "#R2 = R2 - R3\n", - "A[1,:] = A[1,:] - A[2,:]#\n", - "#R2 = R2/2 and R4 = R4 - R2 - R3\n", - "A[1,:] = 1./2 * A[1,:]#\n", - "A[3,:] = A[3,:] - A[1,:] - A[2,:]#\n", - "#R1 = R1 - R2 + R3\n", - "A[0,:] = A[0,:] - A[1,:] + A[2,:]#\n", - "R = A#\n", - "A = T#\n", - "print 'R = \\n',R\n", - "print 'Then we obtain all the linear functionals f by assigning arbitrary values to c2 and c4'\n", - "print 'Let c2 = a, c4 = b then c1 = a+b, c3 = -2b, c5 = 0.'\n", - "print 'So, W0 consists all linear functionals f of the form'\n", - "print 'f(x1,x2,x3,x4,x5) = (a+b)x1 + ax2 -2bx3 + bx4'\n", - "print 'Dimension of W0 = 2 and basis {f1,f2} can be found by first taking a = 1, b = 0. Then a = 0,b = 1'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_UNgU4ev.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_UNgU4ev.ipynb deleted file mode 100644 index 4007526a..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3_UNgU4ev.ipynb +++ /dev/null @@ -1,631 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 3 - Linear transformation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 70 Example 3.6" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a1 = [1, 2]\n", - "a2 = [3, 4]\n", - "a1 and a2 are linearly independent and hence form a basis for R**2\n", - "According to theorem 1, there is a linear transformation from R**2 to R**3 with the transformation functions as:\n", - "Ta1 = [3, 2, 1]\n", - "Ta2 = [6, 5, 4]\n", - "Now, we find scalars c1 and c2 for that we know T(c1a1 + c2a2) = c1(Ta1) + c2(Ta2))\n", - "if(1,0) = c1(1,2) + c2(3,4), then \n", - "c1 = 1\n", - "c2 = 3\n", - "The transformation function T(1,0) will be:\n", - "T(1,0) = [3, 2, 1, 6, 5, 4, 6, 5, 4, 6, 5, 4]\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "a1 = [1, 2]#\n", - "a2 = [3 ,4]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a1 and a2 are linearly independent and hence form a basis for R**2'\n", - "print 'According to theorem 1, there is a linear transformation from R**2 to R**3 with the transformation functions as:'\n", - "Ta1 = [3 ,2 ,1]#\n", - "Ta2 = [6, 5, 4]#\n", - "print 'Ta1 = ',Ta1\n", - "print 'Ta2 = ',Ta2\n", - "print 'Now, we find scalars c1 and c2 for that we know T(c1a1 + c2a2) = c1(Ta1) + c2(Ta2))'\n", - "print 'if(1,0) = c1(1,2) + c2(3,4), then '\n", - "#c = inv([a1#a2]') * [1#0]#\n", - "c=array([a1,a2]).dot(array([[1],[0]]))\n", - "c1 = c[0,0]\n", - "c2 = c[1,0]\n", - "print 'c1 = ',c1\n", - "print 'c2 = ',c2\n", - "print 'The transformation function T(1,0) will be:'\n", - "T = c1*Ta1 + c2*Ta2#\n", - "print 'T(1,0) = ',T\n", - "#end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 81 Example 3.12" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x1 = 3\n", - "x2 = 8\n", - "T(3,8) = [11, 3]\n", - "If, T(x1,x2) = 0, then\n", - "x1 = x2 = 0\n", - "So, T is non-singular\n", - "z1,z2 are two scalars in F\n", - "z1 = 0\n", - "z2 = 4\n", - "So, x1 = 4\n", - "x2 = -4\n", - "Hence, T is onto.\n", - "inverse(T) = [4, -4]\n" - ] - } - ], - "source": [ - "from numpy import array,random\n", - "#x = round(rand(1,2) * 10)#\n", - "x1 = random.randint(1,9)\n", - "x2 = random.randint(1,9)\n", - "T = [x1+x2 ,x1]\n", - "print 'x1 = ',x1\n", - "print 'x2 = ',x2\n", - "print 'T(%d,%d) = '%(x1,x2),\n", - "print T\n", - "print 'If, T(x1,x2) = 0, then'\n", - "print 'x1 = x2 = 0'\n", - "print 'So, T is non-singular'\n", - "print 'z1,z2 are two scalars in F'\n", - "\n", - "z1 = random.randint(0,9)\n", - "z2 = random.randint(0,9)\n", - "print 'z1 = ',z1\n", - "print 'z2 = ',z2\n", - "x1 = z2#\n", - "x2 = z1 - z2#\n", - "print 'So, x1 = ',x1\n", - "print 'x2 = ',x2\n", - "print 'Hence, T is onto.'\n", - "Tinv = [z2, z1-z2]# \n", - "print 'inverse(T) = ',Tinv" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 89 Example 3.14" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "T is a linear operator on F**2 defined as:\n", - "T(x1,x2) = (x1,0)\n", - "B = {e1,e2} is a standard ordered basis for F**2,then\n", - "So, Te1 = T(1,0) = [1, 0]\n", - "So, Te2 = T(0,1) = [0, 0]\n", - "so,matrix T in ordered basis B is: \n", - "T = \n", - "[[1, 0], [0, 0]]\n" - ] - } - ], - "source": [ - "print 'T is a linear operator on F**2 defined as:'\n", - "print 'T(x1,x2) = (x1,0)'\n", - "print 'B = {e1,e2} is a standard ordered basis for F**2,then'\n", - "x1 = 1#\n", - "x2 = 0#\n", - "Te1 = [x1, 0]#\n", - "x1 = 0#\n", - "x2 = 1#\n", - "Te2 = [x1 ,0]#\n", - "print 'So, Te1 = T(1,0) = ',Te1\n", - "print 'So, Te2 = T(0,1) = ',Te2\n", - "print 'so,matrix T in ordered basis B is: '\n", - "T = [Te1,Te2]\n", - "print 'T = \\n',T" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 89 Example 3.15" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Differentiation operator D is defined as:\n", - "(Df1)(x) = 0\n", - "(Df2)(x) = 1\n", - "(Df3)(x) = 2*x\n", - "(Df4)(x) = 3*x**2\n", - "Matrix of D in ordered basis is:\n", - "[D] = \n", - "[[ 0. 1. 0. 0.]\n", - " [ 0. 0. 2. 0.]\n", - " [ 0. 0. 0. 3.]\n", - " [ 0. 0. 0. 0.]]\n" - ] - } - ], - "source": [ - "from numpy import array,zeros\n", - "from sympy import Symbol,diff\n", - "print 'Differentiation operator D is defined as:'\n", - "D = zeros([4,4])\n", - "x=Symbol('x')\n", - "for i in range(1,5):\n", - " t= i-1#\n", - " f = diff(x**t,'x')\n", - " print '(Df%d)(x) = '%(i),\n", - " print f\n", - " if not(i == 1):\n", - " D[i-2,i-1] = i-1#\n", - " \n", - "\n", - "print 'Matrix of D in ordered basis is:'\n", - "print '[D] = \\n',D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 92 Example 3.16" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "T is a linear operator on R**2 defined as T(x1,x2) = (x1,0)\n", - "So, the matrix T in standard ordered basis B = {e1,e2} is \n", - "[T]B = [[1 0]\n", - " [0 0]]\n", - "Let B is the ordered basis for R**2 consisting of vectors:\n", - "E1 = [1 1]\n", - "E2 = [2 1]\n", - "So, matrix P = \n", - "[[1 2]\n", - " [1 1]]\n", - "P inverse = \n", - "[[-1. 2.]\n", - " [ 1. -1.]]\n", - "So, matrix T in ordered basis B is [T]B = \n", - "[[-1. 0.]\n", - " [ 0. -0.]]\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,linalg\n", - "print 'T is a linear operator on R**2 defined as T(x1,x2) = (x1,0)'\n", - "print 'So, the matrix T in standard ordered basis B = {e1,e2} is '\n", - "T = array([[1, 0],[0, 0]])\n", - "print '[T]B = ',T\n", - "print 'Let B'' is the ordered basis for R**2 consisting of vectors:'\n", - "E1 = array([1, 1])\n", - "E2 = array([2 ,1])\n", - "print 'E1 = ',E1\n", - "print 'E2 = ',E2\n", - "P = transpose(([E1,E2]))\n", - "print 'So, matrix P = \\n',P\n", - "Pinv=linalg.inv(P)\n", - "print 'P inverse = \\n',Pinv\n", - "T1 = Pinv*T*P#\n", - "print 'So, matrix T in ordered basis B'' is [T]B'' = \\n',T1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 93 Example 3.17" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "g1 = f1\n", - "g2 = t*f1 + f2\n", - "g3 = t**2*f1 + 2*t*f2 + f3\n", - "g4 = t**3*f1 + 3*t**2*f2 + 3*t*f3 + f4\n", - "P = \n", - "Matrix([[1, t, t**2, t**3], [0, 1, 2*t, 3*t**2], [0, 0, 1, 3*t], [0, 0, 0, 1]])\n", - "inverse P = \n", - "Matrix([[1, -t, t**2, -t**3], [0, 1, -2*t, 3*t**2], [0, 0, 1, -3*t], [0, 0, 0, 1]])\n", - "Matrix of differentiation operator D in ordered basis B is:\n", - "D = \n", - "Matrix([[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3], [0, 0, 0, 0]])\n", - "Matrix of D in ordered basis B is:\n", - "inverse(P) * D * P = Matrix([[0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3], [0, 0, 0, 0]])\n" - ] - } - ], - "source": [ - "from sympy import Symbol, Matrix\n", - "t = Symbol(\"t\")\n", - "print 'g1 = f1'\n", - "print 'g2 = t*f1 + f2'\n", - "print 'g3 = t**2*f1 + 2*t*f2 + f3'\n", - "print 'g4 = t**3*f1 + 3*t**2*f2 + 3*t*f3 + f4'\n", - "P = Matrix(([1, t, t**2, t**3],[0 ,1 ,2*t, 3*t**2],[0, 0, 1, 3*t],[0, 0, 0, 1]))\n", - "print 'P = \\n',P\n", - "\n", - "print 'inverse P = \\n',Matrix.inv(P)\n", - "\n", - "\n", - "\n", - "print 'Matrix of differentiation operator D in ordered basis B is:'# #As found in example 15\n", - "D = Matrix(([0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]))\n", - "print 'D = \\n',D\n", - "print 'Matrix of D in ordered basis B'' is:'\n", - "print 'inverse(P) * D * P = ',Matrix.inv(P)*D*P\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 98 Example 3.19" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "n = 5\n", - "A = \n", - "[[ 5. 9. 7. 8. 6.]\n", - " [ 3. 3. 2. 7. 6.]\n", - " [ 5. 1. 3. 2. 6.]\n", - " [ 1. 2. 10. 4. 1.]\n", - " [ 9. 0. 7. 5. 7.]]\n", - "Trace of A:\n", - "tr(A) = 22.0\n", - "--------------------------------\n", - "c = 2\n", - "B = \n", - "[[ 6. 8. 8. 2. 4.]\n", - " [ 7. 6. 4. 3. 7.]\n", - " [ 6. 9. 8. 4. 8.]\n", - " [ 1. 4. 8. 4. 6.]\n", - " [ 10. 8. 2. 1. 6.]]\n", - "Trace of B:\n", - "tr(B) = 30.0\n", - "tr(cA + B) = 74.0\n" - ] - } - ], - "source": [ - "from numpy import array,random\n", - "def trace_matrix(M,n):\n", - " tr=0\n", - " for i in range(0,n):\n", - " tr = tr + M[i,i]#\n", - " return tr\n", - "#n = round(rand() * 10 + 2)#\n", - "n=random.randint(1,9)\n", - "print 'n = ',n\n", - "#A = round(rand(n,n) * 10)#\n", - "A=random.rand(n,n)\n", - "for x in range(0,n):\n", - " for y in range(0,n):\n", - " A[x,y]=round(A[x,y]*10)\n", - "print 'A = \\n',A\n", - "\n", - "\n", - "tr = 0#\n", - "print 'Trace of A:'\n", - "tr1 = trace_matrix(A,n)#\n", - "print 'tr(A) = ',tr1\n", - "print '--------------------------------'\n", - "#c = round(rand() * 10 + 2)#\n", - "c=random.randint(2,9)\n", - "print 'c = ',c\n", - "\n", - "B=random.rand(n,n)\n", - "for x in range(0,n):\n", - " for y in range(0,n):\n", - " B[x,y]=round(B[x,y]*10)\n", - "print 'B = \\n',B\n", - "\n", - "print 'Trace of B:'\n", - "tr2 = trace_matrix(B,n)#\n", - "print 'tr(B) = ',tr2\n", - "print 'tr(cA + B) = ',(c*tr1+tr2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 103 Example 3.23" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matrix represented by given linear functionals on R**4:\n", - "A = \n", - "[[ 1 2 2 1]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "To find Row reduced echelon matrix of A given by R:\n", - "Applying row transformations on A,we get\n", - "R1 = R1-R2\n", - "A = \n", - "[[ 1 0 2 0]\n", - " [ 0 2 0 1]\n", - " [-2 0 -4 3]]\n", - "R3 = R3 + 2*R1\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 3]]\n", - "R3 = R3/3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 2 0 1]\n", - " [0 0 0 1]]\n", - "R2 = R2/2\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "R2 = R2 - 1/2*R3\n", - "A = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Row reduced echelon matrix of A is:\n", - "R = \n", - "[[1 0 2 0]\n", - " [0 1 0 0]\n", - " [0 0 0 1]]\n", - "Therefore,linear functionals g1,g2,g3 span the same subspace of (R**4)* as f1,f2,f3 are given by:\n", - "g1(x1,x2,x3,x4) = x1 + 2*x3\n", - "g1(x1,x2,x3,x4) = x2\n", - "g1(x1,x2,x3,x4) = x4\n", - "The subspace consists of the vectors with\n", - "x1 = -2*x3\n", - "x2 = x4 = 0\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "print 'Matrix represented by given linear functionals on R**4:'\n", - "A = array([[1, 2 ,2 ,1],[0, 2, 0, 1],[-2 ,0 ,-4, 3]])\n", - "print 'A = \\n',A\n", - "T = A #Temporary matrix to store A\n", - "print 'To find Row reduced echelon matrix of A given by R:'\n", - "print 'Applying row transformations on A,we get'\n", - "print 'R1 = R1-R2'\n", - "A[0,:] = A[0,:] - A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3 + 2*R1'\n", - "A[2,:] = A[2,:] + 2*A[0,:]\n", - "print 'A = \\n',A\n", - "print 'R3 = R3/3'\n", - "A[2,:] = 1./3*A[2,:]#\n", - "print 'A = \\n',A\n", - "print 'R2 = R2/2'\n", - "A[1,:] = 1./2*A[1,:]\n", - "print 'A = \\n',A\n", - "print 'R2 = R2 - 1/2*R3'\n", - "A[1,:] = A[1,:] - 1./2*A[2,:]\n", - "print 'A = \\n',A\n", - "R = A#\n", - "A = T#\n", - "print 'Row reduced echelon matrix of A is:'\n", - "print 'R = \\n',R\n", - "print 'Therefore,linear functionals g1,g2,g3 span the same subspace of (R**4)* as f1,f2,f3 are given by:'\n", - "print 'g1(x1,x2,x3,x4) = x1 + 2*x3'\n", - "print 'g1(x1,x2,x3,x4) = x2'\n", - "print 'g1(x1,x2,x3,x4) = x4'\n", - "print 'The subspace consists of the vectors with'\n", - "print 'x1 = -2*x3'\n", - "print 'x2 = x4 = 0'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 104 Example 3.24" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "W be the subspace of R**5 spanned by vectors:\n", - "a1 = [2, -2, 3, 4, -1]\n", - "a2 = [-1, 1, 2, 5, 2]\n", - "a3 = [0, 0, -1, -2, 3]\n", - "a4 = [1, -1, 2, 3, 0]\n", - "Matrix A by the row vectors a1,a2,a3,a4 will be:\n", - "A = \n", - "[[ 2 -2 3 4 -1]\n", - " [-1 1 2 5 2]\n", - " [ 0 0 -1 -2 3]\n", - " [ 1 -1 2 3 0]]\n", - "After Applying row transformations, we get the row reduced echelon matrix R of A\n", - "R = \n", - "[[ 1 -1 0 -1 0]\n", - " [ 0 0 1 2 0]\n", - " [ 0 0 0 0 1]\n", - " [ 0 0 0 0 0]]\n", - "Then we obtain all the linear functionals f by assigning arbitrary values to c2 and c4\n", - "Let c2 = a, c4 = b then c1 = a+b, c3 = -2b, c5 = 0.\n", - "So, W0 consists all linear functionals f of the form\n", - "f(x1,x2,x3,x4,x5) = (a+b)x1 + ax2 -2bx3 + bx4\n", - "Dimension of W0 = 2 and basis {f1,f2} can be found by first taking a = 1, b = 0. Then a = 0,b = 1\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "print 'W be the subspace of R**5 spanned by vectors:'\n", - "a1 = [2, -2, 3 ,4 ,-1]#\n", - "a2 = [-1, 1, 2, 5, 2]#\n", - "a3 = [0 ,0 ,-1, -2, 3]#\n", - "a4 = [1 ,-1, 2, 3 ,0]#\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'a4 = ',a4\n", - "print 'Matrix A by the row vectors a1,a2,a3,a4 will be:'\n", - "A = array([a1,a2,a3,a4])\n", - "print 'A = \\n',A\n", - "print 'After Applying row transformations, we get the row reduced echelon matrix R of A'\n", - "\n", - "T = A# #Temporary matrix to store A\n", - "#R1 = R1 - R4 and R2 = R2 + R4\n", - "A[0,:] = A[0,:] - A[3,:]#\n", - "A[1,:] = A[1,:] + A[3,:]#\n", - "#R2 = R2/2\n", - "A[1,:] = 1./2 * A[1,:]#\n", - "#R3 = R3 + R2 and R4 = R4 - R1\n", - "A[2,:] = A[2,:] + A[1,:]#\n", - "A[3,:] = A[3,:] - A[0,:]#\n", - "#R3 = R3 - R4\n", - "A[2,:] = A[2,:] - A[3,:]#\n", - "#R3 = R3/3\n", - "A[2,:] = 1./3 * A[2,:]#\n", - "#R2 = R2 - R3\n", - "A[1,:] = A[1,:] - A[2,:]#\n", - "#R2 = R2/2 and R4 = R4 - R2 - R3\n", - "A[1,:] = 1./2 * A[1,:]#\n", - "A[3,:] = A[3,:] - A[1,:] - A[2,:]#\n", - "#R1 = R1 - R2 + R3\n", - "A[0,:] = A[0,:] - A[1,:] + A[2,:]#\n", - "R = A#\n", - "A = T#\n", - "print 'R = \\n',R\n", - "print 'Then we obtain all the linear functionals f by assigning arbitrary values to c2 and c4'\n", - "print 'Let c2 = a, c4 = b then c1 = a+b, c3 = -2b, c5 = 0.'\n", - "print 'So, W0 consists all linear functionals f of the form'\n", - "print 'f(x1,x2,x3,x4,x5) = (a+b)x1 + ax2 -2bx3 + bx4'\n", - "print 'Dimension of W0 = 2 and basis {f1,f2} can be found by first taking a = 1, b = 0. Then a = 0,b = 1'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb index 3fb3b384..c3b1c0c4 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb @@ -50,11 +50,10 @@ } ], "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "from sympy.polys.polyfuncs import horner\n", + "from numpy import array,identity\n", + "from sympy import Symbol\n", "print 'C is the field of complex numbers'\n", - "x = sp.Symbol(\"x\")\n", + "x = Symbol(\"x\")\n", "def f(x):\n", " ff= x**2 + 2\n", " return ff\n", @@ -70,9 +69,9 @@ "\n", "#part b\n", "print 'If a is the algebra of all 2*2 matrices over C and'\n", - "B = np.array([[1 ,0],[-1, 2]])\n", + "B = array([[1 ,0],[-1, 2]])\n", "print 'B = \\n',B\n", - "print 2*np.identity(2) + B**2,'then, f(B) = '\n", + "print 2*identity(2) + B**2,'then, f(B) = '\n", "print '----------------------------------------'\n", "\n", "#part c\n", @@ -117,8 +116,8 @@ } ], "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", + "from sympy import Symbol\n", + "x = Symbol('x')\n", "p1 = x + 2#\n", "p2 = x**2 + 8*x + 16#\n", "print 'M = (x+2)F[x] + (x**2 + 8x + 16)F[x]'\n", @@ -169,8 +168,8 @@ } ], "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", + "from sympy import Symbol\n", + "x = Symbol('x')\n", "\n", "#part a\n", "p1 = x + 2#\n", @@ -232,8 +231,8 @@ } ], "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", + "from sympy import Symbol\n", + "x = Symbol('x')\n", "\n", "print 'M is the ideal in F[x] generated by:'\n", "print '(x-1)*(x+2)**2'\n", @@ -285,8 +284,8 @@ } ], "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", + "from sympy import Symbol\n", + "x = Symbol('x')\n", "P = x**2 + 1#\n", "print P,'P = '\n", "print 'P is reducible over complex numbers as: ',\n", diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_1.ipynb deleted file mode 100755 index 3fb3b384..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_1.ipynb +++ /dev/null @@ -1,328 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 4 - Polynomials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 121 Example 4.3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C is the field of complex numbers\n", - "f = x**2 + 2\n", - "if a = C and z belongs to C, then f(z) = z**2 + 2\n", - "f(2) = 6\n", - "f(1+1J/1-1J) = (1+0j)\n", - "----------------------------------------\n", - "If a is the algebra of all 2*2 matrices over C and\n", - "B = \n", - "[[ 1 0]\n", - " [-1 2]]\n", - "[[ 3. 0.]\n", - " [ 1. 6.]] then, f(B) = \n", - "----------------------------------------\n", - "If a is algebra of all linear operators on C**3\n", - "And T is element of a as:\n", - "T(c1,c2,c3) = (i*2**1/2*c1,c2,i*2**1/2*c3)\n", - "Then, f(T)(c1,c2,c3) = (0,3*c2,0)\n", - "----------------------------------------\n", - "If a is the algebra of all polynomials over C\n", - "And, g = x**4 + 3.0*I\n", - "Then f(g) = (16+3j)\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "from sympy.polys.polyfuncs import horner\n", - "print 'C is the field of complex numbers'\n", - "x = sp.Symbol(\"x\")\n", - "def f(x):\n", - " ff= x**2 + 2\n", - " return ff\n", - "print 'f = ',f(x)\n", - "#part a\n", - "print 'if a = C and z belongs to C, then f(z) = z**2 + 2'\n", - "print 'f(2) = ',f(2)\n", - "\n", - "\n", - "print 'f(1+1J/1-1J) = ',f((1+1J)/(1-1J))\n", - "print '----------------------------------------'\n", - "\n", - "\n", - "#part b\n", - "print 'If a is the algebra of all 2*2 matrices over C and'\n", - "B = np.array([[1 ,0],[-1, 2]])\n", - "print 'B = \\n',B\n", - "print 2*np.identity(2) + B**2,'then, f(B) = '\n", - "print '----------------------------------------'\n", - "\n", - "#part c\n", - "print 'If a is algebra of all linear operators on C**3'\n", - "print 'And T is element of a as:'\n", - "print 'T(c1,c2,c3) = (i*2**1/2*c1,c2,i*2**1/2*c3)'\n", - "print 'Then, f(T)(c1,c2,c3) = (0,3*c2,0)'\n", - "print '----------------------------------------'\n", - "#part d\n", - "print 'If a is the algebra of all polynomials over C'\n", - "def g(x):\n", - " gg= x**4 + 3*1J\n", - " return gg\n", - "print 'And, g = ',g(x)\n", - "print 'Then f(g) = ',g(2)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 131 Example 4.7" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "M = (x+2)F[x] + (x**2 + 8x + 16)F[x]\n", - "We assert, M = F[x]\n", - "M contains: x**2 - x*(x + 2) + 8*x + 16\n", - "And hence M contains: x**2 - x*(x + 2) + 2*x + 4\n", - "Thus the scalar polynomial 1 belongs to M as well all its multiples.\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", - "p1 = x + 2#\n", - "p2 = x**2 + 8*x + 16#\n", - "print 'M = (x+2)F[x] + (x**2 + 8x + 16)F[x]'\n", - "print 'We assert, M = F[x]'\n", - "print 'M contains:',\n", - "t = p2 - x*p1#\n", - "print t\n", - "print 'And hence M contains:',\n", - "print t - 6*p1\n", - "print 'Thus the scalar polynomial 1 belongs to M as well all its multiples.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 133 Example 4.8" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "p1 = x + 2\n", - "p2 = x**2 + 8*x + 16\n", - "M = (x+2)F[x] + (x**2 + 8x + 16)F[x]\n", - "We assert, M = F[x]\n", - "M contains: x**2 - x*(x + 2) + 8*x + 16\n", - "And hence M contains: x**2 - x*(x + 2) + 2*x + 4\n", - "Thus the scalar polynomial 1 belongs to M as well all its multiples\n", - "So, gcd(p1,p2) = 1\n", - "----------------------------------------------\n", - "p1 = (x - 2)**2*(x + 1.0*I)\n", - "p2 = (x - 2)*(x**2 + 1)\n", - "M = (x - 2)**2*(x+1J)F[x] + (x-2)*(x**2 + 1\n", - "The ideal M contains p1 - p2 i.e., (x - 2)**2*(x + 1.0*I) - (x - 2)*(x**2 + 1)\n", - "Hence it contains (x-2)(x+i), which is monic and divides both,\n", - "So, gcd(p1,p2) = (x-2)(x+i)\n", - "----------------------------------------------\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", - "\n", - "#part a\n", - "p1 = x + 2#\n", - "p2 = x**2 + 8*x + 16#\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'M = (x+2)F[x] + (x**2 + 8x + 16)F[x]'\n", - "print 'We assert, M = F[x]'\n", - "print 'M contains:',\n", - "t = p2 - x*p1#\n", - "print t\n", - "print 'And hence M contains:',\n", - "print t - 6*p1\n", - "print 'Thus the scalar polynomial 1 belongs to M as well all its multiples'\n", - "print 'So, gcd(p1,p2) = 1'\n", - "print '----------------------------------------------'\n", - "#part b\n", - "p1 = (x - 2)**2*(x+1J)#\n", - "p2 = (x-2)*(x**2 + 1)#\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'M = (x - 2)**2*(x+1J)F[x] + (x-2)*(x**2 + 1'\n", - "print 'The ideal M contains p1 - p2 i.e.,',\n", - "print p1 - p2\n", - "print 'Hence it contains (x-2)(x+i), which is monic and divides both,'\n", - "print 'So, gcd(p1,p2) = (x-2)(x+i)'\n", - "print '----------------------------------------------'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 133 Example 4.9" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "M is the ideal in F[x] generated by:\n", - "(x-1)*(x+2)**2\n", - "(x+2)**2*(x+3)\n", - "(x-3) and\n", - "M = (x-1)*(x+2)**2 F[x] + (x+2)**2*(x-3) + (x-3)\n", - "Then M contains: 0\n", - "i.e., M contains (x+2)**2\n", - "and since, (x+2)**2 = (x-3)(x-7) - 17\n", - "So M contains the scalar polynomial 1.\n", - "So, M = F[x] and given polynomials are relatively prime.\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", - "\n", - "print 'M is the ideal in F[x] generated by:'\n", - "print '(x-1)*(x+2)**2'\n", - "print '(x+2)**2*(x+3)'\n", - "print '(x-3)','and'\n", - "p1 = (x-1)*(x+2)**2#\n", - "p2 = (x+2)**2*(x-3)#\n", - "p3 = (x-3)#\n", - "print 'M = (x-1)*(x+2)**2 F[x] + (x+2)**2*(x-3) + (x-3)'\n", - "print 'Then M contains:',\n", - "t = 1/2*(x+2)**2*((x-1) - (x-3))#\n", - "print t\n", - "print 'i.e., M contains (x+2)**2'\n", - "print 'and since, (x+2)**2 = (x-3)(x-7) - 17'\n", - "print 'So M contains the scalar polynomial 1.'\n", - "print 'So, M = F[x] and given polynomials are relatively prime.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 135 Example 4.10" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x**2 + 1 P = \n", - "P is reducible over complex numbers as: = x**2 + 1\n", - "(x-i)(x+i)\n", - "Whereas, P is irreducible over real numbers as: = x**2 + 1\n", - "(ax + b)(ax + b)\n", - "For, a,a,b,b to be in R,\n", - "aa = 1\n", - "ab + ba = 0\n", - "bb = 1\n", - "=> a**2 + b**2 = 0\n", - "=> a = b = 0\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "x = sp.Symbol('x')\n", - "P = x**2 + 1#\n", - "print P,'P = '\n", - "print 'P is reducible over complex numbers as: ',\n", - "print '=',P\n", - "print '(x-i)(x+i)'\n", - "print 'Whereas, P is irreducible over real numbers as:',\n", - "print '=',P\n", - "print '(ax + b)(a''x + b'')'\n", - "print 'For, a,a'',b,b'' to be in R,'\n", - "print 'aa'' = 1'\n", - "print 'ab'' + ba'' = 0'\n", - "print 'bb'' = 1'\n", - "print '=> a**2 + b**2 = 0'\n", - "print '=> a = b = 0'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_JbH1k27.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_JbH1k27.ipynb deleted file mode 100644 index c3b1c0c4..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4_JbH1k27.ipynb +++ /dev/null @@ -1,327 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 4 - Polynomials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 121 Example 4.3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C is the field of complex numbers\n", - "f = x**2 + 2\n", - "if a = C and z belongs to C, then f(z) = z**2 + 2\n", - "f(2) = 6\n", - "f(1+1J/1-1J) = (1+0j)\n", - "----------------------------------------\n", - "If a is the algebra of all 2*2 matrices over C and\n", - "B = \n", - "[[ 1 0]\n", - " [-1 2]]\n", - "[[ 3. 0.]\n", - " [ 1. 6.]] then, f(B) = \n", - "----------------------------------------\n", - "If a is algebra of all linear operators on C**3\n", - "And T is element of a as:\n", - "T(c1,c2,c3) = (i*2**1/2*c1,c2,i*2**1/2*c3)\n", - "Then, f(T)(c1,c2,c3) = (0,3*c2,0)\n", - "----------------------------------------\n", - "If a is the algebra of all polynomials over C\n", - "And, g = x**4 + 3.0*I\n", - "Then f(g) = (16+3j)\n" - ] - } - ], - "source": [ - "from numpy import array,identity\n", - "from sympy import Symbol\n", - "print 'C is the field of complex numbers'\n", - "x = Symbol(\"x\")\n", - "def f(x):\n", - " ff= x**2 + 2\n", - " return ff\n", - "print 'f = ',f(x)\n", - "#part a\n", - "print 'if a = C and z belongs to C, then f(z) = z**2 + 2'\n", - "print 'f(2) = ',f(2)\n", - "\n", - "\n", - "print 'f(1+1J/1-1J) = ',f((1+1J)/(1-1J))\n", - "print '----------------------------------------'\n", - "\n", - "\n", - "#part b\n", - "print 'If a is the algebra of all 2*2 matrices over C and'\n", - "B = array([[1 ,0],[-1, 2]])\n", - "print 'B = \\n',B\n", - "print 2*identity(2) + B**2,'then, f(B) = '\n", - "print '----------------------------------------'\n", - "\n", - "#part c\n", - "print 'If a is algebra of all linear operators on C**3'\n", - "print 'And T is element of a as:'\n", - "print 'T(c1,c2,c3) = (i*2**1/2*c1,c2,i*2**1/2*c3)'\n", - "print 'Then, f(T)(c1,c2,c3) = (0,3*c2,0)'\n", - "print '----------------------------------------'\n", - "#part d\n", - "print 'If a is the algebra of all polynomials over C'\n", - "def g(x):\n", - " gg= x**4 + 3*1J\n", - " return gg\n", - "print 'And, g = ',g(x)\n", - "print 'Then f(g) = ',g(2)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 131 Example 4.7" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "M = (x+2)F[x] + (x**2 + 8x + 16)F[x]\n", - "We assert, M = F[x]\n", - "M contains: x**2 - x*(x + 2) + 8*x + 16\n", - "And hence M contains: x**2 - x*(x + 2) + 2*x + 4\n", - "Thus the scalar polynomial 1 belongs to M as well all its multiples.\n" - ] - } - ], - "source": [ - "from sympy import Symbol\n", - "x = Symbol('x')\n", - "p1 = x + 2#\n", - "p2 = x**2 + 8*x + 16#\n", - "print 'M = (x+2)F[x] + (x**2 + 8x + 16)F[x]'\n", - "print 'We assert, M = F[x]'\n", - "print 'M contains:',\n", - "t = p2 - x*p1#\n", - "print t\n", - "print 'And hence M contains:',\n", - "print t - 6*p1\n", - "print 'Thus the scalar polynomial 1 belongs to M as well all its multiples.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 133 Example 4.8" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "p1 = x + 2\n", - "p2 = x**2 + 8*x + 16\n", - "M = (x+2)F[x] + (x**2 + 8x + 16)F[x]\n", - "We assert, M = F[x]\n", - "M contains: x**2 - x*(x + 2) + 8*x + 16\n", - "And hence M contains: x**2 - x*(x + 2) + 2*x + 4\n", - "Thus the scalar polynomial 1 belongs to M as well all its multiples\n", - "So, gcd(p1,p2) = 1\n", - "----------------------------------------------\n", - "p1 = (x - 2)**2*(x + 1.0*I)\n", - "p2 = (x - 2)*(x**2 + 1)\n", - "M = (x - 2)**2*(x+1J)F[x] + (x-2)*(x**2 + 1\n", - "The ideal M contains p1 - p2 i.e., (x - 2)**2*(x + 1.0*I) - (x - 2)*(x**2 + 1)\n", - "Hence it contains (x-2)(x+i), which is monic and divides both,\n", - "So, gcd(p1,p2) = (x-2)(x+i)\n", - "----------------------------------------------\n" - ] - } - ], - "source": [ - "from sympy import Symbol\n", - "x = Symbol('x')\n", - "\n", - "#part a\n", - "p1 = x + 2#\n", - "p2 = x**2 + 8*x + 16#\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'M = (x+2)F[x] + (x**2 + 8x + 16)F[x]'\n", - "print 'We assert, M = F[x]'\n", - "print 'M contains:',\n", - "t = p2 - x*p1#\n", - "print t\n", - "print 'And hence M contains:',\n", - "print t - 6*p1\n", - "print 'Thus the scalar polynomial 1 belongs to M as well all its multiples'\n", - "print 'So, gcd(p1,p2) = 1'\n", - "print '----------------------------------------------'\n", - "#part b\n", - "p1 = (x - 2)**2*(x+1J)#\n", - "p2 = (x-2)*(x**2 + 1)#\n", - "print 'p1 = ',p1\n", - "print 'p2 = ',p2\n", - "print 'M = (x - 2)**2*(x+1J)F[x] + (x-2)*(x**2 + 1'\n", - "print 'The ideal M contains p1 - p2 i.e.,',\n", - "print p1 - p2\n", - "print 'Hence it contains (x-2)(x+i), which is monic and divides both,'\n", - "print 'So, gcd(p1,p2) = (x-2)(x+i)'\n", - "print '----------------------------------------------'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 133 Example 4.9" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "M is the ideal in F[x] generated by:\n", - "(x-1)*(x+2)**2\n", - "(x+2)**2*(x+3)\n", - "(x-3) and\n", - "M = (x-1)*(x+2)**2 F[x] + (x+2)**2*(x-3) + (x-3)\n", - "Then M contains: 0\n", - "i.e., M contains (x+2)**2\n", - "and since, (x+2)**2 = (x-3)(x-7) - 17\n", - "So M contains the scalar polynomial 1.\n", - "So, M = F[x] and given polynomials are relatively prime.\n" - ] - } - ], - "source": [ - "from sympy import Symbol\n", - "x = Symbol('x')\n", - "\n", - "print 'M is the ideal in F[x] generated by:'\n", - "print '(x-1)*(x+2)**2'\n", - "print '(x+2)**2*(x+3)'\n", - "print '(x-3)','and'\n", - "p1 = (x-1)*(x+2)**2#\n", - "p2 = (x+2)**2*(x-3)#\n", - "p3 = (x-3)#\n", - "print 'M = (x-1)*(x+2)**2 F[x] + (x+2)**2*(x-3) + (x-3)'\n", - "print 'Then M contains:',\n", - "t = 1/2*(x+2)**2*((x-1) - (x-3))#\n", - "print t\n", - "print 'i.e., M contains (x+2)**2'\n", - "print 'and since, (x+2)**2 = (x-3)(x-7) - 17'\n", - "print 'So M contains the scalar polynomial 1.'\n", - "print 'So, M = F[x] and given polynomials are relatively prime.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 135 Example 4.10" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x**2 + 1 P = \n", - "P is reducible over complex numbers as: = x**2 + 1\n", - "(x-i)(x+i)\n", - "Whereas, P is irreducible over real numbers as: = x**2 + 1\n", - "(ax + b)(ax + b)\n", - "For, a,a,b,b to be in R,\n", - "aa = 1\n", - "ab + ba = 0\n", - "bb = 1\n", - "=> a**2 + b**2 = 0\n", - "=> a = b = 0\n" - ] - } - ], - "source": [ - "from sympy import Symbol\n", - "x = Symbol('x')\n", - "P = x**2 + 1#\n", - "print P,'P = '\n", - "print 'P is reducible over complex numbers as: ',\n", - "print '=',P\n", - "print '(x-i)(x+i)'\n", - "print 'Whereas, P is irreducible over real numbers as:',\n", - "print '=',P\n", - "print '(ax + b)(a''x + b'')'\n", - "print 'For, a,a'',b,b'' to be in R,'\n", - "print 'aa'' = 1'\n", - "print 'ab'' + ba'' = 0'\n", - "print 'bb'' = 1'\n", - "print '=> a**2 + b**2 = 0'\n", - "print '=> a = b = 0'" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb deleted file mode 100755 index 9d29340c..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb +++ /dev/null @@ -1,358 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 5 - Determinants" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 143 Example 5.3" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 3. 9.]\n", - " [ 3. 1.]]\n", - "D1(A) = 3.0\n", - "D2(A) = -27.0\n", - "D(A) = D1(A) + D2(A) = -24.0\n", - "That is, D is a 2-linear function.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "A = np.random.rand(2,2)\n", - "for x in range(0,2):\n", - " for y in range(0,2):\n", - " A[x,y]=round(A[x,y]*10)\n", - "print 'A = \\n',A\n", - "\n", - "D1 = A[0,0]*A[1,1]\n", - "D2 = - A[0,1]*A[1,0]\n", - "print 'D1(A) = ',D1\n", - "print 'D2(A) = ',D2\n", - "print 'D(A) = D1(A) + D2(A) = ',D1 + D2\n", - "print 'That is, D is a 2-linear function.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 145 Example 5.4" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x, 0, -x**2], [0, 1, 0], [1, 0, x**3]])\n", - "e1,e2,e3 are the rows of 3*3 identity matrix, then\n", - "e1 = [ 1. 0. 0.]\n", - "e2 = [ 0. 1. 0.]\n", - "e3 = [ 0. 0. 1.]\n", - "D(A) = D(x*e1 - x**2*e3, e2, e1 + x**3*e3)\n", - "Since, D is linear as a function of each row,\n", - "D(A) = x*D(e1,e2,e1 + x**3*e3) - x**2*D(e3,e2,e1 + x**3*e3)\n", - "D(A) = x*D(e1,e2,e1) + x**4*D(e1,e2,e3) - x**2*D(e3,e2,e1) - x**5*D(e3,e2,e3)\n", - "As D is alternating, So\n", - "D(A) = (x**4 + x**2)*D(e1,e2,e3)\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "\n", - "x = sp.Symbol(\"x\")\n", - "A = sp.Matrix(([x, 0, -x**2],[0, 1, 0],[1, 0, x**3]))\n", - "print 'A = \\n',A\n", - "print 'e1,e2,e3 are the rows of 3*3 identity matrix, then'\n", - "T = np.identity(3)\n", - "e1 = T[0,:]\n", - "e2 = T[1,:]\n", - "e3 = T[2,:]\n", - "print 'e1 = ',e1\n", - "print 'e2 = ',e2\n", - "print 'e3 = ',e3\n", - "print 'D(A) = D(x*e1 - x**2*e3, e2, e1 + x**3*e3)'\n", - "print 'Since, D is linear as a function of each row,'\n", - "print 'D(A) = x*D(e1,e2,e1 + x**3*e3) - x**2*D(e3,e2,e1 + x**3*e3)'\n", - "print 'D(A) = x*D(e1,e2,e1) + x**4*D(e1,e2,e3) - x**2*D(e3,e2,e1) - x**5*D(e3,e2,e3)'\n", - "print 'As D is alternating, So'\n", - "print 'D(A) = (x**4 + x**2)*D(e1,e2,e3)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 147 Example 5.5" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x - 1, x**2, x**3], [0, x - 2, 1], [0, 0, x - 3]])\n", - "\n", - "E(A) = x**3 - 6*x**2 + 11*x - 6\n", - "--------------------------------------\n", - "A = \n", - "Matrix([[0, 1, 0], [0, 0, 1], [1, 0, 0]])\n", - "\n", - "E(A) = 1\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "\n", - "#part a\n", - "x = sp.Symbol('x')\n", - "A = sp.Matrix(([x-1, x**2, x**3],[0, x-2, 1],[0, 0, x-3]))\n", - "print 'A = \\n',A\n", - "print '\\nE(A) = ',A.det()\n", - "print '--------------------------------------'\n", - "#part b\n", - "A = sp.Matrix(([0 ,1, 0],[0, 0, 1],[1 ,0, 0]))\n", - "print 'A = \\n',A\n", - "print '\\nE(A) = ',A.det()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 158 Example 5.6" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Given Matrix:\n", - "A = \n", - "[[ 1 -1 2 3]\n", - " [ 2 2 0 2]\n", - " [ 4 1 -1 -1]\n", - " [ 1 2 3 0]]\n", - "After, Subtracting muliples of row 1 from rows 2 3 4\n", - "R2 = R2 - 2*R1\n", - "R3 = R3 - 4*R1\n", - "R4 = R4 - R1\n", - "A = \n", - "[[ 1 -1 2 3]\n", - " [ 0 4 -4 -4]\n", - " [ 0 5 -9 -13]\n", - " [ 0 3 1 -3]]\n", - "We obtain the same determinant as before.\n", - "Now, applying some more row transformations as:\n", - "R3 = R3 - 5/4 * R2\n", - "R4 = R4 - 3/4 * R2\n", - "We get B as:\n", - "B = \n", - "[[ 1 -1 2 3]\n", - " [ 0 4 -4 -4]\n", - " [ 0 0 -4 -8]\n", - " [ 0 0 4 0]]\n", - "Now,determinant of A and B will be same\n", - "det A = det B = 128.0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "print 'Given Matrix:'\n", - "A = np.array([[1, -1, 2, 3],[ 2, 2, 0, 2],[ 4, 1 ,-1, -1],[1, 2, 3, 0]])\n", - "print 'A = \\n',A\n", - "print 'After, Subtracting muliples of row 1 from rows 2 3 4'\n", - "print 'R2 = R2 - 2*R1'\n", - "A[1,:] = A[1,:] - 2 * A[0,:]\n", - "print 'R3 = R3 - 4*R1'\n", - "A[2,:] = A[2,:] - 4 * A[0,:]\n", - "print 'R4 = R4 - R1'\n", - "A[3,:] = A[3,:] - A[0,:]\n", - "print 'A = \\n',A\n", - "T = A# #Temporary matrix to store A\n", - "print 'We obtain the same determinant as before.'\n", - "print 'Now, applying some more row transformations as:'\n", - "print 'R3 = R3 - 5/4 * R2'\n", - "T[2,:] = T[2,:] - 5./4 * T[1,:]\n", - "print 'R4 = R4 - 3/4 * R2'\n", - "T[3,:] = T[3,:] - 3./4 * T[1,:]\n", - "B = T#\n", - "print 'We get B as:'\n", - "print 'B = \\n',B\n", - "print 'Now,determinant of A and B will be same'\n", - "print 'det A = det B = ',np.linalg.det(B)\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 160 Example 5.7" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x**2 + x, x + 1], [x - 1, 1]])\n", - "B = \n", - "Matrix([[x**2 - 1, x + 2], [x**2 - 2*x + 3, x]])\n", - "det A = x + 1\n", - "det B = -6\n", - "Thus, A is not invertible over K whereas B is invertible\n", - "adj A = Matrix([[(x + 1)*((x - 1)/(x*(x + 1)) + 1/(x*(x + 1))), -x - 1], [-x + 1, x*(x + 1)]])\n", - "adj B = Matrix([[-6*(x + 2)*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1)**2 - 6/(x**2 - 1), 6*(x + 2)*(-x**2/6 + 1/6)/(x**2 - 1)], [6*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1), x**2 - 1]])\n", - "(adj A)A = (x+1)I\n", - "(adj B)B = -6I\n", - "B inverse = Matrix([[(x + 2)*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1)**2 + 1/(x**2 - 1), -(x + 2)*(-x**2/6 + 1/6)/(x**2 - 1)], [-(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1), -x**2/6 + 1/6]])\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "import numpy as np\n", - "\n", - "x = sp.Symbol(\"x\")\n", - "A = sp.Matrix(([x**2+x, x+1],[x-1, 1]))\n", - "B = sp.Matrix(([x**2-1, x+2],[x**2-2*x+3, x]))\n", - "print 'A = \\n',A\n", - "print 'B = \\n',B\n", - "print 'det A = ',A.det()\n", - "print 'det B = ',B.det()\n", - "print 'Thus, A is not invertible over K whereas B is invertible'\n", - "\n", - "print 'adj A = ',(A**-1)*A.det()\n", - "print 'adj B = ',(B**-1)*B.det()\n", - "print '(adj A)A = (x+1)I'\n", - "print '(adj B)B = -6I'\n", - "print 'B inverse = ',B**-1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 161 Example 5.8" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[1 2]\n", - " [3 4]]\n", - "det A = Determinant of A is: -2.0\n", - "Adjoint of A is: [[-2. -0. ]\n", - " [-0. -0.5]]\n", - "Thus, A is not invertible as a matrix over the ring of integers.\n", - "But, A can be regarded as a matrix over field of rational numbers.\n", - "Then, A is invertible and Inverse of A is: [[-2. 1. ]\n", - " [ 1.5 -0.5]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "A = np.array([[1, 2],[3, 4]])\n", - "print 'A = \\n',A\n", - "d = np.linalg.det(A)#\n", - "print 'det A = ','Determinant of A is:',d\n", - "\n", - "\n", - "ad = (d* np.identity(2)) / A\n", - "print 'Adjoint of A is:',ad\n", - "\n", - "\n", - "print 'Thus, A is not invertible as a matrix over the ring of integers.'\n", - "print 'But, A can be regarded as a matrix over field of rational numbers.'\n", - "In = np.linalg.inv(A)#\n", - "#The A inverse matrix given in book has a wrong entry of 1/2. It should be -1/2.\n", - "print 'Then, A is invertible and Inverse of A is:',In\n" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5_0VUnA6n.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5_0VUnA6n.ipynb deleted file mode 100644 index aa99d655..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5_0VUnA6n.ipynb +++ /dev/null @@ -1,357 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 5 - Determinants" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 143 Example 5.3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 7. 9.]\n", - " [ 1. 8.]]\n", - "D1(A) = 56.0\n", - "D2(A) = -9.0\n", - "D(A) = D1(A) + D2(A) = 47.0\n", - "That is, D is a 2-linear function.\n" - ] - } - ], - "source": [ - "from numpy import random\n", - "A = random.rand(2,2)\n", - "for x in range(0,2):\n", - " for y in range(0,2):\n", - " A[x,y]=round(A[x,y]*10)\n", - "print 'A = \\n',A\n", - "\n", - "D1 = A[0,0]*A[1,1]\n", - "D2 = - A[0,1]*A[1,0]\n", - "print 'D1(A) = ',D1\n", - "print 'D2(A) = ',D2\n", - "print 'D(A) = D1(A) + D2(A) = ',D1 + D2\n", - "print 'That is, D is a 2-linear function.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 145 Example 5.4" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x, 0, -x**2], [0, 1, 0], [1, 0, x**3]])\n", - "e1,e2,e3 are the rows of 3*3 identity matrix, then\n", - "e1 = [ 1. 0. 0.]\n", - "e2 = [ 0. 1. 0.]\n", - "e3 = [ 0. 0. 1.]\n", - "D(A) = D(x*e1 - x**2*e3, e2, e1 + x**3*e3)\n", - "Since, D is linear as a function of each row,\n", - "D(A) = x*D(e1,e2,e1 + x**3*e3) - x**2*D(e3,e2,e1 + x**3*e3)\n", - "D(A) = x*D(e1,e2,e1) + x**4*D(e1,e2,e3) - x**2*D(e3,e2,e1) - x**5*D(e3,e2,e3)\n", - "As D is alternating, So\n", - "D(A) = (x**4 + x**2)*D(e1,e2,e3)\n" - ] - } - ], - "source": [ - "from numpy import array,random,identity\n", - "from sympy import Symbol,Matrix\n", - "\n", - "x = Symbol(\"x\")\n", - "A = Matrix(([x, 0, -x**2],[0, 1, 0],[1, 0, x**3]))\n", - "print 'A = \\n',A\n", - "print 'e1,e2,e3 are the rows of 3*3 identity matrix, then'\n", - "T = identity(3)\n", - "e1 = T[0,:]\n", - "e2 = T[1,:]\n", - "e3 = T[2,:]\n", - "print 'e1 = ',e1\n", - "print 'e2 = ',e2\n", - "print 'e3 = ',e3\n", - "print 'D(A) = D(x*e1 - x**2*e3, e2, e1 + x**3*e3)'\n", - "print 'Since, D is linear as a function of each row,'\n", - "print 'D(A) = x*D(e1,e2,e1 + x**3*e3) - x**2*D(e3,e2,e1 + x**3*e3)'\n", - "print 'D(A) = x*D(e1,e2,e1) + x**4*D(e1,e2,e3) - x**2*D(e3,e2,e1) - x**5*D(e3,e2,e3)'\n", - "print 'As D is alternating, So'\n", - "print 'D(A) = (x**4 + x**2)*D(e1,e2,e3)'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 147 Example 5.5" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x - 1, x**2, x**3], [0, x - 2, 1], [0, 0, x - 3]])\n", - "\n", - "E(A) = x**3 - 6*x**2 + 11*x - 6\n", - "--------------------------------------\n", - "A = \n", - "Matrix([[0, 1, 0], [0, 0, 1], [1, 0, 0]])\n", - "\n", - "E(A) = 1\n" - ] - } - ], - "source": [ - "from sympy import Symbol, Matrix\n", - "\n", - "#part a\n", - "x = Symbol('x')\n", - "A = Matrix(([x-1, x**2, x**3],[0, x-2, 1],[0, 0, x-3]))\n", - "print 'A = \\n',A\n", - "print '\\nE(A) = ',A.det()\n", - "print '--------------------------------------'\n", - "#part b\n", - "A = Matrix(([0 ,1, 0],[0, 0, 1],[1 ,0, 0]))\n", - "print 'A = \\n',A\n", - "print '\\nE(A) = ',A.det()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 158 Example 5.6" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Given Matrix:\n", - "A = \n", - "[[ 1 -1 2 3]\n", - " [ 2 2 0 2]\n", - " [ 4 1 -1 -1]\n", - " [ 1 2 3 0]]\n", - "After, Subtracting muliples of row 1 from rows 2 3 4\n", - "R2 = R2 - 2*R1\n", - "R3 = R3 - 4*R1\n", - "R4 = R4 - R1\n", - "A = \n", - "[[ 1 -1 2 3]\n", - " [ 0 4 -4 -4]\n", - " [ 0 5 -9 -13]\n", - " [ 0 3 1 -3]]\n", - "We obtain the same determinant as before.\n", - "Now, applying some more row transformations as:\n", - "R3 = R3 - 5/4 * R2\n", - "R4 = R4 - 3/4 * R2\n", - "We get B as:\n", - "B = \n", - "[[ 1 -1 2 3]\n", - " [ 0 4 -4 -4]\n", - " [ 0 0 -4 -8]\n", - " [ 0 0 4 0]]\n", - "Now,determinant of A and B will be same\n", - "det A = det B = 128.0\n" - ] - } - ], - "source": [ - "from numpy import array,linalg\n", - "\n", - "print 'Given Matrix:'\n", - "A = array([[1, -1, 2, 3],[ 2, 2, 0, 2],[ 4, 1 ,-1, -1],[1, 2, 3, 0]])\n", - "print 'A = \\n',A\n", - "print 'After, Subtracting muliples of row 1 from rows 2 3 4'\n", - "print 'R2 = R2 - 2*R1'\n", - "A[1,:] = A[1,:] - 2 * A[0,:]\n", - "print 'R3 = R3 - 4*R1'\n", - "A[2,:] = A[2,:] - 4 * A[0,:]\n", - "print 'R4 = R4 - R1'\n", - "A[3,:] = A[3,:] - A[0,:]\n", - "print 'A = \\n',A\n", - "T = A# #Temporary matrix to store A\n", - "print 'We obtain the same determinant as before.'\n", - "print 'Now, applying some more row transformations as:'\n", - "print 'R3 = R3 - 5/4 * R2'\n", - "T[2,:] = T[2,:] - 5./4 * T[1,:]\n", - "print 'R4 = R4 - 3/4 * R2'\n", - "T[3,:] = T[3,:] - 3./4 * T[1,:]\n", - "B = T#\n", - "print 'We get B as:'\n", - "print 'B = \\n',B\n", - "print 'Now,determinant of A and B will be same'\n", - "print 'det A = det B = ',linalg.det(B)\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 160 Example 5.7" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[x**2 + x, x + 1], [x - 1, 1]])\n", - "B = \n", - "Matrix([[x**2 - 1, x + 2], [x**2 - 2*x + 3, x]])\n", - "det A = x + 1\n", - "det B = -6\n", - "Thus, A is not invertible over K whereas B is invertible\n", - "adj A = Matrix([[(x + 1)*((x - 1)/(x*(x + 1)) + 1/(x*(x + 1))), -x - 1], [-x + 1, x*(x + 1)]])\n", - "adj B = Matrix([[-6*(x + 2)*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1)**2 - 6/(x**2 - 1), 6*(x + 2)*(-x**2/6 + 1/6)/(x**2 - 1)], [6*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1), x**2 - 1]])\n", - "(adj A)A = (x+1)I\n", - "(adj B)B = -6I\n", - "B inverse = Matrix([[(x + 2)*(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1)**2 + 1/(x**2 - 1), -(x + 2)*(-x**2/6 + 1/6)/(x**2 - 1)], [-(-x**2/6 + 1/6)*(x**2 - 2*x + 3)/(x**2 - 1), -x**2/6 + 1/6]])\n" - ] - } - ], - "source": [ - "from sympy import Symbol, Matrix\n", - "\n", - "x = Symbol(\"x\")\n", - "A = Matrix(([x**2+x, x+1],[x-1, 1]))\n", - "B = Matrix(([x**2-1, x+2],[x**2-2*x+3, x]))\n", - "print 'A = \\n',A\n", - "print 'B = \\n',B\n", - "print 'det A = ',A.det()\n", - "print 'det B = ',B.det()\n", - "print 'Thus, A is not invertible over K whereas B is invertible'\n", - "\n", - "print 'adj A = ',(A**-1)*A.det()\n", - "print 'adj B = ',(B**-1)*B.det()\n", - "print '(adj A)A = (x+1)I'\n", - "print '(adj B)B = -6I'\n", - "print 'B inverse = ',B**-1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 161 Example 5.8" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[1 2]\n", - " [3 4]]\n", - "det A = Determinant of A is: -2.0\n", - "Adjoint of A is: [[-2. -0. ]\n", - " [-0. -0.5]]\n", - "Thus, A is not invertible as a matrix over the ring of integers.\n", - "But, A can be regarded as a matrix over field of rational numbers.\n", - "Then, A is invertible and Inverse of A is: [[-2. 1. ]\n", - " [ 1.5 -0.5]]\n" - ] - } - ], - "source": [ - "from numpy import array,linalg,identity\n", - "\n", - "A = array([[1, 2],[3, 4]])\n", - "print 'A = \\n',A\n", - "d = linalg.det(A)#\n", - "print 'det A = ','Determinant of A is:',d\n", - "\n", - "\n", - "ad = (d* identity(2)) / A\n", - "print 'Adjoint of A is:',ad\n", - "\n", - "\n", - "print 'Thus, A is not invertible as a matrix over the ring of integers.'\n", - "print 'But, A can be regarded as a matrix over field of rational numbers.'\n", - "In = linalg.inv(A)#\n", - "#The A inverse matrix given in book has a wrong entry of 1/2. It should be -1/2.\n", - "print 'Then, A is invertible and Inverse of A is:',In\n" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb index 9ad1cbe2..5499419a 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -34,13 +34,13 @@ } ], "source": [ - "import sympy as sp\n", + "from sympy import Symbol,Matrix,eye\n", "print 'Standard ordered matrix for Linear operator T on R**2 is:'\n", - "A = sp.Matrix(([0, -1],[1 ,0]))\n", + "A = Matrix(([0, -1],[1 ,0]))\n", "print 'A = \\n',A\n", "print 'The characteristic polynomial for T or A is:',\n", - "x = sp.Symbol(\"x\")\n", - "p = (x*sp.eye(2)-A)\n", + "x = Symbol(\"x\")\n", + "p = (x*eye(2)-A)\n", "print p\n", "print 'Since this polynomial has no real roots,T has no characteristic values.'" ] @@ -84,28 +84,28 @@ } ], "source": [ - "import sympy as sp\n", - "A = sp.Matrix(([3, 1, -1],[ 2, 2, -1],[2, 2, 0]))\n", + "from sympy import Symbol,Matrix,eye,solve\n", + "A = Matrix(([3, 1, -1],[ 2, 2, -1],[2, 2, 0]))\n", "print 'A = \\n',A\n", "print 'Characteristic polynomial for A is:',\n", - "x=sp.Symbol('x')\n", + "x=Symbol('x')\n", "p = A.charpoly(x)#\n", "print p.as_expr()\n", "print 'or'\n", "print '(x-1)(x-2)**2'\n", "\n", - "r = sp.solve(p.as_expr())#\n", + "r = solve(p.as_expr())#\n", "[m,n] = A.shape\n", "print 'The characteristic values of A are:'\n", "print r #print round(r)\n", - "B = A-sp.eye(m)\n", + "B = A-eye(m)\n", "print 'Now, A-I = \\n',B\n", "\n", "print 'rank of A - I= ',B.rank()\n", "print 'So, nullity of T-I = 1'\n", "a1 = [1 ,0 ,2]#\n", "print 'The vector that spans the null space of T-I = ',a1\n", - "B = A-2*sp.eye(m)\n", + "B = A-2*eye(m)\n", "print 'Now,A-2I = \\n',B\n", "print 'rank of A - 2I= ',B.rank()\n", "print 'T*alpha = 2*alpha if alpha is a scalar multiple of a2'\n", @@ -122,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -184,14 +184,14 @@ } ], "source": [ - "import sympy as sp\n", - "import numpy as np\n", + "from numpy import array,transpose,vstack,rank\n", + "from sympy import Symbol,Matrix,eye\n", "print 'Standard ordered matrix for Linear operator T on R**3 is:'\n", - "A = sp.Matrix(([5, -6, -6],[ -1, 4, 2],[ 3, -6, -4]))\n", + "A = Matrix(([5, -6, -6],[ -1, 4, 2],[ 3, -6, -4]))\n", "print 'A = \\n',A\n", "print 'xI - A = '\n", - "B = sp.eye(3)\n", - "x = sp.Symbol('x')\n", + "B = eye(3)\n", + "x = Symbol('x')\n", "P = x*B - A#\n", "print P\n", "\n", @@ -211,7 +211,7 @@ "print '=>'\n", "print ' * ', c\n", "print P\n", - "P = sp.Matrix(([P[0,0], P[0,2]],[P[2,0], P[2,2]]))\n", + "P = Matrix(([P[0,0], P[0,2]],[P[2,0], P[2,2]]))\n", "print '=>'\n", "print ' * ', c\n", "print P\n", @@ -222,24 +222,24 @@ "\n", "print 'Now, A - I = ',A-B\n", "print 'And, A- 2I = ',A-2*B\n", - "print 'rank(A-I) = ',np.rank(A-B)\n", + "print 'rank(A-I) = ',rank(A-B)\n", "\n", - "print 'rank(A-2I) = ',np.rank(A-2*B)\n", + "print 'rank(A-2I) = ',rank(A-2*B)\n", "print 'W1,W2 be the spaces of characteristic vectors associated with values 1,2'\n", "print 'So by theorem 2, T is diagonalizable'\n", - "a1 = np.array([[3, -1 ,3]])\n", - "a2 = np.array([[2, 1, 0]])\n", - "a3 = np.array([[2, 0, 1]])\n", + "a1 = array([[3, -1 ,3]])\n", + "a2 = array([[2, 1, 0]])\n", + "a3 = array([[2, 0, 1]])\n", "print 'Null space of (T- I) i.e basis of W1 is spanned by a1 = ',a1\n", "print 'Null space of (T- 2I) i.e. basis of W2 is spanned by vectors x1,x2,x3 such that x1 = 2x1 + 2x3'\n", "print 'One example :'\n", "print 'a2 = ',a2\n", "print 'a3 = ',a3\n", "print 'The diagonal matrix is:'\n", - "D = np.array([[1 ,0 ,0 ],[0, 2, 0],[0, 0, 2]])\n", + "D = array([[1 ,0 ,0 ],[0, 2, 0],[0, 0, 2]])\n", "print 'D = ',D\n", "print 'The standard basis matrix is denoted as:'\n", - "P = np.transpose(np.vstack([a1,a2,a3]))\n", + "P = transpose(vstack([a1,a2,a3]))\n", "print 'P = ',P\n", "print 'AP = ',A*P\n", "print 'PD = ',P*D\n", @@ -256,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -298,37 +298,37 @@ } ], "source": [ - "import numpy as np\n", - "import sympy as sp\n", + "from numpy import array,transpose,vstack,rank\n", + "from sympy import Symbol,Matrix,eye\n", "\n", - "x = sp.Symbol(\"x\")\n", - "A = np.array([[5, -6, -6],[ -1, 4 ,2],[ 3, -6, -4]]) #Matrix given in Example 3\n", + "x = Symbol(\"x\")\n", + "A = array([[5, -6, -6],[ -1, 4 ,2],[ 3, -6, -4]]) #Matrix given in Example 3\n", "print 'A = \\n',A\n", "f = (x-1)*(x-2)**2# \n", "print 'Characteristic polynomial of A is:'\n", "print 'f = (x-1)(x-2)**2'\n", "print 'i.e., f = ',f\n", "p = (x-1)*(x-2)#\n", - "print '(A-I)(A-2I) = ',(A-sp.eye(3))*(A-2 * sp.eye(3))\n", + "print '(A-I)(A-2I) = ',(A-eye(3))*(A-2 * eye(3))\n", "print 'Since, (A-I)(A-2I) = 0. So, Minimal polynomial for above is:'\n", "print 'p = ',p\n", "print '---------------------------------------'\n", "\n", - "A = np.array([[3, 1 ,-1],[ 2, 2 ,-1],[2, 2, 0]]) #Matrix given in Example 2\n", + "A = array([[3, 1 ,-1],[ 2, 2 ,-1],[2, 2, 0]]) #Matrix given in Example 2\n", "print 'A = \\n',A\n", "f = (x-1)*(x-2)**2# \n", "print 'Characteristic polynomial of A is:'\n", "print 'f = (x-1)(x-2)**2'\n", "print 'i.e., f = ',f\n", - "print '(A-I)(A-2I) = ',(A-sp.eye(3))*(A-2 * sp.eye(3))\n", + "print '(A-I)(A-2I) = ',(A-eye(3))*(A-2 * eye(3))\n", "print 'Since, (A-I)(A-2I) is not equal to 0. T is not diagonalizable. So, Minimal polynomial cannot be p.'\n", "print '---------------------------------------'\n", - "A = np.array([[0, -1],[1, 0]])\n", + "A = array([[0, -1],[1, 0]])\n", "print 'A = \\n',A\n", "f = x**2 + 1#\n", "print 'Characteristic polynomial of A is:'\n", "print 'f = ',f\n", - "print 'A**2 + I = ',A**2 + sp.eye(2)\n", + "print 'A**2 + I = ',A**2 + eye(2)\n", "print 'Since, A**2 + I = 0, so minimal polynomial is'\n", "p = x**2 + 1\n", "print 'p = ',p" @@ -343,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -352,7 +352,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "A = \n", + " A = \n", "[[0 1 0 1]\n", " [1 0 1 0]\n", " [0 1 0 1]\n", @@ -381,9 +381,9 @@ } ], "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "A = np.array([[0, 1, 0, 1],[1, 0 ,1 ,0],[0, 1, 0, 1],[1, 0, 1, 0]])\n", + "from numpy import array,transpose,vstack,rank\n", + "from sympy import Symbol,Matrix,eye,solve\n", + "A = array([[0, 1, 0, 1],[1, 0 ,1 ,0],[0, 1, 0, 1],[1, 0, 1, 0]])\n", "print 'A = \\n',A\n", "print 'Computing powers on A:'\n", "print 'A**2 = \\n',A*A\n", @@ -393,12 +393,12 @@ " return pp\n", "print 'if p = x**3 - 4x, then'\n", "print 'p(A) = ',p(A)\n", - "x = sp.Symbol(\"x\")\n", + "x = Symbol(\"x\")\n", "f = x**3 - 4*x\n", "print 'Minimal polynomial for A is: ',f\n", - "print 'Characteristic values for A are:',sp.solve(f,x)\n", - "print 'Rank(A) = ',np.rank(A)\n", - "print 'So, from theorem 2, characteristic polynomial for A is:',sp.Matrix(A).charpoly(x).as_expr()" + "print 'Characteristic values for A are:',solve(f,x)\n", + "print 'Rank(A) = ',rank(A)\n", + "print 'So, from theorem 2, characteristic polynomial for A is:',Matrix(A).charpoly(x).as_expr()" ] }, { @@ -410,7 +410,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -420,51 +420,51 @@ "output_type": "stream", "text": [ "A = \n", - "[[ 9. 1. 3.]\n", - " [ 10. 1. 3.]\n", - " [ 10. 5. 1.]]\n", + "[[ 9. 3. 3.]\n", + " [ 7. 4. 4.]\n", + " [ 1. 1. 2.]]\n", "A transpose is:\n", "A' = \n", - "[[ 9. 10. 10.]\n", - " [ 1. 1. 5.]\n", - " [ 3. 3. 1.]]\n", + "[[ 9. 7. 1.]\n", + " [ 3. 4. 1.]\n", + " [ 3. 4. 2.]]\n", "Since, A' is not equal to A, A is not a symmetric matrix.\n", "Since, A' is not equal to -A, A is not a skew-symmetric matrix.\n", "A can be expressed as sum of A1 and A2\n", "i.e., A = A1 + A2\n", "A1 = \n", - "[[ 9. 5.5 6.5]\n", - " [ 5.5 1. 4. ]\n", - " [ 6.5 4. 1. ]]\n", + "[[ 9. 5. 2. ]\n", + " [ 5. 4. 2.5]\n", + " [ 2. 2.5 2. ]]\n", "A2 = \n", - "[[ 0. -4.5 -3.5]\n", - " [ 4.5 0. -1. ]\n", - " [ 3.5 1. 0. ]]\n", + "[[ 0. -2. 1. ]\n", + " [ 2. 0. 1.5]\n", + " [-1. -1.5 0. ]]\n", "A1 + A2 = \n", - "[[ 9. 1. 3.]\n", - " [ 10. 1. 3.]\n", - " [ 10. 5. 1.]]\n" + "[[ 9. 3. 3.]\n", + " [ 7. 4. 4.]\n", + " [ 1. 1. 2.]]\n" ] } ], "source": [ - "import numpy as np\n", + "from numpy import array,transpose,random,equal\n", "\n", - "A = np.random.rand(3,3)\n", + "A = random.rand(3,3)\n", "for i in range(0,3):\n", " for j in range(0,3):\n", " A[i,j]=round(A[i,j]*10)\n", " \n", "print 'A = \\n',A\n", "print 'A transpose is:\\n',\n", - "Adash=np.transpose(A)\n", + "Adash=transpose(A)\n", "print \"A' = \\n\",Adash\n", - "if np.equal(Adash,A).all():\n", + "if equal(Adash,A).all():\n", " print \"Since, A' = A, A is a symmetric matrix.\"\n", "else:\n", " print \"Since, A' is not equal to A, A is not a symmetric matrix.\"\n", "\n", - "if np.equal(Adash,-A).all():\n", + "if equal(Adash,-A).all():\n", " print \"Since, A' = -A, A is a skew-symmetric matrix.\"\n", "else:\n", " print \"Since, A' is not equal to -A, A is not a skew-symmetric matrix.\"\n", diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_1.ipynb deleted file mode 100755 index 9ad1cbe2..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_1.ipynb +++ /dev/null @@ -1,503 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 6 - Elementary canonical forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 184 Example 6.1" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Standard ordered matrix for Linear operator T on R**2 is:\n", - "A = \n", - "Matrix([[0, -1], [1, 0]])\n", - "The characteristic polynomial for T or A is: Matrix([[x, 1], [-1, x]])\n", - "Since this polynomial has no real roots,T has no characteristic values.\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "print 'Standard ordered matrix for Linear operator T on R**2 is:'\n", - "A = sp.Matrix(([0, -1],[1 ,0]))\n", - "print 'A = \\n',A\n", - "print 'The characteristic polynomial for T or A is:',\n", - "x = sp.Symbol(\"x\")\n", - "p = (x*sp.eye(2)-A)\n", - "print p\n", - "print 'Since this polynomial has no real roots,T has no characteristic values.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 184 Example 6.2" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[3, 1, -1], [2, 2, -1], [2, 2, 0]])\n", - "Characteristic polynomial for A is: x**3 - 5*x**2 + 8*x - 4\n", - "or\n", - "(x-1)(x-2)**2\n", - "The characteristic values of A are:\n", - "[1, 2]\n", - "Now, A-I = \n", - "Matrix([[2, 1, -1], [2, 1, -1], [2, 2, -1]])\n", - "rank of A - I= 2\n", - "So, nullity of T-I = 1\n", - "The vector that spans the null space of T-I = [1, 0, 2]\n", - "Now,A-2I = \n", - "Matrix([[1, 1, -1], [2, 0, -1], [2, 2, -2]])\n", - "rank of A - 2I= 2\n", - "T*alpha = 2*alpha if alpha is a scalar multiple of a2\n", - "a2 = [1, 1, 2]\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "A = sp.Matrix(([3, 1, -1],[ 2, 2, -1],[2, 2, 0]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:',\n", - "x=sp.Symbol('x')\n", - "p = A.charpoly(x)#\n", - "print p.as_expr()\n", - "print 'or'\n", - "print '(x-1)(x-2)**2'\n", - "\n", - "r = sp.solve(p.as_expr())#\n", - "[m,n] = A.shape\n", - "print 'The characteristic values of A are:'\n", - "print r #print round(r)\n", - "B = A-sp.eye(m)\n", - "print 'Now, A-I = \\n',B\n", - "\n", - "print 'rank of A - I= ',B.rank()\n", - "print 'So, nullity of T-I = 1'\n", - "a1 = [1 ,0 ,2]#\n", - "print 'The vector that spans the null space of T-I = ',a1\n", - "B = A-2*sp.eye(m)\n", - "print 'Now,A-2I = \\n',B\n", - "print 'rank of A - 2I= ',B.rank()\n", - "print 'T*alpha = 2*alpha if alpha is a scalar multiple of a2'\n", - "a2 = [1 ,1 ,2]\n", - "print 'a2 = ',a2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 187 Example 6.3" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Standard ordered matrix for Linear operator T on R**3 is:\n", - "A = \n", - "Matrix([[5, -6, -6], [-1, 4, 2], [3, -6, -4]])\n", - "xI - A = \n", - "Matrix([[x - 5, 6, 6], [1, x - 4, -2], [-3, 6, x + 4]])\n", - "Applying row and column transformations:\n", - "C2 = C2 - C3\n", - "=>\n", - "Matrix([[x - 5, 0, 6], [1, x - 2, -2], [-3, -x + 2, x + 4]])\n", - "Taking (x-2) common from C2\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 0, 6], [1, 1, -2], [-3, (-x + 2)/(x - 2), x + 4]])\n", - "R3 = R3 + R2\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 0, 6], [1, 1, -2], [-2, (-x + 2)/(x - 2) + 1, x + 2]])\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 6], [-2, x + 2]])\n", - "=>\n", - " * x - 2\n", - "x**2 - 3*x + 2\n", - "This is the characteristic polynomial\n", - "Now, A - I = Matrix([[4, -6, -6], [-1, 3, 2], [3, -6, -5]])\n", - "And, A- 2I = Matrix([[3, -6, -6], [-1, 2, 2], [3, -6, -6]])\n", - "rank(A-I) = 2\n", - "rank(A-2I) = 2\n", - "W1,W2 be the spaces of characteristic vectors associated with values 1,2\n", - "So by theorem 2, T is diagonalizable\n", - "Null space of (T- I) i.e basis of W1 is spanned by a1 = [[ 3 -1 3]]\n", - "Null space of (T- 2I) i.e. basis of W2 is spanned by vectors x1,x2,x3 such that x1 = 2x1 + 2x3\n", - "One example :\n", - "a2 = [[2 1 0]]\n", - "a3 = [[2 0 1]]\n", - "The diagonal matrix is:\n", - "D = [[1 0 0]\n", - " [0 2 0]\n", - " [0 0 2]]\n", - "The standard basis matrix is denoted as:\n", - "P = [[ 3 2 2]\n", - " [-1 1 0]\n", - " [ 3 0 1]]\n", - "AP = Matrix([[3, 4, 4], [-1, 2, 0], [3, 0, 2]])\n", - "PD = [[3 0 0]\n", - " [0 2 0]\n", - " [0 0 2]]\n", - "That is, AP = PD\n", - "=> inverse(P)*A*P = D\n" - ] - } - ], - "source": [ - "import sympy as sp\n", - "import numpy as np\n", - "print 'Standard ordered matrix for Linear operator T on R**3 is:'\n", - "A = sp.Matrix(([5, -6, -6],[ -1, 4, 2],[ 3, -6, -4]))\n", - "print 'A = \\n',A\n", - "print 'xI - A = '\n", - "B = sp.eye(3)\n", - "x = sp.Symbol('x')\n", - "P = x*B - A#\n", - "print P\n", - "\n", - "print 'Applying row and column transformations:'\n", - "print 'C2 = C2 - C3'\n", - "P[:,1] = P[:,1] - P[:,2]\n", - "print '=>'\n", - "print P\n", - "print 'Taking (x-2) common from C2'\n", - "c = x-2#\n", - "P[:,1] = P[:,1] / (x-2)\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "print 'R3 = R3 + R2'\n", - "P[2,:] = P[2,:] + P[1,:]\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "P = sp.Matrix(([P[0,0], P[0,2]],[P[2,0], P[2,2]]))\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "print '=>'\n", - "print ' * ',c\n", - "print P.det()\n", - "print 'This is the characteristic polynomial'\n", - "\n", - "print 'Now, A - I = ',A-B\n", - "print 'And, A- 2I = ',A-2*B\n", - "print 'rank(A-I) = ',np.rank(A-B)\n", - "\n", - "print 'rank(A-2I) = ',np.rank(A-2*B)\n", - "print 'W1,W2 be the spaces of characteristic vectors associated with values 1,2'\n", - "print 'So by theorem 2, T is diagonalizable'\n", - "a1 = np.array([[3, -1 ,3]])\n", - "a2 = np.array([[2, 1, 0]])\n", - "a3 = np.array([[2, 0, 1]])\n", - "print 'Null space of (T- I) i.e basis of W1 is spanned by a1 = ',a1\n", - "print 'Null space of (T- 2I) i.e. basis of W2 is spanned by vectors x1,x2,x3 such that x1 = 2x1 + 2x3'\n", - "print 'One example :'\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'The diagonal matrix is:'\n", - "D = np.array([[1 ,0 ,0 ],[0, 2, 0],[0, 0, 2]])\n", - "print 'D = ',D\n", - "print 'The standard basis matrix is denoted as:'\n", - "P = np.transpose(np.vstack([a1,a2,a3]))\n", - "print 'P = ',P\n", - "print 'AP = ',A*P\n", - "print 'PD = ',P*D\n", - "print 'That is, AP = PD'\n", - "print '=> inverse(P)*A*P = D'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 193 Example 6.4" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 5 -6 -6]\n", - " [-1 4 2]\n", - " [ 3 -6 -4]]\n", - "Characteristic polynomial of A is:\n", - "f = (x-1)(x-2)**2\n", - "i.e., f = (x - 2)**2*(x - 1)\n", - "(A-I)(A-2I) = Matrix([[0, 0, 0], [0, 0, 0], [0, 0, 0]])\n", - "Since, (A-I)(A-2I) = 0. So, Minimal polynomial for above is:\n", - "p = (x - 2)*(x - 1)\n", - "---------------------------------------\n", - "A = \n", - "[[ 3 1 -1]\n", - " [ 2 2 -1]\n", - " [ 2 2 0]]\n", - "Characteristic polynomial of A is:\n", - "f = (x-1)(x-2)**2\n", - "i.e., f = (x - 2)**2*(x - 1)\n", - "(A-I)(A-2I) = Matrix([[2, 0, -1], [2, 0, -1], [4, 0, -2]])\n", - "Since, (A-I)(A-2I) is not equal to 0. T is not diagonalizable. So, Minimal polynomial cannot be p.\n", - "---------------------------------------\n", - "A = \n", - "[[ 0 -1]\n", - " [ 1 0]]\n", - "Characteristic polynomial of A is:\n", - "f = x**2 + 1\n", - "A**2 + I = Matrix([[1, 1], [1, 1]])\n", - "Since, A**2 + I = 0, so minimal polynomial is\n", - "p = x**2 + 1\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "\n", - "x = sp.Symbol(\"x\")\n", - "A = np.array([[5, -6, -6],[ -1, 4 ,2],[ 3, -6, -4]]) #Matrix given in Example 3\n", - "print 'A = \\n',A\n", - "f = (x-1)*(x-2)**2# \n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = (x-1)(x-2)**2'\n", - "print 'i.e., f = ',f\n", - "p = (x-1)*(x-2)#\n", - "print '(A-I)(A-2I) = ',(A-sp.eye(3))*(A-2 * sp.eye(3))\n", - "print 'Since, (A-I)(A-2I) = 0. So, Minimal polynomial for above is:'\n", - "print 'p = ',p\n", - "print '---------------------------------------'\n", - "\n", - "A = np.array([[3, 1 ,-1],[ 2, 2 ,-1],[2, 2, 0]]) #Matrix given in Example 2\n", - "print 'A = \\n',A\n", - "f = (x-1)*(x-2)**2# \n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = (x-1)(x-2)**2'\n", - "print 'i.e., f = ',f\n", - "print '(A-I)(A-2I) = ',(A-sp.eye(3))*(A-2 * sp.eye(3))\n", - "print 'Since, (A-I)(A-2I) is not equal to 0. T is not diagonalizable. So, Minimal polynomial cannot be p.'\n", - "print '---------------------------------------'\n", - "A = np.array([[0, -1],[1, 0]])\n", - "print 'A = \\n',A\n", - "f = x**2 + 1#\n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = ',f\n", - "print 'A**2 + I = ',A**2 + sp.eye(2)\n", - "print 'Since, A**2 + I = 0, so minimal polynomial is'\n", - "p = x**2 + 1\n", - "print 'p = ',p" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 197 Example 6.5" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "Computing powers on A:\n", - "A**2 = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "A**3 = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "if p = x**3 - 4x, then\n", - "p(A) = [[ 0 -3 0 -3]\n", - " [-3 0 -3 0]\n", - " [ 0 -3 0 -3]\n", - " [-3 0 -3 0]]\n", - "Minimal polynomial for A is: x**3 - 4*x\n", - "Characteristic values for A are: [-2, 0, 2]\n", - "Rank(A) = 2\n", - "So, from theorem 2, characteristic polynomial for A is: x**4 - 4*x**2\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "A = np.array([[0, 1, 0, 1],[1, 0 ,1 ,0],[0, 1, 0, 1],[1, 0, 1, 0]])\n", - "print 'A = \\n',A\n", - "print 'Computing powers on A:'\n", - "print 'A**2 = \\n',A*A\n", - "print 'A**3 = \\n',A*A*A\n", - "def p(x):\n", - " pp = x**3 - 4*x\n", - " return pp\n", - "print 'if p = x**3 - 4x, then'\n", - "print 'p(A) = ',p(A)\n", - "x = sp.Symbol(\"x\")\n", - "f = x**3 - 4*x\n", - "print 'Minimal polynomial for A is: ',f\n", - "print 'Characteristic values for A are:',sp.solve(f,x)\n", - "print 'Rank(A) = ',np.rank(A)\n", - "print 'So, from theorem 2, characteristic polynomial for A is:',sp.Matrix(A).charpoly(x).as_expr()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 210 Example 6.12" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 9. 1. 3.]\n", - " [ 10. 1. 3.]\n", - " [ 10. 5. 1.]]\n", - "A transpose is:\n", - "A' = \n", - "[[ 9. 10. 10.]\n", - " [ 1. 1. 5.]\n", - " [ 3. 3. 1.]]\n", - "Since, A' is not equal to A, A is not a symmetric matrix.\n", - "Since, A' is not equal to -A, A is not a skew-symmetric matrix.\n", - "A can be expressed as sum of A1 and A2\n", - "i.e., A = A1 + A2\n", - "A1 = \n", - "[[ 9. 5.5 6.5]\n", - " [ 5.5 1. 4. ]\n", - " [ 6.5 4. 1. ]]\n", - "A2 = \n", - "[[ 0. -4.5 -3.5]\n", - " [ 4.5 0. -1. ]\n", - " [ 3.5 1. 0. ]]\n", - "A1 + A2 = \n", - "[[ 9. 1. 3.]\n", - " [ 10. 1. 3.]\n", - " [ 10. 5. 1.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "A = np.random.rand(3,3)\n", - "for i in range(0,3):\n", - " for j in range(0,3):\n", - " A[i,j]=round(A[i,j]*10)\n", - " \n", - "print 'A = \\n',A\n", - "print 'A transpose is:\\n',\n", - "Adash=np.transpose(A)\n", - "print \"A' = \\n\",Adash\n", - "if np.equal(Adash,A).all():\n", - " print \"Since, A' = A, A is a symmetric matrix.\"\n", - "else:\n", - " print \"Since, A' is not equal to A, A is not a symmetric matrix.\"\n", - "\n", - "if np.equal(Adash,-A).all():\n", - " print \"Since, A' = -A, A is a skew-symmetric matrix.\"\n", - "else:\n", - " print \"Since, A' is not equal to -A, A is not a skew-symmetric matrix.\"\n", - "\n", - "A1 = 1./2*(A + Adash)\n", - "A2 = 1./2*(A - Adash)\n", - "print 'A can be expressed as sum of A1 and A2'\n", - "print 'i.e., A = A1 + A2'\n", - "print 'A1 = \\n',A1\n", - "print 'A2 = \\n',A2\n", - "print 'A1 + A2 = \\n',A1 + A2" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_Vet62xI.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_Vet62xI.ipynb deleted file mode 100644 index 5499419a..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6_Vet62xI.ipynb +++ /dev/null @@ -1,503 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 6 - Elementary canonical forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 184 Example 6.1" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Standard ordered matrix for Linear operator T on R**2 is:\n", - "A = \n", - "Matrix([[0, -1], [1, 0]])\n", - "The characteristic polynomial for T or A is: Matrix([[x, 1], [-1, x]])\n", - "Since this polynomial has no real roots,T has no characteristic values.\n" - ] - } - ], - "source": [ - "from sympy import Symbol,Matrix,eye\n", - "print 'Standard ordered matrix for Linear operator T on R**2 is:'\n", - "A = Matrix(([0, -1],[1 ,0]))\n", - "print 'A = \\n',A\n", - "print 'The characteristic polynomial for T or A is:',\n", - "x = Symbol(\"x\")\n", - "p = (x*eye(2)-A)\n", - "print p\n", - "print 'Since this polynomial has no real roots,T has no characteristic values.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 184 Example 6.2" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[3, 1, -1], [2, 2, -1], [2, 2, 0]])\n", - "Characteristic polynomial for A is: x**3 - 5*x**2 + 8*x - 4\n", - "or\n", - "(x-1)(x-2)**2\n", - "The characteristic values of A are:\n", - "[1, 2]\n", - "Now, A-I = \n", - "Matrix([[2, 1, -1], [2, 1, -1], [2, 2, -1]])\n", - "rank of A - I= 2\n", - "So, nullity of T-I = 1\n", - "The vector that spans the null space of T-I = [1, 0, 2]\n", - "Now,A-2I = \n", - "Matrix([[1, 1, -1], [2, 0, -1], [2, 2, -2]])\n", - "rank of A - 2I= 2\n", - "T*alpha = 2*alpha if alpha is a scalar multiple of a2\n", - "a2 = [1, 1, 2]\n" - ] - } - ], - "source": [ - "from sympy import Symbol,Matrix,eye,solve\n", - "A = Matrix(([3, 1, -1],[ 2, 2, -1],[2, 2, 0]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:',\n", - "x=Symbol('x')\n", - "p = A.charpoly(x)#\n", - "print p.as_expr()\n", - "print 'or'\n", - "print '(x-1)(x-2)**2'\n", - "\n", - "r = solve(p.as_expr())#\n", - "[m,n] = A.shape\n", - "print 'The characteristic values of A are:'\n", - "print r #print round(r)\n", - "B = A-eye(m)\n", - "print 'Now, A-I = \\n',B\n", - "\n", - "print 'rank of A - I= ',B.rank()\n", - "print 'So, nullity of T-I = 1'\n", - "a1 = [1 ,0 ,2]#\n", - "print 'The vector that spans the null space of T-I = ',a1\n", - "B = A-2*eye(m)\n", - "print 'Now,A-2I = \\n',B\n", - "print 'rank of A - 2I= ',B.rank()\n", - "print 'T*alpha = 2*alpha if alpha is a scalar multiple of a2'\n", - "a2 = [1 ,1 ,2]\n", - "print 'a2 = ',a2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 187 Example 6.3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Standard ordered matrix for Linear operator T on R**3 is:\n", - "A = \n", - "Matrix([[5, -6, -6], [-1, 4, 2], [3, -6, -4]])\n", - "xI - A = \n", - "Matrix([[x - 5, 6, 6], [1, x - 4, -2], [-3, 6, x + 4]])\n", - "Applying row and column transformations:\n", - "C2 = C2 - C3\n", - "=>\n", - "Matrix([[x - 5, 0, 6], [1, x - 2, -2], [-3, -x + 2, x + 4]])\n", - "Taking (x-2) common from C2\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 0, 6], [1, 1, -2], [-3, (-x + 2)/(x - 2), x + 4]])\n", - "R3 = R3 + R2\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 0, 6], [1, 1, -2], [-2, (-x + 2)/(x - 2) + 1, x + 2]])\n", - "=>\n", - " * x - 2\n", - "Matrix([[x - 5, 6], [-2, x + 2]])\n", - "=>\n", - " * x - 2\n", - "x**2 - 3*x + 2\n", - "This is the characteristic polynomial\n", - "Now, A - I = Matrix([[4, -6, -6], [-1, 3, 2], [3, -6, -5]])\n", - "And, A- 2I = Matrix([[3, -6, -6], [-1, 2, 2], [3, -6, -6]])\n", - "rank(A-I) = 2\n", - "rank(A-2I) = 2\n", - "W1,W2 be the spaces of characteristic vectors associated with values 1,2\n", - "So by theorem 2, T is diagonalizable\n", - "Null space of (T- I) i.e basis of W1 is spanned by a1 = [[ 3 -1 3]]\n", - "Null space of (T- 2I) i.e. basis of W2 is spanned by vectors x1,x2,x3 such that x1 = 2x1 + 2x3\n", - "One example :\n", - "a2 = [[2 1 0]]\n", - "a3 = [[2 0 1]]\n", - "The diagonal matrix is:\n", - "D = [[1 0 0]\n", - " [0 2 0]\n", - " [0 0 2]]\n", - "The standard basis matrix is denoted as:\n", - "P = [[ 3 2 2]\n", - " [-1 1 0]\n", - " [ 3 0 1]]\n", - "AP = Matrix([[3, 4, 4], [-1, 2, 0], [3, 0, 2]])\n", - "PD = [[3 0 0]\n", - " [0 2 0]\n", - " [0 0 2]]\n", - "That is, AP = PD\n", - "=> inverse(P)*A*P = D\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,vstack,rank\n", - "from sympy import Symbol,Matrix,eye\n", - "print 'Standard ordered matrix for Linear operator T on R**3 is:'\n", - "A = Matrix(([5, -6, -6],[ -1, 4, 2],[ 3, -6, -4]))\n", - "print 'A = \\n',A\n", - "print 'xI - A = '\n", - "B = eye(3)\n", - "x = Symbol('x')\n", - "P = x*B - A#\n", - "print P\n", - "\n", - "print 'Applying row and column transformations:'\n", - "print 'C2 = C2 - C3'\n", - "P[:,1] = P[:,1] - P[:,2]\n", - "print '=>'\n", - "print P\n", - "print 'Taking (x-2) common from C2'\n", - "c = x-2#\n", - "P[:,1] = P[:,1] / (x-2)\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "print 'R3 = R3 + R2'\n", - "P[2,:] = P[2,:] + P[1,:]\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "P = Matrix(([P[0,0], P[0,2]],[P[2,0], P[2,2]]))\n", - "print '=>'\n", - "print ' * ', c\n", - "print P\n", - "print '=>'\n", - "print ' * ',c\n", - "print P.det()\n", - "print 'This is the characteristic polynomial'\n", - "\n", - "print 'Now, A - I = ',A-B\n", - "print 'And, A- 2I = ',A-2*B\n", - "print 'rank(A-I) = ',rank(A-B)\n", - "\n", - "print 'rank(A-2I) = ',rank(A-2*B)\n", - "print 'W1,W2 be the spaces of characteristic vectors associated with values 1,2'\n", - "print 'So by theorem 2, T is diagonalizable'\n", - "a1 = array([[3, -1 ,3]])\n", - "a2 = array([[2, 1, 0]])\n", - "a3 = array([[2, 0, 1]])\n", - "print 'Null space of (T- I) i.e basis of W1 is spanned by a1 = ',a1\n", - "print 'Null space of (T- 2I) i.e. basis of W2 is spanned by vectors x1,x2,x3 such that x1 = 2x1 + 2x3'\n", - "print 'One example :'\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "print 'The diagonal matrix is:'\n", - "D = array([[1 ,0 ,0 ],[0, 2, 0],[0, 0, 2]])\n", - "print 'D = ',D\n", - "print 'The standard basis matrix is denoted as:'\n", - "P = transpose(vstack([a1,a2,a3]))\n", - "print 'P = ',P\n", - "print 'AP = ',A*P\n", - "print 'PD = ',P*D\n", - "print 'That is, AP = PD'\n", - "print '=> inverse(P)*A*P = D'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 193 Example 6.4" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 5 -6 -6]\n", - " [-1 4 2]\n", - " [ 3 -6 -4]]\n", - "Characteristic polynomial of A is:\n", - "f = (x-1)(x-2)**2\n", - "i.e., f = (x - 2)**2*(x - 1)\n", - "(A-I)(A-2I) = Matrix([[0, 0, 0], [0, 0, 0], [0, 0, 0]])\n", - "Since, (A-I)(A-2I) = 0. So, Minimal polynomial for above is:\n", - "p = (x - 2)*(x - 1)\n", - "---------------------------------------\n", - "A = \n", - "[[ 3 1 -1]\n", - " [ 2 2 -1]\n", - " [ 2 2 0]]\n", - "Characteristic polynomial of A is:\n", - "f = (x-1)(x-2)**2\n", - "i.e., f = (x - 2)**2*(x - 1)\n", - "(A-I)(A-2I) = Matrix([[2, 0, -1], [2, 0, -1], [4, 0, -2]])\n", - "Since, (A-I)(A-2I) is not equal to 0. T is not diagonalizable. So, Minimal polynomial cannot be p.\n", - "---------------------------------------\n", - "A = \n", - "[[ 0 -1]\n", - " [ 1 0]]\n", - "Characteristic polynomial of A is:\n", - "f = x**2 + 1\n", - "A**2 + I = Matrix([[1, 1], [1, 1]])\n", - "Since, A**2 + I = 0, so minimal polynomial is\n", - "p = x**2 + 1\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,vstack,rank\n", - "from sympy import Symbol,Matrix,eye\n", - "\n", - "x = Symbol(\"x\")\n", - "A = array([[5, -6, -6],[ -1, 4 ,2],[ 3, -6, -4]]) #Matrix given in Example 3\n", - "print 'A = \\n',A\n", - "f = (x-1)*(x-2)**2# \n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = (x-1)(x-2)**2'\n", - "print 'i.e., f = ',f\n", - "p = (x-1)*(x-2)#\n", - "print '(A-I)(A-2I) = ',(A-eye(3))*(A-2 * eye(3))\n", - "print 'Since, (A-I)(A-2I) = 0. So, Minimal polynomial for above is:'\n", - "print 'p = ',p\n", - "print '---------------------------------------'\n", - "\n", - "A = array([[3, 1 ,-1],[ 2, 2 ,-1],[2, 2, 0]]) #Matrix given in Example 2\n", - "print 'A = \\n',A\n", - "f = (x-1)*(x-2)**2# \n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = (x-1)(x-2)**2'\n", - "print 'i.e., f = ',f\n", - "print '(A-I)(A-2I) = ',(A-eye(3))*(A-2 * eye(3))\n", - "print 'Since, (A-I)(A-2I) is not equal to 0. T is not diagonalizable. So, Minimal polynomial cannot be p.'\n", - "print '---------------------------------------'\n", - "A = array([[0, -1],[1, 0]])\n", - "print 'A = \\n',A\n", - "f = x**2 + 1#\n", - "print 'Characteristic polynomial of A is:'\n", - "print 'f = ',f\n", - "print 'A**2 + I = ',A**2 + eye(2)\n", - "print 'Since, A**2 + I = 0, so minimal polynomial is'\n", - "p = x**2 + 1\n", - "print 'p = ',p" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 197 Example 6.5" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " A = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "Computing powers on A:\n", - "A**2 = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "A**3 = \n", - "[[0 1 0 1]\n", - " [1 0 1 0]\n", - " [0 1 0 1]\n", - " [1 0 1 0]]\n", - "if p = x**3 - 4x, then\n", - "p(A) = [[ 0 -3 0 -3]\n", - " [-3 0 -3 0]\n", - " [ 0 -3 0 -3]\n", - " [-3 0 -3 0]]\n", - "Minimal polynomial for A is: x**3 - 4*x\n", - "Characteristic values for A are: [-2, 0, 2]\n", - "Rank(A) = 2\n", - "So, from theorem 2, characteristic polynomial for A is: x**4 - 4*x**2\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,vstack,rank\n", - "from sympy import Symbol,Matrix,eye,solve\n", - "A = array([[0, 1, 0, 1],[1, 0 ,1 ,0],[0, 1, 0, 1],[1, 0, 1, 0]])\n", - "print 'A = \\n',A\n", - "print 'Computing powers on A:'\n", - "print 'A**2 = \\n',A*A\n", - "print 'A**3 = \\n',A*A*A\n", - "def p(x):\n", - " pp = x**3 - 4*x\n", - " return pp\n", - "print 'if p = x**3 - 4x, then'\n", - "print 'p(A) = ',p(A)\n", - "x = Symbol(\"x\")\n", - "f = x**3 - 4*x\n", - "print 'Minimal polynomial for A is: ',f\n", - "print 'Characteristic values for A are:',solve(f,x)\n", - "print 'Rank(A) = ',rank(A)\n", - "print 'So, from theorem 2, characteristic polynomial for A is:',Matrix(A).charpoly(x).as_expr()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 210 Example 6.12" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "[[ 9. 3. 3.]\n", - " [ 7. 4. 4.]\n", - " [ 1. 1. 2.]]\n", - "A transpose is:\n", - "A' = \n", - "[[ 9. 7. 1.]\n", - " [ 3. 4. 1.]\n", - " [ 3. 4. 2.]]\n", - "Since, A' is not equal to A, A is not a symmetric matrix.\n", - "Since, A' is not equal to -A, A is not a skew-symmetric matrix.\n", - "A can be expressed as sum of A1 and A2\n", - "i.e., A = A1 + A2\n", - "A1 = \n", - "[[ 9. 5. 2. ]\n", - " [ 5. 4. 2.5]\n", - " [ 2. 2.5 2. ]]\n", - "A2 = \n", - "[[ 0. -2. 1. ]\n", - " [ 2. 0. 1.5]\n", - " [-1. -1.5 0. ]]\n", - "A1 + A2 = \n", - "[[ 9. 3. 3.]\n", - " [ 7. 4. 4.]\n", - " [ 1. 1. 2.]]\n" - ] - } - ], - "source": [ - "from numpy import array,transpose,random,equal\n", - "\n", - "A = random.rand(3,3)\n", - "for i in range(0,3):\n", - " for j in range(0,3):\n", - " A[i,j]=round(A[i,j]*10)\n", - " \n", - "print 'A = \\n',A\n", - "print 'A transpose is:\\n',\n", - "Adash=transpose(A)\n", - "print \"A' = \\n\",Adash\n", - "if equal(Adash,A).all():\n", - " print \"Since, A' = A, A is a symmetric matrix.\"\n", - "else:\n", - " print \"Since, A' is not equal to A, A is not a symmetric matrix.\"\n", - "\n", - "if equal(Adash,-A).all():\n", - " print \"Since, A' = -A, A is a skew-symmetric matrix.\"\n", - "else:\n", - " print \"Since, A' is not equal to -A, A is not a skew-symmetric matrix.\"\n", - "\n", - "A1 = 1./2*(A + Adash)\n", - "A2 = 1./2*(A - Adash)\n", - "print 'A can be expressed as sum of A1 and A2'\n", - "print 'i.e., A = A1 + A2'\n", - "print 'A1 = \\n',A1\n", - "print 'A2 = \\n',A2\n", - "print 'A1 + A2 = \\n',A1 + A2" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb index 8aae5981..a6ddec49 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -50,11 +50,11 @@ } ], "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "A = sp.Matrix(([5, -6, -6],[-1, 4 ,2],[3, -6, -4]))\n", + "from numpy import array\n", + "from sympy import Symbol,Matrix\n", + "A = Matrix(([5, -6, -6],[-1, 4 ,2],[3, -6, -4]))\n", "print 'A = \\n',A\n", - "x=sp.Symbol('x')\n", + "x=Symbol('x')\n", "f = A.charpoly(x).as_expr()\n", "print 'Characteristic polynomial for linear operator T on R**3 will be:'\n", "print 'f = ',f\n", @@ -72,7 +72,7 @@ "print 'pp2 = ',p*p2\n", "print 'i.e., pp2 = f'\n", "print 'Therefore, A is similar to B'\n", - "B = np.array([[0, -2, 0],[1, 3, 0],[0, 0 ,2]])\n", + "B = array([[0, -2, 0],[1, 3, 0],[0, 0 ,2]])\n", "print 'B = \\n',B\n", "print 'Thus, we can see thet Matrix of T in ordered basis is B'" ] @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -121,6 +121,9 @@ } ], "source": [ + "from numpy import array\n", + "from sympy import Symbol,Matrix\n", + "\n", "print 'A = '\n", "print '2 0 0'\n", "print 'a 2 0'\n", @@ -128,20 +131,20 @@ "a = 1#\n", "b = 0#\n", "c = 0#\n", - "A = sp.Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", + "A = Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", "print 'A = \\n',A\n", "print 'Characteristic polynomial for A is:'\n", - "x=sp.Symbol('x')\n", + "x=Symbol('x')\n", "print 'p = ',A.charpoly(x).as_expr()\n", "print 'In this case, minimal polynomial is same as characteristic polynomial.'\n", "print '-----------------------------------------'\n", "a = 0#\n", "b = 0#\n", "c = 0#\n", - "A = sp.Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", + "A = Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", "print 'A = \\n',A\n", "print 'Characteristic polynomial for A is:'\n", - "x=sp.Symbol('x')\n", + "x=Symbol('x')\n", "print 'p = ',A.charpoly(x).as_expr()\n", "print 'In this case, minimal polynomial is:',\n", "print '(x-2)(x+1)'\n", @@ -164,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -191,14 +194,16 @@ } ], "source": [ + "from numpy import array\n", + "from sympy import Symbol,Matrix\n", "print 'A = '\n", "print '2 0 0 0'\n", "print '1 2 0 0'\n", "print '0 0 2 0'\n", "print '0 0 a 2'\n", "print 'Considering a = 1'\n", - "A = sp.Matrix(([2, 0 ,0 ,0],[1, 2, 0, 0],[0, 0 ,2 ,0],[0, 0, 1, 2]))\n", - "x=sp.Symbol('x')\n", + "A = Matrix(([2, 0 ,0 ,0],[1, 2, 0, 0],[0, 0 ,2 ,0],[0, 0, 1, 2]))\n", + "x=Symbol('x')\n", "p = A.charpoly(x).as_expr()\n", "print 'Characteristic polynomial for A is:'\n", "print 'p = ',p\n", diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_1.ipynb deleted file mode 100755 index bd958b35..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_1.ipynb +++ /dev/null @@ -1,239 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 7 - The rational and jordan forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 239 Example 7.3" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[5, -6, -6], [-1, 4, 2], [3, -6, -4]])\n", - "Characteristic polynomial for linear operator T on R**3 will be:\n", - "f = x**3 - 5*x**2 + 8*x - 4\n", - "or\n", - "(x-1)(x-2)**2\n", - "The minimal polynomial for T is:\n", - "p = (x - 2)*(x - 1)\n", - "or\n", - "p = (x-1)(x-2)\n", - "So in cyclic decomposition of T, a1 will have p as its T-annihilator.\n", - "Another vector a2 that generate cyclic subspace of dimension 1 will have its T-annihilator as p2.\n", - "p2 = x - 2\n", - "pp2 = (x - 2)**2*(x - 1)\n", - "i.e., pp2 = f\n", - "Therefore, A is similar to B\n", - "B = \n", - "[[ 0 -2 0]\n", - " [ 1 3 0]\n", - " [ 0 0 2]]\n", - "Thus, we can see thet Matrix of T in ordered basis is B\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "A = sp.Matrix(([5, -6, -6],[-1, 4 ,2],[3, -6, -4]))\n", - "print 'A = \\n',A\n", - "x=sp.Symbol('x')\n", - "f = A.charpoly(x).as_expr()\n", - "print 'Characteristic polynomial for linear operator T on R**3 will be:'\n", - "print 'f = ',f\n", - "print 'or'\n", - "print '(x-1)(x-2)**2'\n", - "print 'The minimal polynomial for T is:'\n", - "p = (x-1)*(x-2)#\n", - "print 'p = ',p\n", - "print 'or'\n", - "print 'p = (x-1)(x-2)'\n", - "print 'So in cyclic decomposition of T, a1 will have p as its T-annihilator.'\n", - "print 'Another vector a2 that generate cyclic subspace of dimension 1 will have its T-annihilator as p2.'\n", - "p2 = x-2#\n", - "print 'p2 = ',p2\n", - "print 'pp2 = ',p*p2\n", - "print 'i.e., pp2 = f'\n", - "print 'Therefore, A is similar to B'\n", - "B = np.array([[0, -2, 0],[1, 3, 0],[0, 0 ,2]])\n", - "print 'B = \\n',B\n", - "print 'Thus, we can see thet Matrix of T in ordered basis is B'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 247 Example 7.6" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "2 0 0\n", - "a 2 0\n", - "b c -1\n", - "A = \n", - "Matrix([[2, 0, 0], [1, 2, 0], [0, 0, -1]])\n", - "Characteristic polynomial for A is:\n", - "p = x**3 - 3*x**2 + 4\n", - "In this case, minimal polynomial is same as characteristic polynomial.\n", - "-----------------------------------------\n", - "A = \n", - "Matrix([[2, 0, 0], [0, 2, 0], [0, 0, -1]])\n", - "Characteristic polynomial for A is:\n", - "p = x**3 - 3*x**2 + 4\n", - "In this case, minimal polynomial is: (x-2)(x+1)\n", - "or\n", - "(x - 2)*(x + 1)\n", - "(A-2I)(A+I) = \n", - "0 0 0\n", - "3a 0 0\n", - "ac 0 0\n", - "if a = 0, A is similar to diagonal matrix.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "print 'A = '\n", - "print '2 0 0'\n", - "print 'a 2 0'\n", - "print 'b c -1'\n", - "a = 1#\n", - "b = 0#\n", - "c = 0#\n", - "A = sp.Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:'\n", - "x=sp.Symbol('x')\n", - "print 'p = ',A.charpoly(x).as_expr()\n", - "print 'In this case, minimal polynomial is same as characteristic polynomial.'\n", - "print '-----------------------------------------'\n", - "a = 0#\n", - "b = 0#\n", - "c = 0#\n", - "A = sp.Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:'\n", - "x=sp.Symbol('x')\n", - "print 'p = ',A.charpoly(x).as_expr()\n", - "print 'In this case, minimal polynomial is:',\n", - "print '(x-2)(x+1)'\n", - "print 'or'\n", - "s = (x-2)*(x+1)#\n", - "print s\n", - "print '(A-2I)(A+I) = '\n", - "print '0 0 0'\n", - "print '3a 0 0'\n", - "print 'ac 0 0'\n", - "print 'if a = 0, A is similar to diagonal matrix.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 247 Example 7.7" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "2 0 0 0\n", - "1 2 0 0\n", - "0 0 2 0\n", - "0 0 a 2\n", - "Considering a = 1\n", - "Characteristic polynomial for A is:\n", - "p = x**4 - 8*x**3 + 24*x**2 - 32*x + 16\n", - "or\n", - "(x-2)**4\n", - "Minimal polynomial for A =\n", - "(x-2)**2\n", - "For a = 0 and a = 1, characteristic and minimal polynomial are same.\n", - "But for a=0, the solution space of (A - 2I) has 3 dimension whereas for a = 1, it has 2 dimension. \n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import sympy as sp\n", - "print 'A = '\n", - "print '2 0 0 0'\n", - "print '1 2 0 0'\n", - "print '0 0 2 0'\n", - "print '0 0 a 2'\n", - "print 'Considering a = 1'\n", - "A = sp.Matrix(([2, 0 ,0 ,0],[1, 2, 0, 0],[0, 0 ,2 ,0],[0, 0, 1, 2]))\n", - "x=sp.Symbol('x')\n", - "p = A.charpoly(x).as_expr()\n", - "print 'Characteristic polynomial for A is:'\n", - "print 'p = ',p\n", - "print 'or'\n", - "print '(x-2)**4'\n", - "print 'Minimal polynomial for A ='\n", - "print '(x-2)**2'\n", - "print 'For a = 0 and a = 1, characteristic and minimal polynomial are same.'\n", - "print 'But for a=0, the solution space of (A - 2I) has 3 dimension whereas for a = 1, it has 2 dimension. '" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_TclM939.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_TclM939.ipynb deleted file mode 100644 index a6ddec49..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7_TclM939.ipynb +++ /dev/null @@ -1,240 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 7 - The rational and jordan forms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 239 Example 7.3" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "Matrix([[5, -6, -6], [-1, 4, 2], [3, -6, -4]])\n", - "Characteristic polynomial for linear operator T on R**3 will be:\n", - "f = x**3 - 5*x**2 + 8*x - 4\n", - "or\n", - "(x-1)(x-2)**2\n", - "The minimal polynomial for T is:\n", - "p = (x - 2)*(x - 1)\n", - "or\n", - "p = (x-1)(x-2)\n", - "So in cyclic decomposition of T, a1 will have p as its T-annihilator.\n", - "Another vector a2 that generate cyclic subspace of dimension 1 will have its T-annihilator as p2.\n", - "p2 = x - 2\n", - "pp2 = (x - 2)**2*(x - 1)\n", - "i.e., pp2 = f\n", - "Therefore, A is similar to B\n", - "B = \n", - "[[ 0 -2 0]\n", - " [ 1 3 0]\n", - " [ 0 0 2]]\n", - "Thus, we can see thet Matrix of T in ordered basis is B\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "from sympy import Symbol,Matrix\n", - "A = Matrix(([5, -6, -6],[-1, 4 ,2],[3, -6, -4]))\n", - "print 'A = \\n',A\n", - "x=Symbol('x')\n", - "f = A.charpoly(x).as_expr()\n", - "print 'Characteristic polynomial for linear operator T on R**3 will be:'\n", - "print 'f = ',f\n", - "print 'or'\n", - "print '(x-1)(x-2)**2'\n", - "print 'The minimal polynomial for T is:'\n", - "p = (x-1)*(x-2)#\n", - "print 'p = ',p\n", - "print 'or'\n", - "print 'p = (x-1)(x-2)'\n", - "print 'So in cyclic decomposition of T, a1 will have p as its T-annihilator.'\n", - "print 'Another vector a2 that generate cyclic subspace of dimension 1 will have its T-annihilator as p2.'\n", - "p2 = x-2#\n", - "print 'p2 = ',p2\n", - "print 'pp2 = ',p*p2\n", - "print 'i.e., pp2 = f'\n", - "print 'Therefore, A is similar to B'\n", - "B = array([[0, -2, 0],[1, 3, 0],[0, 0 ,2]])\n", - "print 'B = \\n',B\n", - "print 'Thus, we can see thet Matrix of T in ordered basis is B'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 247 Example 7.6" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "2 0 0\n", - "a 2 0\n", - "b c -1\n", - "A = \n", - "Matrix([[2, 0, 0], [1, 2, 0], [0, 0, -1]])\n", - "Characteristic polynomial for A is:\n", - "p = x**3 - 3*x**2 + 4\n", - "In this case, minimal polynomial is same as characteristic polynomial.\n", - "-----------------------------------------\n", - "A = \n", - "Matrix([[2, 0, 0], [0, 2, 0], [0, 0, -1]])\n", - "Characteristic polynomial for A is:\n", - "p = x**3 - 3*x**2 + 4\n", - "In this case, minimal polynomial is: (x-2)(x+1)\n", - "or\n", - "(x - 2)*(x + 1)\n", - "(A-2I)(A+I) = \n", - "0 0 0\n", - "3a 0 0\n", - "ac 0 0\n", - "if a = 0, A is similar to diagonal matrix.\n" - ] - } - ], - "source": [ - "from numpy import array\n", - "from sympy import Symbol,Matrix\n", - "\n", - "print 'A = '\n", - "print '2 0 0'\n", - "print 'a 2 0'\n", - "print 'b c -1'\n", - "a = 1#\n", - "b = 0#\n", - "c = 0#\n", - "A = Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:'\n", - "x=Symbol('x')\n", - "print 'p = ',A.charpoly(x).as_expr()\n", - "print 'In this case, minimal polynomial is same as characteristic polynomial.'\n", - "print '-----------------------------------------'\n", - "a = 0#\n", - "b = 0#\n", - "c = 0#\n", - "A = Matrix(([2, 0, 0],[a, 2, 0],[b, c, -1]))\n", - "print 'A = \\n',A\n", - "print 'Characteristic polynomial for A is:'\n", - "x=Symbol('x')\n", - "print 'p = ',A.charpoly(x).as_expr()\n", - "print 'In this case, minimal polynomial is:',\n", - "print '(x-2)(x+1)'\n", - "print 'or'\n", - "s = (x-2)*(x+1)#\n", - "print s\n", - "print '(A-2I)(A+I) = '\n", - "print '0 0 0'\n", - "print '3a 0 0'\n", - "print 'ac 0 0'\n", - "print 'if a = 0, A is similar to diagonal matrix.'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 247 Example 7.7" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = \n", - "2 0 0 0\n", - "1 2 0 0\n", - "0 0 2 0\n", - "0 0 a 2\n", - "Considering a = 1\n", - "Characteristic polynomial for A is:\n", - "p = x**4 - 8*x**3 + 24*x**2 - 32*x + 16\n", - "or\n", - "(x-2)**4\n", - "Minimal polynomial for A =\n", - "(x-2)**2\n", - "For a = 0 and a = 1, characteristic and minimal polynomial are same.\n", - "But for a=0, the solution space of (A - 2I) has 3 dimension whereas for a = 1, it has 2 dimension. \n" - ] - } - ], - "source": [ - "from numpy import array\n", - "from sympy import Symbol,Matrix\n", - "print 'A = '\n", - "print '2 0 0 0'\n", - "print '1 2 0 0'\n", - "print '0 0 2 0'\n", - "print '0 0 a 2'\n", - "print 'Considering a = 1'\n", - "A = Matrix(([2, 0 ,0 ,0],[1, 2, 0, 0],[0, 0 ,2 ,0],[0, 0, 1, 2]))\n", - "x=Symbol('x')\n", - "p = A.charpoly(x).as_expr()\n", - "print 'Characteristic polynomial for A is:'\n", - "print 'p = ',p\n", - "print 'or'\n", - "print '(x-2)**4'\n", - "print 'Minimal polynomial for A ='\n", - "print '(x-2)**2'\n", - "print 'For a = 0 and a = 1, characteristic and minimal polynomial are same.'\n", - "print 'But for a=0, the solution space of (A - 2I) has 3 dimension whereas for a = 1, it has 2 dimension. '" - ] - } - ], - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb index 6f1bfe72..6759a185 100755..100644 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -25,31 +25,30 @@ "name": "stdout", "output_type": "stream", "text": [ - "n = 5\n", - "a = [[ 1. 4. 2. 8. 8.]]\n", - "b = [[ 10. 8. 3. 1. 8.]]\n", + "n = 4\n", + "a = [[ 1. 5. 4. 1.]]\n", + "b = [[ 8. 6. 6. 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" + "[[ 8. 40. 32. 8.]\n", + " [ 6. 30. 24. 6.]\n", + " [ 6. 30. 24. 6.]\n", + " [ 8. 40. 32. 8.]]\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", + "from numpy import array,random,transpose\n", + "n=random.randint(2,9)\n", + "a=random.rand(1,n)\n", + "b=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)" + "print 'Then, (a|b) = \\n\\n',a*transpose(b)" ] }, { @@ -61,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -70,16 +69,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "a = [[ 4. 3.]]\n", - "b = [[ 7. 5.]]\n", - "Then, a|b = 47.0\n" + "a = [[ 9. 4.]]\n", + "b = [[ 1. 9.]]\n", + "Then, a|b = 68.0\n" ] } ], "source": [ - "import numpy as np\n", - "a=np.random.rand(1,2)\n", - "b=np.random.rand(1,2)\n", + "from numpy import array,random,transpose\n", + "a=random.rand(1,2)\n", + "b=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", @@ -102,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -112,62 +111,62 @@ "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", + "x1 = 0.248003219206\n", + "x2 = 0.968759208092\n", "B = \n", - "[[ 0.38354723 0.92352126 0. ]\n", + "[[ 0.24800322 0.96875921 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", + "a1 = [ 0.24800322 0.96875921 0. ]\n", + "a2 = [-0.2402554 0.0615056 0. ]\n", "a3 = [0 0 1]\n", "U = \n", - "[[[ 0.38354723 0.92352126 0. ]]\n", + "[[[ 0.24800322 0.96875921 0. ]]\n", "\n", - " [[-0.92352126 0.38354723 0. ]]\n", + " [[-0.96875921 0.24800322 0. ]]\n", "\n", " [[ 0. 0. 1. ]]]\n", "M = \n", "[[ 1. 0. 0. ]\n", - " [-2.40784236 2.60724085 0. ]\n", + " [-3.90623642 4.03220572 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", + "inverse(M) * U = [[[ 0.24800322 -0. -0. ]\n", + " [ 0.2402554 0.2402554 0. ]\n", + " [ 0. 0. 0. ]]\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", + " [[-0.96875921 -0. -0. ]\n", + " [-0.9384944 0.0615056 0. ]\n", + " [-0. 0. 0. ]]\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", + " [[ 0. -0. -0. ]\n", + " [ 0. 0. 0. ]\n", + " [ 0. 0. 1. ]]]\n", "So, B = inverse(M) * U\n" ] } ], "source": [ - "import numpy as np\n", + "from numpy import array,random,transpose,linalg,sqrt\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", + "x1 = random.rand()\n", + "x2 = 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", + "B = 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", + "a1 = array([x1, x2, 0])\n", + "a2 = array([0 ,1 ,0]) - x2 * array([x1 ,x2 ,0])\n", + "a3 = 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", + "U = 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", + "M = 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 'inverse(M) * U = ',linalg.inv(M) * U\n", "print 'So, B = inverse(M) * U'" ] }, @@ -180,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -189,8 +188,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "(x,y) = [[ 5. 3.]]\n", - "(-y,x) = [-3.0, 5.0]\n", + "(x,y) = [[ 7. 4.]]\n", + "(-y,x) = [-4.0, 7.0]\n", "Inner product of these vectors is:\n", "(x,y)|(-y,x) = 0.0\n", "So, these are orthogonal.\n", @@ -202,16 +201,16 @@ "or\n", "y = 1/2(-3 - sqrt(13))*x\n", "Hence,\n", - "[[ 5. 3.]]\n", + "[[ 7. 4.]]\n", "is orthogonal to\n", - "[-3.0, 5.0]\n" + "[-4.0, 7.0]\n" ] } ], "source": [ - "import numpy as np\n", + "from numpy import array,random,transpose,linalg,sqrt\n", "#a = round(rand(1,2) * 10)#\n", - "a=np.random.rand(1,2)\n", + "a=random.rand(1,2)\n", "for j in [0,1]:\n", " a[0,j]=round(a[0,j]*10)\n", "\n", @@ -233,7 +232,7 @@ "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", + "if y == (1./2*(-3 + sqrt(13))*x) or (1./2*(-3 - sqrt(13))*x):\n", " print a\n", " print 'is orthogonal to'\n", " print b\n", @@ -252,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -284,19 +283,19 @@ } ], "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", + "from numpy import array,random,transpose,linalg,sqrt\n", + "b1 = array([3, 0, 4])\n", + "b2 = array([-1 ,0 ,7])\n", + "b3 = 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", + "a2 = b2-(transpose((b2*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", + "a3 = b3-(transpose(b3*transpose(b1))/25*b1) - (transpose(b3*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", @@ -326,7 +325,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -335,12 +334,12 @@ "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", + "A = [[ 1.83351494 1.26265003]\n", + " [ 0.46651205 0.76790774]]\n", + "b1 = [ 1.83351494 1.26265003]\n", + "b2 = [ 0.46651205 0.76790774]\n", "Applying the orthogonalization process to b1,b2:\n", - "[1.255981755902444, 1.8125869670307564] a1 = \n", + "[1.8335149394280341, 1.2626500316837608] 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" @@ -348,8 +347,8 @@ } ], "source": [ - "import numpy as np\n", - "A = np.random.rand(2,2)\n", + "from numpy import array,random,transpose,linalg,sqrt\n", + "A = 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", @@ -363,7 +362,7 @@ "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", + "a2 = (linalg.det(A)/(a**2 + b**2))*[-transpose(b), 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", @@ -379,7 +378,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -400,13 +399,13 @@ } ], "source": [ - "import numpy as np\n", - "v = np.array([-10 ,2 ,8])\n", - "u = np.array([3, 12, -1])\n", + "from numpy import array,random,transpose,linalg,sqrt\n", + "v = array([-10 ,2 ,8])\n", + "u = 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", + "a = (transpose(u*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", @@ -423,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -438,7 +437,7 @@ } ], "source": [ - "from sympy.mpmath import quad,cos,sin,pi,sqrt\n", + "from 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", @@ -458,7 +457,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -496,7 +495,7 @@ } ], "source": [ - "import numpy as np\n", + "from numpy import vstack,array,transpose,conj\n", "#Equation given in example 14 is used.\n", "def transform(x,y,z):\n", " x1 = 3*x#\n", @@ -509,10 +508,10 @@ "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", + "A = vstack([t1,t2,t3])#[t1# t2# t3]#\n", "print 'A = 1/154 * ',A\n", "\n", - "A1 = np.transpose(np.conj(A))\n", + "A1 = transpose(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", @@ -528,10 +527,10 @@ "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", + "B = 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", + "B1 = transpose(conj(B))\n", "print 'B* = \\n',B1\n", "print 'Since, B is not equal to B*, B is not the matrix of E*'" ] diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_1.ipynb deleted file mode 100755 index 6f1bfe72..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_1.ipynb +++ /dev/null @@ -1,561 +0,0 @@ -{ - "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 -} diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_O8vLz4s.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_O8vLz4s.ipynb deleted file mode 100644 index 6759a185..00000000 --- a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8_O8vLz4s.ipynb +++ /dev/null @@ -1,560 +0,0 @@ -{ - "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": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "n = 4\n", - "a = [[ 1. 5. 4. 1.]]\n", - "b = [[ 8. 6. 6. 8.]]\n", - "Then, (a|b) = \n", - "\n", - "[[ 8. 40. 32. 8.]\n", - " [ 6. 30. 24. 6.]\n", - " [ 6. 30. 24. 6.]\n", - " [ 8. 40. 32. 8.]]\n" - ] - } - ], - "source": [ - "from numpy import array,random,transpose\n", - "n=random.randint(2,9)\n", - "a=random.rand(1,n)\n", - "b=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*transpose(b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Page 271 Example 8.2" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = [[ 9. 4.]]\n", - "b = [[ 1. 9.]]\n", - "Then, a|b = 68.0\n" - ] - } - ], - "source": [ - "from numpy import array,random,transpose\n", - "a=random.rand(1,2)\n", - "b=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": 3, - "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.248003219206\n", - "x2 = 0.968759208092\n", - "B = \n", - "[[ 0.24800322 0.96875921 0. ]\n", - " [ 0. 1. 0. ]\n", - " [ 0. 0. 1. ]]\n", - "Applying Gram-Schmidt process to B:\n", - "a1 = [ 0.24800322 0.96875921 0. ]\n", - "a2 = [-0.2402554 0.0615056 0. ]\n", - "a3 = [0 0 1]\n", - "U = \n", - "[[[ 0.24800322 0.96875921 0. ]]\n", - "\n", - " [[-0.96875921 0.24800322 0. ]]\n", - "\n", - " [[ 0. 0. 1. ]]]\n", - "M = \n", - "[[ 1. 0. 0. ]\n", - " [-3.90623642 4.03220572 0. ]\n", - " [ 0. 0. 1. ]]\n", - "inverse(M) * U = [[[ 0.24800322 -0. -0. ]\n", - " [ 0.2402554 0.2402554 0. ]\n", - " [ 0. 0. 0. ]]\n", - "\n", - " [[-0.96875921 -0. -0. ]\n", - " [-0.9384944 0.0615056 0. ]\n", - " [-0. 0. 0. ]]\n", - "\n", - " [[ 0. -0. -0. ]\n", - " [ 0. 0. 0. ]\n", - " [ 0. 0. 1. ]]]\n", - "So, B = inverse(M) * U\n" - ] - } - ], - "source": [ - "from numpy import array,random,transpose,linalg,sqrt\n", - "print 'x1 and x2 are two real nos. i.e., x1**2 + x2**2 = 1'\n", - "x1 = random.rand()\n", - "x2 = sqrt(1 - x1**2)\n", - "print 'x1 = ',x1\n", - "print 'x2 = ',x2\n", - "B = 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 = array([x1, x2, 0])\n", - "a2 = array([0 ,1 ,0]) - x2 * array([x1 ,x2 ,0])\n", - "a3 = array([0, 0, 1])\n", - "print 'a1 = ',a1\n", - "print 'a2 = ',a2\n", - "print 'a3 = ',a3\n", - "U = array([[a1],[a2/x1],[a3]])\n", - "print 'U = \\n',U\n", - "M = array([[1, 0, 0],[-x2/x1, 1/x1, 0],[0, 0, 1]])\n", - "print 'M = \\n',M\n", - "print 'inverse(M) * U = ',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": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(x,y) = [[ 7. 4.]]\n", - "(-y,x) = [-4.0, 7.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", - "[[ 7. 4.]]\n", - "is orthogonal to\n", - "[-4.0, 7.0]\n" - ] - } - ], - "source": [ - "from numpy import array,random,transpose,linalg,sqrt\n", - "#a = round(rand(1,2) * 10)#\n", - "a=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 + sqrt(13))*x) or (1./2*(-3 - 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": 5, - "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": [ - "from numpy import array,random,transpose,linalg,sqrt\n", - "b1 = array([3, 0, 4])\n", - "b2 = array([-1 ,0 ,7])\n", - "b3 = 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-(transpose((b2*transpose(b1)))/25*b1)\n", - "print 'a2 = ',a2\n", - "a3 = b3-(transpose(b3*transpose(b1))/25*b1) - (transpose(b3*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": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A = [[ 1.83351494 1.26265003]\n", - " [ 0.46651205 0.76790774]]\n", - "b1 = [ 1.83351494 1.26265003]\n", - "b2 = [ 0.46651205 0.76790774]\n", - "Applying the orthogonalization process to b1,b2:\n", - "[1.8335149394280341, 1.2626500316837608] 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": [ - "from numpy import array,random,transpose,linalg,sqrt\n", - "A = 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 = (linalg.det(A)/(a**2 + b**2))*[-transpose(b), 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": 7, - "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": [ - "from numpy import array,random,transpose,linalg,sqrt\n", - "v = array([-10 ,2 ,8])\n", - "u = 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 = (transpose(u*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": 8, - "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 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": 9, - "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": [ - "from numpy import vstack,array,transpose,conj\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 = vstack([t1,t2,t3])#[t1# t2# t3]#\n", - "print 'A = 1/154 * ',A\n", - "\n", - "A1 = transpose(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 = 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 = transpose(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 -} |