summaryrefslogtreecommitdiff
path: root/Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb
diff options
context:
space:
mode:
authorTrupti Kini2016-09-03 23:30:23 +0600
committerTrupti Kini2016-09-03 23:30:23 +0600
commit5f15ee61029068ad350502ad04768d7cd84e4736 (patch)
treeb43a8aa92365b74d47758af2ebd4222961586c20 /Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb
parentb417454ff6b5f8c2eb90f054723965a8f52e0268 (diff)
downloadPython-Textbook-Companions-5f15ee61029068ad350502ad04768d7cd84e4736.tar.gz
Python-Textbook-Companions-5f15ee61029068ad350502ad04768d7cd84e4736.tar.bz2
Python-Textbook-Companions-5f15ee61029068ad350502ad04768d7cd84e4736.zip
Added(A)/Deleted(D) following books
A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER1.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER2.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER3.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER4.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER6.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER7.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER8.ipynb A Linear_Algebra_And_Its_Applications_by_G._Strang/screenshots/Ch5Eigenmatrix.png A Linear_Algebra_And_Its_Applications_by_G._Strang/screenshots/Ch5eigenVectors.png A Linear_Algebra_And_Its_Applications_by_G._Strang/screenshots/ch5eigenvaluematrix.png
Diffstat (limited to 'Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb')
-rw-r--r--Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb411
1 files changed, 411 insertions, 0 deletions
diff --git a/Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb b/Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb
new file mode 100644
index 00000000..af1f3093
--- /dev/null
+++ b/Linear_Algebra_And_Its_Applications_by_G._Strang/CHAPTER5.ipynb
@@ -0,0 +1,411 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 Eigenvalues and Eigenvectors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.1.1 Pg: 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigen values: [ 3. 2.]\n",
+ "Eigen vectors:\n",
+ "[[ 1. 0.]] \n",
+ " and\n",
+ "[[ 0. 1.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "A=mat([[3, 0],[0, 2]])\n",
+ "Eig,V=eig(A)\n",
+ "print 'Eigen values:',Eig\n",
+ "print 'Eigen vectors:\\n',V[0],'\\n and\\n',V[1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.1.2 Pg: 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The eigen values of a projection matrix are 1 or 0.\n",
+ "Eigen values: ['1', '0']\n",
+ "Eigen vectors:\n",
+ "[[ 0.70710678 -0.70710678]] \n",
+ " and\n",
+ "[[ 0.70710678 0.70710678]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "print 'The eigen values of a projection matrix are 1 or 0.'\n",
+ "P=mat([[1/2, 1/2],[1/2, 1/2]])\n",
+ "Eig,V=eig(P)\n",
+ "Eig=[\"%.f\"%xx for xx in Eig]\n",
+ "print 'Eigen values:',Eig\n",
+ "print 'Eigen vectors:\\n',V[0],'\\n and\\n',V[1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.2.1 Pg: 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigenvalue matrix: [ 3. 2.]\n",
+ "S=\n",
+ "[[ 1. 0.]\n",
+ " [ 0. 1.]]\n",
+ "AS=S*eigenvaluematrix\n",
+ "[[ 3. 0.]\n",
+ " [ 0. 2.]]\n",
+ "Therefore inv(S)*A*S=eigenvalue matrix\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "P=mat([[1/2, 1/2],[1/2, 1/2]])\n",
+ "Val,V=eig(A)\n",
+ "print 'Eigenvalue matrix:',Val\n",
+ "print 'S=\\n',V\n",
+ "print 'AS=S*eigenvaluematrix\\n',(A*V)\n",
+ "print 'Therefore inv(S)*A*S=eigenvalue matrix'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.2.2 Pg: 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The eigenvalues themselves are not so clear for a rotation.\n",
+ "90 degree rotation\n",
+ "K= [[ 0 -1]\n",
+ " [ 1 0]]\n",
+ "Eigen values: [ 0.+1.j 0.-1.j]\n",
+ "Eigen vectors:\n",
+ "[[ 0.70710678+0.j 0.70710678-0.j]] \n",
+ " and\n",
+ "[[ 0.-0.70710678j 0.+0.70710678j]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "print 'The eigenvalues themselves are not so clear for a rotation.'\n",
+ "print '90 degree rotation'\n",
+ "K=mat([[0, -1],[1, 0]])\n",
+ "print 'K=',K\n",
+ "Val,V=eig(K)\n",
+ "print 'Eigen values:',Val\n",
+ "print 'Eigen vectors:\\n',V[0],'\\n and\\n',V[1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.2.3 Pg: 249"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "K is rotation through 90 degree,then K**2 is rotation through 180 degree and inv(k is rotation through -90 degree)\n",
+ "K=\n",
+ "[[ 0 -1]\n",
+ " [ 1 0]]\n",
+ "K**2=\n",
+ "[[-1 0]\n",
+ " [ 0 -1]]\n",
+ "K**3=\n",
+ "[[ 0 1]\n",
+ " [-1 0]]\n",
+ "K**4=\n",
+ "[[1 0]\n",
+ " [0 1]]\n",
+ "K**4 is a complete rotation through 360 degree.\n",
+ "Eigen value matrix,D of K:\n",
+ "[ 0.+1.j 0.-1.j]\n",
+ "and also D**4=\n",
+ "[ 1.+0.j 1.+0.j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "print 'K is rotation through 90 degree,then K**2 is rotation through 180 degree and inv(k is rotation through -90 degree)'\n",
+ "K=mat([[0, -1],[1, 0]])\n",
+ "print 'K=\\n',K\n",
+ "print 'K**2=\\n',(K*K)\n",
+ "print 'K**3=\\n',(K*K*K)\n",
+ "print 'K**4=\\n',(K**4)\n",
+ "D,V=eig(K)\n",
+ "print 'K**4 is a complete rotation through 360 degree.'\n",
+ "print 'Eigen value matrix,D of K:\\n',D\n",
+ "print 'and also D**4=\\n',(D**4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.3.1 Pg: 249"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A=\n",
+ "[[ 0. 4. ]\n",
+ " [ 0. 0.5]]\n",
+ "Eigen values: [ 0. 0.5]\n",
+ "[[ 1.]\n",
+ " [ 0.]]\n",
+ "k= 0\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 1\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 2\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 3\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 4\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 5\n",
+ "U(k+1)(K from 0 to 5)\n",
+ "[[ 0.]\n",
+ " [ 0.]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.49613894]\n",
+ " [ 0.06201737]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.24806947]\n",
+ " [ 0.03100868]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.12403473]\n",
+ " [ 0.01550434]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.06201737]\n",
+ " [ 0.00775217]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.03100868]\n",
+ " [ 0.00387609]]\n",
+ "k= 5\n",
+ "U(k+1)=\n",
+ "[[ 0.01550434]\n",
+ " [ 0.00193804]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "from numpy.linalg import eig\n",
+ "A=mat([[0, 4],[0, 1/2]])\n",
+ "print 'A=\\n',A\n",
+ "Eig,zz=eig(A)\n",
+ "print 'Eigen values:',Eig\n",
+ "D,v=eig(A)\n",
+ "u0=v[:,0] #Taking u0 as the 1st eigen Vector.\n",
+ "print u0\n",
+ "for k in range(0,6):\n",
+ " print 'k=',k\n",
+ " u=A*u0\n",
+ " print 'U(k+1)(K from 0 to 5)\\n',u\n",
+ " u0=u\n",
+ "\n",
+ "u0=v[:,1] ##Taking u0 as the 2nd eigen vector.\n",
+ "for ki in range(0,6):\n",
+ " print 'k=',k\n",
+ " u=A*u0\n",
+ " print 'U(k+1)=\\n',u\n",
+ " u0=u"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.5.1 Pg:282"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x= (3+4j)\n",
+ "xx_= (25+0j)\n",
+ "r= (5+0j)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import sqrt\n",
+ "x=3+4*1J\n",
+ "print 'x=',x\n",
+ "x_=x.conjugate()\n",
+ "print 'xx_=',x*x_\n",
+ "r=sqrt(x*x_)\n",
+ "print 'r=',r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:5.5.2 Pg:282"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Length of x squared: 2.0\n",
+ "Length of y squared: 25.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "i=1J\n",
+ "x=mat([[1, i]]).H\n",
+ "y=mat([[2+1*i, 2-4*i]]).H\n",
+ "print 'Length of x squared:',abs(x.H*x)[0,0]\n",
+ "print 'Length of y squared:',abs( y.H*y)[0,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
+}