summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb720
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb600
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb737
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb1304
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb244
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb762
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb331
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb522
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb1084
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb437
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb1360
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb1414
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb536
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb1208
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb317
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb743
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb476
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.pngbin0 -> 12613 bytes
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.pngbin0 -> 13336 bytes
-rw-r--r--Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.pngbin0 -> 14986 bytes
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb754
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb128
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb822
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb637
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb328
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb358
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter6.ipynb503
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb235
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb561
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.pngbin0 -> 38657 bytes
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.pngbin0 -> 52303 bytes
-rw-r--r--Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.pngbin0 -> 42440 bytes
32 files changed, 17121 insertions, 0 deletions
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb
new file mode 100644
index 00000000..3bd95186
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter10_2.ipynb
@@ -0,0 +1,720 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 10 : Fourier Series"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.1, page no. 327"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 3\n",
+ "0.158857730350203*sin(x) + 0.127086184280162*sin(2*x) + 0.0953146382101218*sin(3*x) + 0.158857730350203*cos(x) + 0.0635430921400812*cos(2*x) + 0.0317715460700406*cos(3*x) + 0.158857730350203\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math,numpy\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 1/math.pi*sympy.integrate(sympy.exp(-1*x),(x,0,2*math.pi))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range (1,n+1):\n",
+ " ai = 1/math.pi*sympy.integrate(sympy.exp(-x)*sympy.cos(i*x),(x,0,2*math.pi))\n",
+ " bi = 1/math.pi*sympy.integrate(sympy.exp(-x)*sympy.sin(i*x),(x,0,2*math.pi))\n",
+ " s = s+float(ai)*sympy.cos(i*x)+float(bi)*sympy.sin(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.2, page no. 328"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the fourier transform of given function\n",
+ "Piecewise((2, s == 0), (1.0*I*exp(-1.0*I*s)/s - 1.0*I*exp(1.0*I*s)/s, True))\n",
+ "1.57079632679490\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math,sympy\n",
+ "\n",
+ "print \"To find the fourier transform of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "F = sympy.integrate(sympy.exp(1j*s*x),(x,-1,1))\n",
+ "print F\n",
+ "F1 = sympy.integrate(sympy.sin(x)/x,(x,0,numpy.inf))\n",
+ "print F1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.3, page no. 328"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 3\n",
+ "3.0*sin(x) - 0.5*sin(2*x) + 1.0*sin(3*x) - 0.636619772367581*cos(x) - 0.0707355302630646*cos(3*x) - 0.785398163397448\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 1/math.pi*(sympy.integrate(-1*math.pi*x**0,(x,-math.pi,0))+sympy.integrate(x,(x,0,math.pi)))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range (1,n+1):\n",
+ " ai = 1/math.pi*(sympy.integrate(-1*math.pi*sympy.cos(i*x),(x,-1*math.pi,0))+sympy.integrate(x*sympy.cos(i*x),(x,0,math.pi)))\n",
+ " bi = 1/math.pi*(sympy.integrate(-1*math.pi*x**0*sympy.sin(i*x),(x,-1*math.pi,0))+sympy.integrate(x*sympy.sin(i*x),(x,0,math.pi)))\n",
+ " s = s+float(ai)*sympy.cos(i*x)+float(bi)*sympy.sin(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.4, page no. 329"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion :3\n",
+ "(exp(l) - exp(-l))/(2*l)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "l = sympy.Symbol('l')\n",
+ "ao = 1/l*sympy.integrate(sympy.exp(-1*x),(x,-l,l))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion :\"))\n",
+ "for i in range (1,n+1):\n",
+ " ai = 1/l*sympy.integrate(sympy.exp(-x)*sympy.cos(i*math.pi*x/l),(x,-l,l))\n",
+ " bi = 1/l*sympy.integrate(sympy.exp(-x)*sympy.sin(i*math.pi*x/l),(x,-l,l))\n",
+ " s = s+float(ai)*sympy.cos(i*math.pi*x/l)+float(bi)*sympy.sin(i*math.pi*x/l)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.5, page no. 330"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of terms in the expansion : 3\n",
+ "2.0*sin(x) - 1.0*sin(2*x) + 0.666666666666667*sin(3*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,sympy\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "l = sympy.Symbol('l')\n",
+ "s = 0\n",
+ "n = int(raw_input(\"enter the no of terms up to each of terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " bi = 2/math.pi*sympy.integrate(x*sympy.sin(i*x),(x,0,math.pi))\n",
+ " s = s+float(bi)*sympy.sin(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.6, page no. 332"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion :3\n",
+ "l**2/3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,sympy\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "l = sympy.Symbol('l')\n",
+ "ao = 2/l*sympy.integrate(x**2,(x,0,l))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion :\"))\n",
+ "for i in range(1,n+1):\n",
+ " ai = 2/l*sympy.integrate(x**2*sympy.cos(i*math.pi*x/l),(x,0,l))\n",
+ " s = s+float(ai)*sympy.cos(i*math.pi*x/l)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 10.7, page no. 333"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion :2\n",
+ "7.06789929214115e-17*cos(x) + 0.424413181578387*cos(2*x) + 0.636619772367581\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 2/math.pi*(sympy.integrate(sympy.cos(x),(x,0,math.pi/2))+sympy.integrate(-sympy.cos(x),(x,math.pi/2,math.pi)))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion :\"))\n",
+ "for i in range(1,n+1):\n",
+ " ai = 2/math.pi*(sympy.integrate(sympy.cos(x)*sympy.cos(i*x),(x,0,math.pi/2))+sympy.integrate(-sympy.cos(x)*sympy.cos(i*x),(x,math.pi/2,math.pi)))\n",
+ " s = s+float(ai)*sympy.cos(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 10.8, page no. 334"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 3\n",
+ "0.810569469138702*cos(x) + 7.79634366503875e-17*cos(2*x) + 0.0900632743487446*cos(3*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 2/math.pi*(sympy.integrate((1-2*x/math.pi),(x,0,math.pi)))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " ai = 2/math.pi*(sympy.integrate((1-2*x/math.pi)*sympy.cos(i*x),(x,0,math.pi)))\n",
+ " s = s+float(ai)*sympy.cos(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.9, page no. 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 3\n",
+ "0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "l = sympy.Symbol('l')\n",
+ "s = 0\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " bi = sympy.integrate(x*sympy.sin(i*math.pi*x/2),(x,0,2)) \n",
+ " s = s+float(bi)*sympy.sin(i*math.pi*x/2)\n",
+ "print float(s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.10, page no. 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 5\n",
+ "1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 2/2*(sympy.integrate(x,(x,0,2)))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " ai = 2/2*(sympy.integrate(x*sympy.cos(i*math.pi*x/2),(x,0,2)))\n",
+ " s = s +float(ai)*sympy.cos(i*math.pi*x/2)\n",
+ "print float(s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.11, page no. 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 2\n",
+ "0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 0\n",
+ "s = ao\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " bi = 2/1*(sympy.integrate((1/4-x)*sympy.sin(i*math.pi*x),(x,0,1/2))+sympy.integrate((x-3/4)*sympy.sin(i*math.pi*x),(x,1/2,1)))\n",
+ " s = s+float(bi)*sympy.sin(i*math.pi*x)\n",
+ "print float(s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.12, page no. 339"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding the fourier series of given function\n",
+ "enter the no of terms up to each of sin or cos terms in the expansion : 3\n",
+ "-4.0*cos(x) + 0.999999999999999*cos(2*x) - 0.444444444444444*cos(3*x) + 3.28986813369645\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"finding the fourier series of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "ao = 1/math.pi*sympy.integrate(x**2,(x,-math.pi,math.pi))\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"enter the no of terms up to each of sin or cos terms in the expansion : \"))\n",
+ "for i in range(1,n+1):\n",
+ " ai = 1/math.pi*sympy.integrate((x**2)*sympy.cos(i*x),(x,-math.pi,math.pi))\n",
+ " bi = 1/math.pi*sympy.integrate((x**2)*sympy.sin(i*x),(x,-math.pi,math.pi))\n",
+ " s = s+float(ai)*sympy.cos(i*x)+float(bi)*sympy.sin(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.13, page no. 341"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The complex form of series is summation of f(n,x) where n varies from −%inf to %inf and f(n,x) is given by : \n",
+ "0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"The complex form of series is summation of f(n,x) where n varies from −%inf to %inf and f(n,x) is given by : \"\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.exp(-x)\n",
+ "b = sympy.exp(-1j*math.pi*n*x)\n",
+ "cn = 1/2*sympy.Integral(sympy.exp(-x)*sympy.exp(-1j*math.pi*n*x),(x,-sympy.oo,sympy.oo))\n",
+ "fnx = float(cn)*sympy.exp(1j*n*math.pi*x) \n",
+ "print fnx"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.14, page no. 342"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Practical harmoninc analysis\n",
+ "No of sin or cos term in expansion : 5\n",
+ "-0.522944001594253*sin(x) - 0.410968418886797*sin(2*x) + 0.0927272727272729*sin(3*x) + 0.111796006670355*sin(4*x) - 0.126146907496654*sin(5*x) - 0.373397459621556*cos(x) + 0.159090909090909*cos(2*x) - 0.258181818181819*cos(3*x) - 0.257272727272728*cos(4*x) - 0.546602540378445*cos(5*x) + 1.30454545454545\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, math, numpy\n",
+ "\n",
+ "print \"Practical harmoninc analysis\"\n",
+ "x = sympy.Symbol('x')\n",
+ "xo = numpy.array([math.pi/6, math.pi/3, math.pi/2, 2*math.pi/3, 5*math.pi/6, math.pi, 7*math.pi/6, 4*math.pi/3, \\\n",
+ " 3*math.pi/2, 5*math.pi/3, 11*math.pi/6])\n",
+ "yo = numpy.array([1.10, 0.30, 0.16, 1.50, 1.30, 2.16, 1.25, 1.30, 1.52, 1.76, 2.00])\n",
+ "ao = 2*numpy.sum(yo)/len(xo)\n",
+ "s = ao/2\n",
+ "n = int(raw_input('No of sin or cos term in expansion : '))\n",
+ "for i in range(1,n+1):\n",
+ " an = 2*sum(yo*numpy.cos(i*xo))/len(yo)\n",
+ " bn = 2*sum(yo*numpy.sin(i*xo))/len(yo)\n",
+ " s = s+float(an)*sympy.cos(i*x)+float(bn)*sympy.sin(i*x)\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 10.15, page no. 342"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Practical harmonic analysis\n",
+ "No of sin or cos term in expansion :5\n",
+ "-1.61653377487451e-16*sin(6.28318530717959*x/T) + 1.5*cos(6.28318530717959*x/T) + 0.75\n",
+ "1.5 -1.61653377487e-16\n",
+ "Direct current :\n",
+ "1.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,sympy,numpy\n",
+ "\n",
+ "print \"Practical harmonic analysis\"\n",
+ "x = sympy.Symbol('x')\n",
+ "T = sympy.Symbol('T')\n",
+ "xo = numpy.array([1/6,1/3,1/2,2/3,5/6,1])\n",
+ "yo = numpy.array([1.30,1.05,1.30,-0.88,-0.25,1.98])\n",
+ "ao = 2*sum(yo)/len(xo)\n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"No of sin or cos term in expansion :\"))\n",
+ "i = 1\n",
+ "an = 2*sum(yo*numpy.cos(i*xo*2*math.pi))/len(yo)\n",
+ "bn = 2*sum(yo*numpy.sin(i*xo*2*math.pi))/len(yo)\n",
+ "s = s+float(an)*sympy.cos(i*x*2*math.pi/T)+float(bn)*sympy.sin(i*x*2*math.pi/T)\n",
+ "print s\n",
+ "print \"Direct current :\"\n",
+ "i = math.sqrt(an**2+bn**2)\n",
+ "print i"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.16, page no. 343"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Practical harmonic analysis\n",
+ "Input xo matrix (in factor of T):1\n",
+ "No of sin or cos term in expansion :5\n",
+ "-3.67394039744206e-16*sin(6.28318530717959*x/T) + 1.5*cos(6.28318530717959*x/T) + 4.5\n",
+ "Direct current :\n",
+ "1.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,sympy,numpy\n",
+ "\n",
+ "print \"Practical harmonic analysis\"\n",
+ "x = sympy.Symbol('x')\n",
+ "T = sympy.Symbol('T')\n",
+ "xo = int(raw_input(\"Input xo matrix (in factor of T):\"))\n",
+ "yo = numpy.array([1.30,1.05,1.30,-0.88,-0.25,1.98])\n",
+ "ao = 2*sum(yo)/xo \n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"No of sin or cos term in expansion :\"))\n",
+ "i = 1\n",
+ "an = 2*sum(yo*numpy.cos(i*xo*2*math.pi))/len(yo)\n",
+ "bn = 2*sum(yo*numpy.sin(i*xo*2*math.pi))/len(yo)\n",
+ "s = s+float(an)*sympy.cos(i*x*2*math.pi/T)+float(bn)*sympy.sin(i*x*2*math.pi/T)\n",
+ "print s\n",
+ "print \"Direct current :\"\n",
+ "i = math.sqrt(an**2+bn**2)\n",
+ "print i"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.17, page no. 344"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Practical harmonic analysis\n",
+ "Input xo matrix (in factor of T):1\n",
+ "No of sin or cos term in expansion :4\n",
+ "-3.67394039744206e-16*sin(6.28318530717959*x/T) + 1.5*cos(6.28318530717959*x/T) + 4.5\n",
+ "Direct current :\n",
+ "1.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,sympy,numpy\n",
+ "\n",
+ "print \"Practical harmonic analysis\"\n",
+ "x = sympy.Symbol('x')\n",
+ "T = sympy.Symbol('T')\n",
+ "xo = int(raw_input(\"Input xo matrix (in factor of T):\"))\n",
+ "yo = numpy.array([1.30,1.05,1.30,-0.88,-0.25,1.98])\n",
+ "ao = 2*sum(yo)/xo \n",
+ "s = ao/2\n",
+ "n = int(raw_input(\"No of sin or cos term in expansion :\"))\n",
+ "i = 1\n",
+ "an = 2*sum(yo*numpy.cos(i*xo*2*math.pi))/len(yo)\n",
+ "bn = 2*sum(yo*numpy.sin(i*xo*2*math.pi))/len(yo)\n",
+ "s = s+float(an)*sympy.cos(i*x*2*math.pi/T)+float(bn)*sympy.sin(i*x*2*math.pi/T)\n",
+ "print s\n",
+ "print \"Direct current :\"\n",
+ "i = math.sqrt(an**2+bn**2)\n",
+ "print i"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb
new file mode 100644
index 00000000..3dddd224
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter13_2.ipynb
@@ -0,0 +1,600 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 13: Linear Differential Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.1, page no. 398"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differential equation is given by: \n",
+ "y = c1*exp(-1.28077640640442*x) + c2*exp(0.780776406404415*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, numpy\n",
+ "\n",
+ "print \"Solution to the given linear differential equation is given by: \"\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**2+m-2\n",
+ "r = numpy.roots([2, 1, -2])\n",
+ "y = c1*sympy.exp(r[0]*x)+c2*sympy.exp(r[1]*x)\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.2, page no. 399"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "y = (c1 + c2*x)*exp(x*(-1.5 + 1.5*I))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, numpy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**2+6*m+9;\n",
+ "r = numpy.roots([2, 6, 9])\n",
+ "y =(c1+x*c2)*sympy.exp(r[0]*x)\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.3, page no. 401"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "y = c1*exp(0.105616806777468*x) + c2*exp(0.105616806777468*x) + c3*exp(-0.877900280221601*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**3+m*2+4*m+4;\n",
+ "r = numpy.roots([3, 2, 4, 4])\n",
+ "y = c1*sympy.exp(r[0].real*x)+c2*sympy.exp(r[1].real*x)+c3*sympy.exp(r[2].real*x)\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.4, page no. 402"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "y = c1*exp(-0.707106781186547*x) + c2*exp(-0.707106781186547*x) + c3*exp(0.707106781186547*x) + c4*exp(0.707106781186547*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "c4 = sympy.Symbol('c4')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**4+4;\n",
+ "r = numpy.roots([4, 0, 0, 0, 4])\n",
+ "y = c1*sympy.exp(r[0].real*x)+c2*sympy.exp(r[1].real*x)+c3*sympy.exp(r[2].real*x)+c4*sympy.exp(r[3].real*x)\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.5, page no. 402"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "y = [ 9041.93285661 22.41271075]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "m = numpy.poly([0])\n",
+ "f = m**2+5*m+6\n",
+ "y = numpy.exp(f)/numpy.polyval(f,1)\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.6, page no. 403"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution of the given linear equation is given by: \n",
+ "[ 0.25+0.96824584j 0.25-0.96824584j]\n",
+ "y = 1/f(D)∗[exp(-2x)+exp(x)-exp(-x)\n",
+ "using 1/f(D)exp(ax) = x/f1(D)∗exp(ax) if f(m)=0\n",
+ "y = x**2*exp(x)/6 + x*exp(-2*x)/9 + exp(-x)/4\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution of the given linear equation is given by: '\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f =(m+2)*(m-1)**2;\n",
+ "r = numpy.roots([2, -1, 2])\n",
+ "print r\n",
+ "print 'y = 1/f(D)∗[exp(-2x)+exp(x)-exp(-x)'\n",
+ "print 'using 1/f(D)exp(ax) = x/f1(D)∗exp(ax) if f(m)=0'\n",
+ "y1 = x*sympy.exp(-2*x)/9\n",
+ "y2 = sympy.exp(-x)/4\n",
+ "y3 = x**2*sympy.exp(x)/6\n",
+ "y = y1+y2+y3\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.7, page no. 404"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution of the given linear equation is given by: \n",
+ "Using the identity 1/f(D**2)∗sin(ax+b)[or cos(ax+b)]=1/f(-a**2)∗sin(ax+b)[or cos(ax+b)] this equation \n",
+ "can be redused to y = (4D+1)/65∗cos(2x-1)\n",
+ "y = -8*sin(2*x - 1)/65 + cos(2*x - 1)/65\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution of the given linear equation is given by: '\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**3+1;\n",
+ "print '''Using the identity 1/f(D**2)∗sin(ax+b)[or cos(ax+b)]=1/f(-a**2)∗sin(ax+b)[or cos(ax+b)] this equation \n",
+ "can be redused to''',\n",
+ "print 'y = (4D+1)/65∗cos(2x-1)'\n",
+ "y = (sympy.cos(2*x-1)+4*sympy.diff(sympy.cos(2*x-1),x))/65\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.8, page no. 405"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution of the given linear equation is given by: \n",
+ "Using 1/f(D)exp(ax) = x/f1(D)∗exp(ax) if f(m)=0\n",
+ "y = x∗1/(3D**2+4)∗sin2x\n",
+ "Using this identity 1/f(D**2)∗sin(ax+b)[or cos(ax+b)]= 1/f(-a**2)∗sin(ax+b)[or cos (ax+b)] this equation \n",
+ "can be redused to y = -x/8∗sin2x\n",
+ "y = -0.113662178353\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution of the given linear equation is given by: '\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**3+4*m\n",
+ "print 'Using 1/f(D)exp(ax) = x/f1(D)∗exp(ax) if f(m)=0'\n",
+ "print 'y = x∗1/(3D**2+4)∗sin2x'\n",
+ "print '''Using this identity 1/f(D**2)∗sin(ax+b)[or cos(ax+b)]= 1/f(-a**2)∗sin(ax+b)[or cos (ax+b)] this equation \n",
+ "can be redused to''',\n",
+ "print 'y = -x/8∗sin2x'\n",
+ "x=1\n",
+ "y = -x*numpy.sin(2*x)/8\n",
+ "print \"y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.9, page no. 406"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution of the given linear equation is given by: \n",
+ "y = 1/(D(D+1))[x**2+2x+4] can be written as (1−D+D**2)/D[x**2+2x+4] which is combination of\n",
+ "differentialtion and integration\n",
+ "y = x**3/3 + 4*x\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution of the given linear equation is given by: '\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "print '''y = 1/(D(D+1))[x**2+2x+4] can be written as (1−D+D**2)/D[x**2+2x+4] which is combination of\n",
+ "differentialtion and integration'''\n",
+ "g = x**2+2*x+4\n",
+ "f = g-sympy.diff(g,x)+sympy.diff(g,x,2)\n",
+ "y = sympy.integrate(f,x)\n",
+ "print 'y = ', y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.11, page no. 406"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "CF + PI\n",
+ "[-1.]\n",
+ "CF is given by: \n",
+ "(c1 + c2*x)*exp(-1.0*x)\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "PI = 8∗{1/(D−2)**2[exp(2x)]+{1/(D−2)**2[sin(2x)]+{1/(D−2)**2[x**2]}\n",
+ "Using identitties it reduces to: 4*x**2*exp(2*x) + 4*x + cos(2*x) + 3\n",
+ "The solution is y = 4*x**2*exp(2*x) + 4*x + (c1 + c2*x)*exp(-1.0*x) + cos(2*x) + 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "print 'CF + PI'\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = (m-2)**2;\n",
+ "r = numpy.roots([2, 2])\n",
+ "print r\n",
+ "print 'CF is given by: '\n",
+ "cf = (c1+c2*x)*sympy.exp(r[0]*x)\n",
+ "print cf\n",
+ "print '−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'\n",
+ "print 'PI = 8∗{1/(D−2)**2[exp(2x)]+{1/(D−2)**2[sin(2x)]+{1/(D−2)**2[x**2]}'\n",
+ "print 'Using identitties it reduces to: ',\n",
+ "pi = 4*x**2*sympy.exp(2*x)+sympy.cos(2*x)+4*x+3\n",
+ "print pi\n",
+ "y = cf + pi ;\n",
+ "print 'The solution is y = ', y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exampe 13.12, page no. 407"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "CF + PI\n",
+ "[-0.+1.41421356j 0.-1.41421356j]\n",
+ "CF is given by\n",
+ "c1*exp(1.4142135623731*I*x) + c2*exp(-1.4142135623731*I*x)\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "PI = 8∗{1/(D**2-4)[x∗sinh(x)]\n",
+ "Using identities it reduces to: -x*(exp(x) - exp(-x))/6\n",
+ "The solution is y = c1*exp(1.4142135623731*I*x) + c2*exp(-1.4142135623731*I*x) - x*(exp(x) - exp(-x))/6\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "print 'CF + PI'\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**2-4\n",
+ "r = numpy.roots([2, 0, 4])\n",
+ "print r\n",
+ "print 'CF is given by'\n",
+ "cf = c1*sympy.exp(r[0]*x)+c2*sympy.exp(r[1]*x)\n",
+ "print cf\n",
+ "print '−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'\n",
+ "print 'PI = 8∗{1/(D**2-4)[x∗sinh(x)]'\n",
+ "print 'Using identities it reduces to: ',\n",
+ "pi = -x/6*(sympy.exp(x)-sympy.exp(-x))-2/18*(sympy.exp(x)+sympy.exp(-x))\n",
+ "print pi\n",
+ "y = cf + pi\n",
+ "print \"The solution is y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.13, page no. 408"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "CF + PI\n",
+ "[-0.+0.70710678j 0.-0.70710678j]\n",
+ "CF is given by\n",
+ "c1*exp(0.707106781186548*I*x) + c2*exp(-0.707106781186548*I*x)\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "PI = -1/10∗{1/(D**2-1)[x∗sin(3x)+cos(x)]\n",
+ "Using identities it reduces to: -x*sin(3*x) - cos(x)/2\n",
+ "The solution is y = c1*exp(0.707106781186548*I*x) + c2*exp(-0.707106781186548*I*x) - x*sin(3*x) - cos(x)/2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "print 'CF + PI'\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f = m**2-1\n",
+ "r = numpy.roots([2, 0, 1])\n",
+ "print r\n",
+ "print 'CF is given by'\n",
+ "cf = c1*sympy.exp(r[0]*x)+c2*sympy.exp(r[1]*x)\n",
+ "print cf\n",
+ "print '−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'\n",
+ "print 'PI = -1/10∗{1/(D**2-1)[x∗sin(3x)+cos(x)]'\n",
+ "print 'Using identities it reduces to: ',\n",
+ "pi = -1/10*(x*sympy.sin(3*x)+3/5*sympy.cos(3*x))-sympy.cos(x)/2\n",
+ "print pi\n",
+ "y = cf + pi\n",
+ "print \"The solution is y = \", y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.14, page no. 408"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution to the given linear differntial equation is given by: \n",
+ "CF + PI\n",
+ "(5.55111512313e-17+0.707106781187j)\n",
+ "CF is given by\n",
+ "(c1 + c2*x)*exp(5.55111512312578e-17*x) + (c3 + c4*x)*exp(-0.5*x)\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "PI = ∗{1/(D**4+2∗D+1)[x**2∗cos(x)]\n",
+ "Using identities it reduces to: 4*x**3*sin(x) - (x**4 - 9*x**2)*cos(x)\n",
+ "The solution is y = 4*x**3*sin(x) + (c1 + c2*x)*exp(5.55111512312578e-17*x) + (c3 + c4*x)*exp(-0.5*x) - (x**4 - 9*x**2)*cos(x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy\n",
+ "\n",
+ "print 'Solution to the given linear differntial equation is given by: '\n",
+ "print 'CF + PI'\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "c4 = sympy.Symbol('c4')\n",
+ "x = sympy.Symbol('x')\n",
+ "m = numpy.poly([0])\n",
+ "f =m**4+2*m**2+1\n",
+ "r = numpy.roots([4, 2, 2, 1])\n",
+ "print r[0]\n",
+ "print 'CF is given by'\n",
+ "cf = ((c1+c2*x)*sympy.exp(r[0].real*x)+(c3+c4*x)*sympy.exp(r[2].real*x))\n",
+ "print cf\n",
+ "print '−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'\n",
+ "print 'PI = ∗{1/(D**4+2∗D+1)[x**2∗cos(x)]'\n",
+ "print 'Using identities it reduces to: ',\n",
+ "pi = -1/48*((x**4-9*x**2)*sympy.cos(x)-4*x**3*sympy.sin(x))\n",
+ "print pi\n",
+ "y = cf + pi\n",
+ "print \"The solution is y = \", y"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb
new file mode 100644
index 00000000..e7f8326b
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter1_2.ipynb
@@ -0,0 +1,737 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 1: Solution of Equation & Curve Fitting"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.1, page no. 21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [-3. 2. 0.5]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "p = 2*(x**3)+x**2-13*x+6\n",
+ "print \"The roots of above equation are: \", numpy.roots([2,1,-13,6])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.2, page no. 21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of the equation are: [ 2.00000000+2.64575131j 2.00000000-2.64575131j -2.66666667+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "print \"The roots of the equation are: \", numpy.roots ([3, -4, 1, 88])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 1.3, page no. 22"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 6. 3. -2.]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "p = x^3-7*(x^2)+36\n",
+ "print \"The roots of above equation are:\", numpy.roots([1, -7, 0, 36])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.4, page no. 23"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 5. -4. 2. -1.]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**4-2*(x**3)-21*(x**2)+22*x+40\n",
+ "print \"The roots of above equation are:\", numpy.roots([1,-2,-21,22,40])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.5, page no. 23"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 4. 2. 1. 0.5]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = 2*(x**4)-15*(x**3)+35*(x**2)-30*x+8\n",
+ "print \"The roots of above equation are:\", numpy.roots([2,-15,35,-30,8])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.6, page no. 24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 2.87938524 0.65270364 -0.53208889]\n",
+ "let x1 = 0.6527036 x2 = -0.5320889 x3 = 2.8793852\n",
+ "So the equation whose roots are cube of the roots of above equation is (x−x1ˆ3)∗(x−x2ˆ3)∗(x−x3ˆ3)\n",
+ "(x - 23.8725770741465)*(x - 0.278066086195109)*(x + 0.150644263115026)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import sympy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**3-3*(x**2)+1\n",
+ "ans = numpy.roots([1,-3, 0, 1])\n",
+ "print \"The roots of above equation are:\", ans\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"let x1 = 0.6527036 x2 = -0.5320889 x3 = 2.8793852\"\n",
+ "print \"So the equation whose roots are cube of the roots of above equation is (x−x1ˆ3)∗(x−x2ˆ3)∗(x−x3ˆ3)\"\n",
+ "p1 = (x-x1**3)*(x-x2**3)*(x-x3**3)\n",
+ "print p1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.7, page no. 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are:\n",
+ "[ 4.48928857 2.28916855 -0.77845712]\n",
+ "let x1 = -0.7784571 x2 = 2.2891685 x3 = 4.4892886\n",
+ "Now, since we want equation whose sum of roots is 0. sum of roots of above equation is 6, so we will decrease\n",
+ "Value of each root by 2 i.e. x4 = x1-2\n",
+ "x4 = -2.7784571\n",
+ "x5 = 0.2891685\n",
+ "x6 = 2.4892886\n",
+ "Hence, the required equation is ( x−x4 ) ∗ ( x−x5 ) ∗ ( x−x6 ) = 0 −−>\n",
+ "(x - 2.4892886)*(x - 0.2891685)*(x + 2.7784571)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import sympy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "x1 = numpy.poly ([0]) \n",
+ "x2 = numpy.poly ([0]) \n",
+ "x3 = numpy.poly ([0]) \n",
+ "x4 = numpy.poly ([0]) \n",
+ "x5 = numpy.poly ([0] ) \n",
+ "x6 = numpy.poly ([0]) \n",
+ "p = x**3-6*(x**2)+5*x+8\n",
+ "print \"The roots of above equation are:\"\n",
+ "print numpy.roots ([1, -6, 5, 8])\n",
+ "print \"let x1 = -0.7784571 x2 = 2.2891685 x3 = 4.4892886\"\n",
+ "x1 = -0.7784571\n",
+ "x2 = 2.2891685\n",
+ "x3 = 4.4892886\n",
+ "print \"Now, since we want equation whose sum of roots is 0. sum of roots of above equation is 6, so we will decrease\"\n",
+ "print \"Value of each root by 2 i.e. x4 = x1-2\"\n",
+ "x = sympy.Symbol('x')\n",
+ "x4 = x1-2\n",
+ "print \"x4 = \", x4\n",
+ "x5=x2-2\n",
+ "print \"x5 = \", x5\n",
+ "x6=x3-2\n",
+ "print \"x6 = \", x6\n",
+ "print \"Hence, the required equation is ( x−x4 ) ∗ ( x−x5 ) ∗ ( x−x6 ) = 0 −−>\"\n",
+ "p1 =( x-x4 )*(x-x5)*(x-x6)\n",
+ "print p1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.8, page no. 28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 3. 2. 1. 0.5 0.33333333]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = 6*(x**5)-41*(x**4)+97*(x**3)-97*(x**2)+41*x-6\n",
+ "print \"The roots of above equation are:\",numpy.roots([6,-41,97,-97,41,-6])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.9, page no. 28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 2.00000000+0.j -1.00000000+0.j 0.83333333+0.5527708j\n",
+ " 0.83333333-0.5527708j 1.00000000+0.j 0.50000000+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0]) \n",
+ "p = 6*(x**6)-25*(x**5)+31*(x**4)-31*(x**2)+25*x-6\n",
+ "print \"The roots of above equation are:\", numpy.roots([6,-25,31,0,-31,25,-6])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.10, page no. 29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 2.+3.46410162j 2.-3.46410162j -1.+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**3-3*(x**2)+12*x+16\n",
+ "print \"The roots of above equation are:\", numpy.roots([1,-3,12,16])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.11, page no. 30"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 0.28571429+0.24743583j 0.28571429-0.24743583j -0.25000000+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "x = numpy.poly ([0]) \n",
+ "p = 28*(x**3)-9*(x**2)+1\n",
+ "print \"The roots of above equation are:\",numpy.roots([28,-9,0,1])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.12, page no. 31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [-5. +0.00000000e+00j 2. +2.90013456e-08j 2. -2.90013456e-08j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**3+x**2-16*x+20\n",
+ "print \"The roots of above equation are:\",numpy.roots ([1,1,-16,20])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.13, page no. 31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 1.08727971+1.17131211j 1.08727971-1.17131211j -1.17455941+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**3-3*(x**2)+3\n",
+ "print \"The roots of above equation are:\",numpy.roots ([1,-1,0,3])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.14, page no. 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 6. 4. 3. -1.]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0]) \n",
+ "p = x**4-12*(x**3)+41*(x**2)-18*x-72\n",
+ "print \"The roots of above equation are:\",numpy.roots ([1,-12,41,-18,-72])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.15, page no. 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [-2.30277564 2.61803399 1.30277564 0.38196601]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**4-2*(x**3)-5*(x**2)+10*x-3\n",
+ "print \"The roots of above equation are:\", numpy.roots ([1,-2,-5,10,-3])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.16, page no. 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 3.73205081+0.j -2.00000000+1.73205081j -2.00000000-1.73205081j\n",
+ " 0.26794919+0.j ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**4-8*(x**2)-24*x+7\n",
+ "print \"The roots of above equation are:\",numpy.roots ([1,0,-8,-24,7])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.17, page no. 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of above equation are: [ 6.05932014 -1.65491082 1.59559067]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly ([0]) \n",
+ "p = x**4-6*(x**3)-3*(x**2)+22*x-6\n",
+ "print \"The roots of above equation are:\",numpy.roots ([1,-6,-3,22.-6])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.18, page no. 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "From the graph, it is clear that the point of intersection is nearly x = 1.43\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fa769850290>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "x = numpy.linspace(1 ,3 ,30)\n",
+ "y1 = 3-x\n",
+ "y2 = math.e**(x-1)\n",
+ "plt.xlabel('X axis')\n",
+ "plt.ylabel('Y axis')\n",
+ "plt.title('My Graph')\n",
+ "plt.plot(x, y1, \"o-\" )\n",
+ "plt.plot(x, y2, \"+-\" )\n",
+ "plt.legend([\"3-x\" ,\"e**(x-1)\"])\n",
+ "print \"From the graph, it is clear that the point of intersection is nearly x = 1.43\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.19, page no. 40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "From the graph, it is clear that the point of intersection is nearly x=2.3\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fa7698ce210>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "x = numpy.linspace(1 ,3 ,30)\n",
+ "y1 = x\n",
+ "y2 = numpy.sin(x)+math.pi/2\n",
+ "plt.xlabel('X axis')\n",
+ "plt.ylabel('Y axis')\n",
+ "plt.title('My Graph')\n",
+ "plt.plot(x, y1, \"o-\")\n",
+ "plt.plot(x, y2, \"+-\")\n",
+ "plt.legend([\"x\", \"sin(x)+pi/2\"])\n",
+ "print \"From the graph, it is clear that the point of intersection is nearly x=2.3\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.20, page no. 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "From the graph, it is clear that the point of intersection is nearly x=2.3 \n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n661rpAOFDbgzxsSd0lL/p6YlS1wEP5bM/z5KSlxh1Sk1NZWNGzeyb98+2rdvz8CBAwF44YUXGD9+\nPGPHjgVg1KhRnHfeeSxatIjRo0fz5ptvcuDAAbKysgC48MILASgqKiIzM7PaZ5x11llMnz6diy++\nmH379rF69epqg+cyMzM5dOhQWPVvCOv1ZIyJO2lp5X7X5+V5/OQI/pcxY/zvIz3dE1QdXnzxRTIz\nM8nMzGTChAnMmzePb775hjPPPJMBAwawaNEiAL7//ntee+01srOzq5b333+fXbt2UVhYSNu2bauC\nhK/s7GyOHDlSa/1VV13F1q1bGT9+PD179qy27ciRI373FXXhpCGxXrBLT8Y0Gf7+P/tvX7gzAm0U\noe2jLv/3f/+n6enpevToUZ0zZ47ecMMNfsvt2LFDk5KStKioqNa2wsJCbdmyZVUbRaVLL71UL7nk\nEm3fvr2+99571ba98MILOnLkyHrrV9c5Erv0ZEzii/deOo2l8pjnzp1BSYmL9HQPU6aMDelvEYl9\n+HrhhRfIy8ujQ4cOZGVlISK4XC6uuOIKzj//fJYuXcqPfvQjysrK+PDDD+nduzddunRh3Lhx3Hzz\nzTz++OO0atWKlStXMmzYMLp27UqvXr1YtWpVVa+n559/nk8//ZS1a9fy+uuvc/XVV7N27VpatWoF\nwPLlyxk3blxY9W+QcKJLrBcsozBNUKR76SSKRPn/fMUVV2jHjh01IyND+/btq6+//nrVtlWrVunw\n4cO1bdu22qFDB73ooot069atqqp64MABvfrqqzUnJ0ezs7P15z//edX7Hn/8cZ08ebKqOr2g2rVr\npx988EHV9ssvv1xvvPFGVVU9fvy4du3aVffs2VNvXev6mxJmRmHjKIyJE3l501m69F4/62fw5pv3\nxKBGjaM5D7g7ceIE55xzDm+//TY5OTkByz722GNs27aN++67r979RnochV16MiZO1NXTJ9xeOib+\npaamsm7duqDK3nLLLVGuTd1i2utJROaJyG4R+cJnXVsRWSYi34jIUhFpE8s6GtNY6urpE2wvHWOi\nJdbdY58BxtZYdwewTFVPA97yvjamybv11jH07Dmt2rquXacyZcroGNXIGEfM2yhEpDuwQFXP9r7+\nChiuqrtFJBcoUNUzarzH2ihMk7Ro0QqmTFmGqouMDA/Hjo3m66+HkdyELxI35zaKaGlykwL6CRQH\n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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fa7696dc7d0>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "x = numpy.linspace(0, 3, 30)\n",
+ "y1 = -1/numpy.cos(x)\n",
+ "y2 = numpy.cosh(x)\n",
+ "plt.xlabel('X axis')\n",
+ "plt.ylabel('Y axis')\n",
+ "plt.title('My Graph')\n",
+ "plt.plot(x, y1, \"o-\" )\n",
+ "plt.plot(x, y2, \"+-\" )\n",
+ "plt.legend ([\"-sec(x)\", \"cosh(x)\"])\n",
+ "print \"From the graph, it is clear that the point of intersection is nearly x=2.3 \""
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb
new file mode 100644
index 00000000..db9ef99e
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter21_2.ipynb
@@ -0,0 +1,1304 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 21 Laplace Transform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.1.1, page no. 556"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(12*s/((s**2 + 1)*(s**2 + 25)), 0, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "print laplace_transform(sympy.sin(2*t)*sympy.sin(3*t),t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.1.2, page no. 557"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(sqrt(pi)*(sqrt(2)*sin(s**2/4)*fresnelc(sqrt(2)*s/(2*sqrt(pi))) - sqrt(2)*cos(s**2/4)*fresnels(sqrt(2)*s/(2*sqrt(pi))) + cos(s**2/4 + pi/4))/2, 0, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "print laplace_transform(sympy.cos(t**2),t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.1.3, page no. 558"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "((-1)**(1/12)*pi*sqrt(s)*besseli(-1/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + (-1)**(11/12)*sqrt(3)*pi*sqrt(s)*besseli(1/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + (-1)**(7/12)*sqrt(3)*pi*sqrt(s)*besseli(5/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 - (-1)**(5/12)*pi*sqrt(s)*besseli(7/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + (-1)**(1/12)*pi*sqrt(s)*besselj(-1/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + (-1)**(11/12)*sqrt(3)*pi*sqrt(s)*besselj(1/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + (-1)**(7/12)*sqrt(3)*pi*sqrt(s)*besselj(5/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 - (-1)**(5/12)*pi*sqrt(s)*besselj(7/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/18 + s**2*hyper((1,), (2/3, 5/6, 7/6, 4/3), -s**6/11664)/6 + (-1)**(1/3)*pi*besseli(2/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/(3*s) - 2*(-1)**(1/6)*sqrt(3)*pi*besseli(4/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/(9*s) - (-1)**(1/3)*pi*besselj(2/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/(3*s) + 2*(-1)**(1/6)*sqrt(3)*pi*besselj(4/3, 2*sqrt(3)*s**(3/2)*exp_polar(I*pi/4)/9)/(9*s), 0, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "print laplace_transform((sympy.sin(t**3)),t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.2.1, page no. 560"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "((2*s - 9)/(s**2 + 6*s + 34), -3, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.exp(-3*t)*(2*sympy.cos(5*t)-3*sympy.sin(5*t))\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.2.2, page no. 560"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(2/((s - 3)*((s - 3)**2 + 4)), -oo, Abs(periodic_argument(exp_polar(2*I*pi)*polar_lift(-s + 3)**2, oo)) < pi)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.exp(3*t)*(sympy.sin(t))**2\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.2.3, page no. 561"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(exp(4*t)*sin(2*t)*cos(t), t, s, _None)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.exp(4*t)*(sympy.cos(t)*sympy.sin(2*t))\n",
+ "print inverse_laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.4.1, page no. 563"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(2*a*s/(a**2 + s**2)**2, 0, Abs(periodic_argument(polar_lift(a)**2, oo)) == 0)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = t*sympy.sin(a*t)\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.4.2, page no. 564"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "((-a**2 + s**2)/(a**2 + s**2)**2, 0, Abs(periodic_argument(polar_lift(a)**2, oo)) == 0)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = t*sympy.cos(a*t)\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.5, page no. 565"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Piecewise((u/2, s**3*u**2 == 0), (1/(s**2*u) + (-s**2*u**2 - s*u)*exp(-s*u)/(s**3*u**2), True)) + Integral(exp(-s*t), (t, u, oo))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "t = sympy.Symbol('t')\n",
+ "s = sympy.Symbol('s')\n",
+ "u = sympy.Symbol('u')\n",
+ "f = sympy.integrate(sympy.exp(-s*t)*t/u,(t,0,u))+sympy.integrate(sympy.exp(-s*t),(t,u,sympy.oo))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.7, page no. 566"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(atan(a/s), 0, Abs(periodic_argument(polar_lift(a)**2, oo)) == 0)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.sin(a*t)/t\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.8.1, page no. 567"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "((-a**2 + s**2)/(a**2 + s**2)**2, 0, Abs(periodic_argument(polar_lift(a)**2, oo)) == 0)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = t*sympy.cos(a*t)\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.8.2, page no. 568"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(2*a*(-a**2 + 3*s**2)/(a**2 + s**2)**3, 0, Abs(periodic_argument(polar_lift(a)**2, oo)) == 0)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = (t**2)*sympy.sin(a*t)\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.8.3, page no. 569"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(6/(s + 3)**4, 0, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.exp(-3*t)*t**3;\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.8.4, page no. 570"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(6*(s + 1)/((s + 1)**2 + 9)**2, -1, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.exp(-t)*t*sympy.sin(3*t)\n",
+ "print laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.9.1, page no. 571"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "-MellinTransform(1, t, s) + MellinTransform(1/t, t, s)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import mellin_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = (1-t)/t\n",
+ "print mellin_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.9.2, page no. 572"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(2**s*sqrt(pi)*a**(-s)*b**(-s)*(a*b**s - a**s*b)*gamma(s/2 - 1/2)/(4*gamma(-s/2 + 1)), (1, 2), And(Abs(periodic_argument(polar_lift(a)**2, oo)) == 0, Abs(periodic_argument(polar_lift(b)**2, oo)) == 0))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import mellin_transform\n",
+ "from sympy.abc import t, s, a, b\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(sympy.cos(a*t)-sympy.cos(b*t))/t\n",
+ "print mellin_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.10.1, page no. 574"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the given integral find the laplace of tsin(t) and put s=2\n",
+ "Integral((2*s/(s**2 + 1)**2, 0, True), s)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the given integral find the laplace of tsin(t) and put s=2'\n",
+ "f = sympy.sin(t)*t\n",
+ "l = laplace_transform(f,t,s)\n",
+ "s = 2\n",
+ "print sympy.integrals.Integral(l)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.10.3, page no. 575"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "(sqrt(2)*LaplaceTransform(meijerg(((-1/2, 0, 1/4, 1/2, 3/4, 1), (1,)), ((), (-1/2, 0, 0)), 64*exp_polar(-4*I*pi)/t**4), t, s)/(8*sqrt(pi)) - 4/s - pi/(4*s) + 34*sqrt(2)/(9*s), 0, True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = sympy.integrate(sympy.exp(t)*sympy.sin(t)/t,(t,0,t))\n",
+ "l = laplace_transform(f,t,s)\n",
+ "print l"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.11.1, page no. 576"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(1, t, s, _None)/s - 3*InverseLaplaceTransform(1, t, s, _None)/s**2 + 4*InverseLaplaceTransform(1, t, s, _None)/s**3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(s**2-3*s+4)/s**3\n",
+ "print inverse_laplace_transform(f,t,s)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.11.2, page no. 577"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(2*s**2 - 4*s + 13) + 2*InverseLaplaceTransform(1, t, s, _None)/(2*s**2 - 4*s + 13)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(s+2)/(2*s**2-4*s+13)\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.12.1, page no. 579"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "2*s**2*InverseLaplaceTransform(1, t, s, _None)/(s**3 - 6*s**2 + 11*s - 6) - 6*s*InverseLaplaceTransform(1, t, s, _None)/(s**3 - 6*s**2 + 11*s - 6) + 5*InverseLaplaceTransform(1, t, s, _None)/(s**3 - 6*s**2 + 11*s - 6)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =((2*s**2-6*s+5)/(s**3-6*s**2+11*s-6))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.12. 3, page no. 579"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "4*s*InverseLaplaceTransform(1, t, s, _None)/(s*(s - 1)**2 + 2*(s - 1)**2) + 5*InverseLaplaceTransform(1, t, s, _None)/(s*(s - 1)**2 + 2*(s - 1)**2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(4*s+5)/((s-1)**2*(s+2))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.13.1, page no. 580"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "5*s*InverseLaplaceTransform(1, t, s, _None)/(s**3 + s**2 + 3*s - 5) + 3*InverseLaplaceTransform(1, t, s, _None)/(s**3 + s**2 + 3*s - 5)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(5*s+3)/((s-1)*(s**2+2*s+5))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.13.2, page no. 581"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(4*a**4 + s**4)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s/(s**4+4*a**4)\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.14.1, page no. 583"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s**2*InverseLaplaceTransform(1, t, s, _None)/(s - 2)**3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s**2/(s-2)**3\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.14.2, page no. 583"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(s**2 - 4*s + 13) + 3*InverseLaplaceTransform(1, t, s, _None)/(s**2 - 4*s + 13)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(s+3)/((s**2-4*s+13))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.15.1, page no. 584"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(1, t, s, _None)/(a**2*s + s**3)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =1/(s*(s**2+a**2))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.15.2, page no. 584"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(1, t, s, _None)/(s*(a + s)**3)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =1/(s*(s+a)**3)\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.16.1, page no. 585"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(a**2 + s**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s/((s**2+a**2)**2)\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.16.2, page no. 586"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s**2*InverseLaplaceTransform(1, t, s, _None)/(a**2 + s**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s**2/((s**2+a**2)**2) ;\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.16.3, page no. 587"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(1, t, s, _None)/(a**2 + s**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = 1/((s**2+a**2)**2) ;\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.17.1, page no. 588"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "InverseLaplaceTransform(1, t, s, _None)/(a**2 + s**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = (s+2)/(s**2*(s+1)*(s-2))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.17.2, page no. 589"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(s**2 + 4*s + 5)**2 + 2*InverseLaplaceTransform(1, t, s, _None)/(s**2 + 4*s + 5)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f =(s+2)/(s**2+4*s+5)**2\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.19.1, page no. 590"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s*InverseLaplaceTransform(1, t, s, _None)/(a**2 + s**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s/(s**2+a**2)**2\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.19.2, page no. 591"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace of given function in t\n",
+ "s**2*InverseLaplaceTransform(1, t, s, _None)/(a**2*b**2 + a**2*s**2 + b**2*s**2 + s**4)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import inverse_laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "print 'To find the laplace of given function in t'\n",
+ "f = s**2/((s**2+a**2)*(s**2+b**2))\n",
+ "il = inverse_laplace_transform(f,t,s)\n",
+ "print il"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.28.1, page no. 598"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Laplace of the given funtion is: \n",
+ "Piecewise((1/2, s**3 == 0), (exp(-3*s)/s**2 - (-s**2 + s)*exp(-2*s)/s**3, True)) + Piecewise((1/2, s**3 == 0), (exp(-s)/s**2 + (-s**2 - s)*exp(-2*s)/s**3, True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "f = sympy.integrate(sympy.exp(-s*t)*(t-1),(t ,1 ,2))+sympy.integrate(sympy.exp(-s*t)*(3-t),(t ,2 ,3))\n",
+ "print 'Laplace of the given funtion is: '\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 21.28.2, page no. 598"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Laplace of the given funtion is: \n",
+ "Piecewise((2, s == -1), (-1/(s*exp(2)*exp(2*s) + exp(2)*exp(2*s)) + 1/(s + 1), True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "from sympy.integrals import laplace_transform\n",
+ "from sympy.abc import t, s, a\n",
+ "\n",
+ "f = sympy.integrate(sympy.exp(-s*t)*sympy.exp(-t),(t ,0 ,2))\n",
+ "print 'Laplace of the given funtion is: '\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 21.34, page no. 602"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the laplace transform of periodic funtion\n",
+ "Piecewise((Piecewise((0, And(s == 0, w == 0)), (1.5707963267949*exp(3.14159265358979*I*w)*sin(3.14159265358979*w) + 1.5707963267949*I*exp(3.14159265358979*I*w)*cos(3.14159265358979*w) - I*exp(3.14159265358979*I*w)*sin(3.14159265358979*w)/(2*w), s == -I*w), (1.5707963267949*exp(-3.14159265358979*I*w)*sin(3.14159265358979*w) - 1.5707963267949*I*exp(-3.14159265358979*I*w)*cos(3.14159265358979*w) + I*exp(-3.14159265358979*I*w)*sin(3.14159265358979*w)/(2*w), s == I*w), (-s*sin(3.14159265358979*w)/(s**2*exp(3.14159265358979*s) + w**2*exp(3.14159265358979*s)) - w*cos(3.14159265358979*w)/(s**2*exp(3.14159265358979*s) + w**2*exp(3.14159265358979*s)), True)), And(Or(s == -I*w, s == 0, s == I*w), Or(s == -I*w, s == I*w, w == 0))), (Piecewise((w/(s**2 + w**2), And(s == 0, w == 0)), (w/(s**2 + w**2) + 1.5707963267949*exp(3.14159265358979*I*w)*sin(3.14159265358979*w) + 1.5707963267949*I*exp(3.14159265358979*I*w)*cos(3.14159265358979*w) - I*exp(3.14159265358979*I*w)*sin(3.14159265358979*w)/(2*w), s == -I*w), (w/(s**2 + w**2) + 1.5707963267949*exp(-3.14159265358979*I*w)*sin(3.14159265358979*w) - 1.5707963267949*I*exp(-3.14159265358979*I*w)*cos(3.14159265358979*w) + I*exp(-3.14159265358979*I*w)*sin(3.14159265358979*w)/(2*w), s == I*w), (-s*sin(3.14159265358979*w)/(s**2*exp(3.14159265358979*s) + w**2*exp(3.14159265358979*s)) - w*cos(3.14159265358979*w)/(s**2*exp(3.14159265358979*s) + w**2*exp(3.14159265358979*s)) + w/(s**2 + w**2), True)), True))/(w*(-exp(-6.28318530717959*s/w) + 1))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, math\n",
+ "\n",
+ "print 'To find the laplace transform of periodic funtion'\n",
+ "w = sympy.Symbol('w')\n",
+ "t = sympy.Symbol('t')\n",
+ "s = sympy.Symbol('s')\n",
+ "f = 1/(1-sympy.exp(-2*math.pi*s/w))*sympy.integrate(sympy.exp(-1*s*t)*sympy.sin(w*t),(t,0,math.pi))/w\n",
+ "print f"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb
new file mode 100644
index 00000000..d3d7419e
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter22_2.ipynb
@@ -0,0 +1,244 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 22 : Integral Transform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 22.1, page no. 608"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the fourier sin integral\n",
+ "0.636619772367581*Integral(sin(t*u), (t, 0, oo))*Integral(sin(u*x), (u, 0, oo))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"To find the fourier sin integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "t = sympy.Symbol('t')\n",
+ "u = sympy.Symbol('u')\n",
+ "fs = 2/math.pi*sympy.integrate(sympy.sin(u*x),(u,0,sympy.oo))*(sympy.integrate(x**0*sympy.sin(u*t),(t,0,sympy.oo)))\n",
+ "print fs"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 22.2, page no. 608"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the fourier transform of given function\n",
+ "Piecewise((2, s == 0), (1.0*I*exp(-1.0*I*s)/s - 1.0*I*exp(1.0*I*s)/s, True))\n",
+ "pi/2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print \"To find the fourier transform of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "F = sympy.integrate(sympy.exp(1j*s*x),(x,-1,1))\n",
+ "print F\n",
+ "F1 = sympy.integrate(sympy.sin(x)/x,(x,0,sympy.oo))\n",
+ "print F1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 22.3, page no. 609"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the fourier transform of given function\n",
+ "Piecewise((4/3, s**6 == 0), ((-2.0*s**4 - 2.0*I*s**3)*exp(1.0*I*s)/s**6 - (2.0*s**4 - 2.0*I*s**3)*exp(-1.0*I*s)/s**6, True))\n",
+ "Integral((x*cos(x) - sin(x))*cos(x/2)/x**3, (x, 0, +inf))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "print \"To find the fourier transform of given function\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "F = sympy.integrate(sympy.exp(1j*s*x)*(1-x**2),(x,-1,1))\n",
+ "print F\n",
+ "F1 = sympy.integrals.Integral((x*sympy.cos(x)-sympy.sin(x))/x**3*sympy.cos(x/2),(x,0,numpy.inf))\n",
+ "print F1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 22.4, page no. 610"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the fourier sin integral\n",
+ "Piecewise((s/(s**2 + 1), Abs(periodic_argument(polar_lift(s)**2, oo)) == 0), (Integral(exp(-x)*sin(s*x), (x, 0, oo)), True))\n",
+ "Piecewise((sqrt(pi)*(-sqrt(pi)*sinh(m) + sqrt(pi)*cosh(m))/2, Abs(periodic_argument(polar_lift(m)**2, oo)) == 0), (Integral(x*sin(m*x)/(x**2 + 1), (x, 0, oo)), True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"To find the fourier sin integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "m = sympy.Symbol('m')\n",
+ "fs = sympy.integrate(sympy.sin(s*x)*sympy.exp(-x),(x,0,sympy.oo))\n",
+ "print fs\n",
+ "f = sympy.integrate(x*sympy.sin(m*x)/(1+x**2),(x,0,sympy.oo))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 22.5, page no. 611"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Fourier cosine transform.\n",
+ "Piecewise((1/2, s == 0), (-sin(s)/s + cos(s)/s**2 - cos(2*s)/s**2, True)) + Piecewise((1/2, s == 0), (sin(s)/s + cos(s)/s**2 - 1/s**2, True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"Fourier cosine transform.\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "f = sympy.integrate(x*sympy.cos(s*x),(x,0,1))+sympy.integrate((2-x)*sympy.cos(s*x),(x,1,2))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 22.6, page no. 612"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Fourier cosine transform.\n",
+ "Piecewise((s*atan(sqrt(s**2/a**2))/(a*sqrt(s**2/a**2)), Or(And(-s**2/a**2 != 1, Abs(periodic_argument(polar_lift(a)**2, oo)) == pi, Abs(periodic_argument(polar_lift(s)**2, oo)) == 0), And(Abs(periodic_argument(polar_lift(a)**2, oo)) < pi, Abs(periodic_argument(polar_lift(s)**2, oo)) == 0))), (Integral(exp(-a*x)*sin(s*x)/x, (x, 0, oo)), True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"Fourier cosine transform.\"\n",
+ "x = sympy.Symbol('x')\n",
+ "s = sympy.Symbol('s')\n",
+ "a = sympy.Symbol('a')\n",
+ "f = sympy.integrate(sympy.exp(-a*x)/x*sympy.sin(s*x),(x,0,sympy.oo))\n",
+ "print f"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb
new file mode 100644
index 00000000..a7ba913c
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter23_2.ipynb
@@ -0,0 +1,762 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 23 : Statistical Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.1, page no. 618"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the no. of students falling in the marks group starting from (5 −10)... till (40−45)\n",
+ "the second row denotes cumulative frequency (less than)\n",
+ "the third row denotes cumulative frequency(more than)\n",
+ "[[ 5. 6. 15. 10. 5. 4. 2. 2.]\n",
+ " [ 5. 11. 26. 36. 41. 45. 47. 49.]\n",
+ " [ 49. 44. 38. 23. 13. 8. 4. 2.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([3,8])\n",
+ "print \"The first row of A denotes the no. of students falling in the marks group starting from (5 −10)... till (40−45)\"\n",
+ "A[0] = [5,6,15,10,5,4,2,2]\n",
+ "print \"the second row denotes cumulative frequency (less than)\"\n",
+ "A[1,0] = 5\n",
+ "for i in range(1,8):\n",
+ " A[1,i] = A[1,i-1]+A[0,i]\n",
+ "print \"the third row denotes cumulative frequency(more than)\"\n",
+ "A[2,0] = 49\n",
+ "for i in range (1,8):\n",
+ " A[2,i] = A[2,i-1]-A[0,i-1]\n",
+ "print A"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.2, page no. 619"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A represents the mid values of weekly earnings having interval of 2 in each class=x \n",
+ "The second row denotes the no. of employees or in other words frequency=f \n",
+ "Third row denotes f∗x\n",
+ "Fourth row denotes u=(x−25)/2 \n",
+ "Fifth row denotes f∗x\n",
+ "[[ 1.10000000e+01 1.30000000e+01 1.50000000e+01 1.70000000e+01\n",
+ " 1.90000000e+01 2.10000000e+01 2.30000000e+01 2.50000000e+01\n",
+ " 2.70000000e+01 2.90000000e+01 3.10000000e+01 3.30000000e+01\n",
+ " 3.50000000e+01 3.70000000e+01 3.90000000e+01 4.10000000e+01]\n",
+ " [ 3.00000000e+00 6.00000000e+00 1.00000000e+01 1.50000000e+01\n",
+ " 2.40000000e+01 4.20000000e+01 7.50000000e+01 9.00000000e+01\n",
+ " 7.90000000e+01 5.50000000e+01 3.60000000e+01 2.60000000e+01\n",
+ " 1.90000000e+01 1.30000000e+01 9.00000000e+00 7.00000000e+00]\n",
+ " [ 3.30000000e+01 7.80000000e+01 1.50000000e+02 2.55000000e+02\n",
+ " 4.56000000e+02 8.82000000e+02 1.72500000e+03 2.25000000e+03\n",
+ " 2.13300000e+03 1.59500000e+03 1.11600000e+03 8.58000000e+02\n",
+ " 6.65000000e+02 4.81000000e+02 3.51000000e+02 2.87000000e+02]\n",
+ " [ -7.00000000e+00 -6.00000000e+00 -5.00000000e+00 -4.00000000e+00\n",
+ " -3.00000000e+00 -2.00000000e+00 -1.00000000e+00 0.00000000e+00\n",
+ " 1.00000000e+00 2.00000000e+00 3.00000000e+00 4.00000000e+00\n",
+ " 5.00000000e+00 6.00000000e+00 7.00000000e+00 8.00000000e+00]\n",
+ " [ -2.10000000e+01 -3.60000000e+01 -5.00000000e+01 -6.00000000e+01\n",
+ " -7.20000000e+01 -8.40000000e+01 -7.50000000e+01 0.00000000e+00\n",
+ " 7.90000000e+01 1.10000000e+02 1.08000000e+02 1.04000000e+02\n",
+ " 9.50000000e+01 7.80000000e+01 6.30000000e+01 5.60000000e+01]]\n",
+ "Sum of all elements of third row= 13315.0\n",
+ "Sum of all elements of second row= 509.0\n",
+ "mean= 26.1591355599\n",
+ "Sum of all elements of fifth row= 295.0\n",
+ "mean by step deviation method= 26.1591355599\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([5,16])\n",
+ "print \"The first row of A represents the mid values of weekly earnings having interval of 2 in each class=x \"\n",
+ "A[0] = [11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41]\n",
+ "print \"The second row denotes the no. of employees or in other words frequency=f \"\n",
+ "A[1]=[3,6,10,15,24,42,75,90,79,55,36,26,19,13,9,7]\n",
+ "print \"Third row denotes f∗x\"\n",
+ "for i in range(0,16):\n",
+ " A[2,i] = A[0,i]*A[1,i]\n",
+ "print \"Fourth row denotes u=(x−25)/2 \"\n",
+ "for i in range(0,16):\n",
+ " A[3,i] = (A[0,i]-25)/2\n",
+ "print \"Fifth row denotes f∗x\"\n",
+ "for i in range(0,16):\n",
+ " A[4,i] = A[3,i]*A[1,i]\n",
+ "print A\n",
+ "b = 0\n",
+ "print \"Sum of all elements of third row=\",\n",
+ "for i in range(0,16):\n",
+ " b = b+A[2,i]\n",
+ "print b\n",
+ "f = 0\n",
+ "print \"Sum of all elements of second row=\",\n",
+ "for i in range(0,16):\n",
+ " f = f+A[1,i]\n",
+ "print f\n",
+ "print \"mean=\",b/f\n",
+ "d = 0\n",
+ "print \"Sum of all elements of fifth row= \",\n",
+ "for i in range(0,16):\n",
+ " d = d+A[4,i]\n",
+ "print d\n",
+ "print \"mean by step deviation method= \",25+(2*d/f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.3, page no. 620"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the no. of students falling in the marks group startin from (5−10)... till (40−45)\n",
+ "The second row denotes cumulative frequency (less than)\n",
+ "The third row denotes cumulative frequency (more than)\n",
+ "[[ 5. 6. 15. 10. 5. 4. 2. 2.]\n",
+ " [ 5. 11. 26. 36. 41. 45. 47. 49.]\n",
+ " [ 49. 44. 38. 23. 13. 8. 4. 2.]]\n",
+ "Median falls in the class (15−20)=l+((n/2−c)∗h)/f= 19\n",
+ "Lower quartile also falls in the class (15−20)=\n",
+ "Upper quartile also falls in the class (25−30)=\n",
+ "Semiinter quartile range= 5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([3,8])\n",
+ "print \"The first row of A denotes the no. of students falling in the marks group startin from (5−10)... till (40−45)\"\n",
+ "\n",
+ "A[0] = [5,6,15,10,5,4,2,2]\n",
+ "print \"The second row denotes cumulative frequency (less than)\"\n",
+ "A[1]=[5,11,26,36,41,45,47,49]\n",
+ "print \"The third row denotes cumulative frequency (more than)\"\n",
+ "A[2] = [49,44,38,23,13,8,4,2]\n",
+ "print A\n",
+ "print \"Median falls in the class (15−20)=l+((n/2−c)∗h)/f= \",15+((49/2-11)*5)/15\n",
+ "print \"Lower quartile also falls in the class (15−20)=\"\n",
+ "Q1 = 15+((49/4-11)*5)/15\n",
+ "print \"Upper quartile also falls in the class (25−30)=\"\n",
+ "Q3 =25+((3*49/4-36)*5)/5\n",
+ "print \"Semiinter quartile range= \",(Q3-Q1)/2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.4, page no. 620"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the roll no. of students form 1 to 10 and that of B denotes form 11 to 20 \n",
+ "The second row of A and B denotes the corresponding marks in physics\n",
+ "The third row denotes the corresponding marks in chemistry\n",
+ "Median marks in physics=arithmetic mean of 10th and 11th student = 26\n",
+ "Median marks in chemistry=arithmetic mean of 10th and 11th student = 41\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([3,10])\n",
+ "print \"The first row of A denotes the roll no. of students form 1 to 10 and that of B denotes form 11 to 20 \"\n",
+ "A[0] = [1,2,3,4,5,6,7,8,9,10]\n",
+ "B[0] = [11,12,13,14,15,16,17,18,19,20]\n",
+ "print \"The second row of A and B denotes the corresponding marks in physics\"\n",
+ "A[1] = [53,54,52,32,30,60,47,46,35,28]\n",
+ "B[1] = [25,42,33,48,72,51,45,33,65,29]\n",
+ "print \"The third row denotes the corresponding marks in chemistry\"\n",
+ "A[2] = [58,55,25,32,26,85,44,80,33,72]\n",
+ "B[2] = [10,42,15,46,50,64,39,38,30,36]\n",
+ "print \"Median marks in physics=arithmetic mean of 10th and 11th student = \",(28+25)/2\n",
+ "print \"Median marks in chemistry=arithmetic mean of 10th and 11th student = \",(72+10)/2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.5, page no. 621"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let the misssing frequencies be f1 and f2 \n",
+ "Sum of given frequencies=12+30+65+25+18 = 150\n",
+ "So, f1+f2=229−c = 79\n",
+ "Median=46=40+(114.5−(12+30+f1))∗10/65)\n",
+ "f1=33.5=34 \n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Let the misssing frequencies be f1 and f2 \"\n",
+ "print \"Sum of given frequencies=12+30+65+25+18 = \",\n",
+ "c =12+30+65+25+18\n",
+ "print c\n",
+ "print \"So, f1+f2=229−c = \",229-c\n",
+ "print \"Median=46=40+(114.5−(12+30+f1))∗10/65)\"\n",
+ "print \"f1=33.5=34 \"\n",
+ "f1 = 34\n",
+ "f2 = 45"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.6, page no. 622"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let the eqidistance be s, then\n",
+ "Average speed = total distance/total time taken 1800/47\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "s = sympy.Symbol('s')\n",
+ "print \"Let the eqidistance be s, then\"\n",
+ "t1 = s/30\n",
+ "t2 = s/40\n",
+ "t3 = s/50\n",
+ "print \"Average speed = total distance/total time taken\",3*s/(t1+t2+t3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.7, page no. 623"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row denotes the size of item \n",
+ "The second row denotes the corresponding frequency(f)\n",
+ "The third row denotes the corresponding deviation(d)\n",
+ "The fourth row denotes the corresponding f∗d \n",
+ "The fifth row denotes the corresponding f∗dˆ2 \n",
+ "[[ 6. 7. 8. 9. 10. 11. 12.]\n",
+ " [ 3. 6. 9. 13. 8. 5. 4.]\n",
+ " [ -3. -2. -1. 0. 1. 2. 3.]\n",
+ " [ -9. -12. -9. 0. 8. 10. 12.]\n",
+ " [ 27. 24. 9. 0. 8. 20. 36.]]\n",
+ "Sum of fourth row elements= 0.0\n",
+ "Sum of fifth row elements= 124.0\n",
+ "Sum of all frequencies = 48.0\n",
+ "mean=9+b/d = 9.0\n",
+ "Standard deviation = (c/d)ˆ0.5 = 1.60727512683\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([5,7])\n",
+ "print \"The first row denotes the size of item \"\n",
+ "A[0,:] = [6,7,8,9,10,11,12]\n",
+ "print \"The second row denotes the corresponding frequency(f)\"\n",
+ "A[1,:] = [3,6,9,13,8,5,4]\n",
+ "print \"The third row denotes the corresponding deviation(d)\"\n",
+ "A[2,:] = [-3,-2,-1,0,1,2,3]\n",
+ "print \"The fourth row denotes the corresponding f∗d \"\n",
+ "for i in range(0,7):\n",
+ " A[3,i] = A[1,i]*A[2,i] \n",
+ "print \"The fifth row denotes the corresponding f∗dˆ2 \"\n",
+ "for i in range(0,7):\n",
+ " A[4,i] = A[1,i]*(A[2,i]**2)\n",
+ "print A\n",
+ "b = 0\n",
+ "print \"Sum of fourth row elements= \",\n",
+ "for i in range(0,7):\n",
+ " b = b+A[3,i]\n",
+ "print b\n",
+ "c = 0\n",
+ "print \"Sum of fifth row elements= \",\n",
+ "for i in range(0,7):\n",
+ " c = c+A[4,i]\n",
+ "print c\n",
+ "d = 0\n",
+ "print \"Sum of all frequencies = \",\n",
+ "for i in range(0,7):\n",
+ " d = d+A[1,i]\n",
+ "print d\n",
+ "print \"mean=9+b/d = \",9+b/d\n",
+ "print \"Standard deviation = (c/d)ˆ0.5 = \",(c/d)**0.5"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.8, page no. 624"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A represents the mid values of wage classes having interval of 8 in each class=x \n",
+ "The second row denotes the no. of men or in other words frequency=f \n",
+ "Third row denotes f∗x \n",
+ "Fourth row denotes d=(x−32.5)/8 \n",
+ "Fifth row denotes f∗d \n",
+ "Sixth row denotes f∗(dˆ2)\n",
+ "[[ 8.5 16.5 24.5 32.5 40.5 48.5 56.5 64.5 72.5]\n",
+ " [ 2. 24. 21. 18. 5. 3. 5. 8. 2. ]\n",
+ " [ 17. 396. 514.5 585. 202.5 145.5 282.5 516. 145. ]\n",
+ " [ -3. -2. -1. 0. 1. 2. 3. 4. 5. ]\n",
+ " [ -6. -48. -21. 0. 5. 6. 15. 32. 10. ]\n",
+ " [ 18. 96. 21. 0. 5. 12. 45. 128. 50. ]]\n",
+ "Sum of all elements of sixth row= 375.0\n",
+ "Sum of all elements of second row= 88.0\n",
+ "mean= 4.26136363636\n",
+ "Sum of all elements of fifth row= Mean wage= 31.8636363636\n",
+ "standard deviation= 34.0402892562\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([6,9])\n",
+ "print \"The first row of A represents the mid values of wage classes having interval of 8 in each class=x \"\n",
+ "A[0] = [8.5,16.5,24.5,32.5,40.5,48.5,56.5,64.5,72.5]\n",
+ "print \"The second row denotes the no. of men or in other words frequency=f \"\n",
+ "A[1] = [2,24,21,18,5,3,5,8,2]\n",
+ "print \"Third row denotes f∗x \"\n",
+ "for i in range(0,9):\n",
+ " A[2,i] = A[0,i]*A[1,i] \n",
+ "print \"Fourth row denotes d=(x−32.5)/8 \"\n",
+ "for i in range(0,9):\n",
+ " A[3,i] = (A[0,i]-32.5)/8\n",
+ "print \"Fifth row denotes f∗d \"\n",
+ "for i in range(0,9):\n",
+ " A[4,i] = A[3,i]*A[1,i]\n",
+ "print \"Sixth row denotes f∗(dˆ2)\"\n",
+ "for i in range(0,9):\n",
+ " A[5,i] = A[3,i]**2*A[1,i]\n",
+ "print A\n",
+ "b = 0\n",
+ "print \"Sum of all elements of sixth row= \",\n",
+ "for i in range(0,9):\n",
+ " b = b+A[5,i]\n",
+ "print b\n",
+ "f = 0\n",
+ "print \"Sum of all elements of second row= \",\n",
+ "for i in range(0,9):\n",
+ " f = f+A[1,i]\n",
+ "print f\n",
+ "print \"mean= \",b/f\n",
+ "d = 0\n",
+ "print \"Sum of all elements of fifth row= \",\n",
+ "for i in range(0,9):\n",
+ " d = d+A[4,i]\n",
+ "print \"Mean wage= \",32.5+(8*d/f)\n",
+ "print \"standard deviation= \",8*(b/f-(d/f)**2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.9, page no. 626"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the scores of A and that of B denotes that of B \n",
+ "The second row of A and B denotes the corresponding deviation \n",
+ "The third row of A and B denotes the corresponding deviation square \n",
+ "[[ 12. 115. 6. 73. 7. 19. 119. 36. 84. 29.]\n",
+ " [ -39. 64. -45. 22. -44. -32. 68. -15. 33. -22.]\n",
+ " [ 1521. 4096. 2025. 484. 1936. 1024. 4624. 225. 1089. 484.]]\n",
+ "[[ 47. 12. 16. 42. 4. 51. 37. 48. 13. 0.]\n",
+ " [ -4. -39. -35. -9. -47. 0. -14. -3. -38. -51.]\n",
+ " [ 16. 1521. 1225. 81. 2209. 0. 196. 9. 1444. 2601.]]\n",
+ "Sum of second row elements of A=b= -10.0\n",
+ "sum of second row elements of B=c= -240.0\n",
+ "Sum of third row elements of A=d= 17508.0\n",
+ "Sum of second row elements of B=e= 9302.0\n",
+ "Arithmetic mean of A= 50.0\n",
+ "Standard deviation of A= 41.8306108012\n",
+ "Arithmetic mean of B= 27.0\n",
+ "Standard deviation of A= 18.8202019118\n",
+ "Coefficient of variation of A= 83.6612216024\n",
+ "Coefficient of variation of B= 69.7044515251\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([3,10])\n",
+ "B = numpy.zeros([3,10])\n",
+ "print \"The first row of A denotes the scores of A and that of B denotes that of B \"\n",
+ "A[0] = [12,115,6,73,7,19,119,36,84,29]\n",
+ "B[0] = [47,12,16,42,4,51,37,48,13,0]\n",
+ "print \"The second row of A and B denotes the corresponding deviation \"\n",
+ "for i in range (0,10):\n",
+ " A[1,i] = A[0,i]-51\n",
+ " B[1,i] = B[0,i]-51\n",
+ "print \"The third row of A and B denotes the corresponding deviation square \"\n",
+ "for i in range (0,10):\n",
+ " A[2,i] = A[1,i]**2\n",
+ " B[2,i] = B[1,i]**2\n",
+ "print A\n",
+ "print B\n",
+ "b = 0\n",
+ "print \"Sum of second row elements of A=b=\",\n",
+ "for i in range (0,10):\n",
+ " b = b+A[1,i]\n",
+ "print b\n",
+ "c = 0\n",
+ "print \"sum of second row elements of B=c=\",\n",
+ "for i in range (0,10):\n",
+ " c = c+B[1,i]\n",
+ "print c\n",
+ "d = 0\n",
+ "print \"Sum of third row elements of A=d=\",\n",
+ "for i in range (0,10):\n",
+ " d = d+A[2,i]\n",
+ "print d\n",
+ "e = 0\n",
+ "print \"Sum of second row elements of B=e=\",\n",
+ "for i in range (0,10):\n",
+ " e = e+B[2,i]\n",
+ "print e\n",
+ "print \"Arithmetic mean of A= \",\n",
+ "f = 51+b/10\n",
+ "print f\n",
+ "print \"Standard deviation of A= \",\n",
+ "g = (d/10-(b/10)**2)**0.5\n",
+ "print g\n",
+ "print \"Arithmetic mean of B= \",\n",
+ "h = 51+c/10\n",
+ "print h\n",
+ "print \"Standard deviation of A= \",\n",
+ "i = (e/10-(c/10)**2)**0.5\n",
+ "print i\n",
+ "print \"Coefficient of variation of A=\",(g/f)*100\n",
+ "print \"Coefficient of variation of B=\",(i/h)*100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.10, page no. 628"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "If m is the mean of entire data, then\n",
+ "116\n",
+ "If s is the standard deviation of entire data, then \n",
+ "7.74596669241\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"If m is the mean of entire data, then\"\n",
+ "m = (50*113+60*120+90*115)/(50+60+90)\n",
+ "print m\n",
+ "print \"If s is the standard deviation of entire data, then \"\n",
+ "s = (((50*6**2)+(60*7**2)+(90*8**2)+(50*3**2)+(60*4**2)+(90*1**2))/200)**0.5\n",
+ "print s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.12, page no. 629"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the no. of persons falling in the weight group starting from (70−80)... till (140−150)\n",
+ "The second row denotes cumulative frequency\n",
+ "Median falls in the class (110−120) = l+((n/2−c)∗h)/f= 111\n",
+ "Lower quartile also falls in the class (90−100)= 97.8571428571\n",
+ "Upper quartile also falls in the class (120−130)= 123.444444444\n",
+ "Quartile coefficient of skewness= -0.0272952853598\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([2,8])\n",
+ "print \"The first row of A denotes the no. of persons falling in the weight group starting from (70−80)... till (140−150)\"\n",
+ "A[0] = [12,18,35,42,50,45,20,8]\n",
+ "print \"The second row denotes cumulative frequency\"\n",
+ "A[1,0] = 12\n",
+ "for i in range(1,8):\n",
+ " A[1,i] = A[1,i-1]+A[0,i]\n",
+ "print \"Median falls in the class (110−120) = l+((n/2−c)∗h)/f= \",\n",
+ "Q2 = 110+(8*10)/50\n",
+ "print Q2\n",
+ "print \"Lower quartile also falls in the class (90−100)= \",\n",
+ "Q1 = 90+(57.5-30)*10/35\n",
+ "print Q1\n",
+ "print \"Upper quartile also falls in the class (120−130)= \",\n",
+ "Q3 = 120+(172.5-157)*10/45\n",
+ "print Q3\n",
+ "print \"Quartile coefficient of skewness= \",(Q1+Q3-2*Q2)/(Q3-Q1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 23.13, page no. 631"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row of A denotes the corresponding I.R. of students \n",
+ "The second row denotes the corresponding deviation of I.R.\n",
+ "The third row denotes the square of corresponding deviation of I.R.\n",
+ "The fourth row denotes the corresponding E.R. of students \n",
+ "The fifth row denotes the corresponding deviation of E.R.\n",
+ "The sixth row denotes the square of corresponding deviation of E.R.\n",
+ "The seventh row denotes the product of the two corresponding deviations\n",
+ "[[ 105. 104. 102. 101. 100. 99. 98. 96. 93. 92.]\n",
+ " [ 6. 5. 3. 2. 1. 0. -1. -3. -6. -7.]\n",
+ " [ 36. 25. 9. 4. 1. 0. 1. 9. 36. 49.]\n",
+ " [ 101. 103. 100. 98. 95. 96. 104. 92. 97. 94.]\n",
+ " [ 3. 5. 2. 0. -3. -2. 6. -6. -1. -4.]\n",
+ " [ 9. 25. 4. 0. 9. 4. 36. 36. 1. 16.]\n",
+ " [ 18. 25. 6. 0. -3. -0. -6. 18. 6. 28.]]\n",
+ "The sum of elements of first row=a = 990.0\n",
+ "The sum of elements of second row=b = 0.0\n",
+ "The sum of elements of third row=c = 170.0\n",
+ "The sum of elements of fourth row=d = 980.0\n",
+ "The sum of elements of fifth row=e = 0.0\n",
+ "The sum of elements of sixth row=d = 140.0\n",
+ "The sum of elements of seventh row=d = 92.0\n",
+ "Coefficient of correlation = 0.596347425668\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros([7,10])\n",
+ "print \"The first row of A denotes the corresponding I.R. of students \"\n",
+ "A[0] = [105,104,102,101,100,99,98,96,93,92]\n",
+ "print \"The second row denotes the corresponding deviation of I.R.\"\n",
+ "for i in range(0,10):\n",
+ " A[1,i] = A[0,i]-99\n",
+ "print \"The third row denotes the square of corresponding deviation of I.R.\"\n",
+ "for i in range(0,10):\n",
+ " A[2,i] = A[1,i]**2\n",
+ "print \"The fourth row denotes the corresponding E.R. of students \"\n",
+ "A[3] = [101,103,100,98,95,96,104,92,97,94]\n",
+ "print \"The fifth row denotes the corresponding deviation of E.R.\"\n",
+ "for i in range(0,10):\n",
+ " A[4,i] = A[3,i]-98\n",
+ "print \"The sixth row denotes the square of corresponding deviation of E.R.\"\n",
+ "for i in range(0,10):\n",
+ " A[5,i] = A[4,i]**2\n",
+ "print \"The seventh row denotes the product of the two corresponding deviations\"\n",
+ "for i in range(0,10):\n",
+ " A[6,i] = A[1,i]*A[4,i]\n",
+ "print A\n",
+ "a = 0\n",
+ "print \"The sum of elements of first row=a = \",\n",
+ "for i in range(0,10):\n",
+ " a = a+A[0,i]\n",
+ "print a\n",
+ "b = 0 \n",
+ "print \"The sum of elements of second row=b = \",\n",
+ "for i in range(0,10):\n",
+ " b = b+A[1,i]\n",
+ "print b\n",
+ "c = 0\n",
+ "print \"The sum of elements of third row=c = \",\n",
+ "for i in range(0,10):\n",
+ " c = c+A[2,i]\n",
+ "print c\n",
+ "d = 0\n",
+ "print \"The sum of elements of fourth row=d = \",\n",
+ "for i in range(0,10):\n",
+ " d = d+A[3,i]\n",
+ "print d\n",
+ "e = 0\n",
+ "print \"The sum of elements of fifth row=e = \",\n",
+ "for i in range(0,10):\n",
+ " e = e+A[4,i]\n",
+ "print e\n",
+ "f = 0\n",
+ "print \"The sum of elements of sixth row=d = \",\n",
+ "for i in range(0,10):\n",
+ " f = f+A[5,i]\n",
+ "print f\n",
+ "g = 0\n",
+ "print \"The sum of elements of seventh row=d = \",\n",
+ "for i in range(0,10):\n",
+ " g = g+A[6,i]\n",
+ "print g\n",
+ "print \"Coefficient of correlation = \",g/(c*f)**0.5"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb
new file mode 100644
index 00000000..9dd44a2c
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter24_2.ipynb
@@ -0,0 +1,331 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 24: Numerical Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 24.1, page no. 636"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Finding roots of this equation by bisection method\n",
+ "f(2) is -ve and f(3) is +ve so root lies between 2 and 3\n",
+ "The root is: 2.6875\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "p = x**3-4*x-9\n",
+ "print \"Finding roots of this equation by bisection method\"\n",
+ "print 'f(2) is -ve and f(3) is +ve so root lies between 2 and 3'\n",
+ "l = 2.\n",
+ "m = 3.\n",
+ "def f(x):\n",
+ " y = x**3-4*x-9\n",
+ " return y\n",
+ "for i in range(1,5):\n",
+ " k = 1.0/2.*(l+m)\n",
+ " if(f(k)<0):\n",
+ " l = k\n",
+ " else:\n",
+ " m = k\n",
+ "print \"The root is: \", k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 24.3, page no. 638"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f(x)=xeˆx−cos(x)\n",
+ "We are required to find the roots of f(x) by the method of false position \n",
+ "f(0)=−ve and f(1)=+ve so s root lie between 0 and 1 \n",
+ "finding the roots by false position method \n",
+ "The root of the equation is :\n",
+ "0.517747878322\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"f(x)=xeˆx−cos(x)\"\n",
+ "def f(x):\n",
+ " y = x*math.e**(x)-math.cos(x)\n",
+ " return y\n",
+ "print \"We are required to find the roots of f(x) by the method of false position \"\n",
+ "print \"f(0)=−ve and f(1)=+ve so s root lie between 0 and 1 \"\n",
+ "print \"finding the roots by false position method \"\n",
+ "l = 0.0\n",
+ "m = 1.0\n",
+ "for i in range(1,11):\n",
+ " k = l-(m-l)*f(l)/(f(m)-f(l))\n",
+ " if(f(k)<0):\n",
+ " l = k\n",
+ " else:\n",
+ " m = k\n",
+ "print \"The root of the equation is :\"\n",
+ "print k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 24.4, page no. 638"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f(x) = x∗math.log(x)−1.2\n",
+ "We are required to find the roots of f(x) by the method of false position \n",
+ "f(2)=−ve and f(3)=+ve so s root lie between 2 and 3 \n",
+ "finding the roots by false position method \n",
+ "The root of the equation is : 2.74063625664\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"f(x) = x∗math.log(x)−1.2\"\n",
+ "def f(x):\n",
+ " y = x*math.log10(x)-1.2\n",
+ " return y\n",
+ "print \"We are required to find the roots of f(x) by the method of false position \"\n",
+ "print \"f(2)=−ve and f(3)=+ve so s root lie between 2 and 3 \"\n",
+ "print \"finding the roots by false position method \"\n",
+ "l = 2.\n",
+ "m = 3.\n",
+ "for i in range(1,4):\n",
+ " k = l-(m-l)*f(l)/(f(m)-f(l))\n",
+ " if(f(k)<0):\n",
+ " l = k\n",
+ " else:\n",
+ " m = k\n",
+ "print \"The root of the equation is : \",k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 24.5, page no. 639"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the roots of f(x) = 3x−cos(x)−1 by newtons method \n",
+ "f(0)=−ve and f(1) is +ve so a root lies between 0 and 1 \n",
+ "Let us take x0 =0.6 as the root is closer to 1 \n",
+ "Root is given by r=x0−f(xn)/der(f(xn))\n",
+ "Approximated root in each steps are \n",
+ "0.607290551153\n",
+ "0.607096741973\n",
+ "0.607101775605\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math,numpy\n",
+ "from scipy.misc import derivative\n",
+ "\n",
+ "print \"To find the roots of f(x) = 3x−cos(x)−1 by newtons method \"\n",
+ "print \"f(0)=−ve and f(1) is +ve so a root lies between 0 and 1 \"\n",
+ "l = 0\n",
+ "m = 1\n",
+ "def f(x):\n",
+ " y = 3*x-math.cos(x)-1\n",
+ " return y\n",
+ "x0 = 0.6\n",
+ "print \"Let us take x0 =0.6 as the root is closer to 1 \"\n",
+ "print \"Root is given by r=x0−f(xn)/der(f(xn))\"\n",
+ "print \"Approximated root in each steps are \"\n",
+ "for i in range(1,4):\n",
+ " k = x0-f(x0)/derivative(f,x0)\n",
+ " print k\n",
+ " x0 = k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 24.6, page no. 640"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find square root of 28 by newtons method let x=sqrt(28) ie xˆ2−28=0 \n",
+ "To find the roots by newtons method\n",
+ "f(5)=−ve and f(6) is +ve so a root lies between 5 and 6 \n",
+ "Let us take x0 = 5.5 \n",
+ "Root is given by rn=xn−f(xn)/der(f(xn))\n",
+ "Approximated root in each steps are\n",
+ "5.29545454545\n",
+ "5.29150409676\n",
+ "5.29150262213\n",
+ "5.29150262213\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.misc import derivative\n",
+ "\n",
+ "print \"To find square root of 28 by newtons method let x=sqrt(28) ie xˆ2−28=0 \"\n",
+ "def f(x):\n",
+ " y = x**2-28\n",
+ " return y\n",
+ "print \"To find the roots by newtons method\"\n",
+ "print \"f(5)=−ve and f(6) is +ve so a root lies between 5 and 6 \"\n",
+ "l = 5\n",
+ "m = 6\n",
+ "print \"Let us take x0 = 5.5 \"\n",
+ "print \"Root is given by rn=xn−f(xn)/der(f(xn))\"\n",
+ "print \"Approximated root in each steps are\"\n",
+ "x0 = 5.5\n",
+ "for i in range(1,5):\n",
+ " k = x0-f(x0)/derivative(f,x0)\n",
+ " print k\n",
+ " x0 = k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 24.7, page no. 641"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find square root of 28 by newtons method let x=sqrt(28) ie xˆ2−28=0 \n",
+ "To find the roots by newtons method\n",
+ "f(5)=−ve and f(6) is +ve so a root lies between 5 and 6 \n",
+ "Let us take x0 = 5.5 \n",
+ "Root is given by rn=xn−f(xn)/der(f(xn))\n",
+ "Approximated root in each steps are\n",
+ "5.29545454545\n",
+ "5.29150409676\n",
+ "5.29150262213\n",
+ "5.29150262213\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.misc import derivative\n",
+ "\n",
+ "print \"To find square root of 28 by newtons method let x=sqrt(28) ie xˆ2−28=0 \"\n",
+ "def f(x):\n",
+ " y = x**2-28\n",
+ " return y\n",
+ "print \"To find the roots by newtons method\"\n",
+ "print \"f(5)=−ve and f(6) is +ve so a root lies between 5 and 6 \"\n",
+ "l = 5\n",
+ "m = 6\n",
+ "print \"Let us take x0 = 5.5 \"\n",
+ "print \"Root is given by rn=xn−f(xn)/der(f(xn))\"\n",
+ "print \"Approximated root in each steps are\"\n",
+ "x0 = 5.5\n",
+ "for i in range(1,5):\n",
+ " k = x0-f(x0)/derivative(f,x0)\n",
+ " print k\n",
+ " x0 = k"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb
new file mode 100644
index 00000000..dcac1bac
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter26_2.ipynb
@@ -0,0 +1,522 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 26 : Difference Equations And Z Transform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.2, page no. 667"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "yn= (-2)**n*b + 2**n*a\n",
+ "y(n+1)=yn1= (-2.0)**n*b + 2.0**n*a\n",
+ "y(n+2)=yn2= (-2.0)**n*b + 2.0**n*a\n",
+ "Eliminating a b from these equations we get :\n",
+ "The required difference equation : \n",
+ "16*yn0 - 4*yn2\n",
+ "=0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "a = sympy.Symbol('a')\n",
+ "b = sympy.Symbol('b')\n",
+ "yn0 = sympy.Symbol('yn0')\n",
+ "yn1 = sympy.Symbol('yn1')\n",
+ "yn2 = sympy.Symbol('yn2')\n",
+ "yn = a*2**n+b*(-2)**n\n",
+ "print \"yn= \",yn\n",
+ "n = n+1\n",
+ "yn = yn.evalf()\n",
+ "print \"y(n+1)=yn1=\",yn\n",
+ "n = n+1\n",
+ "yn = yn.evalf()\n",
+ "print \"y(n+2)=yn2=\",yn\n",
+ "print \"Eliminating a b from these equations we get :\"\n",
+ "A = sympy.Matrix([[yn0,1,1],[yn1,2,-2],[yn2,4,4]])\n",
+ "y = A.det()\n",
+ "print \"The required difference equation : \"\n",
+ "print y\n",
+ "print \"=0\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.3, page no. 669"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ3−2∗Eˆ2−5∗E+6=0 \n",
+ "[-2. 3. 1.]\n",
+ "Therefor the complete solution is : \n",
+ "un= (-2.0)**(n + 2)*c1 + 1.0**(n + 2)*c3 + 3.0**(n + 2)*c2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "print \"Cumulative function is given by Eˆ3−2∗Eˆ2−5∗E+6=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**3-2*E**2-5*E+6\n",
+ "r = numpy.roots([1,-2,-5,6])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is : \"\n",
+ "un = c1*(r[0])**n+c2*(r[1])**n+c3*(r[2])**n\n",
+ "print \"un=\",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 26.4, page no. 670"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ2−2∗E+1=0 \n",
+ "[ 1. 1.]\n",
+ "Therefor the complete solution is : \n",
+ "un = 1.0**n*(c1 + c2*n)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"Cumulative function is given by Eˆ2−2∗E+1=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-2*E+1\n",
+ "r = numpy.roots([1,-2,1])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is : \"\n",
+ "un = (c1+c2*n)*(r[0])**n\n",
+ "print \"un = \",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.6, page no. 671"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For Fibonacci Series yn2=yn1+yn0 \n",
+ "So Cumulative function is given by Eˆ2−E−1=0 \n",
+ "[ 1.61803399 -0.61803399]\n",
+ "Therefor the complete solution is : \n",
+ "un = (-0.618033988749895)**n*c2 + 1.61803398874989**n*c1\n",
+ "Now puttting n=1, y=0 and n=2, y=1 we get \n",
+ "c1=(5−sqrt(5))/10 c2=(5+sqrt(5))/10 \n",
+ "(-0.618033988749895)**n*c2 + 1.61803398874989**n*c1\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"For Fibonacci Series yn2=yn1+yn0 \"\n",
+ "print \"So Cumulative function is given by Eˆ2−E−1=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-E-1\n",
+ "r = numpy.roots([1,-1,-1])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is : \"\n",
+ "un = (c1)*(r[0])**n+c2*(r[1])**n \n",
+ "print \"un = \",un\n",
+ "print \"Now puttting n=1, y=0 and n=2, y=1 we get \"\n",
+ "print \"c1=(5−sqrt(5))/10 c2=(5+sqrt(5))/10 \"\n",
+ "c1 =(5-math.sqrt(5))/10\n",
+ "c2 =(5+math.sqrt(5))/10\n",
+ "un = un.evalf()\n",
+ "print un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.7, page no. 672"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ2−4∗E+3=0 \n",
+ "[ 3. 1.]\n",
+ "Therefor the complete solution is = cf+pi \n",
+ "cf = 1.0**n*c2 + 3.0**n*c1\n",
+ "PI=1/(Eˆ2−4E+3)[5ˆn]\n",
+ "put E=5\n",
+ "We get PI=5ˆn/8 \n",
+ "un = 1.0**n*c2 + 3.0**n*c1 + 5**n/8\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"Cumulative function is given by Eˆ2−4∗E+3=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-4*E+3\n",
+ "r = numpy.roots([1,-4,3])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is = cf+pi \"\n",
+ "cf = c1*(r[0])**n+c2*r[1]**n \n",
+ "print \"cf = \",cf\n",
+ "print \"PI=1/(Eˆ2−4E+3)[5ˆn]\"\n",
+ "print \"put E=5\"\n",
+ "print \"We get PI=5ˆn/8 \"\n",
+ "pi = 5**n/8\n",
+ "un = cf+pi\n",
+ "print \"un = \",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.8, page no. 672"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ2−4∗E+4=0 \n",
+ "[ 2. 2.]\n",
+ "Therefor the complete solution is = cf+pi\n",
+ "cf = 2.0**n*(c1 + c2*n)\n",
+ "PI=1/(Eˆ2−4E+4)[2ˆn]\n",
+ "We get PI=n∗(n−1)/2∗2ˆ(n−2)\n",
+ "un = 2**(n - 2)*n*(n - 1)/2 + 2.0**n*(c1 + c2*n)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"Cumulative function is given by Eˆ2−4∗E+4=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-4*E+4\n",
+ "r = numpy.roots([1,-4,4])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is = cf+pi\" \n",
+ "cf = (c1+c2*n)*r[0]**n\n",
+ "print \"cf = \",cf\n",
+ "print \"PI=1/(Eˆ2−4E+4)[2ˆn]\"\n",
+ "print \"We get PI=n∗(n−1)/2∗2ˆ(n−2)\"\n",
+ "pi = n*(n-1)/math.factorial(2)*2**(n-2)\n",
+ "un = cf+pi\n",
+ "print \"un = \",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.10, page no. 674"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ2−4=0 \n",
+ "[-2. 2.]\n",
+ "Therefor the complete solution is = cf+pi \n",
+ "CF = (-2.0)**n*(c1 + c2*n)\n",
+ " PI=1/(Eˆ2−4)[nˆ2+n−1]\n",
+ "We get PI=−nˆ2/3−7/9∗n−17/27 \n",
+ "un = (-2.0)**n*(c1 + c2*n) - n**2/3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"Cumulative function is given by Eˆ2−4=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-4\n",
+ "r = numpy.roots([1,0,-4]) \n",
+ "print r\n",
+ "print \"Therefor the complete solution is = cf+pi \"\n",
+ "cf = (c1+c2*n)*r[0]**n\n",
+ "print \"CF = \",cf\n",
+ "print \" PI=1/(Eˆ2−4)[nˆ2+n−1]\"\n",
+ "print \"We get PI=−nˆ2/3−7/9∗n−17/27 \"\n",
+ "pi = -n**2/3-7/9*n-17/27\n",
+ "un = cf+pi \n",
+ "print \"un = \",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.11,page no. 674"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cumulative function is given by Eˆ2−2∗E+1=0 \n",
+ "[-2.41421356 0.41421356]\n",
+ "Therefor the complete solution is = cf+pi\n",
+ "CF = (-2.41421356237309)**n*(c1 + c2*n)\n",
+ "PI=1/(E−1)ˆ2[nˆ2∗2ˆn]\n",
+ "We get PI=2ˆn∗(nˆ2−8∗n+20)\n",
+ "un = (-2.41421356237309)**n*(c1 + c2*n) + 2**n*(n**2 - 8*n + 20)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"Cumulative function is given by Eˆ2−2∗E+1=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2+2*E-1\n",
+ "r = numpy.roots([1,2,-1])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is = cf+pi\"\n",
+ "cf = (c1+c2*n)*r[0]**n\n",
+ "print \"CF = \",cf\n",
+ "print \"PI=1/(E−1)ˆ2[nˆ2∗2ˆn]\"\n",
+ "print \"We get PI=2ˆn∗(nˆ2−8∗n+20)\"\n",
+ "pi = 2**n*(n**2-8*n+20)\n",
+ "un = cf+pi\n",
+ "print \"un = \",un"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.12, page no. 676"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Simplified equations are : \n",
+ "(E−3) ux+vx=x..... (i) 3ux+(E−5)∗vx=4ˆx......(ii)\n",
+ "Simplifying we get (Eˆ2−8E+12) ux=1−4x−4ˆx \n",
+ "Cumulative function is given by Eˆ2−8∗E+12=0 \n",
+ "[ 6. 2.]\n",
+ "Therefor the complete solution is = cf+pi\n",
+ "CF = 2.0**x*c2 + 6.0**x*c1\n",
+ "Solving for PI \n",
+ "We get PI= \n",
+ "ux = 2.0**x*c2 + 4**x/4 + 6.0**x*c1 - x\n",
+ "Putting in (i) we get vx= \n",
+ "2**x*c1 - 4**x/4 - 3*6**x*c2 - 1\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "print \"Simplified equations are : \"\n",
+ "print \"(E−3) ux+vx=x..... (i) 3ux+(E−5)∗vx=4ˆx......(ii)\"\n",
+ "print \"Simplifying we get (Eˆ2−8E+12) ux=1−4x−4ˆx \"\n",
+ "c1 = sympy.Symbol('c1')\n",
+ "c2 = sympy.Symbol('c2')\n",
+ "c3 = sympy.Symbol('c3')\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"Cumulative function is given by Eˆ2−8∗E+12=0 \"\n",
+ "E = numpy.poly([0])\n",
+ "f = E**2-8*E+12\n",
+ "r = numpy.roots([1,-8,12])\n",
+ "print r\n",
+ "print \"Therefor the complete solution is = cf+pi\"\n",
+ "cf = c1*r[0]**x+c2*r[1]**x\n",
+ "print \"CF = \",cf\n",
+ "print \"Solving for PI \"\n",
+ "print \"We get PI= \"\n",
+ "pi = -4/5*x-19/25+4**x/4\n",
+ "ux = cf+pi \n",
+ "print \"ux = \",ux\n",
+ "print \"Putting in (i) we get vx= \"\n",
+ "vx = c1*2**x-3*c2*6**x-3/5*x-34/25-4**x/4\n",
+ "print vx"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 26.16, page no. 682"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "u2 = 2\n",
+ "u3 = 13\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "z = sympy.Symbol('z')\n",
+ "f = (2/z**2+5/z+14)/(1/z-1)**4\n",
+ "u0 = sympy.limit(f,z,0)\n",
+ "u1 = sympy.limit(1/z*(f- u0),z,0)\n",
+ "u2 = sympy.limit(1/z**2*(f-u0-u1*z),z,0)\n",
+ "print \"u2 = \",u2\n",
+ "u3 = sympy.limit(1/z**3*(f-u0-u1*z-u2*z**2),z,0)\n",
+ "print \"u3 = \",u3"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb
new file mode 100644
index 00000000..6b7c3c32
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter27_2.ipynb
@@ -0,0 +1,1084 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 27 : Numerical Solution Of Ordinary Differential Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.1, page no. 686"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution through picards method \n",
+ "The no of iterations required3\n",
+ "y(0)=1 and y(x)=x+y \n",
+ "Y = x**4/24 + x**3/3 + x**2 + x + 1\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"Solution through picards method \"\n",
+ "n = int(raw_input(\"The no of iterations required\")) \n",
+ "print \"y(0)=1 and y(x)=x+y \"\n",
+ "yo = 1\n",
+ "yn = 1\n",
+ "for i in range(1,n+1):\n",
+ " yn = yo+sympy.integrate(yn+x,(x,0,x))\n",
+ "print \"Y = \",yn"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.2, page no. 687"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution through picards method \n",
+ "The no of iterations required : 2\n",
+ "y(0)=1 and y(x)=x+y \n",
+ "Y = -Integral(2*x/(2*log(x + 1) + 1), x) + Integral(2*x/(2*log(x + 1) + 1), (x, 0)) - Integral(-2*log(x + 1)/(2*log(x + 1) + 1), x) + Integral(-2*log(x + 1)/(2*log(x + 1) + 1), (x, 0)) - Integral(-1/(2*log(x + 1) + 1), x) + Integral(-1/(2*log(x + 1) + 1), (x, 0)) + 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"Solution through picards method \"\n",
+ "n = int(raw_input(\"The no of iterations required : \")) \n",
+ "print \"y(0)=1 and y(x)=x+y \"\n",
+ "yo = 1\n",
+ "y = 1\n",
+ "for i in range(1,n+1):\n",
+ " f = (y-x)/(y+x) \n",
+ " y = yo+sympy.integrate(f,(x,0,x))\n",
+ "x = 0.1\n",
+ "print \"Y = \",y.evalf()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.5, page no. 690"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution using Eulers Method \n",
+ "0.3\n",
+ "1.362\n",
+ "Input the number of iteration :− 4\n",
+ "The value of y is :− 1.5282\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Solution using Eulers Method \"\n",
+ "print x\n",
+ "print y\n",
+ "n = int(raw_input(\"Input the number of iteration :− \"))\n",
+ "x = 0\n",
+ "y = 1\n",
+ "for i in range(1,n+1):\n",
+ " y1 = x+y\n",
+ " y = y+0.1*y1\n",
+ " x = x+0.1\n",
+ "print \"The value of y is :− \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.6, page no. 691"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution using Eulers Method \n",
+ "0.4\n",
+ "1.5282\n",
+ "Input the number of iteration :− 2\n",
+ "1.02\n",
+ "1.03642857143\n",
+ "The value of y is :− 1.03642857143\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Solution using Eulers Method \"\n",
+ "print x\n",
+ "print y\n",
+ "n = int(raw_input(\"Input the number of iteration :− \"))\n",
+ "x = 0\n",
+ "y = 1\n",
+ "for i in range(1,n+1):\n",
+ " y1 = (y-x)/(y+x)\n",
+ " y = y+0.02*y1\n",
+ " x = x+0.1\n",
+ " print y\n",
+ "print \"The value of y is :− \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.7, page no. 692"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution using Eulers Method \n",
+ "0.2\n",
+ "1.03642857143\n",
+ "Input the number of iteration :− 3\n",
+ "1.1\n",
+ "1.11\n",
+ "1.1105\n",
+ "1.110525\n",
+ "−−−−−−−−−−−−−−−−−−−−−−− \n",
+ "1.2315775\n",
+ "1.2315775\n",
+ "1.242630125\n",
+ "1.24318275625\n",
+ "1.24321038781\n",
+ "−−−−−−−−−−−−−−−−−−−−−−− \n",
+ "1.38753142659\n",
+ "1.38753142659\n",
+ "1.39974747853\n",
+ "1.40035828113\n",
+ "1.40038882126\n",
+ "−−−−−−−−−−−−−−−−−−−−−−− \n",
+ "1.57042770339\n",
+ "The value of y is :− 1.40038882126\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Solution using Eulers Method \"\n",
+ "print x\n",
+ "print y\n",
+ "n = int(raw_input(\"Input the number of iteration :− \"))\n",
+ "x = 0.1\n",
+ "m = 1\n",
+ "y = 1\n",
+ "yn = 1\n",
+ "y1 = 1\n",
+ "k = 1\n",
+ "for i in range(1,n+1):\n",
+ " yn = y \n",
+ " for i in range(1,5):\n",
+ " m = (k+y1)/2\n",
+ " yn = y+0.1*m\n",
+ " y1 = (yn+x)\n",
+ " print yn\n",
+ " print \"−−−−−−−−−−−−−−−−−−−−−−− \"\n",
+ " y = yn \n",
+ " m = y1\n",
+ " yn = yn+0.1*m \n",
+ " print yn\n",
+ " x = x+0.1\n",
+ " yn = y \n",
+ " k = m\n",
+ "print \"The value of y is :− \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.8, page no. 694"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution using Eulers Method \n",
+ "0.2\n",
+ "2\n",
+ "Input the number of iteration :− 3\n",
+ "2.06020299957\n",
+ "2.06551474469\n",
+ "2.06561668931\n",
+ "2.06561864352\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "2.13665600548\n",
+ "2.13665600548\n",
+ "2.14156348217\n",
+ "2.14164742068\n",
+ "2.14164885497\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "2.22267196493\n",
+ "2.22267196493\n",
+ "2.22722645093\n",
+ "2.22729646948\n",
+ "2.22729754504\n",
+ "−−−−−−−−−−−−−−−−−−−−−−−\n",
+ "2.31757184825\n",
+ "The value of y is :− 2.22729754504\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"Solution using Eulers Method \"\n",
+ "print x\n",
+ "print y\n",
+ "n = int(raw_input(\"Input the number of iteration :− \"))\n",
+ "x = 0.2\n",
+ "m = 0.301\n",
+ "y = 2\n",
+ "yn = 2\n",
+ "y1 = math.log10(2)\n",
+ "k = 0.301\n",
+ "for i in range(1,n+1):\n",
+ " yn = y\n",
+ " for i in range(1,5):\n",
+ " m = (k+y1)/2\n",
+ " yn = y+0.2*m\n",
+ " y1 = math.log10(yn+x)\n",
+ " print yn\n",
+ " print \"−−−−−−−−−−−−−−−−−−−−−−−\"\n",
+ " y = yn\n",
+ " m = y1\n",
+ " yn = yn+0.2*m \n",
+ " print yn\n",
+ " x = x+0.2\n",
+ " yn = y\n",
+ " k = m\n",
+ "print \"The value of y is :− \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.9, page no. 696"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution using Eulers Method \n",
+ "0.8\n",
+ "2.22729754504\n",
+ "Input the number of iteration :− 2\n",
+ "1.2\n",
+ "1.2295445115\n",
+ "1.23088482816\n",
+ "1.23094524903\n",
+ "−−−−−−−−−−−−−−−−−−−−−−− \n",
+ "1.49284119302\n",
+ "1.49284119302\n",
+ "1.52407510156\n",
+ "1.52534665765\n",
+ "1.52539814634\n",
+ "−−−−−−−−−−−−−−−−−−−−−−− \n",
+ "1.85241216588\n",
+ "The value of y is :− 1.52539814634\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"Solution using Eulers Method \"\n",
+ "print x\n",
+ "print y\n",
+ "n = int(raw_input(\"Input the number of iteration :− \"))\n",
+ "x = 0.2 \n",
+ "m = 1\n",
+ "y = 1\n",
+ "yn = 1\n",
+ "y1 = 1\n",
+ "k = 1\n",
+ "for i in range(1,n+1):\n",
+ " yn = y\n",
+ " for i in range(1,5):\n",
+ " m = (k+y1)/2\n",
+ " yn = y+0.2*m \n",
+ " y1 = math.sqrt(yn)+x\n",
+ " print yn\n",
+ " print \"−−−−−−−−−−−−−−−−−−−−−−− \"\n",
+ " y = yn\n",
+ " m = y1\n",
+ " yn = yn+0.2*m\n",
+ " print yn\n",
+ " x = x+0.2\n",
+ " yn = y\n",
+ " k = m\n",
+ "print \"The value of y is :− \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 27.10, page no. 697"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runges method\n",
+ "The required approximate value is :− \n",
+ "1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runges method\"\n",
+ "def f(x,y):\n",
+ " y = x+y\n",
+ " return y\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.2\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "kk = h*f(x+h,y+k1)\n",
+ "k3 = h*f(x+h,y+kk)\n",
+ "k = 1/6*(k1+4*k2+k3)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.11, page no. 697"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runges method\n",
+ "The required approximate value is :− \n",
+ "1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runges method\"\n",
+ "def f(x,y):\n",
+ " y = x+y\n",
+ " return y\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.2\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.12, page no. 698"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runga kutta method\n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runga kutta method\"\n",
+ "def f(x,y):\n",
+ " y = (y**2-x**2)/(x**2+y**2)\n",
+ " return y\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.2\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.2\n",
+ "h = 0.2\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.13, page no. 699"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runga kutta method\n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runga kutta method\"\n",
+ "def f(x,y):\n",
+ " yy = x+y**2\n",
+ " return yy\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2) \n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y = y+k\n",
+ "print y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.14, page no. 700"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "y1= x**2/2\n",
+ "y2= -x**5/20 + x**2/2\n",
+ "y3= -x**5/20 + x**2/2\n",
+ "Determining the initial values for milnes method using y3 \n",
+ "x=0.0 y0=0.0 f0=0 \n",
+ "x=0.2 y1= x**2/2\n",
+ "f1= -x**4/4 + 0.2\n",
+ "x=0.4 y2= -x**5/20 + x**2/2\n",
+ "f2= -(-x**5/20 + x**2/2)**2 + 0.4\n",
+ "x=0.6 y3= -x**5/20 + x**2/2\n",
+ "f3= -(-x**5/20 + x**2/2)**2 + 0.6\n",
+ "Using predictor method to find y4\n",
+ "y4= -0.1*x**4 - 0.2*(-x**5/20 + x**2/2)**2 + 0.24\n",
+ "f4= -(-x**5/20 + x**2/2)**2 + 0.8\n",
+ "Using predictor method to find y5 \n",
+ "[-1.53353211362738, 2.59188514369719, -1.51825864909117 - 1.96576535664013*I, -1.51825864909117 + 1.96576535664013*I, -0.611593620665791 - 2.14551655586226*I, -0.611593620665791 + 2.14551655586226*I, 0.00495892544779777 - 0.780181689871346*I, 0.00495892544779777 + 0.780181689871346*I, 1.59571682927425 - 0.8271211188914*I, 1.59571682927425 + 0.8271211188914*I]\n",
+ "f5 = [-1.28459666867223, 2.38248090853886, -1.33416685318757 - 1.68618279990398*I, -1.33416685318757 + 1.68618279990398*I, -1.00716479884721 - 2.10036734766602*I, -1.00716479884721 + 2.10036734766602*I, 0.142926398918135 - 1.33989714259572*I, 0.142926398918135 + 1.33989714259572*I, 1.64946313318333 - 0.385565643189579*I, 1.64946313318333 + 0.385565643189579*I]\n",
+ "Hence y(1)= [-1.53353211362738, 2.59188514369719, -1.51825864909117 - 1.96576535664013*I, -1.51825864909117 + 1.96576535664013*I, -0.611593620665791 - 2.14551655586226*I, -0.611593620665791 + 2.14551655586226*I, 0.00495892544779777 - 0.780181689871346*I, 0.00495892544779777 + 0.780181689871346*I, 1.59571682927425 - 0.8271211188914*I, 1.59571682927425 + 0.8271211188914*I]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "yo = 0\n",
+ "y = 0\n",
+ "h = 0.2\n",
+ "f = x-y**2\n",
+ "y = sympy.integrate(f,(x,0,x))\n",
+ "y1 = yo+y\n",
+ "print \"y1= \",y1\n",
+ "f = x-y**2\n",
+ "y = sympy.integrate(f,(x,0,x))\n",
+ "y2 = yo+y\n",
+ "print \"y2= \",y2\n",
+ "y = x-y**2\n",
+ "y = sympy.integrate(f,(x,0,x))\n",
+ "y3 = yo+y\n",
+ "print \"y3= \",y3\n",
+ "print \"Determining the initial values for milnes method using y3 \"\n",
+ "print \"x=0.0 y0=0.0 f0=0 \"\n",
+ "print \"x=0.2 y1= \",\n",
+ "x = 0.2\n",
+ "print y1\n",
+ "#y1 = sympy.solve(y1)\n",
+ "print \"f1=\",\n",
+ "f1 = x-y1**2\n",
+ "print f1\n",
+ "print \"x=0.4 y2= \",\n",
+ "x = 0.4\n",
+ "print y2\n",
+ "print \"f2= \",\n",
+ "f2 = x-y2**2\n",
+ "print f2\n",
+ "print \"x=0.6 y3= \",\n",
+ "x = 0.6\n",
+ "print y3\n",
+ "print \"f3=\",\n",
+ "f3 = x-y3**2\n",
+ "print f3\n",
+ "print \"Using predictor method to find y4\"\n",
+ "x = 0.8\n",
+ "y4 = yo+4/3*h*(2*f1-f2+2*f3)\n",
+ "print \"y4=\",y4\n",
+ "f4 = x-y**2\n",
+ "print \"f4= \",f4\n",
+ "print \"Using predictor method to find y5 \"\n",
+ "x = 1.0\n",
+ "y5 = sympy.solve(y1+4/3*h*(2*f2-f3+2*f4))\n",
+ "print y5\n",
+ "f5 = sympy.solve(x-y**2)\n",
+ "print \"f5 =\",f5\n",
+ "print \"Hence y(1)= \",y5"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.15, page no. 704"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runga kutta method\n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "y0 y1 y2 y3 are respectively: \n",
+ "1.0 1.0 1.0 1\n",
+ "f0 f1 f2 f3 are respectively: \n",
+ "1.3 1.2 1.1 1\n",
+ "finding y4 using predictors milne method x=0.4\n",
+ "y4 = 1.48\n",
+ "f4 = 2.7824\n",
+ "Using corrector method : \n",
+ "y4 = -0.0333333333333333*(-x**5/20 + x**2/2)**2 + 1.24\n",
+ "f4 = -0.0133333333333333*(-x**5/20 + x**2/2)**2 + (-0.0333333333333333*(-x**5/20 + x**2/2)**2 + 1.24)**2 + 0.496\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runga kutta method\"\n",
+ "def f(x,y):\n",
+ " yy = x*y+y**2\n",
+ " return yy\n",
+ "y0 = 1\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "ka = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y1 = y+ka \n",
+ "y = y+ka \n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "kb = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y2 = y+kb \n",
+ "y = y+kb\n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.2\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "kc = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y3 = y+kc\n",
+ "y = y+kc \n",
+ "print y\n",
+ "f0 = f(0,y0)\n",
+ "f1 = f(0.1,y1)\n",
+ "f2 = f(0.2,y2)\n",
+ "f3 = f(0.3,y3)\n",
+ "print \"y0 y1 y2 y3 are respectively: \"\n",
+ "print y3,y2,y1,y0\n",
+ "print \"f0 f1 f2 f3 are respectively: \"\n",
+ "print f3,f2,f1,f0\n",
+ "print \"finding y4 using predictors milne method x=0.4\"\n",
+ "h = 0.1\n",
+ "y4 = y0+4*h/3*(2*f1-f2+2*f3)\n",
+ "print \"y4 = \",y4\n",
+ "print \"f4 = \",f(0.4,y4)\n",
+ "print \"Using corrector method : \"\n",
+ "y4 = y2+h/3*(f2+4*f3+f4) \n",
+ "print \"y4 = \",y4\n",
+ "print \"f4 = \",f(0.4,y4) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.16, page no. 705"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Using predictor method \n",
+ "y11 = 2.57229741667\n",
+ "Using corrector method \n",
+ "y11 = 2.57494727679\n",
+ "f11 = 7.00689666251\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x,y):\n",
+ " yy = x**2*(1+y)\n",
+ " return yy\n",
+ "y3 = 1\n",
+ "y2 = 1.233\n",
+ "y1 = 1.548\n",
+ "y0 = 1.979\n",
+ "f3 = f(1,y3)\n",
+ "f2 = f(1.1,y2)\n",
+ "f1 = f(1.2,y1)\n",
+ "f0 = f(1.3,y0)\n",
+ "print \"Using predictor method \"\n",
+ "h = 0.1\n",
+ "y11 = y0+h/24*(55*f0-59*f1+37*f2-9*f3)\n",
+ "print \"y11 = \",y11\n",
+ "x = 1.4\n",
+ "f11 = f(1.4,y11)\n",
+ "print \"Using corrector method \"\n",
+ "y11 = y0+h/24*(9*f11+19*f0-5*f1+f2)\n",
+ "print \"y11 = \",y11\n",
+ "f11 = f(1.4,y11)\n",
+ "print \"f11 = \",f11"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.17, page no. 706"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Runga kutta method\n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \n",
+ "The required approximate value is :− \n",
+ "1.0\n",
+ "y0 y1 y2 y3 are respectively :\n",
+ "1.0 1.0 1.0 1\n",
+ "f0 f1 f2 f3 are respectively :\n",
+ "-0.7 -0.8 -0.9 -1\n",
+ "Using adams method \n",
+ "Using the predictor\n",
+ "y4 = 0.935\n",
+ "Using corrector method \n",
+ "y4 = 0.9397165625\n",
+ "f4 = -0.483067217837\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Runga kutta method\"\n",
+ "def f(x,y):\n",
+ " yy = x-y**2\n",
+ " return yy\n",
+ "y0 = 1\n",
+ "x = 0\n",
+ "y = 1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "ka = 1/6*(k1+2*k2+2*k3+k4) \n",
+ "print \"The required approximate value is :− \"\n",
+ "y1 = y+ka\n",
+ "y = y+ka\n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.1\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "kb = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "print \"The required approximate value is :− \"\n",
+ "y2 = y+kb\n",
+ "y = y+kb\n",
+ "print y\n",
+ "print \"To find y(0.4) put x=0.2 y=above value ie 1.196 h=0.2 \"\n",
+ "x = 0.2\n",
+ "h = 0.1\n",
+ "k1 = h*f(x,y)\n",
+ "k2 = h*f(x+1/2*h,y+1/2*k1)\n",
+ "k3 = h*f(x+1/2*h,y+1/2*k2)\n",
+ "k4 = h*f(x+h,y+k3)\n",
+ "kc = 1/6*(k1+2*k2+2*k3+k4) \n",
+ "print \"The required approximate value is :− \"\n",
+ "y3 = y+kc\n",
+ "y = y+kc\n",
+ "print y\n",
+ "f0 = f(0,y0)\n",
+ "f1 = f(0.1,y1)\n",
+ "f2 = f(0.2,y2)\n",
+ "f3 = f(0.3,y3) \n",
+ "print \"y0 y1 y2 y3 are respectively :\"\n",
+ "print y3,y2,y1,y0\n",
+ "print \"f0 f1 f2 f3 are respectively :\"\n",
+ "print f3,f2,f1,f0\n",
+ "print \"Using adams method \"\n",
+ "print \"Using the predictor\"\n",
+ "h = 0.1\n",
+ "y4 = y3+h/24*(55*f3-59*f2+37*f1-9*f0)\n",
+ "x = 0.4\n",
+ "f4 = f(0.4,y4)\n",
+ "print \"y4 = \",y4\n",
+ "print \"Using corrector method \"\n",
+ "y4 = y3+h/24*(9*f4+19*f3-5*f2+f1) \n",
+ "print \"y4 = \",y4\n",
+ "f4 = f(0.4,y4)\n",
+ "print \"f4 = \",f4"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.18, page no. 708"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Picards method\n",
+ "First approximation\n",
+ "y1 = x**2/2 + x + 2\n",
+ "z1 = x**2/2 - 4*x + 1\n",
+ "Second approximation\n",
+ "y2 = x**3/6 - 3*x**2/2 + x + 2\n",
+ "z2 = -x**5/20 - x**4/4 - x**3 - 3*x**2/2 - 4*x + 1\n",
+ "Third approximation\n",
+ "y3 = -x**6/120 - x**5/20 - x**4/4 - x**3/2 - 3*x**2/2 + x + 2\n",
+ "z3 = -x**7/252 + x**6/12 - 31*x**5/60 + 7*x**4/12 + 5*x**3/3 - 3*x**2/2 - 4*x + 1\n",
+ "y(0.1) = -0.00833333333333333*x**6 - 0.05*x**5 - 0.25*x**4 - 0.5*x**3 - 1.5*x**2 + x + 2.0\n",
+ "z(0.1) = -0.00396825396825397*x**7 + 0.0833333333333333*x**6 - 0.516666666666667*x**5 + 0.583333333333333*x**4 + 1.66666666666667*x**3 - 1.5*x**2 - 4.0*x + 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print \"Picards method\"\n",
+ "x0 = 0\n",
+ "y0 = 2\n",
+ "z0 = 1\n",
+ "x = sympy.Symbol('x')\n",
+ "def f(x,y,z):\n",
+ " yy = x+z\n",
+ " return yy\n",
+ "def g(x,y,z):\n",
+ " yy = x-y**2\n",
+ " return yy\n",
+ "print \"First approximation\"\n",
+ "y1 = y0+sympy.integrate(f(x,y0,z0),(x,x0,x))\n",
+ "print \"y1 = \",y1\n",
+ "z1 = z0+sympy.integrate(g(x,y0,z0),(x,x0,x))\n",
+ "print \"z1 = \",z1\n",
+ "print \"Second approximation\"\n",
+ "y2 = y0+sympy.integrate(f(x,y1,z1),(x,x0,x))\n",
+ "print \"y2 = \",y2\n",
+ "z2 = z0+sympy.integrate(g(x,y1,z1),(x,x0,x))\n",
+ "print \"z2 = \",z2\n",
+ "print \"Third approximation\"\n",
+ "y3 = y0+sympy.integrate(f(x,y2,z2),(x,x0,x))\n",
+ "print \"y3 = \",y3\n",
+ "z3 = z0+sympy.integrate(g(x,y2,z2),(x,x0,x))\n",
+ "print \"z3 = \",z3\n",
+ "x = 0.1\n",
+ "print \"y(0.1) = \",y3.evalf()\n",
+ "print \"z(0.1) = \",z3.evalf()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 27.19, page no. 710"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Using k1 k2.. for f and l1 l2... for g runga kutta formula becomes \n",
+ "y = 1.0\n",
+ "y1 = 0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "def f(x,y,z):\n",
+ " yy = z \n",
+ " return yy\n",
+ "def g(x,y,z):\n",
+ " yy = x*y**2-y**2\n",
+ " return yy\n",
+ "x0 = 0\n",
+ "y0 = 1\n",
+ "z0 = 0\n",
+ "h = 0.2\n",
+ "print \"Using k1 k2.. for f and l1 l2... for g runga kutta formula becomes \"\n",
+ "h = 0.2\n",
+ "k1 = h*f(x0,y0,z0)\n",
+ "l1 = h*g(x0,y0,z0)\n",
+ "k2 = h*f(x0+1/2*h,y0+1/2*k1,z0+1/2*l1)\n",
+ "l2 = h*g(x0+1/2*h,y0+1/2*k1,z0+1/2*l1)\n",
+ "k3 = h*f(x0+1/2*h,y0+1/2*k2,z0+1/2*l2)\n",
+ "l3 = h*g(x0+1/2*h,y0+1/2*k2,z0+1/2*l2)\n",
+ "k4 = h*f(x0+h,y0+k3,z0+l3)\n",
+ "l4 = h*g(x0+h,y0+k3,z0+l3)\n",
+ "k = 1/6*(k1+2*k2+2*k3+k4)\n",
+ "l = 1/6*(l1+2*l2+2*l3+2*l4)\n",
+ "x = 0.2\n",
+ "y = y0+k\n",
+ "y1 = z0+l\n",
+ "print \"y = \",y\n",
+ "print \"y1 = \",y1"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb
new file mode 100644
index 00000000..69d141e8
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter28_2.ipynb
@@ -0,0 +1,437 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 28: Numerical Solution Of Partial Differential Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.1, page no. 725"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "D=Bˆ2−4AC\n",
+ "if D<0 then elliptic if D=0 then parabolic if D>0 then hyperboic\n",
+ "(i) A=xˆ2, B1−yˆ2 D=4ˆ2−4∗1∗4=0 so the equation is PARABOLIC \n",
+ "(ii) D=4xˆ2(yˆ2−1)\n",
+ "for −inf<x<inf and −1<y<1 D<0 \n",
+ "So the equation is ELLIPTIC \n",
+ "(iii) A=1+xˆ2, B=5+2xˆ2, C=4+xˆ2\n",
+ "D=9>0\n",
+ "So the equation is HYPERBOLIC \n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"D=Bˆ2−4AC\"\n",
+ "print \"if D<0 then elliptic if D=0 then parabolic if D>0 then hyperboic\"\n",
+ "print \"(i) A=xˆ2, B1−yˆ2 D=4ˆ2−4∗1∗4=0 so the equation is PARABOLIC \"\n",
+ "print \"(ii) D=4xˆ2(yˆ2−1)\"\n",
+ "print \"for −inf<x<inf and −1<y<1 D<0 \"\n",
+ "print \"So the equation is ELLIPTIC \"\n",
+ "print \"(iii) A=1+xˆ2, B=5+2xˆ2, C=4+xˆ2\"\n",
+ "print \"D=9>0\"\n",
+ "print \"So the equation is HYPERBOLIC \""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.2, page no. 726"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "See figure in question\n",
+ "From symmetry u7=u1, u8=u2, u9=u3, u3=u1, u6=u4, u9=u7\n",
+ "u5=1/4∗(2000+2000+1000+1000)=1500\n",
+ "u1=1/4(0=1500+1000+2000)=1125\n",
+ "u2=1/4∗(1125+1125+1000+1500)=1188\n",
+ "u4=1/4(2000+1500+1125+1125)=1438\n",
+ "1125 1188 1438 1500\n",
+ "Iterations :\n",
+ "\n",
+ "1301 1414 1164 1031\n",
+ "\n",
+ "1250 1337 1087 1019\n",
+ "\n",
+ "1199 1312 1062 981\n",
+ "\n",
+ "1174 1287 1037 968\n",
+ "\n",
+ "1155 1274 1024 956\n",
+ "\n",
+ "1144 1265 1015 949\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"See figure in question\"\n",
+ "print \"From symmetry u7=u1, u8=u2, u9=u3, u3=u1, u6=u4, u9=u7\"\n",
+ "print \"u5=1/4∗(2000+2000+1000+1000)=1500\"\n",
+ "u5 = 1500\n",
+ "print \"u1=1/4(0=1500+1000+2000)=1125\"\n",
+ "u1 = 1125\n",
+ "print \"u2=1/4∗(1125+1125+1000+1500)=1188\"\n",
+ "u2 = 1188\n",
+ "print \"u4=1/4(2000+1500+1125+1125)=1438\"\n",
+ "u4 = 1438\n",
+ "print u1,u2,u4,u5 \n",
+ "print \"Iterations :\"\n",
+ "for i in range(1,7):\n",
+ " u11 = (1000+u2+500+u4)/4\n",
+ " u22 = (u11+u1+1000+u5)/4 \n",
+ " u44 = (2000+u5+u11+u1)/4\n",
+ " u55 = (u44+u4+u22+u2)/4\n",
+ " print \"\"\n",
+ " print u55,u44,u22,u11\n",
+ " u1 = u11 \n",
+ " u2 = u22 \n",
+ " u4 = u44 \n",
+ " u5 = u55"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.3, page no. 727"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "See figure in question\n",
+ "To find the initial values of u1 u2 u3 u4 we assume u4=0 \n",
+ "u1=1/4∗(1000+0+1000+2000)=1000\n",
+ "u2=1/4(1000+500+1000+500)=625 \n",
+ "u3=1/4∗(2000+0+1000+500)=875\n",
+ "u4=1/4(875+0+625+0)=375\n",
+ "1000 625 875 375\n",
+ "Iterations:\n",
+ "\n",
+ "437 1000 750 1125\n",
+ "\n",
+ "453 1031 781 1187\n",
+ "\n",
+ "457 1039 789 1203\n",
+ "\n",
+ "458 1041 791 1207\n",
+ "\n",
+ "458 1041 791 1208\n",
+ "\n",
+ "458 1041 791 1208\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"See figure in question\"\n",
+ "print \"To find the initial values of u1 u2 u3 u4 we assume u4=0 \"\n",
+ "print \"u1=1/4∗(1000+0+1000+2000)=1000\"\n",
+ "u1 = 1000\n",
+ "print \"u2=1/4(1000+500+1000+500)=625 \"\n",
+ "u2 = 625\n",
+ "print \"u3=1/4∗(2000+0+1000+500)=875\"\n",
+ "u3 = 875\n",
+ "print \"u4=1/4(875+0+625+0)=375\"\n",
+ "u4 = 375\n",
+ "print u1,u2,u3,u4 \n",
+ "print \"Iterations:\"\n",
+ "for i in range(1,7):\n",
+ " u11 = (2000+u2+1000+u3)/4 \n",
+ " u22 = (u11+500+1000+u4)/4\n",
+ " u33 = (2000+u4+u11+500)/4\n",
+ " u44 = (u33+0+u22+0)/4\n",
+ " print \"\"\n",
+ " print u44,u33,u22,u11\n",
+ " u1 = u11 \n",
+ " u2 = u22 \n",
+ " u4 = u44 \n",
+ " u3 = u33"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.5, page no. 729"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Here cˆ2=4, h=1, k=1/8, therefore alpha=(cˆ2)∗k/(hˆ2)\n",
+ "Using bendre−schmidits recurrence relation ie u(i)(j +1)=t∗u(i−1)(j)+t∗u(i+1)(j)+(1−2t)∗u(i,j)\n",
+ "Now since u(0,t)=0=u(8,t) therefore u(0,i)=0 and u(8,j)=0 and u(x,0)=4x−1/2xˆ2 \n",
+ "0.0\n",
+ "-4.0\n",
+ "0.0\n",
+ "4.0\n",
+ "8.0\n",
+ "12.0\n",
+ "16.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "print \"Here cˆ2=4, h=1, k=1/8, therefore alpha=(cˆ2)∗k/(hˆ2)\"\n",
+ "print \"Using bendre−schmidits recurrence relation ie u(i)(j +1)=t∗u(i−1)(j)+t∗u(i+1)(j)+(1−2t)∗u(i,j)\"\n",
+ "print \"Now since u(0,t)=0=u(8,t) therefore u(0,i)=0 and u(8,j)=0 and u(x,0)=4x−1/2xˆ2 \"\n",
+ "c = 2\n",
+ "h = 1\n",
+ "k = 1/8\n",
+ "t = (c**2)*k/(h**2)\n",
+ "A = numpy.ones((9,9))\n",
+ "for i in range(0,9):\n",
+ " for j in range (0,9):\n",
+ " A[0,i] = 0\n",
+ " A[8,i] = 0\n",
+ " A[i,0] = 4*(i-1)-1/2*(i-1)**2\n",
+ "for i in range(1,8):\n",
+ " for j in range(1,7):\n",
+ " A[i,j] = t*A[i-1,j-1]+t*A[i+1,j-1]+(1-2*t)*A[i-1,j-1]\n",
+ "for i in range(1,8):\n",
+ " j = 2\n",
+ " print A[i,j]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.6, page no. 730"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Here cˆ2=1, h=1/3, k=1/36, therefore t=(cˆ2)∗k/(hˆ2)=1/4 \n",
+ "So bendre−schmidits recurrence relation ie u(i)(j+1)=1/4(u(i−1)(j)+u(i+1)(j)+2u(i,j)\n",
+ "Now since u(0,t)=0=u(1,t) therefore u(0,i)=0 and u(1,j)=0 and u(x,0)=sin(%pi)x\n",
+ "-0.433012701892\n",
+ "0.216506350946\n",
+ "0.649519052838\n",
+ "0.433012701892\n",
+ "-0.216506350946\n",
+ "-0.649519052838\n",
+ "-0.433012701892\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "print \"Here cˆ2=1, h=1/3, k=1/36, therefore t=(cˆ2)∗k/(hˆ2)=1/4 \"\n",
+ "print \"So bendre−schmidits recurrence relation ie u(i)(j+1)=1/4(u(i−1)(j)+u(i+1)(j)+2u(i,j)\"\n",
+ "print \"Now since u(0,t)=0=u(1,t) therefore u(0,i)=0 and u(1,j)=0 and u(x,0)=sin(%pi)x\"\n",
+ "c = 1.\n",
+ "h = 1./3\n",
+ "k = 1./36\n",
+ "t = (c**2)*k/(h**2)\n",
+ "A = numpy.ones((9,9))\n",
+ "for i in range(0,9):\n",
+ " for j in range(0,9):\n",
+ " A[0,i] = 0\n",
+ " A[1,i] = 0\n",
+ " A[i,0] = math.sin(math.pi/3*(i-1)) \n",
+ "for i in range(1,8):\n",
+ " for j in range(1,8):\n",
+ " A[i,j] = t*A[i-1,j-1]+t*A[i+1,j-1]+(1-2*t)*A[i-1,j-1]\n",
+ "for i in range(1,8):\n",
+ " j = 1\n",
+ " print A[i,j]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.7, page no. 732"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Here cˆ2=16, taking h=1, finding k such that cˆ2tˆ2=1 \n",
+ "So bendre−schmidits recurrence relation ie u(i)(j+1)=(16tˆ2(u(i−1)(j)+u(i+1)(j))+2(1−16∗tˆ2u(i,j)−u(i)(j−1)\n",
+ "Now since u(0,t)=0=u(5,t) therefore u(0,i)=0 and u(5,j)=0 and u(x,0)=xˆ2(5−x)\n",
+ "Also from 1st derivative (u(i)(j+1)−u(i,j−1))/2k=g(x) and g(x)=0 in this case\n",
+ "So if j=0 this gives u(i)(1)=1/2∗(u(i−1)(0)+u(i+1)(0))\n",
+ " 0.0 0.0 0.0 0.0 0.0 \n",
+ " 0.0 4.0 8.0 12.0 16.0 \n",
+ " 0.0 12.0 24.0 36.0 48.0 \n",
+ " 0.0 18.0 36.0 54.0 72.0 \n",
+ " 0.0 16.0 0.0 0.0 0.0 \n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"Here cˆ2=16, taking h=1, finding k such that cˆ2tˆ2=1 \"\n",
+ "print \"So bendre−schmidits recurrence relation ie u(i)(j+1)=(16tˆ2(u(i−1)(j)+u(i+1)(j))+2(1−16∗tˆ2u(i,j)−u(i)(j−1)\"\n",
+ "print \"Now since u(0,t)=0=u(5,t) therefore u(0,i)=0 and u(5,j)=0 and u(x,0)=xˆ2(5−x)\"\n",
+ "c = 4\n",
+ "h =1 \n",
+ "k = (h/c)\n",
+ "t = k/h\n",
+ "A = numpy.zeros((6,6))\n",
+ "print \"Also from 1st derivative (u(i)(j+1)−u(i,j−1))/2k=g(x) and g(x)=0 in this case\"\n",
+ "print \"So if j=0 this gives u(i)(1)=1/2∗(u(i−1)(0)+u(i+1)(0))\"\n",
+ "for i in range(0,6):\n",
+ " for j in range(1,9):\n",
+ " A[0,i] = 0\n",
+ " A[5,i] = 0;\n",
+ " A[i,1] = (i)**2*(5-i)\n",
+ "for i in range(0,4):\n",
+ " A[i+1,2] =1/2*(A[i,1]+A[i+2,1])\n",
+ "for i in range(2,5):\n",
+ " for j in range(2,5):\n",
+ " A[i-1,j] = (c*t)**2*(A[i-2,j-1]+A[i,j-1])+2*(1-(c*t)**2)*A[i-1,j-1]-A[i-1,j-2]\n",
+ "for i in range(0,5):\n",
+ " for j in range(0,5):\n",
+ " print \" \",A[i,j],\n",
+ " print \"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 28.8, page no. 734"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Here cˆ2=4, taking h=1, finding k such that cˆ2tˆ2=1 \n",
+ "So bendre−schmidits recurrence relation ie u(i)(j+1)=(16tˆ2(u(i−1)(j)+u(i+1)(j))+2(1−16∗tˆ2u(i,j)−u(i)(j−1)\n",
+ "Now since u(0,t)=0=u(4,t) therefore u(0,i)=0 and u(4,j)=0 and u(x,0)=x(4−x) \n",
+ "Also from 1st derivative (u(i)(j+1)−u(i,j−1))/2 k=g(x) and g(x)=0 in this case\n",
+ "So if j=0 this gives u(i)(1)=1/2∗(u(i−1)(0)+u(i+1)(0))\n",
+ " 0.0 0.0 0.0 0.0 0.0 \n",
+ " 3.0 0.0 -3.0 -6.0 -9.0 \n",
+ " 4.0 0.0 -4.0 -8.0 -12.0 \n",
+ " 3.0 0.0 -3.0 -6.0 -9.0 \n",
+ " 0.0 0.0 0.0 0.0 0.0 \n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"Here cˆ2=4, taking h=1, finding k such that cˆ2tˆ2=1 \"\n",
+ "print \"So bendre−schmidits recurrence relation ie u(i)(j+1)=(16tˆ2(u(i−1)(j)+u(i+1)(j))+2(1−16∗tˆ2u(i,j)−u(i)(j−1)\"\n",
+ "print \"Now since u(0,t)=0=u(4,t) therefore u(0,i)=0 and u(4,j)=0 and u(x,0)=x(4−x) \"\n",
+ "c = 2\n",
+ "h = 1\n",
+ "k = (h/c)\n",
+ "t = k/h\n",
+ "A = numpy.zeros((6,6))\n",
+ "print \"Also from 1st derivative (u(i)(j+1)−u(i,j−1))/2 k=g(x) and g(x)=0 in this case\"\n",
+ "print \"So if j=0 this gives u(i)(1)=1/2∗(u(i−1)(0)+u(i+1)(0))\"\n",
+ "for i in range(0,6):\n",
+ " for j in range(1,9):\n",
+ " A[0,i] = 0\n",
+ " A[4,i] = 0\n",
+ " A[i,0] = (i)*(4-i)\n",
+ "for i in range(0,4):\n",
+ " A[i+1,2] = 1/2*(A[i,1]+A[i+2,1])\n",
+ "for i in range(2,5):\n",
+ " for j in range(2,5):\n",
+ " A[i-1,j] = (c*t)**2*(A[i-2,j-1]+A[i,j-1])+2*(1-(c*t)**2)*A[i-1,j-1]-A[i-1,j-2]\n",
+ "for i in range (0,5):\n",
+ " for j in range(0,5):\n",
+ " print \" \",A[i,j],\n",
+ " print \"\""
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb
new file mode 100644
index 00000000..c8582eca
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter2_2.ipynb
@@ -0,0 +1,1360 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2: Determinants and Matrices"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.1, page no. 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinant of A is: a*b*c - a*f**2 - b*g**2 - c*h**2 + 2*f*g*h\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "a = sympy.Symbol('a')\n",
+ "h = sympy.Symbol('h')\n",
+ "g = sympy.Symbol('g')\n",
+ "b = sympy.Symbol('b')\n",
+ "f = sympy.Symbol('f')\n",
+ "c = sympy.Symbol('c')\n",
+ "A = sympy.Matrix([[a,h,g],[h,b,f],[g,f,c]])\n",
+ "\n",
+ "print \"Determinant of A is: \", A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.2, page no. 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinanat of a is: 88.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[0,1,2,3],[1,0,3,0],[2,3,0,1],[3,0,1,2]])\n",
+ "print \"Determinant of a is:\",numpy.linalg.det(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.3, page no. 56"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-a**3*b**2*c + a**3*b*c**2 + a**2*b**3*c - a**2*b*c**3 + a**2*b - a**2*c - a*b**3*c**2 + a*b**2*c**3 - a*b**2 + a*c**2 + b**2*c - b*c**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import sympy\n",
+ "\n",
+ "a = sympy.Symbol('a');\n",
+ "b = sympy.Symbol('b');\n",
+ "c = sympy.Symbol('c');\n",
+ "A = sympy.Matrix([[a,a**2,a**3-1],[b,b**2,b**3-1],[c,c**2,c**3-1]])\n",
+ "\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.4, page no. 57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Determinanat of a is: -24.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[21,17,7,10],[24,22,6,10],[6,8,2,3],[6,7,1,2]])\n",
+ "print \"Determinanat of a is:\",numpy.linalg.det(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.16, page no.60"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a: x**y*log(x)\n",
+ "b: x**y*y*log(x)/x + x**y/x\n",
+ "c: x**y*y**2*log(x)/x**2 - x**y*y*log(x)/x**2 + 2*x**y*y/x**2 - x**y/x**2\n",
+ "d: x**y*y/x\n",
+ "e: x**y*y*log(x)/x + x**y/x\n",
+ "f: x**y*y**2*log(x)/x**2 - x**y*y*log(x)/x**2 + 2*x**y*y/x**2 - x**y/x**2\n",
+ "Clearly c = f\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x');\n",
+ "y = sympy.Symbol('y')\n",
+ "u = x**y\n",
+ "a = sympy.diff(u, y)\n",
+ "b = sympy.diff(a, x)\n",
+ "c = sympy.diff(b, x)\n",
+ "d = sympy.diff(u, x)\n",
+ "e = sympy.diff(d, y)\n",
+ "f = sympy.diff(e, x)\n",
+ "print \"a: \", a\n",
+ "print \"b: \", b\n",
+ "print \"c: \", c\n",
+ "print \"d: \", d\n",
+ "print \"e: \", e\n",
+ "print \"f: \", f\n",
+ "print \"Clearly c = f\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.17, page no. 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A*B=\n",
+ "[[ 5 9 13]\n",
+ " [-1 2 4]\n",
+ " [-2 2 4]]\n",
+ "\n",
+ "B*A=\n",
+ "[[-1 12 11]\n",
+ " [-1 7 8]\n",
+ " [-2 -1 5]]\n",
+ "Clearly AB is not equal to BA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[1,3,0],[-1,2,1],[0,0,2]])\n",
+ "B = numpy.array([[2,3,4],[1,2,3],[-1,1,2]])\n",
+ "ma = numpy.matrix(A)\n",
+ "mb = numpy.matrix(B)\n",
+ "print \"A*B=\"\n",
+ "print ma*mb\n",
+ "print \"\"\n",
+ "print \"B*A=\"\n",
+ "print mb*ma\n",
+ "print \"Clearly AB is not equal to BA\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.18, page no. 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AB=C−−>B=inv(A)∗C\n",
+ "\n",
+ "[[ 1.00000000e+00 -1.77635684e-15 -8.88178420e-16]\n",
+ " [ -2.22044605e-16 2.00000000e+00 -1.11022302e-16]\n",
+ " [ 1.77635684e-15 0.00000000e+00 1.00000000e+00]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[3,2,2],[1,3,1],[5,3,4]])\n",
+ "C = numpy.matrix([[3,4,2],[1,6,1],[5,6,4]])\n",
+ "print \"AB=C−−>B=inv(A)∗C\"\n",
+ "print \"\"\n",
+ "B = numpy.linalg.inv(A)*C \n",
+ "print B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.19, page no. 66"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Aˆ3−4∗Aˆ2−3A+11*I=\n",
+ "\n",
+ "[[ 0. 0. 0.]\n",
+ " [ 0. 0. 0.]\n",
+ " [ 0. 0. 0.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[1,3,2],[2,0,-1],[1,2,3]])\n",
+ "I = numpy.eye(3)\n",
+ "A = numpy.matrix(A)\n",
+ "print \"Aˆ3−4∗Aˆ2−3A+11*I=\"\n",
+ "print \"\"\n",
+ "print A**3-4*A**2-3*A+11*I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.20, page no. 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Enter the value of n: 3\n",
+ "Calculating A ^ n: \n",
+ "[[ 31 -75]\n",
+ " [ 12 -29]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "0\n",
+ "A = numpy.matrix([[11,-25],[4, -9]])\n",
+ "n = int(raw_input(\"Enter the value of n: \"))\n",
+ "print \"Calculating A ^ n: \"\n",
+ "print A**n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.23, page no. 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.24.1, page no. 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,2,3],[1,4,2],[2,6,5]])\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.24.2, page no. 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[0,1,-3,-1],[1,0,1,1],[3,1,0,2],[1,1,-2,0]])\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.25, page no. 72"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.26, page no. 73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is: 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[2,3,-1,-1],[1,-1,-2,-4],[3,1,3,-2],[6,3,0,-7]])\n",
+ "r,p = numpy.linalg.eigh ( A )\n",
+ "print \"Rank of A is:\",numpy.linalg.matrix_rank(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.28, page no. 75"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inverse of A is: \n",
+ "[[ 1.4 0.2 -0.4]\n",
+ " [-1.5 0. 0.5]\n",
+ " [ 1.1 -0.2 -0.1]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,1,1],[4,3,-1],[3,5,3]])\n",
+ "print \"Inverse of A is: \"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.31, page no. 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " The equations can be rewritten as AX=B where X=[ x1 ; x2 ; x3 ; x4 ] and \n",
+ "Determinant of A=\n",
+ "8.0\n",
+ "Inverse of A =\n",
+ "[[ 0.5 0.5 0.5 -0.5]\n",
+ " [-0.5 0. 0. 0.5]\n",
+ " [ 0. -0.5 0. 0.5]\n",
+ " [ 0. 0. -0.5 0.5]]\n",
+ "X= [[ 1.]\n",
+ " [-1.]\n",
+ " [ 2.]\n",
+ " [-2.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The equations can be rewritten as AX=B where X=[ x1 ; x2 ; x3 ; x4 ] and \"\n",
+ "A = numpy.matrix([[1,-1,1,1],[1,1,-1,1],[1,1,1,-1],[1,1,1,1]])\n",
+ "B = numpy.matrix([[2],[-4],[4],[0]])\n",
+ "print \"Determinant of A=\"\n",
+ "print numpy.linalg.det(A)\n",
+ "print \"Inverse of A =\"\n",
+ "print numpy.linalg.inv(A)\n",
+ "print \"X=\",numpy.linalg.inv(A)*B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.32, page no. 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The equations can be rewritten as AX=B where X=[x;y;z] and\n",
+ "Determinant of A=\n",
+ "-8.79296635503e-14\n",
+ "Since det(A)=0 , hence, this system of equation will have infinite solutions.. hence, the system is consistent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The equations can be rewritten as AX=B where X=[x;y;z] and\"\n",
+ "A = numpy.matrix([[5,3,7],[3,26,2],[7,2,10]])\n",
+ "B = numpy.matrix([[4],[9],[5]])\n",
+ "print \"Determinant of A=\"\n",
+ "print numpy.linalg.det(A)\n",
+ "print \"Since det(A)=0 , hence, this system of equation will have infinite solutions.. hence, the system is consistent\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.34.1, page no. 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is 3\n",
+ "Equations have only a trivial solution : x=y=z=0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[1,2,3],[3,4,4],[7,10,12]])\n",
+ "p = numpy.linalg.matrix_rank(A)\n",
+ "print \"Rank of A is\",p\n",
+ "if p==3:\n",
+ " print \"Equations have only a trivial solution : x=y=z=0\"\n",
+ "else:\n",
+ " print \"Equations have infinite no . of solutions.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.34.2, page no. 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rank of A is 2\n",
+ "Equations have infinite no. of solutions.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[4,2,1,3],[6,3,4,7],[2,1,0,1]])\n",
+ "p = numpy.linalg.matrix_rank(A)\n",
+ "print \"Rank of A is\",p\n",
+ "if p ==4:\n",
+ " print \"Equations have only a trivial solution : x=y=z=0\"\n",
+ "else:\n",
+ " print \"Equations have infinite no. of solutions.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.38, page no. 83"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The given equations can be written as Y=AX where\n",
+ "Determinant of A is -1.0\n",
+ "Since, its non−singular, hence transformation is regular\n",
+ "Inverse of A is\n",
+ "[[ 2. -2. -1.]\n",
+ " [-4. 5. 3.]\n",
+ " [ 1. -1. -1.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"The given equations can be written as Y=AX where\"\n",
+ "A = numpy.matrix([[2,1,1],[1,1,2],[1,0,-2]])\n",
+ "print \"Determinant of A is\",numpy.linalg.det ( A )\n",
+ "print \"Since, its non−singular, hence transformation is regular\"\n",
+ "print\"Inverse of A is\"\n",
+ "print numpy.linalg.inv ( A )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.39, page no. 84"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[-0.66666667 0.33333333 0.66666667]\n",
+ " [ 0.66666667 0.66666667 0.33333333]\n",
+ " [ 0.33333333 -0.66666667 0.66666667]]\n",
+ "A transpose is equal to\n",
+ "[[-0.66666667 0.66666667 0.33333333]\n",
+ " [ 0.33333333 0.66666667 -0.66666667]\n",
+ " [ 0.66666667 0.33333333 0.66666667]]\n",
+ "A∗(transpose of A)=\n",
+ "[[ 1. 0. 0.]\n",
+ " [ 0. 1. 0.]\n",
+ " [ 0. 0. 1.]]\n",
+ "Hence, A is orthogonal\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[-2./3,1./3,2./3],[2./3,2./3,1./3],[1./3,-2./3,2./3]])\n",
+ "print A\n",
+ "print \"A transpose is equal to\"\n",
+ "print A.transpose()\n",
+ "print \"A∗(transpose of A)=\"\n",
+ "print A*A.transpose()\n",
+ "print \"Hence, A is orthogonal\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.42, page no. 87"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "Two eigen vectors are the two columns of U\n",
+ "[[ 4. 1.]\n",
+ " [ 0. 0.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "A = numpy.matrix([[5,4],[1,2]])\n",
+ "print \"Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "P,R= numpy.linalg.eig(A)\n",
+ "U = numpy.zeros([2, 2])\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "U[0,0]= R[0,0]*math.sqrt(17)\n",
+ "U[0,1]= R[0,1]*math.sqrt(17)\n",
+ "U[0,1]= R[1,1]*math.sqrt(2)\n",
+ "print \"Two eigen vectors are the two columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Examle 2.43, page no. 88"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "[-2. 3. 6.]\n",
+ "Three eigen vectors are the three columns of U\n",
+ "[[ -2.82842712 5.19615242 14.69693846]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[1,1,3],[1,5,1],[3,1,1]])\n",
+ "U = numpy.zeros([3,3])\n",
+ "print \"Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\"\n",
+ "R,P = numpy.linalg.eig(A)\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "print R\n",
+ "U[0,0] = R[0]*math.sqrt(2) \n",
+ "U[0,1] = R[1]*math.sqrt(3)\n",
+ "U[0,2] = R[2]*math.sqrt(6)\n",
+ "print \"Three eigen vectors are the three columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.44, page no. 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\n",
+ "R is normalised. let U represents unnormalised version of r\n",
+ "[ 3. 2. 5.]\n",
+ "Three eigen vectors are the three columns of U\n",
+ "[[ 3. 2. 18.70828693]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[3,1,4],[0,2,6],[0,0,5]])\n",
+ "U = numpy.zeros([3,3])\n",
+ "print \"Let Rrepresents the matrix of transformation and Prepresents a diagonalmatrix whose values are the eigenvalues of A. then\"\n",
+ "R,P = numpy.linalg.eig(A)\n",
+ "print \"R is normalised. let U represents unnormalised version of r\"\n",
+ "print R\n",
+ "U[0,0] = R[0]*math.sqrt(1) \n",
+ "U[0,1] = R[1]*math.sqrt(1)\n",
+ "U[0,2] = R[2]*math.sqrt(14)\n",
+ "print \"Three eigen vectors are the three columns of U\"\n",
+ "print U"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.45, page no. 90"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigen values of A are\n",
+ "(array([-1., 5.]), matrix([[-0.89442719, -0.70710678],\n",
+ " [ 0.4472136 , -0.70710678]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is ( x−a ) ( x−b)\n",
+ "[-8 -5]\n",
+ "Aˆ2−4∗A−5∗ I=\n",
+ "[[ 0. 0.]\n",
+ " [ 0. 0.]]\n",
+ "Inverse of A=\n",
+ "[[-0.6 0.8]\n",
+ " [ 0.4 -0.2]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[1,4],[2,3]])\n",
+ "I = numpy.eye(2)\n",
+ "print \"Eigen values of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a = -1;\n",
+ "b = 5;\n",
+ "print \"Hence, the characteristic equation is ( x−a ) ( x−b)\"\n",
+ "print ( x - a ) *( x - b )\n",
+ "\n",
+ "print \"Aˆ2−4∗A−5∗ I=\"\n",
+ "print A**2-4*A-5* I\n",
+ "print \"Inverse of A=\"\n",
+ "print numpy.linalg.inv ( A )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.46, page no. 91"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Egenvalues of A are\n",
+ "(array([ 4.25683813, 0.40327935, -4.66011748]), matrix([[ 0.10296232, -0.91299477, -0.48509974],\n",
+ " [-0.90473047, 0.40531299, 0.37306899],\n",
+ " [ 0.41335402, 0.04649661, 0.79088417]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is ( x−a ) ( x−b) ( x−c )\n",
+ "[-10.99999905 8.00000095]\n",
+ "Inverse of A=\n",
+ "[[ 3. 1. 1.5 ]\n",
+ " [-1.25 -0.25 -0.75]\n",
+ " [-0.25 -0.25 -0.25]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[1,1,3],[1,3,-3],[-2,-4,-4]])\n",
+ "print \"Egenvalues of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a =4.2568381\n",
+ "b =0.4032794\n",
+ "c = -4.6601175\n",
+ "print \"Hence, the characteristic equation is ( x−a ) ( x−b) ( x−c )\"\n",
+ "p = (x-a)*(x-b)*(x-c)\n",
+ "print p\n",
+ "print \"Inverse of A=\"\n",
+ "print numpy.linalg.inv(A)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.47, page no. 91"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eigenvalues of A are\n",
+ "(array([ 3., 1., 1.]), matrix([[ 0.70710678, -0.70710678, -0.40824829],\n",
+ " [ 0. , 0. , 0.81649658],\n",
+ " [ 0.70710678, 0.70710678, -0.40824829]]))\n",
+ "Let\n",
+ "Hence, the characteristic equation is (x−a)(x−b)(x−c)=\n",
+ "[ 0 -3]\n",
+ "Aˆ8−5∗Aˆ7+7∗Aˆ6−3∗Aˆ5+Aˆ4−5∗Aˆ3+8∗Aˆ2−2∗A+I =\n",
+ "[[ 8. 5. 5.]\n",
+ " [ 0. 3. 0.]\n",
+ " [ 5. 5. 8.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "x = numpy.poly([0])\n",
+ "A = numpy.matrix([[2,1,1],[0,1,0],[1,1,2]])\n",
+ "I = numpy.eye(3)\n",
+ "print \"Eigenvalues of A are\"\n",
+ "print numpy.linalg.eig(A)\n",
+ "print \"Let\"\n",
+ "a =1\n",
+ "b =1\n",
+ "c =3\n",
+ "print \"Hence, the characteristic equation is (x−a)(x−b)(x−c)=\"\n",
+ "p = (x-a)*(x-b)*(x-c)\n",
+ "print p\n",
+ "print \"Aˆ8−5∗Aˆ7+7∗Aˆ6−3∗Aˆ5+Aˆ4−5∗Aˆ3+8∗Aˆ2−2∗A+I =\"\n",
+ "print A**8-5*A**7+7*A**6-3*A**5+A**4-5*A**3+8*A**2-2*A+I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.48, page no. 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R is matrix of transformation and D is a diagonal matrix\n",
+ "[-1.65544238 -0.21075588 2.86619826]\n",
+ "[[-0.87936655 -0.34661859 -0.32645063]\n",
+ " [ 0.11410244 0.51222983 -0.85123513]\n",
+ " [-0.46227167 0.78579651 0.41088775]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[-1,2,-2],[1,2,1],[-1,-1,0]])\n",
+ "print \"R is matrix of transformation and D is a diagonal matrix\"\n",
+ "[R,D]= numpy.linalg.eigh(A)\n",
+ "print R\n",
+ "print D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.49, page no. 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R is matrix of transformation and D is a diagonal matrix\n",
+ "R is normalised, let P denotes unnormalised version of R . Then \n",
+ "[ 3. 2. 5.]\n",
+ "[[ 4.24264069 3.46410162 12.24744871]\n",
+ " [ 0. 0. 0. ]\n",
+ " [ 0. 0. 0. ]]\n",
+ "A^4= [[ 81 65 1502]\n",
+ " [ 0 16 1218]\n",
+ " [ 0 0 625]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math\n",
+ "\n",
+ "A = numpy.matrix([[3,1,4],[0,2,6],[0,0,5]])\n",
+ "P = numpy.zeros([3,3])\n",
+ "print \"R is matrix of transformation and D is a diagonal matrix\"\n",
+ "R,D = numpy.linalg.eig(A)\n",
+ "print \"R is normalised, let P denotes unnormalised version of R . Then \"\n",
+ "print R\n",
+ "P[0,0] = R[0]*math.sqrt(2) \n",
+ "P[0,1] = R[1]*math.sqrt(3)\n",
+ "P[0,2] = R[2]*math.sqrt(6)\n",
+ "print P\n",
+ "print \"A^4= \",A**4"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.50, page no. 94"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "3∗xˆ2+5∗yˆ2+3∗zˆ2−2∗y∗z+2∗z∗x−2∗x∗y\n",
+ "The matrix of the given quadratic form is\n",
+ "Let R represents the matrix of transformation and Prepresents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "So, canonical form is 2∗xˆ2+3∗yˆ2+6∗zˆ2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"3∗xˆ2+5∗yˆ2+3∗zˆ2−2∗y∗z+2∗z∗x−2∗x∗y\"\n",
+ "print \"The matrix of the given quadratic form is\"\n",
+ "A = numpy.matrix([[3,-1,1],[-1,5,-1],[1,-1,3]])\n",
+ "print \"Let R represents the matrix of transformation and Prepresents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "[R,P] = numpy.linalg.eig(A)\n",
+ "print \"So, canonical form is 2∗xˆ2+3∗yˆ2+6∗zˆ2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.51, page no. 95"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2∗x1∗x2+2∗x1∗x3−2∗x2∗x3\n",
+ "The matrix of the given quadratic form is\n",
+ "Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\n",
+ "so, canonical form is −2∗xˆ2+yˆ2+ zˆ2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"2∗x1∗x2+2∗x1∗x3−2∗x2∗x3\"\n",
+ "print \"The matrix of the given quadratic form is\"\n",
+ "A = numpy.matrix([[0,1,1],[1,0,-1],[1,-1,0]])\n",
+ "print \"Let R represents the matrix of transformation and P represents a diagonal matrix whose values are the eigenvalues of A. then\"\n",
+ "[R,P] = numpy.linalg.eig(A)\n",
+ "print \"so, canonical form is −2∗xˆ2+yˆ2+ zˆ2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.52, page no. 96"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A∗= [[ 2.-1.j -5.-0.j]\n",
+ " [ 3.-0.j 0.-1.j]\n",
+ " [-1.-3.j 4.+2.j]]\n",
+ "AA∗= [[ 24.+0.j -20.+2.j]\n",
+ " [-20.-2.j 46.+0.j]]\n",
+ "Clearly, AA∗ is hermitian matrix\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "'''\n",
+ "A=[2+%i 3 -1+3*%i;-5 %i 4-2*%i]\n",
+ "'''\n",
+ "\n",
+ "A = numpy.matrix([[2+1j,3,-1+3*1j],[-5,1j,4-2*1j]])\n",
+ "#A = A.getH()\n",
+ "print \"A∗=\", A.getH()\n",
+ "print \"AA∗=\", A*(A.getH())\n",
+ "print \"Clearly, AA∗ is hermitian matrix\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.53, page no. 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " A∗= [[ 0.-0.j 0.-0.j]\n",
+ " [-0.-0.j 0.-0.j]]\n",
+ "AA∗= [[ 0.+0.j 0.+0.j]\n",
+ " [ 0.+0.j 0.+0.j]]\n",
+ "A∗A= [[ 0.+0.j 0.+0.j]\n",
+ " [ 0.+0.j 0.+0.j]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy \n",
+ "\n",
+ "A = numpy.matrix([[(1/2)*(1+1j),(1/2)*(-1+1j)],[(1/2)*(1+1j),(1/2)*(1-1j)]])\n",
+ "print \"A∗=\", A.getH()\n",
+ "print \"AA∗=\", A*(A.getH())\n",
+ "print \"A∗A=\", (A.getH())*A"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.54, page no. 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "I−A=\n",
+ "inverse of (I+A)=\n",
+ "[[ 0.16666667+0.j -0.16666667-0.33333333j]\n",
+ " [ 0.16666667-0.33333333j 0.16666667+0.j ]]\n",
+ "((I−A)(inverse(I+A)))∗((I−A)(inverse(I+A)))=\n",
+ "[[ 1.11111111e-01-0.44444444j -2.77555756e-17+0.88888889j]\n",
+ " [ -2.77555756e-17+0.88888889j 1.11111111e-01+0.44444444j]]\n",
+ "((I−A)(inverse(I+A)))((I−A)(inverse(I+A)))∗=\n",
+ "[[ 1.11111111e-01+0.44444444j 1.11022302e-16+0.88888889j]\n",
+ " [ 1.11022302e-16+0.88888889j 1.11111111e-01-0.44444444j]]\n",
+ "Clearly, the product is an identity matrix.hence, it is a unitary matrix\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.matrix([[0,1+2*1j],[-1+2*1j,0]])\n",
+ "I = numpy.eye(2)\n",
+ "print \"I−A=\"\n",
+ "I-A\n",
+ "print \"inverse of (I+A)=\"\n",
+ "print numpy.linalg.inv(I+A)\n",
+ "print \"((I−A)(inverse(I+A)))∗((I−A)(inverse(I+A)))=\"\n",
+ "print (((I-A)*(numpy.linalg.inv(I+A))).T)*((I-A)*(numpy.linalg.inv(I+A)))\n",
+ "print \"((I−A)(inverse(I+A)))((I−A)(inverse(I+A)))∗=\"\n",
+ "print ((I-A)*(numpy.linalg.inv(I+A)))*(((I-A)*(numpy.linalg.inv(I+A))).T)\n",
+ "print \"Clearly, the product is an identity matrix.hence, it is a unitary matrix\""
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb
new file mode 100644
index 00000000..68dc76ff
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter34_2.ipynb
@@ -0,0 +1,1414 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 34 : Probability And Distributions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.1, page no. 830"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "From the principle of counting, the required no. of ways are 12∗11∗10∗9= \n",
+ "11880\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"From the principle of counting, the required no. of ways are 12∗11∗10∗9= \"\n",
+ "print 12*11*10*9"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.2.1, page no. 831"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no. of permutations=9!/(2!∗2!∗2!)\n",
+ "45360\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"no. of permutations=9!/(2!∗2!∗2!)\"\n",
+ "print math.factorial(9)/(math.factorial(2)*math.factorial(2)*math.factorial(2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.2.2, page no. 831"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no. of permutations=9!/(2!∗2!∗3!*3!)\n",
+ "2520\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"no. of permutations=9!/(2!∗2!∗3!*3!)\"\n",
+ "print math.factorial(9)/(math.factorial(2)*math.factorial(2)*math.factorial(3)*math.factorial(3))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.3.1, page no. 832"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no. of committees=C(6,3)∗C(5,2)=’\n",
+ "200\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"no. of committees=C(6,3)∗C(5,2)=’\"\n",
+ "print C(6,3)*C(5,2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.3.2, page no. 832"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no. of committees=C(4,1)∗C(5,2)=’\n",
+ "40\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"no. of committees=C(4,1)∗C(5,2)=’\"\n",
+ "print C(4,1)*C(5,2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.3.3, page no. 833"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no. of committees=C(6,3)∗C(4,2)=’\n",
+ "120\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"no. of committees=C(6,3)∗C(4,2)=’\"\n",
+ "print C(6,3)*C(4,2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.4.1, page no. 834"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The probability of getting a four is 1/6= 0.166666666667\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"The probability of getting a four is 1/6= \",1./6"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.4.2, page no. 834"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The probability of getting an even no. 1/2= 0.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"The probability of getting an even no. 1/2= \",1./2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.5, page no. 835"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The probability of 53 Sundays is 2/7= 0.285714285714\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"The probability of 53 Sundays is 2/7= \",2./7"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.6, page no. 835"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The five digits can be arranged in 5! ways = 120\n",
+ "Of which 4! will begin with 0 = 24\n",
+ "So, total no. of five digit numbers = 5!−4! = 96\n",
+ "The numbers ending in 04, 12, 20, 24, 32, 40 will be divisible by 4 \n",
+ "numbers ending in 04 = 3! = 6\n",
+ "numbers ending in 12 = 3!−2! = 4\n",
+ "numbers ending in 20 = 3! = 6\n",
+ "numbers ending in 24 = 3!−2! = 4\n",
+ "numbers ending in 32 = 3!−2! = 4\n",
+ "numbers ending in 40 = 3! = 6\n",
+ "So, total no. of favourable ways = 6+4+6+4+4+6 = 30\n",
+ "probability = 30/96 = 0.3125\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "print \"The five digits can be arranged in 5! ways = \",math.factorial(5)\n",
+ "print \"Of which 4! will begin with 0 = \",math.factorial(4)\n",
+ "print \"So, total no. of five digit numbers = 5!−4! = \",math.factorial(5)-math.factorial(4)\n",
+ "print \"The numbers ending in 04, 12, 20, 24, 32, 40 will be divisible by 4 \"\n",
+ "print \"numbers ending in 04 = 3! = \",math.factorial(3)\n",
+ "print \"numbers ending in 12 = 3!−2! = \",math.factorial(3)-math.factorial(2)\n",
+ "print \"numbers ending in 20 = 3! = \",math.factorial(3)\n",
+ "print \"numbers ending in 24 = 3!−2! = \",math.factorial(3)-math.factorial(2)\n",
+ "print \"numbers ending in 32 = 3!−2! = \",math.factorial(3)-math.factorial(2)\n",
+ "print \"numbers ending in 40 = 3! = \",math.factorial(3)\n",
+ "print \"So, total no. of favourable ways = 6+4+6+4+4+6 = \",6+4+6+4+4+6\n",
+ "print \"probability = 30/96 = \",30./96"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.7, page no. 836"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible cases = C(40,4) = 91390\n",
+ "Favourable outcomes = C(24,2)∗C(15,1) = 4140\n",
+ "Probability = 0.0453003610898\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible cases = C(40,4) = \",C(40,4)\n",
+ "print \"Favourable outcomes = C(24,2)∗C(15,1) = \",C(24,2)*C(15,1)\n",
+ "print \"Probability = \",float(C(24,2)*C(15,1))/C(40,4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.8, page no. 836"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible cases = C(15,8) = 6435\n",
+ "Favourable outcomes = C(5,2)∗C(10,6) = 2100\n",
+ "Probability = 0.32634032634\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible cases = C(15,8) = \",C(15,8)\n",
+ "print \"Favourable outcomes = C(5,2)∗C(10,6) = \",C(5,2)*C(10,6)\n",
+ "print \"Probability = \",float(C(5,2)*C(10,6))/C(15,8)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.9.1, page no. 837"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible cases = C(9,3) = 84\n",
+ "Favourable outcomes = C(2,1)∗C(3,1)*C(4,1) = 24\n",
+ "Probability = 0.285714285714\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible cases = C(9,3) = \",C(9,3)\n",
+ "print \"Favourable outcomes = C(2,1)∗C(3,1)*C(4,1) = \",C(2,1)*C(3,1)*C(4,1)\n",
+ "print \"Probability = \",float(C(2,1)*C(3,1)*C(4,1))/C(9,3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.9.2, page no. 837"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible cases = C(9,3) = 84\n",
+ "Favourable outcomes = C(2,2)∗C(7,1)+C(3,2)∗C(6,1)+C(4,2)∗C(5,1) = 55\n",
+ "Probability = 0.654761904762\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible cases = C(9,3) = \",C(9,3)\n",
+ "print \"Favourable outcomes = C(2,2)∗C(7,1)+C(3,2)∗C(6,1)+C(4,2)∗C(5,1) = \",C(2,2)*C(7,1)+C(3,2)*C(6,1)+C(4,2)*C(5,1)\n",
+ "print \"Probability = \",float(C(2,2)*C(7,1)+C(3,2)*C(6,1)+C(4,2)*C(5,1))/C(9,3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.9.3, page no. 838"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible cases = C(9,3) = 84\n",
+ "Favourable outcomes = C(3,3)+C(4,3) = 5\n",
+ "Probability = 0.0595238095238\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible cases = C(9,3) = \",C(9,3)\n",
+ "print \"Favourable outcomes = C(3,3)+C(4,3) = \",C(3,3)+C(4,3)\n",
+ "print \"Probability = \",5./84"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.13, page no. 840"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of drawing an ace or spade or both from pack of 52 cards = 4/52+13/52−1/52= 17\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of drawing an ace or spade or both from pack of 52 cards = 4/52+13/52−1/52= \",4+13-1/52"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.14.1, page no. 841"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of first card being a king = 4/52 = 0.0769230769231\n",
+ "Probability of second card being a queen = 4/52 = 0.0769230769231\n",
+ "Probability of drawing both cards in succession = 4/52∗4/52= 0.00591715976331\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of first card being a king = 4/52 = \",4./52\n",
+ "print \"Probability of second card being a queen = 4/52 = \",4./52\n",
+ "print \"Probability of drawing both cards in succession = 4/52∗4/52= \",(4./52)*(4./52)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.15.1, page no. 842"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of getting 7 in first toss and not getting it in second toss = 1/6∗5/6 = 0.138888888889\n",
+ "Probability of not getting 7 in first toss and getting it in second toss = 5/6∗1/6 = 0.138888888889\n",
+ "Required probability = 1/6∗5/6+5/6∗1/6 = 0.277777777778\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of getting 7 in first toss and not getting it in second toss = 1/6∗5/6 = \",(1./6)*(5./6)\n",
+ "print \"Probability of not getting 7 in first toss and getting it in second toss = 5/6∗1/6 = \",(5./6)*(1./6)\n",
+ "print \"Required probability = 1/6∗5/6+5/6∗1/6 = \",((1./6)*(5./6))+((5./6)*(1./6))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.15.2, page no. 842"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of not getting 7 in either toss = 5/6∗5/6 = 0.694444444444\n",
+ "Probability of getting 7 at least once = 1−5/6∗5/6 = 0.305555555556\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of not getting 7 in either toss = 5/6∗5/6 = \",(5./6)*(5./6)\n",
+ "print \"Probability of getting 7 at least once = 1−5/6∗5/6 = \",1-(5./6)*(5./6)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.15.3, page no. 842"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of getting 7 twice = 1/6∗1/6 = 0.0277777777778\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of getting 7 twice = 1/6∗1/6 = \",(1./6)*(1./6)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.16, page no. 843"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of engineering subject being choosen = (1/3∗3/8)+(2/3∗5/8) = 0.541666666667\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of engineering subject being choosen = (1/3∗3/8)+(2/3∗5/8) = \",((1./3)*(3./8)) +((2./3)*(5./8))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.17, page no. 844"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of white ball being choosen = 2/6∗6/13+4/6∗5/13 = 0.410256410256\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of white ball being choosen = 2/6∗6/13+4/6∗5/13 = \",((2./6)*(6./13))+((4./6)*(5./13))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.18, page no. 844"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Chances of winning of A=1/2+(1/2)ˆ2∗(1/2)+(1/2)ˆ4∗(1/2)+(1/2)ˆ6∗(1/2)+..= 0.666666666667\n",
+ "Chances of winning of B=1−chances of winning of A = 1\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Chances of winning of A=1/2+(1/2)ˆ2∗(1/2)+(1/2)ˆ4∗(1/2)+(1/2)ˆ6∗(1/2)+..= \",(1./2)/(1-(1./2)**2)\n",
+ "print \"Chances of winning of B=1−chances of winning of A = \",1-(2/3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.19.1, page no. 845"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible outcomes = C(10,2) = 45\n",
+ "Favourable outcomes = 5*5 = 25\n",
+ "P = 0.555555555556\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Total no. of possible outcomes = C(10,2) = \",C(10,2)\n",
+ "print \"Favourable outcomes = 5*5 = \",5*5\n",
+ "print \"P = \",25./45"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.19.2, page no. 845"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total no. of possible outcomes = 10*10 = 100\n",
+ "Favourable outcomes = 5*5+5*5 = 50\n",
+ "P = 0.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Total no. of possible outcomes = 10*10 = \",10*10\n",
+ "print \"Favourable outcomes = 5*5+5*5 = \",5*5+5*5\n",
+ "print \"P = \",50./100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.20, page no. 846"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of A/B = AandB/B = 0.25\n",
+ "Probability of B/A = AandB/A = 0.333333333333\n",
+ "Probability of AandBnot = A−AandB = 0.166666666667\n",
+ "Probability of A/Bnot = AandBnot/Bnot = 0.25\n"
+ ]
+ }
+ ],
+ "source": [
+ "A = 1./4\n",
+ "B = 1./3\n",
+ "AorB = 1./2\n",
+ "AandB = A+B-AorB\n",
+ "print \"Probability of A/B = AandB/B = \",AandB/B\n",
+ "print \"Probability of B/A = AandB/A = \",AandB/A\n",
+ "print \"Probability of AandBnot = A−AandB = \",A-AandB\n",
+ "print \"Probability of A/Bnot = AandBnot/Bnot = \",(1./6)/(1-1./3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.22, page no. 846"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of A hitting target = 3/5\n",
+ "Probability of B hitting target = 2/5\n",
+ "Probability of C hitting target = 3/4\n",
+ "Probability that two shots hit = 3/5∗2/5∗(1−3/4)+2/5∗3/4∗(1−3/5)+3/4∗3/5∗(1−2/5) = \n",
+ "0.45\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of A hitting target = 3/5\"\n",
+ "print \"Probability of B hitting target = 2/5\"\n",
+ "print \"Probability of C hitting target = 3/4\"\n",
+ "print \"Probability that two shots hit = 3/5∗2/5∗(1−3/4)+2/5∗3/4∗(1−3/5)+3/4∗3/5∗(1−2/5) = \"\n",
+ "print (3./5)*(2./5)*(1-3./4)+(2./5)*(3./4)*(1-3./5)+(3./4)*(3./5)*(1-2./5)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.23, page no. 847"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of problem not getting solved = 1/2∗2/3∗3/4 = 0.25\n",
+ "Probability of problem getting solved = 1−(1/2∗2/3∗3/4) = 0.75\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability of problem not getting solved = 1/2∗2/3∗3/4 = \",(1./2)*(2./3)*(3./4)\n",
+ "print \"Probability of problem getting solved = 1−(1/2∗2/3∗3/4) = \",1-((1./2)*(2./3)*(3./4))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.25, page no. 848"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total frequency=integrate(f,x,0,2) =\n",
+ "u1 about origin = 1\n",
+ "u2 about origin = 16/15\n",
+ "Standard deviation = (u2−u1ˆ2)ˆ0.5= 0.258198889747161\n",
+ "Mean deviation about the mean = (1/n)∗(integrate(|x−1|∗(xˆ3),x,0,1)+integrate(|x−1|∗((2−x)ˆ3),x,1,2))\n",
+ "1/5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print \"Total frequency=integrate(f,x,0,2) =\" \n",
+ "n = sympy.integrate('x**3',('x',0,1))+sympy.integrate('(2-x)**3',('x',1,2))\n",
+ "print \"u1 about origin = \",\n",
+ "u1 = (1/n)*(sympy.integrate('(x)*(x**3)',('x',0,1))+sympy.integrate('(x)*((2-x)**3)',('x',1,2)))\n",
+ "print u1\n",
+ "print \"u2 about origin = \",\n",
+ "u2 = (1/n)*(sympy.integrate('(x**2)*(x**3)',('x',0,1))+sympy.integrate('(x**2)*((2-x)**3)',('x',1,2)))\n",
+ "print u2\n",
+ "print \"Standard deviation = (u2−u1ˆ2)ˆ0.5= \",(u2-u1**2)**0.5\n",
+ "print \"Mean deviation about the mean = (1/n)∗(integrate(|x−1|∗(xˆ3),x,0,1)+integrate(|x−1|∗((2−x)ˆ3),x,1,2))\"\n",
+ "print (1/n)*(sympy.integrate('(1-x)*(x**3)',('x',0,1))+sympy.integrate('(x-1)*((2-x)**3)',('x',1,2)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.26, page no. 849"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability = (0.45∗0.03)/(0.45∗0.03+0.25∗0.05+0.3∗0.04 = 0.355263157895\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability = (0.45∗0.03)/(0.45∗0.03+0.25∗0.05+0.3∗0.04 = \",(0.45*0.03)/(0.45*0.03+0.25*0.05+0.3*0.04)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.27, page no. 849"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability = (1/3∗2/6∗3/5)/(1/3∗2/6∗3/5+1/3∗1/6∗2/5+1/3∗3/6∗1/5) = 1.05555555556\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Probability = (1/3∗2/6∗3/5)/(1/3∗2/6∗3/5+1/3∗1/6∗2/5+1/3∗3/6∗1/5) = \",\n",
+ "print ((1./3)*(2./6)*(3./5))/((1./3)*(2./6)*(3./5))+((1./3)*(1./6)*(2./5))+((1./3)*(3./6)*(1./5))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.28, page no. 850"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of no success = 8/27 \n",
+ "Probability of a success = 1/3 \n",
+ "Probability of one success = 4/9\n",
+ "Probability of two success = 2/9\n",
+ "Probability of three success = 2/9\n",
+ "mean=sum of i∗pi = 1.0\n",
+ "sum of i∗piˆ2 = 1.66666666667\n",
+ "variance = (sum of i∗piˆ2)−1= 0.666666666667\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "print \"Probability of no success = 8/27 \"\n",
+ "print \"Probability of a success = 1/3 \"\n",
+ "print \"Probability of one success = 4/9\"\n",
+ "print \"Probability of two success = 2/9\"\n",
+ "print \"Probability of three success = 2/9\"\n",
+ "A = numpy.array([[0,1,2,3],[8./27,4./9,2./9,1./27]])\n",
+ "print \"mean=sum of i∗pi = \",\n",
+ "print A[0,0]*A[1,0]+A[0,1]*A[1,1]+A[0,3]*A[1,3]+A[0,2]*A[1,2]\n",
+ "print \"sum of i∗piˆ2 = \",\n",
+ "print A[0,0]**2*A[1,0]+A[0,1]**2*A[1,1]+A[0,3]**2*A[1,3]+A[0,2]**2*A[1,2]\n",
+ "print \"variance = (sum of i∗piˆ2)−1= \",\n",
+ "print A[0,0]**2*A[1,0]+A[0,1]**2*A[1,1]+A[0,3]**2*A[1,3]+A[0,2]**2*A[1,2]-1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.29, page no. 851"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Sumof all pi = 1 \n",
+ "Hence ,\n",
+ "p(x<4) = 16.0*k\n",
+ "p(x>=5) = 24.0*k\n",
+ "p(3<x<=6) = 33.0*k\n",
+ "p(x<=2) = 9.0*k\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "k = sympy.Symbol('k')\n",
+ "A =numpy.array([[0,1,2,3,4,5,6],[k,3*k,5*k,7*k,9*k,11*k,13*k]])\n",
+ "print \"Sumof all pi = 1 \"\n",
+ "print \"Hence ,\"\n",
+ "k = 1./49\n",
+ "print \"p(x<4) = \",\n",
+ "a = A[1,0]+A[1,1]+A[1,3]+A[1,2]\n",
+ "print a.evalf()\n",
+ "print \"p(x>=5) = \",\n",
+ "b = A[1,5]+A[1,6]\n",
+ "print b.evalf()\n",
+ "print \"p(3<x<=6) = \",\n",
+ "c = A[1,4]+A[1,5]+A[1,6]\n",
+ "print c.evalf()\n",
+ "print \"p(x<=2) = \",\n",
+ "e = A[1,0]+A[1,1]+A[1,2]\n",
+ "print e.evalf()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.30, page no. 853"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Sum of all pi = 1\n",
+ "Hence,\n",
+ "p(x<6) = 2.0*k**2 + 10.0*k\n",
+ "p(x>=6) = 9.0*k**2 + k\n",
+ "p(3<x<5) = 8.0*k\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "k = sympy.Symbol('k')\n",
+ "A =numpy.array([[0,1,2,3,4,5,6,7],[0,k,2*k,2*k,3*k,k**2,2*k**2,7*k**2+ k]])\n",
+ "print \"Sum of all pi = 1\"\n",
+ "print \"Hence,\"\n",
+ "k = 1./10\n",
+ "print \"p(x<6) = \",\n",
+ "a = A[1,0]+A[1,1]+A[1,3]+A[1,2]+ A[1,3]+A[1,4]+A[1,6]\n",
+ "print a.evalf()\n",
+ "print \"p(x>=6) = \",\n",
+ "b = A[1,6]+A[1,7]\n",
+ "print b.evalf()\n",
+ "print \"p(3<x<5) = \",\n",
+ "c = A[1,1]+A[1,2]+A[1,3]+A[1,4]\n",
+ "print c.evalf()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.31, page no. 853"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Clearly, f>0 for every x in (1,2) and integrate(f,x,0,numpy.inf)= 1.00000000000000\n",
+ "Required probability=p(1<=x<=2)= integrate(f,x,1,2) = 0.232544157934830\n",
+ "Cumulative probability function f(2)=integrate(f,x,−%inf,2) = 0.864664716763387\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "y = sympy.Symbol('y')\n",
+ "f = math.e**(-y)\n",
+ "print \"Clearly, f>0 for every x in (1,2) and integrate(f,x,0,numpy.inf)= \",\n",
+ "print sympy.integrate(math.e**(-y),('y',0,sympy.oo))\n",
+ "print \"Required probability=p(1<=x<=2)= integrate(f,x,1,2) = \",\n",
+ "print sympy.integrate(math.e**(-y),('y',1,2))\n",
+ "print \"Cumulative probability function f(2)=integrate(f,x,−%inf,2) = \",\n",
+ "print sympy.integrate(math.e**(-y),('y',0,2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.33, page no. 854"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total probability = integrate(f,x,0,6)=\n",
+ "2*k\n",
+ "4*k\n",
+ "2*k\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "k = sympy.Symbol('k')\n",
+ "print \"Total probability = integrate(f,x,0,6)=\"\n",
+ "p = sympy.integrate('k*x',('x',0,2))\n",
+ "q = sympy.integrate('2*k',('x',2,4))\n",
+ "r = sympy.integrate('-k*x+6*k',('x',4,6))\n",
+ "print p\n",
+ "print q\n",
+ "print r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 34.34, page no. 854"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "First row of A displays the value of x\n",
+ "The second row of x displays the probability of corresponding to x\n",
+ "E(x) = 5.5\n",
+ "E(x)ˆ2 = 46.5\n",
+ "E(2∗x+1)^2=E(4∗xˆ2+4∗x+1) = 209.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.array([[-3.,6.,9.],[1./6,1./2,1./3]])\n",
+ "print \"First row of A displays the value of x\"\n",
+ "print \"The second row of x displays the probability of corresponding to x\"\n",
+ "print \"E(x) = \",\n",
+ "c = A[0,0]*A[1,0]+A[0,1]*A[1,1]+A[0,2]*A[1,2]\n",
+ "print c\n",
+ "print \"E(x)ˆ2 = \",\n",
+ "b = A[0,0]**2*A[1,0]+A[0,1]**2*A[1,1]+A[0,2]**2*A[1,2]\n",
+ "print b\n",
+ "print \"E(2∗x+1)^2=E(4∗xˆ2+4∗x+1) = \",4*b+4*c+1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.35, page no. 855"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total frequency=integrate(f,x,0,2)= \n",
+ "u1 about origin = \n",
+ "u2 about origin = \n",
+ "standard deviation = (u2−u1ˆ2)ˆ0.5 = 0.258198889747161\n",
+ "Mean deviation about the mean = (1/n)∗(integrate|x−1|∗(xˆ3),x,0,1)+integrate(|x−1|∗((2−x)ˆ3),x,1,2))\n",
+ "1/5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print \"Total frequency=integrate(f,x,0,2)= \"\n",
+ "n = sympy.integrate('x**3',('x',0,1))+sympy.integrate('(2-x)**3',('x',1,2))\n",
+ "print \"u1 about origin = \"\n",
+ "u1 = (1/n)*(sympy.integrate('(x)*(x**3)',('x',0,1))+sympy.integrate('(x)*((2-x)**3)',('x',1,2)))\n",
+ "print \"u2 about origin = \"\n",
+ "u2 = (1/n)*(sympy.integrate('(x**2)*(x**3)',('x',0,1))+sympy.integrate('(x**2)*((2-x)**3)',('x',1,2)))\n",
+ "print \"standard deviation = (u2−u1ˆ2)ˆ0.5 = \",(u2-u1**2)**0.5\n",
+ "print \"Mean deviation about the mean = (1/n)∗(integrate|x−1|∗(xˆ3),x,0,1)+integrate(|x−1|∗((2−x)ˆ3),x,1,2))\"\n",
+ "print (1/n)*(sympy.integrate('(1-x)*(x**3)',('x',0,1))+sympy.integrate('(x-1)*((2-x)**3)',('x',1,2)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.38, page no. 857"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Probability that exactly two will be defective = C(12,2)∗(0.1)ˆ2∗(0.9)ˆ10 = 0.230127770466\n",
+ "Probability that at least two will be defective = 1−(C(12,0)∗(0.9)ˆ12+C(12,1)∗(0.1)∗(0.9)ˆ11) = 0.340997748211\n",
+ "The probability that none will be defective = C(12,12)∗(0.9)ˆ12 = 0.282429536481\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Probability that exactly two will be defective = C(12,2)∗(0.1)ˆ2∗(0.9)ˆ10 = \",C(12,2)*(0.1)**2*(0.9)**10\n",
+ "print \"Probability that at least two will be defective = 1−(C(12,0)∗(0.9)ˆ12+C(12,1)∗(0.1)∗(0.9)ˆ11) = \",\n",
+ "print 1-(C(12,0)*(0.9)**12+C(12,1)*(0.1)*(0.9)**11)\n",
+ "print \"The probability that none will be defective = C(12,12)∗(0.9)ˆ12 = \",C(12,12)*(0.9)**12"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.39, page no. 858"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of 8 heads and 4 tail sin 12 trials = p(8) = C(12,8)∗(1/2)ˆ8∗(1/2)ˆ4= 0.120849609375\n",
+ "The expected no. of such cases in 256 sets = 256∗p(8) = 30.9375\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Probability of 8 heads and 4 tail sin 12 trials = p(8) = C(12,8)∗(1/2)ˆ8∗(1/2)ˆ4= \",C(12.,8.)*(1./2)**8*(1./2)**4\n",
+ "print \"The expected no. of such cases in 256 sets = 256∗p(8) = \",256*(495./4096)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.40, page no. 859"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Probability of a defective part = 2/20 =0.1 \n",
+ "Probability of a non defective part = 0.9 \n",
+ "Probabaility of atleast three defectives in a sample = 0.323073194811\n",
+ "No. of sample shaving three defective parts = 1000∗0.323 = 323.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "def C(a,b):\n",
+ " x = math.factorial(a)/(math.factorial(b)*math.factorial(a-b))\n",
+ " return x\n",
+ "print \"Probability of a defective part = 2/20 =0.1 \"\n",
+ "print \"Probability of a non defective part = 0.9 \"\n",
+ "print \"Probabaility of atleast three defectives in a sample = \",\n",
+ "print 1-(C(20.,0.)*(0.9)**20+C(20.,1.)*(0.1)*(0.9)**19+C(20.,2.)*(0.1)**2*(0.9)**18)\n",
+ "print \"No. of sample shaving three defective parts = 1000∗0.323 = \",1000*0.323"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb
new file mode 100644
index 00000000..5ca46e4e
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter35_2.ipynb
@@ -0,0 +1,536 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 35 : Sampling And Inference"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.1, page no. 864"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Suppose the coin is unbiased\n",
+ "Then probability of getting the head in a toss = 1/2 \n",
+ "Then, expected no. of successes = a = 1/2∗400\n",
+ "Observed no. of successes = 216\n",
+ "The excess of observed value over expected value = 216\n",
+ "S. D. of simple sampling = (n∗p∗q)ˆ0.5 = c \n",
+ "Hence, z = (b−a)/c = 21.6\n",
+ "As z<1.96, the hypothesis is accepted at 5% level of significance\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Suppose the coin is unbiased\"\n",
+ "print \"Then probability of getting the head in a toss = 1/2 \"\n",
+ "print \"Then, expected no. of successes = a = 1/2∗400\"\n",
+ "a = 1/2*400\n",
+ "print \"Observed no. of successes = 216\"\n",
+ "b = 216\n",
+ "print \"The excess of observed value over expected value = \",b-a\n",
+ "print \"S. D. of simple sampling = (n∗p∗q)ˆ0.5 = c \"\n",
+ "c = (400*0.5*0.5)**0.5\n",
+ "print \"Hence, z = (b−a)/c = \",(b-a)/c\n",
+ "print \"As z<1.96, the hypothesis is accepted at 5% level of significance\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.2, page no. 865"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Suppose the die is unbiased \n",
+ "Then probability of getting 5 or 6 with one die=1/3 \n",
+ "Then, expected no. of successes = a = 1/3∗9000 \n",
+ "Observed no. of successes = 3240\n",
+ "The excess of observed value over expected value = 240.0\n",
+ "S. D. of simple sampling = (n∗p∗q)ˆ0.5=c\n",
+ "Hence, z = (b−a)/c = 5.366563146\n",
+ "As z>2.58, the hypothesis has to be rejected at 1% level of significance\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"Suppose the die is unbiased \"\n",
+ "print \"Then probability of getting 5 or 6 with one die=1/3 \"\n",
+ "print \"Then, expected no. of successes = a = 1/3∗9000 \"\n",
+ "a = 1./3*9000\n",
+ "print \"Observed no. of successes = 3240\"\n",
+ "b = 3240\n",
+ "print \"The excess of observed value over expected value = \",b-a\n",
+ "print \"S. D. of simple sampling = (n∗p∗q)ˆ0.5=c\"\n",
+ "c = (9000*(1./3)*(2./3))**0.5\n",
+ "print \"Hence, z = (b−a)/c = \",(b-a)/c\n",
+ "print \"As z>2.58, the hypothesis has to be rejected at 1% level of significance\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.3, page no. 865"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "q = 1−p \n",
+ "Standard error of the population of families having a monthly income of rs. 250 or less=(p∗q/n)ˆ0.5 = 0.0148442858929\n",
+ "Hence taking 103/420 to be the estimate of families having a monthly income of rs. 250 or less, the limits are 20% and 29% approximately\n"
+ ]
+ }
+ ],
+ "source": [
+ "p = 206./840\n",
+ "print \"q = 1−p \"\n",
+ "q = 1-p\n",
+ "n = 840\n",
+ "print \"Standard error of the population of families having a monthly income of rs. 250 or less=(p∗q/n)ˆ0.5 = \",(p*q/n)**0.5\n",
+ "print \"Hence taking 103/420 to be the estimate of families having a monthly income of rs. 250 or less, the limits are 20% and 29% approximately\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.4, page no. 866"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "p=(n1∗p1+n2∗p2)/(n1+n2)\n",
+ "0.1904\n",
+ "q = 1−p \n",
+ "0.8096\n",
+ "e=(p∗q∗(1/n1+1/n2))ˆ0.5\n",
+ "0.0163590274093\n",
+ "z = 0.916924926202\n",
+ "As z<1, the difference between the proportions is not significant. \n"
+ ]
+ }
+ ],
+ "source": [
+ "n1 = 900\n",
+ "n2 = 1600\n",
+ "p1 = 20./100\n",
+ "p2 = 18.5/100\n",
+ "print \"p=(n1∗p1+n2∗p2)/(n1+n2)\"\n",
+ "p = (n1*p1+n2*p2)/(n1+n2)\n",
+ "print p\n",
+ "print \"q = 1−p \"\n",
+ "q = 1-p\n",
+ "print q\n",
+ "print \"e=(p∗q∗(1/n1+1/n2))ˆ0.5\"\n",
+ "e = (p*q*((1./n1)+(1./n2)))**0.5\n",
+ "print e\n",
+ "z = (p1-p2)/e\n",
+ "print \"z = \",z\n",
+ "print \"As z<1, the difference between the proportions is not significant. \""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.5, page no. 867"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "q1 = 1−p1 \n",
+ "q2=1−p2\n",
+ "e=((p1∗q1/n1)+(p2*q2/n2))ˆ0.5\n",
+ "Hence, it is likely that real difference will be hidden.\n"
+ ]
+ }
+ ],
+ "source": [
+ "p1 = 0.3\n",
+ "p2 = 0.25\n",
+ "print \"q1 = 1−p1 \"\n",
+ "q1 = 1-p1\n",
+ "print \"q2=1−p2\"\n",
+ "q2 = 1-p2\n",
+ "n1 = 1200\n",
+ "n2 = 900\n",
+ "print \"e=((p1∗q1/n1)+(p2*q2/n2))ˆ0.5\"\n",
+ "e = ((p1*q1/n1)+(p2*q2/n2))**0.5\n",
+ "z = (p1-p2)/e\n",
+ "print \"Hence, it is likely that real difference will be hidden.\" "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.6, page no. 868"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "m and n represents mean and number of objects in sample respectively \n",
+ "z=(m−M)/(d/(nˆ0.5)\n",
+ "z = 2.7950310559\n",
+ "As z>1.96, it cannot be regarded as a random sample\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"m and n represents mean and number of objects in sample respectively \"\n",
+ "m = 3.4\n",
+ "n = 900.\n",
+ "M = 3.25\n",
+ "d = 1.61\n",
+ "print \"z=(m−M)/(d/(nˆ0.5)\"\n",
+ "z = (m-M)/(d/(n**0.5))\n",
+ "print \"z = \",z\n",
+ "print \"As z>1.96, it cannot be regarded as a random sample\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.9, page no. 871"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "m1 and n1 represents mean and no. of objects in sample 1\n",
+ "m2 and n2 represents mean and no. of objects in sample 2\n",
+ "On the hypothesis that the samples are drawn from the same population of d = 2.5, we get\n",
+ "z = -5.16397779494\n",
+ "Since |z|>1.96, thus samples cannot be regarded as drawn from the same population\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"m1 and n1 represents mean and no. of objects in sample 1\"\n",
+ "print \"m2 and n2 represents mean and no. of objects in sample 2\"\n",
+ "m1 = 67.5\n",
+ "m2 = 68.\n",
+ "n1 = 1000.\n",
+ "n2 = 2000.\n",
+ "d = 2.5\n",
+ "print \"On the hypothesis that the samples are drawn from the same population of d = 2.5, we get\"\n",
+ "z = (m1-m2)/(d*((1/n1)+(1/n2))**0.5)\n",
+ "print \"z = \",z\n",
+ "print \"Since |z|>1.96, thus samples cannot be regarded as drawn from the same population\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.10, page no. 872"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "m1, d1 and n1 denotes mean, deviation and no.of objects in first sample \n",
+ "m2, d2 and n2 denotes mean, deviation and no.of objects in second sample\n",
+ "S. E. of the difference of the mean heights is 0.0703246933872\n",
+ "-0.7\n",
+ "|m1−m2|>10e, this is highly significant. hence, the data indicates that the sailors are on the average taller than the soldiers.\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"m1, d1 and n1 denotes mean, deviation and no.of objects in first sample \"\n",
+ "m1 = 67.85\n",
+ "d1 = 2.56\n",
+ "n1 = 6400.\n",
+ "print \"m2, d2 and n2 denotes mean, deviation and no.of objects in second sample\"\n",
+ "m2 = 68.55\n",
+ "d2 = 2.52\n",
+ "n2 = 1600.\n",
+ "print \"S. E. of the difference of the mean heights is \",\n",
+ "e = ((d**2/n1)+(d2**2/n2))**0.5\n",
+ "print e\n",
+ "print m1-m2\n",
+ "print \"|m1−m2|>10e, this is highly significant. hence, the data indicates that the sailors are on the average taller than the soldiers.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.12, page no. 874"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "First of row denotes the different values of sample \n",
+ "The second row denotes the corresponding deviation\n",
+ "The third row denotes the corresponding square of deviation\n",
+ "The sum of second row elements = 10.0\n",
+ "The sum of third row elements = 66.0\n",
+ "let m be the mean \n",
+ "let d be the standard deviation\n",
+ "1.84522581263\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros((3,9))\n",
+ "n = 9\n",
+ "print \"First of row denotes the different values of sample \"\n",
+ "A[0,:] = [45,47,50,52,48,47,49,53,51]\n",
+ "print \"The second row denotes the corresponding deviation\"\n",
+ "for i in range(0,9):\n",
+ " A[1,i] = A[0,i]-48\n",
+ "print \"The third row denotes the corresponding square of deviation\"\n",
+ "for i in range(0,9):\n",
+ " A[2,i] = A[1,i]**2\n",
+ "print \"The sum of second row elements = \",\n",
+ "a =0\n",
+ "for i in range(0,9):\n",
+ " a = a+A[1,i]\n",
+ "print a\n",
+ "print \"The sum of third row elements = \",\n",
+ "b = 0\n",
+ "for i in range(0,9):\n",
+ " b = b+A[2,i]\n",
+ "print b\n",
+ "print \"let m be the mean \"\n",
+ "m = 48+a/n\n",
+ "print \"let d be the standard deviation\"\n",
+ "d = ((b/n)-(a/n)**2)**0.5\n",
+ "t = (m-47.5)*(n-1)**0.5/d\n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 35.13, page no. 876"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "d and n represents the deviation and no. objects in given sample\n",
+ "Taking the hypothesis that the product is not inferior i.e. there is no significant difference between m and M\n",
+ "3.15\n",
+ "Degrees of freedom= \n",
+ "9.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"d and n represents the deviation and no. objects in given sample\"\n",
+ "n = 10.\n",
+ "d = 0.04\n",
+ "m = 0.742\n",
+ "M = 0.700\n",
+ "print \"Taking the hypothesis that the product is not inferior i.e. there is no significant difference between m and M\"\n",
+ "t = (m-M)*(n-1)**0.5/d\n",
+ "print t\n",
+ "print \"Degrees of freedom= \"\n",
+ "f = n-1\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 34.15, page no. 878"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The first row denotes the boy no. \n",
+ "The second row denotes the marks in test I(x1)\n",
+ "The third row denotes the marks in test I(x2)\n",
+ "The fourth row denotes the difference of marks in two tests(d)\n",
+ "The fifth row denotes the (d−1)\n",
+ "The sixth row denotes the square of elements of fourth row \n",
+ "[[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]\n",
+ " [ 23. 20. 19. 21. 18. 20. 18. 17. 23. 16. 19.]\n",
+ " [ 24. 19. 22. 18. 20. 22. 20. 20. 23. 20. 17.]\n",
+ " [ 1. -1. 3. -3. 2. 2. 2. 3. 0. 4. -2.]\n",
+ " [ 0. -2. 2. -4. 1. 1. 1. 2. -1. 3. -3.]\n",
+ " [ 1. 1. 9. 9. 4. 4. 4. 9. 0. 16. 4.]]\n",
+ "The sum of elements of fourth row=\n",
+ "11.0\n",
+ "The sum of elements of sixth row= \n",
+ "61.0\n",
+ "Standard deviation\n",
+ "d = 2.46981780705\n",
+ "t = 1.48063606712\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy\n",
+ "\n",
+ "A = numpy.zeros((6,11))\n",
+ "n = 11\n",
+ "print \"The first row denotes the boy no. \"\n",
+ "A[0,:] = [1,2,3,4,5,6,7,8,9,10,11]\n",
+ "print \"The second row denotes the marks in test I(x1)\"\n",
+ "A[1,:] = [23,20,19,21,18,20,18,17,23,16,19]\n",
+ "print \"The third row denotes the marks in test I(x2)\"\n",
+ "A[2,:] = [24,19,22,18,20,22,20,20,23,20,17]\n",
+ "print \"The fourth row denotes the difference of marks in two tests(d)\"\n",
+ "for i in range (0,11):\n",
+ " A[3,i] = A[2,i]-A[1,i]\n",
+ "print \"The fifth row denotes the (d−1)\"\n",
+ "for i in range (0,11):\n",
+ " A[4,i] = A[3,i]-1\n",
+ "print \"The sixth row denotes the square of elements of fourth row \"\n",
+ "for i in range(0,11):\n",
+ " A[5,i] = A[3,i]**2\n",
+ "print A\n",
+ "a = 0\n",
+ "print \"The sum of elements of fourth row=\"\n",
+ "for i in range(0,11):\n",
+ " a = a+A[3,i]\n",
+ "print a\n",
+ "b = 0\n",
+ "print \"The sum of elements of sixth row= \"\n",
+ "for i in range(0,11):\n",
+ " b = b + A[5,i]\n",
+ "print b\n",
+ "print \"Standard deviation\"\n",
+ "d = (b/(n-1))**0.5\n",
+ "t = (1-0)*(n)**0.5/2.24\n",
+ "print \"d = \",d\n",
+ "print \"t = \",t"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb
new file mode 100644
index 00000000..e40044d7
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter4_2.ipynb
@@ -0,0 +1,1208 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4: Diffrentiations And Applications"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 4.1, page no. 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "We have to find yn for F=cosxcos2xcos3x\n",
+ "Enter the order of differentiation: 0\n",
+ "calculating yn..\n",
+ "The expression for yn is\n",
+ "cos(x)*cos(2*x)*cos(3*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "print \"We have to find yn for F=cosxcos2xcos3x\"\n",
+ "x = sympy.Symbol('x')\n",
+ "F = sympy.cos(x)*sympy.cos(2*x)*sympy.cos(3*x)\n",
+ "n = int(raw_input(\"Enter the order of differentiation: \"))\n",
+ "print \"calculating yn..\"\n",
+ "yn= sympy.diff(F,x,n)\n",
+ "print \"The expression for yn is\"\n",
+ "print yn "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.5, page no. 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "we have to find yn for F=cosxcos2xcos3x\n",
+ "Enter the order of differentiation: 0\n",
+ "calculating yn\n",
+ "The expression for yn is\n",
+ "x/((x - 1)*(2*x + 3))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print 'we have to find yn for F=cosxcos2xcos3x'\n",
+ "x = sympy.Symbol('x')\n",
+ "F = x/((x-1)*(2*x+3))\n",
+ "n = int(raw_input(\"Enter the order of differentiation: \"))\n",
+ "print \"calculating yn\"\n",
+ "yn= sympy.diff(F,x,n)\n",
+ "print \"The expression for yn is\"\n",
+ "print yn"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.6, page no. 138"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "We have to find yn for F=cosxcos2xcos3x\n",
+ "Enter the orde of differentiation:0\n",
+ "calculating yn\n",
+ "the expression for yn is\n",
+ "x/(a**2 + x**2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print \"We have to find yn for F=cosxcos2xcos3x\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "F = x/(x**2+a**2)\n",
+ "n = raw_input (\"Enter the orde of differentiation:\")\n",
+ "print \"calculating yn\"\n",
+ "yn = diff(F,x,n)\n",
+ "print \"the expression for yn is\"\n",
+ "print yn"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.7, page no. 139"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "we have to find yn for F=cosxcos2xcos3x\n",
+ "Enter the order of differentiation: 0\n",
+ "calculating yn\n",
+ "the expression for yn is\n",
+ "2.71828182845905**x*(2*x + 3)**3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, math\n",
+ "\n",
+ "print \"we have to find yn for F=cosxcos2xcos3x\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "F = math.e**(x)*(2*x+3)**3\n",
+ "n = raw_input (\"Enter the order of differentiation: \")\n",
+ "print \"calculating yn\"\n",
+ "yn = diff(F,x,n)\n",
+ "print \"the expression for yn is\"\n",
+ "print yn"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.8, page no. 139"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "y=(sinˆ-1)x) --sign inverse x\n",
+ "we have to prove (1-xˆ2)y(n+2)-(2n+1)xy(n+1)-nˆ2 yn\n",
+ "Calculating yn for various values of n\n",
+ "1\n",
+ "The expression for yn is\n",
+ "-6*x*(x*asin(x)/(-x**2 + 1)**(3/2) - 1/(x**2 - 1)) - 2*(a**2 + 1)*asin(x)/sqrt(-x**2 + 1) + 2*(-x**2 + 1)*(3*x**2*asin(x)/(-x**2 + 1)**(5/2) + 3*x/(x**2 - 1)**2 + asin(x)/(-x**2 + 1)**(3/2))\n",
+ "Which is equal to 0\n",
+ "2\n",
+ "The expression for yn is\n",
+ "-10*x*(3*x**2*asin(x)/(-x**2 + 1)**(5/2) + 3*x/(x**2 - 1)**2 + asin(x)/(-x**2 + 1)**(3/2)) - 2*(a**2 + 4)*(x*asin(x)/(-x**2 + 1)**(3/2) - 1/(x**2 - 1)) + 2*(-x**2 + 1)*(15*x**3*asin(x)/(-x**2 + 1)**(7/2) - 15*x**2/(x**2 - 1)**3 + 9*x*asin(x)/(-x**2 + 1)**(5/2) + 4/(x**2 - 1)**2)\n",
+ "Which is equal to 0\n",
+ "3\n",
+ "The expression for yn is\n",
+ "-14*x*(15*x**3*asin(x)/(-x**2 + 1)**(7/2) - 15*x**2/(x**2 - 1)**3 + 9*x*asin(x)/(-x**2 + 1)**(5/2) + 4/(x**2 - 1)**2) - 2*(a**2 + 9)*(3*x**2*asin(x)/(-x**2 + 1)**(5/2) + 3*x/(x**2 - 1)**2 + asin(x)/(-x**2 + 1)**(3/2)) + 2*(-x**2 + 1)*(105*x**4*asin(x)/(-x**2 + 1)**(9/2) + 105*x**3/(x**2 - 1)**4 + 90*x**2*asin(x)/(-x**2 + 1)**(7/2) - 55*x/(x**2 - 1)**3 + 9*asin(x)/(-x**2 + 1)**(5/2))\n",
+ "Which is equal to 0\n",
+ "4\n",
+ "The expression for yn is\n",
+ "-18*x*(105*x**4*asin(x)/(-x**2 + 1)**(9/2) + 105*x**3/(x**2 - 1)**4 + 90*x**2*asin(x)/(-x**2 + 1)**(7/2) - 55*x/(x**2 - 1)**3 + 9*asin(x)/(-x**2 + 1)**(5/2)) - 2*(a**2 + 16)*(15*x**3*asin(x)/(-x**2 + 1)**(7/2) - 15*x**2/(x**2 - 1)**3 + 9*x*asin(x)/(-x**2 + 1)**(5/2) + 4/(x**2 - 1)**2) + 2*(-x**2 + 1)*(945*x**5*asin(x)/(-x**2 + 1)**(11/2) - 945*x**4/(x**2 - 1)**5 + 1050*x**3*asin(x)/(-x**2 + 1)**(9/2) + 735*x**2/(x**2 - 1)**4 + 225*x*asin(x)/(-x**2 + 1)**(7/2) - 64/(x**2 - 1)**3)\n",
+ "Which is equal to 0\n",
+ "Hence Proved\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print 'y=(sinˆ-1)x) --sign inverse x'\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = (sympy.asin(x))**2;\n",
+ "print 'we have to prove (1-xˆ2)y(n+2)-(2n+1)xy(n+1)-nˆ2 yn'\n",
+ "print 'Calculating yn for various values of n'\n",
+ "for n in range(1,5):\n",
+ " F=(1-x**2)*sympy.diff(y,x,n+2)-(2*n+1)*x*sympy.diff(y,x,n+1)-(n**2+a**2)*sympy.diff(y,x,n)\n",
+ " print n\n",
+ " print 'The expression for yn is'\n",
+ " print F\n",
+ " print 'Which is equal to 0'\n",
+ "print 'Hence Proved'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.9, page no. 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "y=eˆ(a(sinˆ-1)x))--sign inverse x\n",
+ "We have to prove (1-xˆ2)y(n+2)-(2n+1)xy(n+1)-(nˆ2+aˆ2)yn\n",
+ "Calculating yn for various values of n\n",
+ "1\n",
+ "The expression for yn is\n",
+ "-3.0*2.71828182845905**(a*asin(x))*a*x*(-a/(x**2 - 1) + x/(-x**2 + 1)**(3/2)) - 1.0*2.71828182845905**(a*asin(x))*a*(a**2 + 1)/sqrt(-x**2 + 1) + 2.71828182845905**(a*asin(x))*a*(-x**2 + 1)*(1.0*a**2/(-x**2 + 1)**(3/2) + 3.0*a*x/(x**2 - 1)**2 + 3.0*x**2/(-x**2 + 1)**(5/2) + 1.0/(-x**2 + 1)**(3/2))\n",
+ "Which is equal to 0\n",
+ "2\n",
+ "The expression for yn is\n",
+ "-5*2.71828182845905**(a*asin(x))*a*x*(1.0*a**2/(-x**2 + 1)**(3/2) + 3.0*a*x/(x**2 - 1)**2 + 3.0*x**2/(-x**2 + 1)**(5/2) + 1.0/(-x**2 + 1)**(3/2)) - 1.0*2.71828182845905**(a*asin(x))*a*(a**2 + 4)*(-a/(x**2 - 1) + x/(-x**2 + 1)**(3/2)) + 2.71828182845905**(a*asin(x))*a*(-x**2 + 1)*(1.0*a**3/(x**2 - 1)**2 + 6.0*a**2*x/(-x**2 + 1)**(5/2) - 15.0*a*x**2/(x**2 - 1)**3 + 4.0*a/(x**2 - 1)**2 + 15.0*x**3/(-x**2 + 1)**(7/2) + 9.0*x/(-x**2 + 1)**(5/2))\n",
+ "Which is equal to 0\n",
+ "3\n",
+ "The expression for yn is\n",
+ "-7*2.71828182845905**(a*asin(x))*a*x*(1.0*a**3/(x**2 - 1)**2 + 6.0*a**2*x/(-x**2 + 1)**(5/2) - 15.0*a*x**2/(x**2 - 1)**3 + 4.0*a/(x**2 - 1)**2 + 15.0*x**3/(-x**2 + 1)**(7/2) + 9.0*x/(-x**2 + 1)**(5/2)) - 2.71828182845905**(a*asin(x))*a*(a**2 + 9)*(1.0*a**2/(-x**2 + 1)**(3/2) + 3.0*a*x/(x**2 - 1)**2 + 3.0*x**2/(-x**2 + 1)**(5/2) + 1.0/(-x**2 + 1)**(3/2)) + 2.71828182845905**(a*asin(x))*a*(-x**2 + 1)*(1.0*a**4/(-x**2 + 1)**(5/2) - 10.0*a**3*x/(x**2 - 1)**3 + 45.0*a**2*x**2/(-x**2 + 1)**(7/2) + 10.0*a**2/(-x**2 + 1)**(5/2) + 105.0*a*x**3/(x**2 - 1)**4 - 55.0*a*x/(x**2 - 1)**3 + 105.0*x**4/(-x**2 + 1)**(9/2) + 90.0*x**2/(-x**2 + 1)**(7/2) + 9.0/(-x**2 + 1)**(5/2))\n",
+ "Which is equal to 0\n",
+ "4\n",
+ "The expression for yn is\n",
+ "-9*2.71828182845905**(a*asin(x))*a*x*(1.0*a**4/(-x**2 + 1)**(5/2) - 10.0*a**3*x/(x**2 - 1)**3 + 45.0*a**2*x**2/(-x**2 + 1)**(7/2) + 10.0*a**2/(-x**2 + 1)**(5/2) + 105.0*a*x**3/(x**2 - 1)**4 - 55.0*a*x/(x**2 - 1)**3 + 105.0*x**4/(-x**2 + 1)**(9/2) + 90.0*x**2/(-x**2 + 1)**(7/2) + 9.0/(-x**2 + 1)**(5/2)) - 2.71828182845905**(a*asin(x))*a*(a**2 + 16)*(1.0*a**3/(x**2 - 1)**2 + 6.0*a**2*x/(-x**2 + 1)**(5/2) - 15.0*a*x**2/(x**2 - 1)**3 + 4.0*a/(x**2 - 1)**2 + 15.0*x**3/(-x**2 + 1)**(7/2) + 9.0*x/(-x**2 + 1)**(5/2)) + 2.71828182845905**(a*asin(x))*a*(-x**2 + 1)*(-1.0*a**5/(x**2 - 1)**3 + 15.0*a**4*x/(-x**2 + 1)**(7/2) + 105.0*a**3*x**2/(x**2 - 1)**4 - 20.0*a**3/(x**2 - 1)**3 + 420.0*a**2*x**3/(-x**2 + 1)**(9/2) + 195.0*a**2*x/(-x**2 + 1)**(7/2) - 945.0*a*x**4/(x**2 - 1)**5 + 735.0*a*x**2/(x**2 - 1)**4 - 64.0*a/(x**2 - 1)**3 + 945.0*x**5/(-x**2 + 1)**(11/2) + 1050.0*x**3/(-x**2 + 1)**(9/2) + 225.0*x/(-x**2 + 1)**(7/2))\n",
+ "Which is equal to 0\n",
+ "Hence proved\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, math\n",
+ "\n",
+ "print 'y=eˆ(a(sinˆ-1)x))--sign inverse x'\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = math.e**(a*(sympy.asin(x)))\n",
+ "print 'We have to prove (1-xˆ2)y(n+2)-(2n+1)xy(n+1)-(nˆ2+aˆ2)yn'\n",
+ "print 'Calculating yn for various values of n'\n",
+ "for n in range(1,5):\n",
+ " F =(1-x**2)*sympy.diff(y,x,n+2)-(2*n+1)*x*sympy.diff(y,x,n+1)-(n**2+a**2)*sympy.diff(y,x,n)\n",
+ " print n\n",
+ " print 'The expression for yn is'\n",
+ " print F\n",
+ " print 'Which is equal to 0'\n",
+ "print 'Hence proved'\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.10, page no. 141"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "y^(1/m)+y^-(1/m)=2x\n",
+ "OR y^(2/m)-2xy^(1/m)+1\n",
+ "OR y=[ x+(xˆ2-1)]ˆm and y=[x-(xˆ2 −1)]ˆm\n",
+ "For y=[x+(xˆ2−1)]ˆm\n",
+ "We have to prove (xˆ2−1)y(n+2)+(2n+1)xy(n+1)+(nˆ2−mˆ2)yn\n",
+ "Calculating various values for yn\n",
+ "1\n",
+ "The expression for yn is\n",
+ "3*m*x*(x**2 + x - 1)**m*(m*(2*x + 1)**2/(x**2 + x - 1) - (2*x + 1)**2/(x**2 + x - 1) + 2)/(x**2 + x - 1) + m*(-m**2 + 1)*(2*x + 1)*(x**2 + x - 1)**m/(x**2 + x - 1) + m*(2*x + 1)*(x**2 - 1)*(x**2 + x - 1)**m*(m**2*(2*x + 1)**2/(x**2 + x - 1) - 3*m*(2*x + 1)**2/(x**2 + x - 1) + 6*m + 2*(2*x + 1)**2/(x**2 + x - 1) - 6)/(x**2 + x - 1)**2\n",
+ "Which is equal to 0\n",
+ "2\n",
+ "The expression for yn is\n",
+ "5*m*x*(2*x + 1)*(x**2 + x - 1)**m*(m**2*(2*x + 1)**2/(x**2 + x - 1) - 3*m*(2*x + 1)**2/(x**2 + x - 1) + 6*m + 2*(2*x + 1)**2/(x**2 + x - 1) - 6)/(x**2 + x - 1)**2 + m*(-m**2 + 4)*(x**2 + x - 1)**m*(m*(2*x + 1)**2/(x**2 + x - 1) - (2*x + 1)**2/(x**2 + x - 1) + 2)/(x**2 + x - 1) + m*(x**2 - 1)*(x**2 + x - 1)**m*(m**3*(2*x + 1)**4/(x**2 + x - 1)**2 - 6*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 + 12*m**2*(2*x + 1)**2/(x**2 + x - 1) + 11*m*(2*x + 1)**4/(x**2 + x - 1)**2 - 36*m*(2*x + 1)**2/(x**2 + x - 1) + 12*m - 6*(2*x + 1)**4/(x**2 + x - 1)**2 + 24*(2*x + 1)**2/(x**2 + x - 1) - 12)/(x**2 + x - 1)**2\n",
+ "Which is equal to 0\n",
+ "3\n",
+ "The expression for yn is\n",
+ "7*m*x*(x**2 + x - 1)**m*(m**3*(2*x + 1)**4/(x**2 + x - 1)**2 - 6*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 + 12*m**2*(2*x + 1)**2/(x**2 + x - 1) + 11*m*(2*x + 1)**4/(x**2 + x - 1)**2 - 36*m*(2*x + 1)**2/(x**2 + x - 1) + 12*m - 6*(2*x + 1)**4/(x**2 + x - 1)**2 + 24*(2*x + 1)**2/(x**2 + x - 1) - 12)/(x**2 + x - 1)**2 + m*(-m**2 + 9)*(2*x + 1)*(x**2 + x - 1)**m*(m**2*(2*x + 1)**2/(x**2 + x - 1) - 3*m*(2*x + 1)**2/(x**2 + x - 1) + 6*m + 2*(2*x + 1)**2/(x**2 + x - 1) - 6)/(x**2 + x - 1)**2 + m*(2*x + 1)*(x**2 - 1)*(x**2 + x - 1)**m*(m**4*(2*x + 1)**4/(x**2 + x - 1)**2 - 10*m**3*(2*x + 1)**4/(x**2 + x - 1)**2 + 20*m**3*(2*x + 1)**2/(x**2 + x - 1) + 35*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 - 120*m**2*(2*x + 1)**2/(x**2 + x - 1) + 60*m**2 - 50*m*(2*x + 1)**4/(x**2 + x - 1)**2 + 220*m*(2*x + 1)**2/(x**2 + x - 1) - 180*m + 24*(2*x + 1)**4/(x**2 + x - 1)**2 - 120*(2*x + 1)**2/(x**2 + x - 1) + 120)/(x**2 + x - 1)**3\n",
+ "Which is equal to 0\n",
+ "4\n",
+ "The expression for yn is\n",
+ "9*m*x*(2*x + 1)*(x**2 + x - 1)**m*(m**4*(2*x + 1)**4/(x**2 + x - 1)**2 - 10*m**3*(2*x + 1)**4/(x**2 + x - 1)**2 + 20*m**3*(2*x + 1)**2/(x**2 + x - 1) + 35*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 - 120*m**2*(2*x + 1)**2/(x**2 + x - 1) + 60*m**2 - 50*m*(2*x + 1)**4/(x**2 + x - 1)**2 + 220*m*(2*x + 1)**2/(x**2 + x - 1) - 180*m + 24*(2*x + 1)**4/(x**2 + x - 1)**2 - 120*(2*x + 1)**2/(x**2 + x - 1) + 120)/(x**2 + x - 1)**3 + m*(-m**2 + 16)*(x**2 + x - 1)**m*(m**3*(2*x + 1)**4/(x**2 + x - 1)**2 - 6*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 + 12*m**2*(2*x + 1)**2/(x**2 + x - 1) + 11*m*(2*x + 1)**4/(x**2 + x - 1)**2 - 36*m*(2*x + 1)**2/(x**2 + x - 1) + 12*m - 6*(2*x + 1)**4/(x**2 + x - 1)**2 + 24*(2*x + 1)**2/(x**2 + x - 1) - 12)/(x**2 + x - 1)**2 + m*(x**2 - 1)*(x**2 + x - 1)**m*(m**5*(2*x + 1)**6/(x**2 + x - 1)**3 - 15*m**4*(2*x + 1)**6/(x**2 + x - 1)**3 + 30*m**4*(2*x + 1)**4/(x**2 + x - 1)**2 + 85*m**3*(2*x + 1)**6/(x**2 + x - 1)**3 - 300*m**3*(2*x + 1)**4/(x**2 + x - 1)**2 + 180*m**3*(2*x + 1)**2/(x**2 + x - 1) - 225*m**2*(2*x + 1)**6/(x**2 + x - 1)**3 + 1050*m**2*(2*x + 1)**4/(x**2 + x - 1)**2 - 1080*m**2*(2*x + 1)**2/(x**2 + x - 1) + 120*m**2 + 274*m*(2*x + 1)**6/(x**2 + x - 1)**3 - 1500*m*(2*x + 1)**4/(x**2 + x - 1)**2 + 1980*m*(2*x + 1)**2/(x**2 + x - 1) - 360*m - 120*(2*x + 1)**6/(x**2 + x - 1)**3 + 720*(2*x + 1)**4/(x**2 + x - 1)**2 - 1080*(2*x + 1)**2/(x**2 + x - 1) + 240)/(x**2 + x - 1)**3\n",
+ "Which is equal to 0\n",
+ "Hence Proved\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "print 'y^(1/m)+y^-(1/m)=2x'\n",
+ "print 'OR y^(2/m)-2xy^(1/m)+1'\n",
+ "print 'OR y=[ x+(xˆ2-1)]ˆm and y=[x-(xˆ2 −1)]ˆm'\n",
+ "x = sympy.Symbol('x')\n",
+ "m = sympy.Symbol('m')\n",
+ "print 'For y=[x+(xˆ2−1)]ˆm'\n",
+ "y=(x+(x**2-1))**m\n",
+ "print 'We have to prove (xˆ2−1)y(n+2)+(2n+1)xy(n+1)+(nˆ2−mˆ2)yn'\n",
+ "print 'Calculating various values for yn'\n",
+ "for n in range(1,5):\n",
+ " F=(x**2-1)*sympy.diff(y,x,n+2)+(2*n+1)*x*sympy.diff(y,x,n+1)+(n**2-m**2)*sympy.diff(y,x,n)\n",
+ " print n\n",
+ " print 'The expression for yn is'\n",
+ " print F\n",
+ " print 'Which is equal to 0'\n",
+ "print 'Hence Proved'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.11, page no. 144"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For roles theorem F9x should be differentiable in (a, b) and f(a)=f(b)\n",
+ "Here f(x)=sin(x)/e^x\n",
+ "-1.0*2.71828182845905**(-x)*sin(x) + 2.71828182845905**(-x)*cos(x)\n",
+ "Putting this to zero we get tan(x)=1 ie x=pi/4\n",
+ "Value pi/2 lies b/w 0 and pi. Hence roles theroem is verified\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy, math\n",
+ "\n",
+ "print 'For roles theorem F9x should be differentiable in (a, b) and f(a)=f(b)'\n",
+ "print 'Here f(x)=sin(x)/e^x'\n",
+ "x = sympy.Symbol('x')\n",
+ "y = sympy.sin(x)/math.e**x\n",
+ "y1 = sympy.diff(y,x)\n",
+ "print y1\n",
+ "print 'Putting this to zero we get tan(x)=1 ie x=pi/4'\n",
+ "print 'Value pi/2 lies b/w 0 and pi. Hence roles theroem is verified'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.16 page no. 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Maclaurin's Series\n",
+ "f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\n",
+ "Enter the orde of differentiation: 6\n",
+ "-I*x**5*atanh(sqrt(-sqrt(105)/30 + 1/2))/120 - I*x**3*atanh(sqrt(3)/3)/6\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy, sympy, math\n",
+ "\n",
+ "print \"Maclaurin's Series\"\n",
+ "print 'f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......'\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = sympy.tan(a)\n",
+ "n = int(raw_input(\"Enter the orde of differentiation: \"))\n",
+ "a = 1\n",
+ "t = sympy.solve(y)[0]\n",
+ "a = 0\n",
+ "for i in range(2,n+1):\n",
+ " y1 = sympy.diff (y,'a',i-1)\n",
+ " if sympy.solve(y1):\n",
+ " t = t+x**(i-1)*sympy.solve(y1)[0]/math.factorial(i-1)\n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.17, page no. 150"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Maclaurins series\n",
+ "f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\n",
+ "enter the number of expression in series:2\n",
+ "1.5707963267949*x\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Maclaurins series\"\n",
+ "print \"f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = math.e**(sympy.sin(a))\n",
+ "n = int(raw_input('enter the number of expression in series:'))\n",
+ "a = 0\n",
+ "t = 0\n",
+ "a = 0\n",
+ "for i in range(2,n+1):\n",
+ " y1 = sympy.diff(y,'a',i-1) \n",
+ " t = t+x**(i-1)*sympy.solve(y1)[0]/math.factorial(i-1) \n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 4.18, page no. 150"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Maclaurins series\n",
+ "f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\n",
+ "enter the number of differentiation involved in maclaurins series :3\n",
+ "x**2*atan(RootOf(tan(a/2)**4 - 10*tan(a/2)**2 + 1, 0))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Maclaurins series\"\n",
+ "print \"f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = sympy.log(1+(sympy.sin(a))**2)\n",
+ "n = int(raw_input(\"enter the number of differentiation involved in maclaurins series :\"))\n",
+ "a = 0\n",
+ "t = 0\n",
+ "a = 0\n",
+ "for i in range(2,n+1):\n",
+ " y1 = sympy.diff(y,'a',i-1) \n",
+ " t = t+x**(i-1)*sympy.solve(y1)[0]/math.factorial(i-1) \n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 4.19, page no. 151"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Maclaurins series\n",
+ "f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\n",
+ "enter the number of expression in series :2\n",
+ "1.0*2.71828182845905**(a*asin(b))*a*x*(-b**2 + 1.0)**(-0.5)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Maclaurins series\"\n",
+ "print \"f(x)=f(0)+xf1(0)+xˆ2/2!∗f2(0)+xˆ3/3!∗f3(0)+......\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "b = sympy.Symbol('b')\n",
+ "y = math.e**(a*sympy.asin(b))\n",
+ "y1 = sympy.diff(y, 'b', 1)\n",
+ "n = int(raw_input(\"enter the number of expression in series :\"))\n",
+ "b = 0\n",
+ "t = 0\n",
+ "for i in range(2,n+1):\n",
+ " y1 = sympy.diff(y,'b',i-1) \n",
+ " t = t+x**(i-1)*y1.evalf()/math.factorial(i-1) \n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.20, page no. 152"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Advantage of scilab is that we can calculate log1.1 directly without using Taylor series\n",
+ "Use of taylor series are given in subsequent examples\n",
+ "log(1.1) = 0.0953101798043\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,math,sympy\n",
+ "\n",
+ "print \"Use of taylor series are given in subsequent examples\"\n",
+ "y = math.log(1.1)\n",
+ "print \"log(1.1) = \",math.log (1.1) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.21, page no. 152"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Taylor series\n",
+ "f(x+h)=f(x)+hf1(x)+hˆ2/2!∗f2(x)+hˆ3/3!∗f3(x)+......\n",
+ "To finf the taylor expansion of tan−1(x+h)\n",
+ "enter the number of expression in series : 2\n",
+ "h/(x**2 + 1) + atan(x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Taylor series\"\n",
+ "print \"f(x+h)=f(x)+hf1(x)+hˆ2/2!∗f2(x)+hˆ3/3!∗f3(x)+......\"\n",
+ "print \"To finf the taylor expansion of tan−1(x+h)\"\n",
+ "x = sympy.Symbol('x')\n",
+ "h = sympy.Symbol('h')\n",
+ "y = sympy.atan ( x )\n",
+ "n = int(raw_input (\"enter the number of expression in series : \"))\n",
+ "t = y \n",
+ "for i in range (2,n+1):\n",
+ " y1 = sympy.diff (y,'x',i-1)\n",
+ " t = t+h**(i-1)*(y1)/math.factorial(i-1)\n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.22, page no. 153"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Here we need to find the limit off(x) at x=0\n",
+ "2.46828182845905\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Here we need to find the limit off(x) at x=0\"\n",
+ "x = sympy.Symbol('x')\n",
+ "y = (x*math.e**x-sympy.log(1+x))/x**2\n",
+ "f = 1\n",
+ "while f==1:\n",
+ " yn = x*math.e**x-sympy.log(1+x)\n",
+ " yd = x**2;\n",
+ " yn1 = sympy.diff(yn,'x',1)\n",
+ " yd1 = sympy.diff(yd,'x',1)\n",
+ " x = 0\n",
+ " a = yn1.evalf(subs=dict(x=1))\n",
+ " b = yd1.evalf(subs=dict(x=1))\n",
+ " if a == b:\n",
+ " yn = yn1 \n",
+ " yd = yd1 \n",
+ " else:\n",
+ " f =0\n",
+ "h = a / b \n",
+ "print h"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.32, page no. 162"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Equation of tangent\n",
+ "Equation is g=0 where g is x - y\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Equation of tangent\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = sympy.Symbol('y')\n",
+ "f = (a**(2/3)-x**(2/3))**(3/2)\n",
+ "s = sympy.diff(f,x)\n",
+ "Y1 = s*(-x)+y\n",
+ "X1 = -y/s*x\n",
+ "g = x-(Y1-s*(X1-x))\n",
+ "print \"Equation is g=0 where g is\",g"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example, 4.34, page no. 163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Equation of tangent\n",
+ "y = a*(-t*cos(t) + sin(t)) + (-a*(t*sin(t) + cos(t)) + x)*cos(t)/sin(t)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Equation of tangent\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = sympy.Symbol('y')\n",
+ "t = sympy.Symbol('t')\n",
+ "xo = a*(sympy.cos(t)+t*sympy.sin(t))\n",
+ "yo = a*(sympy.sin(t)-t*sympy.cos(t))\n",
+ "s = sympy.diff(xo,t)/sympy.diff(yo,t)\n",
+ "y = yo+s*(x-xo)\n",
+ "print \"y = \",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.35, page no. 163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The two given curves are xˆ=4y and yˆ2=4x which intersects at (0,0) and (4,4)\n",
+ "for (4 ,4)\n",
+ "Angle between them is (radians):−\n",
+ "atan(x/2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"The two given curves are xˆ=4y and yˆ2=4x which intersects at (0,0) and (4,4)\"\n",
+ "print \"for (4 ,4)\"\n",
+ "x = 4\n",
+ "x = sympy.Symbol('x')\n",
+ "y1= x**2/4\n",
+ "y2 = 2*x**(1/2)\n",
+ "m1= sympy.diff(y1,x,1)\n",
+ "m2= sympy.diff(y2,x,1)\n",
+ "x = 4\n",
+ "print \"Angle between them is (radians):−\"\n",
+ "t= sympy.atan((m1-m2)/(1+m1*m2)) \n",
+ "print t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.37, page no. 165"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "length of tangent\n",
+ "a*(((tan(t/2)**2/2 + 1/2)/tan(t/2) - sin(t))/cos(t) + 1)**0.5*sin(t)\n",
+ "checking for its dependency on t\n",
+ "verified and equal to a\n",
+ "subtangent\n",
+ "a*sin(t)*cos(t)/((tan(t/2)**2/2 + 1/2)/tan(t/2) - sin(t))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "a = sympy.Symbol('a')\n",
+ "t = sympy.Symbol('t')\n",
+ "x = a*(sympy.cos(t)+sympy.log(sympy.tan(t/2)))\n",
+ "y = a*sympy.sin(t)\n",
+ "s = sympy.diff(x,t,1)/sympy.diff(y,t,1)\n",
+ "print \"length of tangent\"\n",
+ "l = y*(1+s)**(0.5)\n",
+ "print l\n",
+ "print \"checking for its dependency on t\"\n",
+ "f = 1\n",
+ "t = 0\n",
+ "k = sympy.solve(l)\n",
+ "for i in range(1,11):\n",
+ " t = i\n",
+ " if(sympy.solve(l)!=k):\n",
+ " f = 0\n",
+ "if(f==1):\n",
+ " print \"verified and equal to a\"\n",
+ "print \"subtangent\"\n",
+ "m = y/s\n",
+ "print m"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.39, page no. 168"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Angle of intersection\n",
+ "point of intersection of r=sint+cost and r=2 sint is t=pi/4\n",
+ "tanu=dQ/dr∗r\n",
+ "The angle at point of intersection in radians is : \n",
+ "atan(2*(-sin(Q) + cos(Q))*sin(Q))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"Angle of intersection\"\n",
+ "print \"point of intersection of r=sint+cost and r=2 sint is t=pi/4\"\n",
+ "print \"tanu=dQ/dr∗r\"\n",
+ "Q = sympy.Symbol('Q')\n",
+ "r1 = 2*sympy.sin(Q)\n",
+ "r2 = sympy.sin(Q)+sympy.cos(Q)\n",
+ "u = sympy.atan(r1*sympy.diff(r2,Q,1))\n",
+ "Q = math.pi/4\n",
+ "u = u.evalf()\n",
+ "print \"The angle at point of intersection in radians is : \"\n",
+ "print u"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.41, page no. 170"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "tanu=dQ/dr∗r\n",
+ "atan(2*a/((-sin(Q) + cos(Q))*(-cos(Q) + 1)))\n",
+ "4.0*a**2*(4.0*a**2/((-sin(Q) + cos(Q))**2*(-cos(Q) + 1.0)**2) + 1.0)**(-0.5)/((-sin(Q) + cos(Q))*(-cos(Q) + 1.0)**2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "\n",
+ "print \"tanu=dQ/dr∗r\"\n",
+ "Q = sympy.Symbol('Q')\n",
+ "a = sympy.Symbol('a')\n",
+ "r = 2*a/(1-sympy.cos(Q))\n",
+ "u = sympy.atan(r/sympy.diff(r2,Q,1))\n",
+ "u = u.evalf()\n",
+ "print u\n",
+ "p = r*sympy.sin(u)\n",
+ "r = sympy.Symbol('r')\n",
+ "Q = sympy.acos(1-2*a/r)\n",
+ "p = p.evalf()\n",
+ "print p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.43, page no. 172"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The radius of curvature is : -(1 + sin(t)**2/(cos(t) + 1)**2)*sin(t)/cos(t)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "a = sympy.Symbol('a')\n",
+ "t = sympy.Symbol('t')\n",
+ "x = a*(t+sympy.sin(t))\n",
+ "y = a*(1-sympy.cos(t))\n",
+ "s2 = sympy.diff(y,t,2)/sympy.diff(x,t,2)\n",
+ "s1 = sympy.diff(y,t,1)/sympy.diff(x,t,1)\n",
+ "r = (1+s1**2)**(3/2)/s2\n",
+ "print \"The radius of curvature is :\",r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.46, page no. 176"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "radius of curvature\n",
+ "(a**2*(-cos(t) + 1.0)**2 + a**2*sin(t)**2)/(a**2*(-cos(t) + 1.0)**2 - a**2*(-cos(t) + 1.0)*sin(t) + 2.0*a**2*sin(t)**2)\n",
+ "Which is proportional to rˆ0.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"radius of curvature\"\n",
+ "a = sympy.Symbol('a')\n",
+ "t = sympy.Symbol('t')\n",
+ "r = a*(1-sympy.cos(t))\n",
+ "r1 = sympy.diff(r,t,1) \n",
+ "l = (r**2+r1**2)**(3/2)/(r**2+2*r1**2-r*r1)\n",
+ "r = sympy.Symbol('r')\n",
+ "t = sympy.acos(1-r/a)\n",
+ "l = l.evalf()\n",
+ "print l\n",
+ "print \"Which is proportional to rˆ0.5\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.47, page no. 177"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The centre of curvature\n",
+ "the coordinates x,y are resp : \n",
+ "2.0*x*(1 + 1.0*(a*x)**0.5/x)**2 + x\n",
+ "-2.0*x**2*(a*x)**(-0.5)*(1 + 1.0*(a*x)**1.0/x**2) + 2*(a*x)**0.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"The centre of curvature\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "y = sympy.Symbol('y')\n",
+ "y = 2*(a*x)**0.5\n",
+ "y1 = sympy.diff(y,x,1)\n",
+ "y2 = sympy.diff(y,x,2)\n",
+ "xx = x-y1*(1+y1)**2/y2\n",
+ "yy = y+(1+y1**2)/y2\n",
+ "print \"the coordinates x,y are resp : \"\n",
+ "print xx\n",
+ "print yy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Examle 4.48, page no. 177"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "centre of curvature of given cycloid\n",
+ "the coordinates x,y are resp : \n",
+ "a*(t - sin(t)) - (a*sin(t) + 1)**2*sin(t)/cos(t)\n",
+ "a*(-cos(t) + 1) + (a**2*sin(t)**2 + 1)/(a*cos(t))\n",
+ "which another parametric equation of cycloid\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"centre of curvature of given cycloid\"\n",
+ "a = sympy.Symbol('a')\n",
+ "t = sympy.Symbol('t')\n",
+ "x = a*(t-sympy.sin(t))\n",
+ "y = a*(1-sympy.cos(t))\n",
+ "y1 = sympy.diff(y,t,1)\n",
+ "y2 = sympy.diff(y,t,2)\n",
+ "xx = x-y1*(1+y1)**2/y2 \n",
+ "yy = y+(1+y1**2)/y2\n",
+ "print \"the coordinates x,y are resp : \"\n",
+ "print xx\n",
+ "print yy\n",
+ "print \"which another parametric equation of cycloid\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.52, page no. 180"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "To find the maxima and minima of given function put f1(x)=0\n",
+ "[-1, 1/2, 1]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "print 'To find the maxima and minima of given function put f1(x)=0'\n",
+ "x = sympy.Symbol('x')\n",
+ "f=3*x**4-2*x**3-6*x**2+6*x+1\n",
+ "k = sympy.diff(f,x)\n",
+ "x = sympy.poly(0,x)\n",
+ "k = sympy.solve(k)\n",
+ "print k"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.61, page no. 188"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "to find the assymptote of given curve\n",
+ "assymptotes parallel to x−axis is given by f1=0 where f1 is : \n",
+ "[1, -1, -1, 1, 1, 1]\n",
+ "assymptotes parallel to y−axis is given by f 2=0 and f2 is : \n",
+ "x**2*y**2 - x**2*y - x*y**2 + x + y + 1\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "print \"to find the assymptote of given curve\"\n",
+ "x = sympy.Symbol('x')\n",
+ "y = sympy.Symbol('y')\n",
+ "f = x**2*y**2-x**2*y-x*y**2+x+y+1\n",
+ "f1 = sympy.poly(f,y,x)\n",
+ "f1 = f1.coeffs()\n",
+ "print \"assymptotes parallel to x−axis is given by f1=0 where f1 is : \"\n",
+ "print sympy.factor(f1)\n",
+ "f2 = sympy.poly(f,y,x)\n",
+ "print \"assymptotes parallel to y−axis is given by f 2=0 and f2 is : \"\n",
+ "print sympy.factor(f2)"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb
new file mode 100644
index 00000000..2056bd4b
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter5_2.ipynb
@@ -0,0 +1,317 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 : Partial Differentiation And Its Applications"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 5.5, page no. 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2*(4*x**2/(x**2 + y**2 + z**2) - 1)/(x**2 + y**2 + z**2)**2 + 2*(4*y**2/(x**2 + y**2 + z**2) - 1)/(x**2 + y**2 + z**2)**2 + 2*(4*z**2/(x**2 + y**2 + z**2) - 1)/(x**2 + y**2 + z**2)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "y = sympy.Symbol('y')\n",
+ "z = sympy.Symbol('z')\n",
+ "v = (x**2+y**2+z**2)**(-1/2)\n",
+ "a = sympy.diff(v,x,2)\n",
+ "b = sympy.diff(v,y,2)\n",
+ "c = sympy.diff(v,z,2)\n",
+ "print a+b+c"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.14, page no. 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x*(-0.5*x**(-0.5)*(x + y)/(x**0.5 + y**0.5)**2 + 1/(x**0.5 + y**0.5))/sqrt(1 - (x + y)**2/(x**0.5 + y**0.5)**2) + y*(-0.5*y**(-0.5)*(x + y)/(x**0.5 + y**0.5)**2 + 1/(x**0.5 + y**0.5))/sqrt(1 - (x + y)**2/(x**0.5 + y**0.5)**2)\n",
+ "0\n",
+ "x**2*((0.25*x**(-1.5)*(x + y)/(x**0.5 + y**0.5)**2 + 0.5*x**(-1.0)*(x + y)/(x**0.5 + y**0.5)**3 - 1.0*x**(-0.5)/(x**0.5 + y**0.5)**2)/sqrt(1 - (x + y)**2/(x**0.5 + y**0.5)**2) + (-0.5*x**(-0.5)*(x + y)**2/(x**0.5 + y**0.5)**3 + (2*x + 2*y)/(2*(x**0.5 + y**0.5)**2))*(-0.5*x**(-0.5)*(x + y)/(x**0.5 + y**0.5)**2 + 1/(x**0.5 + y**0.5))/(1 - (x + y)**2/(x**0.5 + y**0.5)**2)**(3/2)) + 2*x*y*((0.5*x**(-0.5)*y**(-0.5)*(x + y)/(x**0.5 + y**0.5)**3 - 0.5*x**(-0.5)/(x**0.5 + y**0.5)**2 - 0.5*y**(-0.5)/(x**0.5 + y**0.5)**2)/sqrt(1 - (x + y)**2/(x**0.5 + y**0.5)**2) + (-0.5*x**(-0.5)*(x + y)**2/(x**0.5 + y**0.5)**3 + (2*x + 2*y)/(2*(x**0.5 + y**0.5)**2))*(-0.5*y**(-0.5)*(x + y)/(x**0.5 + y**0.5)**2 + 1/(x**0.5 + y**0.5))/(1 - (x + y)**2/(x**0.5 + y**0.5)**2)**(3/2)) + y**2*((0.25*y**(-1.5)*(x + y)/(x**0.5 + y**0.5)**2 + 0.5*y**(-1.0)*(x + y)/(x**0.5 + y**0.5)**3 - 1.0*y**(-0.5)/(x**0.5 + y**0.5)**2)/sqrt(1 - (x + y)**2/(x**0.5 + y**0.5)**2) + (-0.5*y**(-0.5)*(x + y)**2/(x**0.5 + y**0.5)**3 + (2*x + 2*y)/(2*(x**0.5 + y**0.5)**2))*(-0.5*y**(-0.5)*(x + y)/(x**0.5 + y**0.5)**2 + 1/(x**0.5 + y**0.5))/(1 - (x + y)**2/(x**0.5 + y**0.5)**2)**(3/2))\n",
+ "-(x + y)*cos(2*asin((x + y)/(x**0.5 + y**0.5)))/(4*(1 - (x + y)**2/(x**0.5 + y**0.5)**2)**(3/2)*(x**0.5 + y**0.5))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "y = sympy.Symbol('y')\n",
+ "u = sympy.asin((x+y)/(x**0.5+y**0.5))\n",
+ "a = sympy.diff(u,x)\n",
+ "b = sympy.diff(u,y)\n",
+ "c = sympy.diff(a,x)\n",
+ "d = sympy.diff(b,y)\n",
+ "e = sympy.diff(b,x)\n",
+ "print x*a+y*b\n",
+ "print (1/2)*sympy.tan(u)\n",
+ "print (x**2)*c+2*x*y*e+(y**2)*d\n",
+ "print (-sympy.sin(u)*sympy.cos(2*u))/(4*(sympy.cos(u))**3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.25.1, page no. 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "r*sin(l)**2 + r*cos(l)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "r = sympy.Symbol('r')\n",
+ "l = sympy.Symbol('l')\n",
+ "x = r*sympy.cos(l)\n",
+ "y = r*sympy.sin(l)\n",
+ "a = sympy.diff(x,r)\n",
+ "b = sympy.diff(x,l)\n",
+ "c = sympy.diff(y,r)\n",
+ "d = sympy.diff(y,l)\n",
+ "A = sympy.Matrix([[a,b],[c,d]])\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.25.2, page no. 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "r*sin(l)**2 + r*cos(l)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "\n",
+ "r = sympy.Symbol('r')\n",
+ "l = sympy.Symbol('l')\n",
+ "z = sympy.Symbol('z')\n",
+ "x = r*sympy.cos(l)\n",
+ "y = r*sympy.sin(l)\n",
+ "m = z\n",
+ "a = sympy.diff(x,r)\n",
+ "b = sympy.diff(x,l)\n",
+ "c = sympy.diff(x,z)\n",
+ "d = sympy.diff(y,r)\n",
+ "e = sympy.diff(y,l)\n",
+ "f = sympy.diff(y,z)\n",
+ "g = sympy.diff(m,r)\n",
+ "h = sympy.diff(m,l)\n",
+ "i = sympy.diff(m,z)\n",
+ "A = sympy.Matrix([[a,b,c],[d,e,f],[g,h,i]])\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.25.3, page no. 205"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "r**2*sin(l)**2*sin(m)**3 + r**2*sin(l)**2*sin(m)*cos(m)**2 + r**2*sin(m)**3*cos(l)**2 + r**2*sin(m)*cos(l)**2*cos(m)**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "r = sympy.Symbol('r')\n",
+ "l = sympy.Symbol('l')\n",
+ "m = sympy.Symbol('m')\n",
+ "x = r*sympy.cos(l)*sympy.sin(m)\n",
+ "y = r*sympy.sin(l)*sympy.sin(m)\n",
+ "z = r*sympy.cos(m)\n",
+ "a = sympy.diff(x,r)\n",
+ "b = sympy.diff(x,m)\n",
+ "c = sympy.diff(x,l)\n",
+ "d = sympy.diff(y,r)\n",
+ "e = sympy.diff(y,m)\n",
+ "f = sympy.diff(y,l)\n",
+ "g = sympy.diff(z,r)\n",
+ "h = sympy.diff(z,m)\n",
+ "i = sympy.diff(z,l)\n",
+ "A = sympy.Matrix([[a,b,c],[d,e,f],[g,h,i]])\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.26, page no. 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "4\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "x1 = sympy.Symbol('x1')\n",
+ "x2 = sympy.Symbol('x2')\n",
+ "x3 = sympy.Symbol('x3')\n",
+ "y1 =(x2*x3)/x1\n",
+ "y2 =(x3*x1)/x2\n",
+ "y3 =(x1*x2)/x3\n",
+ "a = sympy.diff(y1,x1)\n",
+ "b = sympy.diff(y1,x2)\n",
+ "c = sympy.diff(y1,x3)\n",
+ "d = sympy.diff(y2,x1)\n",
+ "e = sympy.diff(y2,x2)\n",
+ "f = sympy.diff(y2,x3)\n",
+ "g = sympy.diff(y3,x1)\n",
+ "h = sympy.diff(y3,x2)\n",
+ "i = sympy.diff(y3,x3)\n",
+ "A = sympy.Matrix([[a,b,c],[d,e,f],[g,h,i]])\n",
+ "print A.det()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.30, page no. 210"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-1.0*x*y*(-x**2 + 1)**(-0.5)/sqrt(-y**2 + 1) + 1.0*x*y*(-y**2 + 1)**(-0.5)/sqrt(-x**2 + 1)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "y = sympy.Symbol('y')\n",
+ "u = x*(1-y**2)**0.5+y*(1-x**2)**0.5\n",
+ "v = sympy.asin(x)+sympy.asin(y)\n",
+ "a = sympy.diff(u,x)\n",
+ "b = sympy.diff(u,y)\n",
+ "c = sympy.diff(v,x)\n",
+ "d = sympy.diff(v,y)\n",
+ "A = sympy.Matrix([[a,b],[c,d]])\n",
+ "print A.det()"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb
new file mode 100644
index 00000000..4eb64354
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter6_2.ipynb
@@ -0,0 +1,743 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 6 : Integration And Its Applications"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.1.1, page no. 199"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Indefinite integral\n",
+ "3*x/8 - sin(x)**3*cos(x)/4 - 3*sin(x)*cos(x)/8\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "print \"Indefinite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "f = sympy.integrate((sympy.sin(x))**4,(x))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.1.2, page no. 200"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Indefinite integral\n",
+ "-sin(x)**7/7 + 3*sin(x)**5/5 - sin(x)**3 + sin(x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy\n",
+ "\n",
+ "print \"Indefinite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "f = sympy.integrate((sympy.cos(x))**7,(x))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.2.1, page no. 202"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "0.490873852123\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "f = sympy.integrate((sympy.cos(x))**6,(x,0,math.pi/2))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.2.2, page no. 202"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "zoo*a**6 + a**6*log(-2*a**2)/4 - 11*a**6/24\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "g = x**7/(a**2-x**2)**1/2\n",
+ "f = sympy.integrate(g,(x,0,a))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.2.3, page no. 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "4*a**4\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "g = x**3*(2*a*x-x**2)**(1/2) \n",
+ "f = sympy.integrate(g,(x,0,2*a))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.2.4, page no. 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "0.5*(a**2 + 0.5625)**(-n) + 0.5*(a**2 + 0.0625)**(-n)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.abc import x,a,n\n",
+ "from sympy.integrals import Integral\n",
+ "print \"Definite integral\"\n",
+ "g = 1./(a**2+x**2)**n \n",
+ "f = Integral(g,(x,0,1))\n",
+ "print f.as_sum(2).n()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.4.1, page no. 207"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "0.0532891345937363\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.abc import x,a,n\n",
+ "from sympy.integrals import Integral\n",
+ "import sympy, math\n",
+ "print \"Definite integral\"\n",
+ "g = (sympy.sin(6*x))**3*(sympy.cos(3*x))**7\n",
+ "f = Integral(g,(x,0,math.pi/6))\n",
+ "print f.as_sum(2).n()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.4.2, page no. 208"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "0.0571428571429\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "g = (sympy.sin(6*x))**3*(sympy.cos(3*x))**7\n",
+ "g = x**4*(1-x**2)**(3/2)\n",
+ "f = sympy.integrate(g,(x,0,1)) \n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.5, page no. 208"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "Enter n : 0\n",
+ "Enter m : 1\n",
+ "1.0\n",
+ "1.0\n",
+ "Equal\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "m = sympy.Symbol('m')\n",
+ "n = sympy.Symbol('n')\n",
+ "n = int(raw_input(\"Enter n : \"))\n",
+ "m = int(raw_input(\"Enter m : \"))\n",
+ "g =(sympy.cos(x))**m*sympy.cos(n*x)\n",
+ "f = sympy.integrate(g,(x,0,math.pi/2))\n",
+ "print float(f) \n",
+ "g2 =(sympy.cos(x))**(m-1)*sympy.cos((n-1)*x)\n",
+ "f2 = m/(m+n)*sympy.integrate(g2,(x,0,math.pi/2))\n",
+ "print float(f2)\n",
+ "print \"Equal\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.6.1, page no. 210"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Definite integral\n",
+ "Enter n : 1\n",
+ "Piecewise((x*exp(-I*x)*sin(x)/2 - I*x*exp(-I*x)*cos(x)/2 - exp(-I*x)*cos(x)/2, a == -I), (x*exp(I*x)*sin(x)/2 + I*x*exp(I*x)*cos(x)/2 - exp(I*x)*cos(x)/2, a == I), (a*exp(a*x)*sin(x)/(a**2 + 1) - exp(a*x)*cos(x)/(a**2 + 1), True))\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "print \"Definite integral\"\n",
+ "x = sympy.Symbol('x')\n",
+ "a = sympy.Symbol('a')\n",
+ "n = int(raw_input(\"Enter n : \"))\n",
+ "g = sympy.exp(a*x)*(sympy.sin(x))**n\n",
+ "f = sympy.integrate(g,(x))\n",
+ "print f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.7.1, page no. 212"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(4*sin(x)**2 - 3)/(4*sin(x)**4 - 8*sin(x)**2 + 4) - log(sin(x)**2 - 1)/2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print sympy.integrate(sympy.tan(x)**5,(x))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.8, page no. 215"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Enter the value of n : 3\n",
+ "n(p+q)= 0.999999999999999\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "n = int(raw_input(\"Enter the value of n : \"))\n",
+ "p = sympy.integrate((sympy.tan(x))**(n-1),('x',0,math.pi/4))\n",
+ "q = sympy.integrate((sympy.tan(x))**(n+1),('x',0,math.pi/4))\n",
+ "print \"n(p+q)= \",\n",
+ "print n*(p+q)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.9.1, page no. 217"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1.33333333333333\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "g = sympy.sec(x)**4\n",
+ "print sympy.integrate(g,('x',0,math.pi/4))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.9.2, page no. 217"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.607986405500361\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print sympy.integrate('1/sin(x)**3',('x',math.pi/3,math.pi/2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.10, page no. 220"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.000362418686373\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "from sympy.abc import x\n",
+ "from sympy.integrals import Integral\n",
+ "import sympy, math\n",
+ "g = x*sympy.sin(x)**6*sympy.cos(x)**4\n",
+ "f = Integral(g,(x,0,math.pi/6))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.12, page no. 221"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.785398163397\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "from sympy.abc import x\n",
+ "from sympy.integrals import Integral\n",
+ "x = sympy.Symbol('x')\n",
+ "a = math.pi/2\n",
+ "f = (sympy.sin(x)**0.5)/(sympy.sin(x)**0.5+sympy.cos(x)**0.5)\n",
+ "f = Integral(f,(x, 0, a))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.13, page no. 223"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The summation is equivalent to integration of 1/(1+xˆ2) from 0 to 1\n",
+ "0.785398163397\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"The summation is equivalent to integration of 1/(1+xˆ2) from 0 to 1\"\n",
+ "g = 1/(1+x**2)\n",
+ "f = sympy.integrate(g,(x,0,1))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.14, page no. 223"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The summation is equivalent to integration of log(1+x) from 0 to 1\n",
+ "0.38629436112\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,numpy,math\n",
+ "\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"The summation is equivalent to integration of log(1+x) from 0 to 1\"\n",
+ "g = sympy.log(1+x)\n",
+ "f = sympy.integrate(g,(x,0,1))\n",
+ "print float(f) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.15, page no. 225"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.0337339994178\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy,math\n",
+ "from sympy.integrals import Integral\n",
+ "f = Integral(x*sympy.sin(x)**8*sympy.cos(x)**4,(x,0,math.pi))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.16, page no. 226"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-1.08879304515\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "from sympy.integrals import Integral\n",
+ "x = sympy.Symbol('x')\n",
+ "#f = sympy.integrate(sympy.log(sympy.sin(x)),('x',0,math.pi/2))\n",
+ "f = Integral(sympy.log(sympy.sin(x)), (x, 0, 1.5707963267949))\n",
+ "print float(f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 6.24, page no. 234"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "from the graph, it is clear that the points of intersection are x=−4 and x =8.\n",
+ "So, our region of integration is from x=−4 to x=8\n",
+ "36\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nlWV1AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7faae1cad790>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy\n",
+ "import math\n",
+ "\n",
+ "x = numpy.linspace(-5,10,70)\n",
+ "y1 = (x+8)/2\n",
+ "y2 = x**2/8\n",
+ "\n",
+ "plt.xlabel('X axis')\n",
+ "plt.ylabel('Y axis')\n",
+ "plt.title('My Graph')\n",
+ "plt.plot(x, y1, \"o-\" )\n",
+ "plt.plot(x, y2, \"+-\" )\n",
+ "plt.legend([\"(x+8)/2\",\"x**2/8\"])\n",
+ "print \"from the graph, it is clear that the points of intersection are x=−4 and x =8.\"\n",
+ "print \"So, our region of integration is from x=−4 to x=8\"\n",
+ "print sympy.integrate('(x+8)/2-x**2/8',('x',-4,8))"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb
new file mode 100644
index 00000000..735ec6e3
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/chapter9_2.ipynb
@@ -0,0 +1,476 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 9 : Infinite Series"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.1, page no. 302"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1/3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "f = ((1/n)**2-2*(1/n))/(3*(1/n)**2+(1/n))\n",
+ "print sympy.limit(f,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.1.3, page no. 303"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "4\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sympy\n",
+ "n = sympy.Symbol('n')\n",
+ "f = 3+(-1)**n\n",
+ "print sympy.limit(f,n,100)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.2.1, page no. 304"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1+2+3+4+5+6+7+....+n + . . . . . = oo\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"1+2+3+4+5+6+7+....+n + . . . . . = \",\n",
+ "p = 1/n*(1/n+1)/2\n",
+ "print sympy.limit(p,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.2.2, page no. 304"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "5−4−1+5−4−1+5−4−1+5−4−1+.........=0,5,1 according to the no. of terms.\n",
+ "clearly, in this case sum doesnt tend to a unique limit. hence, series is oscillatory.\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"5−4−1+5−4−1+5−4−1+5−4−1+.........=0,5,1 according to the no. of terms.\"\n",
+ "print \"clearly, in this case sum doesnt tend to a unique limit. hence, series is oscillatory.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.5.1, page no. 308"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2\n",
+ "both u and v converge and diverge together, hence u is convergent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "v = 1/((1/n)**2)\n",
+ "u = (2/n-1)/(1/n*(1/n +1)*(1/n +2))\n",
+ "print sympy.limit(u/v,n,0)\n",
+ "print \"both u and v converge and diverge together, hence u is convergent\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.5.2, page no. 308"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "oo\n",
+ "both u and v converge and diverge together, hence u is divergent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "v = 1/((1/n)**2)\n",
+ "u = ((1/n)**2)/((3/n+1)*(3/n+4)*(3/n+7))\n",
+ "print sympy.limit(u/v,n,0)\n",
+ "print \"both u and v converge and diverge together, hence u is divergent\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.7.1, page no. 312"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "u=((n+1)^0.5−1)/((n+2)^3−1)=>\n",
+ "0\n",
+ "since, v is convergent, so u is also conzavergent.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "print \"u=((n+1)^0.5−1)/((n+2)^3−1)=>\"\n",
+ "u = ((1+1/(1/n))-(1/n)**(-0.5))/(((1/n)**5/2)*((1+2/(1/n))**3-(1/n)**(-3)))\n",
+ "v = (1/n)**(-5/2)\n",
+ "print sympy.limit(u/v,n,0)\n",
+ "print 'since, v is convergent, so u is also conzavergent.'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.7.3, page no. 313"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "-log(log(2)) + +inf\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "print sympy.integrate(1/(n*sympy.log(n)),(n,2,numpy.inf))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.8.1, page no. 314"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x**(-2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "u = (x**(2*(1/n)-2))/(((1/n)+1)*(1/n)**0.5)\n",
+ "v = (x**(2*(1/n)))/((1/n+2)*(1/n+1)**0.5)\n",
+ "print sympy.limit(u/v,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.8.2, page no. 314"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1/x\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "u = ((2**(1/n)-2)*(x**(1/n-1)))/(2**(1/n)+1)\n",
+ "v = ((2**((1/n)+1)-2)*(x**(1/n)))/(2**(1/n+1)+1)\n",
+ "print sympy.limit(u/v,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.10.1, page no. 316"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(x + 1)/(2*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "u = 1/(1+x**(-n))\n",
+ "v = 1/(1+x**(-n-1))\n",
+ "print sympy.limit(u/v,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.10.2, page no. 316"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "a = sympy.Symbol('a')\n",
+ "b = sympy.Symbol('b')\n",
+ "l = (b+1/n)/(a+1/n)\n",
+ "print sympy.limit(l,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.11.1, page no. 317"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "u=((4.7....(3n+1))∗xˆn)/(1.2.....n)\n",
+ "v=((4.7....(3n+4)∗xˆ(n+1))/(1.2.....(n+1))\n",
+ "l=u/v=> 1/(3*x)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "print \"u=((4.7....(3n+1))∗xˆn)/(1.2.....n)\"\n",
+ "print \"v=((4.7....(3n+4)∗xˆ(n+1))/(1.2.....(n+1))\"\n",
+ "print \"l=u/v=>\",\n",
+ "l = (1+n)/((3+4*n)*x)\n",
+ "print sympy.limit(l,n,0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.11.2, page no. 318"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "4/x**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy,sympy,math\n",
+ "\n",
+ "n = sympy.Symbol('n')\n",
+ "x = sympy.Symbol('x')\n",
+ "u = (((sympy.factorial(n))**2)*x**(2*n))/sympy.factorial(2*n)\n",
+ "v = (((sympy.factorial(n+1))**2)*x**(2*(n+1)))/sympy.factorial(2*(n+1))\n",
+ "print sympy.limit(u/v,n,numpy.inf )"
+ ]
+ }
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.png b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.png
new file mode 100644
index 00000000..f54af014
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen1_2.png
Binary files differ
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.png b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.png
new file mode 100644
index 00000000..7a62e760
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen2_2.png
Binary files differ
diff --git a/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.png b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.png
new file mode 100644
index 00000000..babda72b
--- /dev/null
+++ b/Higher_Engineering_Mathematics_by_B._S._Grewal/screenshots/screen3_2.png
Binary files differ
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb
new file mode 100644
index 00000000..b45b10cf
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter1.ipynb
@@ -0,0 +1,754 @@
+{
+ "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/Chapter10.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb
new file mode 100644
index 00000000..1c137a08
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter10.ipynb
@@ -0,0 +1,128 @@
+{
+ "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/Chapter2.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb
new file mode 100644
index 00000000..cac42c12
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter2.ipynb
@@ -0,0 +1,822 @@
+{
+ "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/Chapter3.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb
new file mode 100644
index 00000000..2e2e4be2
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter3.ipynb
@@ -0,0 +1,637 @@
+{
+ "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/Chapter4.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb
new file mode 100644
index 00000000..3fb3b384
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter4.ipynb
@@ -0,0 +1,328 @@
+{
+ "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/Chapter5.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb
new file mode 100644
index 00000000..9d29340c
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter5.ipynb
@@ -0,0 +1,358 @@
+{
+ "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/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
+}
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb
new file mode 100644
index 00000000..8aae5981
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter7.ipynb
@@ -0,0 +1,235 @@
+{
+ "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": [
+ "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": [
+ "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/Chapter8.ipynb b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb
new file mode 100644
index 00000000..6f1bfe72
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/Chapter8.ipynb
@@ -0,0 +1,561 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 8 - Inner product spaces"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 271 Example 8.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "n = 5\n",
+ "a = [[ 1. 4. 2. 8. 8.]]\n",
+ "b = [[ 10. 8. 3. 1. 8.]]\n",
+ "Then, (a|b) = \n",
+ "\n",
+ "[[ 10. 40. 20. 80. 80.]\n",
+ " [ 8. 32. 16. 64. 64.]\n",
+ " [ 3. 12. 6. 24. 24.]\n",
+ " [ 1. 4. 2. 8. 8.]\n",
+ " [ 8. 32. 16. 64. 64.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "n=np.random.randint(2,9)\n",
+ "a=np.random.rand(1,n)\n",
+ "b=np.random.rand(1,n)\n",
+ "for i in range(0,n):\n",
+ " a[0,i]=round(a[0,i]*10)\n",
+ " b[0,i]=round(b[0,i]*10)\n",
+ "print 'n = ',n\n",
+ "print 'a = ',a\n",
+ "print 'b = ',b\n",
+ "print 'Then, (a|b) = \\n\\n',a*np.transpose(b)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 271 Example 8.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a = [[ 4. 3.]]\n",
+ "b = [[ 7. 5.]]\n",
+ "Then, a|b = 47.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "a=np.random.rand(1,2)\n",
+ "b=np.random.rand(1,2)\n",
+ "for i in range(0,2):\n",
+ " a[0,i]=round(a[0,i]*10)\n",
+ " b[0,i]=round(b[0,i]*10)\n",
+ "print 'a = ',a\n",
+ "print 'b = ',b\n",
+ "x1 = a[0,0]#\n",
+ "x2 = a[0,1]#\n",
+ "y1 = b[0,0]#\n",
+ "y2 = b[0,1]#\n",
+ "t = x1*y1 - x2*y1 - x1*y2 + 4*x2*y2#\n",
+ "print 'Then, a|b = ',t"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 307 Example 8.28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x1 and x2 are two real nos. i.e., x1**2 + x2**2 = 1\n",
+ "x1 = 0.383547227589\n",
+ "x2 = 0.923521263539\n",
+ "B = \n",
+ "[[ 0.38354723 0.92352126 0. ]\n",
+ " [ 0. 1. 0. ]\n",
+ " [ 0. 0. 1. ]]\n",
+ "Applying Gram-Schmidt process to B:\n",
+ "a1 = [ 0.38354723 0.92352126 0. ]\n",
+ "a2 = [-0.35421402 0.14710848 0. ]\n",
+ "a3 = [0 0 1]\n",
+ "U = \n",
+ "[[[ 0.38354723 0.92352126 0. ]]\n",
+ "\n",
+ " [[-0.92352126 0.38354723 0. ]]\n",
+ "\n",
+ " [[ 0. 0. 1. ]]]\n",
+ "M = \n",
+ "[[ 1. 0. 0. ]\n",
+ " [-2.40784236 2.60724085 0. ]\n",
+ " [ 0. 0. 1. ]]\n",
+ "inverse(M) * U = [[[ 3.83547228e-01 -4.25822963e-17 0.00000000e+00]\n",
+ " [ 3.54214020e-01 3.54214020e-01 0.00000000e+00]\n",
+ " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00]]\n",
+ "\n",
+ " [[ -9.23521264e-01 -1.76848356e-17 0.00000000e+00]\n",
+ " [ -8.52891524e-01 1.47108476e-01 0.00000000e+00]\n",
+ " [ -0.00000000e+00 0.00000000e+00 0.00000000e+00]]\n",
+ "\n",
+ " [[ 0.00000000e+00 -0.00000000e+00 0.00000000e+00]\n",
+ " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00]\n",
+ " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]]\n",
+ "So, B = inverse(M) * U\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "print 'x1 and x2 are two real nos. i.e., x1**2 + x2**2 = 1'\n",
+ "x1 = np.random.rand()\n",
+ "x2 = np.sqrt(1 - x1**2)\n",
+ "print 'x1 = ',x1\n",
+ "print 'x2 = ',x2\n",
+ "B = np.array([[x1, x2, 0],[0, 1, 0],[0, 0, 1]])\n",
+ "print 'B = \\n',B\n",
+ "print 'Applying Gram-Schmidt process to B:'\n",
+ "a1 = np.array([x1, x2, 0])\n",
+ "a2 = np.array([0 ,1 ,0]) - x2 * np.array([x1 ,x2 ,0])\n",
+ "a3 = np.array([0, 0, 1])\n",
+ "print 'a1 = ',a1\n",
+ "print 'a2 = ',a2\n",
+ "print 'a3 = ',a3\n",
+ "U = np.array([[a1],[a2/x1],[a3]])\n",
+ "print 'U = \\n',U\n",
+ "M = np.array([[1, 0, 0],[-x2/x1, 1/x1, 0],[0, 0, 1]])\n",
+ "print 'M = \\n',M\n",
+ "print 'inverse(M) * U = ',np.linalg.inv(M) * U\n",
+ "print 'So, B = inverse(M) * U'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 278 Example 8.9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(x,y) = [[ 5. 3.]]\n",
+ "(-y,x) = [-3.0, 5.0]\n",
+ "Inner product of these vectors is:\n",
+ "(x,y)|(-y,x) = 0.0\n",
+ "So, these are orthogonal.\n",
+ "------------------------------------------\n",
+ "If inner product is defined as:\n",
+ "(x1,x2)|(y1,y2) = x1y1- x2y1 - x1y2 + 4x2y2\n",
+ "Then, (x,y)|(-y,x) = -x*y+y**2-x**2+4*x*y = 0 if,\n",
+ "y = 1/2(-3 + sqrt(13))*x\n",
+ "or\n",
+ "y = 1/2(-3 - sqrt(13))*x\n",
+ "Hence,\n",
+ "[[ 5. 3.]]\n",
+ "is orthogonal to\n",
+ "[-3.0, 5.0]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "#a = round(rand(1,2) * 10)#\n",
+ "a=np.random.rand(1,2)\n",
+ "for j in [0,1]:\n",
+ " a[0,j]=round(a[0,j]*10)\n",
+ "\n",
+ "x = a[0,0]\n",
+ "y = a[0,1]\n",
+ "b = [-y, x]#\n",
+ "print '(x,y) = ',a\n",
+ "print '(-y,x) = ',b\n",
+ "print 'Inner product of these vectors is:'\n",
+ "t = -x*y + y*x#\n",
+ "print '(x,y)|(-y,x) = ',t\n",
+ "\n",
+ "print 'So, these are orthogonal.'\n",
+ "print '------------------------------------------'\n",
+ "print 'If inner product is defined as:'\n",
+ "print '(x1,x2)|(y1,y2) = x1y1- x2y1 - x1y2 + 4x2y2'\n",
+ "print 'Then, (x,y)|(-y,x) = -x*y+y**2-x**2+4*x*y = 0 if,'\n",
+ "print 'y = 1/2(-3 + sqrt(13))*x'\n",
+ "print 'or'\n",
+ "print 'y = 1/2(-3 - sqrt(13))*x'\n",
+ "print 'Hence,'\n",
+ "if y == (1./2*(-3 + np.sqrt(13))*x) or (1./2*(-3 - np.sqrt(13))*x):\n",
+ " print a\n",
+ " print 'is orthogonal to'\n",
+ " print b\n",
+ "else:\n",
+ " print a\n",
+ " print 'is not orthogonal to'\n",
+ " print b\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 282 Example 8.12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b1 = [3 0 4]\n",
+ "b2 = [-1 0 7]\n",
+ "b3 = [ 2 9 11]\n",
+ "Applying the Gram-Schmidt process to b1,b2,b3:\n",
+ "a1 = [3 0 4]\n",
+ "a2 = [2 0 3]\n",
+ "a3 = [2 9 4]\n",
+ "{a1,a2,a3} are mutually orthogonal and hence forms orthogonal basis for R**3\n",
+ "Any arbitrary vector {x1,x2,x3} in R**3 can be expressed as:\n",
+ "y = {x1,x2,x3} = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3\n",
+ "x1 = 1\n",
+ "x2 = 2\n",
+ "x3 = 3\n",
+ "y = [0 0 0]\n",
+ "i.e. y = [x1 x2 x3], according to above equation.\n",
+ "Hence, we get the orthonormal basis as:\n",
+ ", [ 0.6 0. 0.8]\n",
+ ", [ 0.4 0. 0.6]\n",
+ "[ 0.22222222 1. 0.44444444]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "b1 = np.array([3, 0, 4])\n",
+ "b2 = np.array([-1 ,0 ,7])\n",
+ "b3 = np.array([2 ,9 ,11])\n",
+ "print 'b1 = ',b1\n",
+ "print 'b2 = ',b2\n",
+ "print 'b3 = ',b3\n",
+ "print 'Applying the Gram-Schmidt process to b1,b2,b3:'\n",
+ "a1 = b1\n",
+ "print 'a1 = ',a1\n",
+ "a2 = b2-(np.transpose((b2*np.transpose(b1)))/25*b1)\n",
+ "print 'a2 = ',a2\n",
+ "a3 = b3-(np.transpose(b3*np.transpose(b1))/25*b1) - (np.transpose(b3*np.transpose(a2))/25*a2)\n",
+ "print 'a3 = ',a3\n",
+ "print '{a1,a2,a3} are mutually orthogonal and hence forms orthogonal basis for R**3'\n",
+ "print 'Any arbitrary vector {x1,x2,x3} in R**3 can be expressed as:'\n",
+ "print 'y = {x1,x2,x3} = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3'\n",
+ "x1 = 1#\n",
+ "x2 = 2#\n",
+ "x3 = 3#\n",
+ "y = (3*x1 + 4*x3)/25*a1 + (-4*x1 + 3*x3)/25*a2 + x2/9*a3#\n",
+ "print 'x1 = ',x1\n",
+ "print 'x2 = ',x2\n",
+ "print 'x3 = ',x3\n",
+ "print 'y = ',y\n",
+ "print 'i.e. y = [x1 x2 x3], according to above equation.'\n",
+ "print 'Hence, we get the orthonormal basis as:'\n",
+ "\n",
+ "print ',',1./5*a1\n",
+ "print ',',1./5*a2\n",
+ "print 1/9.*a3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 283 Example 8.13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A = [[ 1.25598176 1.81258697]\n",
+ " [ 0.6193707 0.80341686]]\n",
+ "b1 = [ 1.25598176 1.81258697]\n",
+ "b2 = [ 0.6193707 0.80341686]\n",
+ "Applying the orthogonalization process to b1,b2:\n",
+ "[1.255981755902444, 1.8125869670307564] a1 = \n",
+ "[] a2 = \n",
+ "a2 is not equal to zero if and only if b1 and b2 are linearly independent.\n",
+ "That is, if determinant of A is non-zero.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "A = np.random.rand(2,2)\n",
+ "A[0,:] = A[0,:] + 1# #so b1 is not equal to zero\n",
+ "a = A[0,0]\n",
+ "b = A[0,1]\n",
+ "c = A[1,0]\n",
+ "d = A[1,1]\n",
+ "b1 = A[0,:]\n",
+ "b2 = A[1,:]\n",
+ "print 'A = ',A\n",
+ "print 'b1 = ',b1\n",
+ "print 'b2 = ',b2\n",
+ "print 'Applying the orthogonalization process to b1,b2:'\n",
+ "\n",
+ "a1 = [a, b]\n",
+ "a2 = (np.linalg.det(A)/(a**2 + b**2))*[-np.transpose(b), np.transpose(a)]\n",
+ "print a1,'a1 = '\n",
+ "print a2,'a2 = '\n",
+ "print 'a2 is not equal to zero if and only if b1 and b2 are linearly independent.'\n",
+ "print 'That is, if determinant of A is non-zero.'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 286 Example 8.14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "v = [-10 2 8]\n",
+ "u = [ 3 12 -1]\n",
+ "Orthogonal projection of v1 on subspace W spanned by v2 is given by:\n",
+ "[-3 0 1]\n",
+ "Orthogonal projection of R**3 on W is the linear transformation E given by:\n",
+ "(x1,x2,x3) -> (3*x1 + 12*x2 - x3)/%d * (3 12 -1) 154\n",
+ "Rank(E) = 1\n",
+ "Nullity(E) = 2\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "v = np.array([-10 ,2 ,8])\n",
+ "u = np.array([3, 12, -1])\n",
+ "print 'v = ',v\n",
+ "print 'u = ',u\n",
+ "print 'Orthogonal projection of v1 on subspace W spanned by v2 is given by:'\n",
+ "a = (np.transpose(u*np.transpose(v)))/(u[0]**2 + u[1]**2 + u[2]**2) * u\n",
+ "print a\n",
+ "print 'Orthogonal projection of R**3 on W is the linear transformation E given by:'\n",
+ "print '(x1,x2,x3) -> (3*x1 + 12*x2 - x3)/%d * (3 12 -1)',(u[0]**2 + u[1]**2 + u[2]**2)\n",
+ "print 'Rank(E) = 1'\n",
+ "print 'Nullity(E) = 2'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 288 Example 8.15"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f = (sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2\n",
+ "Integration (f dt) in limits 0 to 1 = 2.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad,cos,sin,pi,sqrt\n",
+ "\n",
+ "#part c\n",
+ "print 'f = (sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2'\n",
+ "print 'Integration (f dt) in limits 0 to 1 = ',\n",
+ "x0 = 0#\n",
+ "x1 = 1#\n",
+ "X = quad(lambda t:(sqrt(2)*cos(2*pi*t) + sqrt(2)*sin(4*pi*t))**2,[x0,x1])\n",
+ "print X"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 294 Example 8.17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Matrix of projection E in orthonormal basis is:\n",
+ "A = 1/154 * [[ 9 36 -3]\n",
+ " [ 36 144 -12]\n",
+ " [ -3 -12 1]]\n",
+ "A* = [[ 9 36 -3]\n",
+ " [ 36 144 -12]\n",
+ " [ -3 -12 1]]\n",
+ "Since, E = E* and A = A*, then A is also the matrix of E*\n",
+ "a1 = [154, 0, 0]\n",
+ "a2 = [145, -36, 3]\n",
+ "a3 = [-36, 10, 12]\n",
+ "{a1,a2,a3} is the basis.\n",
+ "Ea1 = [9, 36, -3]\n",
+ "Ea2 = [0, 0, 0]\n",
+ "Ea3 = [0, 0, 0]\n",
+ "Matrix B of E in the basis is:\n",
+ "B = \n",
+ "[[-1 0 0]\n",
+ " [-1 0 0]\n",
+ " [ 0 0 0]]\n",
+ "B* = \n",
+ "[[-1 -1 0]\n",
+ " [ 0 0 0]\n",
+ " [ 0 0 0]]\n",
+ "Since, B is not equal to B*, B is not the matrix of E*\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "#Equation given in example 14 is used.\n",
+ "def transform(x,y,z):\n",
+ " x1 = 3*x#\n",
+ " x2 = 12*y#\n",
+ " x3 = -z#\n",
+ " m = [x1 ,x2, x3]\n",
+ " return m\n",
+ "\n",
+ "print 'Matrix of projection E in orthonormal basis is:'\n",
+ "t1 = transform(3,3,3)#\n",
+ "t2 = transform(12,12,12)#\n",
+ "t3 = transform(-1,-1,-1)#\n",
+ "A = np.vstack([t1,t2,t3])#[t1# t2# t3]#\n",
+ "print 'A = 1/154 * ',A\n",
+ "\n",
+ "A1 = np.transpose(np.conj(A))\n",
+ "print 'A* = ',A1\n",
+ "print 'Since, E = E* and A = A*, then A is also the matrix of E*'\n",
+ "a1 = [154, 0, 0]#\n",
+ "a2 = [145 ,-36, 3]#\n",
+ "a3 = [-36 ,10 ,12]#\n",
+ "print 'a1 = ',a1\n",
+ "print 'a2 = ',a2\n",
+ "print 'a3 = ',a3\n",
+ "print '{a1,a2,a3} is the basis.'\n",
+ "Ea1 = [9 ,36 ,-3]#\n",
+ "Ea2 = [0 ,0, 0]#\n",
+ "Ea3 = [0 ,0 ,0]#\n",
+ "print 'Ea1 = ',Ea1\n",
+ "print 'Ea2 = ',Ea2\n",
+ "print 'Ea3 = ',Ea3\n",
+ "B = np.array([[-1, 0, 0],[-1, 0 ,0],[0, 0, 0]])\n",
+ "print 'Matrix B of E in the basis is:'\n",
+ "print 'B = \\n',B\n",
+ "B1 = np.transpose(np.conj(B))\n",
+ "print 'B* = \\n',B1\n",
+ "print 'Since, B is not equal to B*, B is not the matrix of E*'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.png b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.png
new file mode 100644
index 00000000..90f061e8
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/InverseMatrix.png
Binary files differ
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.png b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.png
new file mode 100644
index 00000000..6ace8492
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/determinant.png
Binary files differ
diff --git a/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.png b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.png
new file mode 100644
index 00000000..f75da6e2
--- /dev/null
+++ b/Linear_Algebra_by_K._Hoffman_and_R._Kunze/screenshots/scalorpolynomial.png
Binary files differ