diff options
author | Trupti Kini | 2016-06-22 23:30:24 +0600 |
---|---|---|
committer | Trupti Kini | 2016-06-22 23:30:24 +0600 |
commit | c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942 (patch) | |
tree | f340a2fdaea4e2ef1b3d6bcb4ef38b7414b6ab2e /Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb | |
parent | cb31e70cbb51dc799740b24a3d1adac53452d072 (diff) | |
download | Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.tar.gz Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.tar.bz2 Python-Textbook-Companions-c04cc76e83e0c8b993bbbb78cf4f2f2bf7cca942.zip |
Added(A)/Deleted(D) following books
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.png
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.png
A Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.png
A Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.png
Diffstat (limited to 'Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb')
-rw-r--r-- | Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb | 503 |
1 files changed, 503 insertions, 0 deletions
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb new file mode 100644 index 00000000..9ad1cbe2 --- /dev/null +++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb @@ -0,0 +1,503 @@ +{ + "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 +} |