summaryrefslogtreecommitdiff
path: root/sample_notebooks/ARIJITCHATTERJEE
diff options
context:
space:
mode:
Diffstat (limited to 'sample_notebooks/ARIJITCHATTERJEE')
-rwxr-xr-xsample_notebooks/ARIJITCHATTERJEE/chapter1.ipynb904
-rwxr-xr-xsample_notebooks/ARIJITCHATTERJEE/chapter1_1.ipynb895
2 files changed, 1799 insertions, 0 deletions
diff --git a/sample_notebooks/ARIJITCHATTERJEE/chapter1.ipynb b/sample_notebooks/ARIJITCHATTERJEE/chapter1.ipynb
new file mode 100755
index 00000000..d287e069
--- /dev/null
+++ b/sample_notebooks/ARIJITCHATTERJEE/chapter1.ipynb
@@ -0,0 +1,904 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 1: Operational Amplifier Fundamentals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.1, Page 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ "The overall gain is 60.0 V/V\n",
+ "The input load is 80.0 % of it's unloaded value\n",
+ "The output load is 75.0 % of it's unloaded value\n",
+ "b)\n",
+ "The overall gain is 53.3 V/V\n",
+ "The input load is 66.7 % of it's unloaded value\n",
+ "The output load is 80.0 % of it's unloaded value\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R0 = 1.0 #ohm\n",
+ "Ri = 100.0 #kilo ohm\n",
+ "Aoc = 100.0 #volts per volts\n",
+ "Rs=0.0 #kilo ohm\n",
+ "Rl=0.0 #ohm\n",
+ "gain=0.0\n",
+ "input_load=0.0\n",
+ "output_load=0.0\n",
+ "\n",
+ "def calculate(): #returns gain\n",
+ " global input_load, output_load\n",
+ " input_load = (Ri/(Rs+Ri))\n",
+ " output_load = (Rl/(R0+Rl))\n",
+ " ans=input_load*Aoc*output_load # in V/V\n",
+ " return ans\n",
+ "#answer part (a)\n",
+ "Rs=25.0\n",
+ "Rl=3.0\n",
+ "gain=calculate()\n",
+ "print \"a)\"\n",
+ "print \"The overall gain is \",round(gain,1),\"V/V\"\n",
+ "print \"The input load is \",input_load*100,\"% of it's unloaded value\"\n",
+ "print \"The output load is \",output_load*100,\"% of it's unloaded value\"\n",
+ "\n",
+ "#answer part (b)\n",
+ "Rs=50.0\n",
+ "Rl=4.0\n",
+ "gain=calculate()\n",
+ "print \"b)\"\n",
+ "print \"The overall gain is \",round(gain,1),\"V/V\"\n",
+ "print \"The input load is \",round(input_load*100,1),\"% of it's unloaded value\"\n",
+ "print \"The output load is \",round(output_load*100,1),\"% of it's unloaded value\"\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.2, Page 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)Vo = 9.17431 V\n",
+ "b)Vo = 9.99101 V\n",
+ "c)Vo = 9.99991 V\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "vt = 1.0 # in volt\n",
+ "R1 = 2.0 # in kilo ohm\n",
+ "R2 = 18.0 #in kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate(a): #returns Vo\n",
+ " global vt,R1,R2\n",
+ " ans=vt*(1+(R2/R1))/(1+((R2/R1)/a)) #equation 1.11\n",
+ " return ans\n",
+ "\n",
+ "#answer\n",
+ "print \"a)Vo = \",round(calculate(10**2),5),\"V\"\n",
+ "print \"b)Vo = \",round(calculate(10**4),5),\"V\"\n",
+ "print \"c)Vo = \",round(calculate(10**6),5),\"V\"\n",
+ "\n",
+ "#textbook contains precision error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.4, Page 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 20 kilo ohm\n",
+ "R2 = 15 kilo ohm\n",
+ "R3 = 30 kilo ohm\n",
+ "Rf = 120 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "rf1 = 3 # coefficient of V1\n",
+ "rf2 = 4 # coefficient of V2\n",
+ "rf3 = 2 # coefficient of V3\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "rf1*=2 # Common factor 2\n",
+ "rf2*=2 # Common factor 2\n",
+ "rf3*=2 # Common factor 2\n",
+ "r1=20 # assumption\n",
+ "rf=r1*rf1\n",
+ "r2=rf/rf2\n",
+ "r3=rf/rf3\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"R3 = \",r3,\"kilo ohm\"\n",
+ "print \"Rf = \",rf,\"kilo ohm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.5, Page 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 10 kilo ohm\n",
+ "R2 = 300 kilo ohm\n",
+ "Rf = 100 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "r1,r2,rf #vo=10*v1+5=-(rf/r1*v1)-rf/r2*(-15)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "r1=10\n",
+ "rf=10*r1; #-rf/r1*v1=10*v1\n",
+ "r2=rf*15/5 #-rf/r2*(-15)=5\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"Rf = \",rf,\"kilo ohm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.6, Page 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 100 kilo ohm\n",
+ "R2 = 300 kilo ohm\n",
+ "R3 = 25 kilo ohm\n",
+ "R4 = 75 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "ri1=100 # in kilo ohm\n",
+ "ri2=100 # in kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "r1=ri1;\n",
+ "r2=3*r1; #r2/r1=3\n",
+ "# r3 + r4 = ri2 and (1+r1/r2)/(1+r3/r4)=1\n",
+ "#Solving the above two\n",
+ "r3=ri2/4;\n",
+ "r4=ri2-r3\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"R3 = \",r3,\"kilo ohm\"\n",
+ "print \"R4 = \",r4,\"kilo ohm\"\n",
+ "\n",
+ "#in textbook r3 and r4 values are reversed which doesn't satisfy the equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.7, Page 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)T >= 1000\n",
+ "b)a >= 100000\n",
+ "a)Beta = 0.00999\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable Declaration\n",
+ "\n",
+ "A=100 \n",
+ "accuracy=0.1\n",
+ "\n",
+ "#Calcualtion\n",
+ "\n",
+ "T=100/accuracy\n",
+ "beta=1.0/100.0 # A_ideal=i/beta=100\n",
+ "a=(10**3)/beta\n",
+ "beta=(a/100-1)/a # A=a/(1+(a*beta))\n",
+ "\n",
+ "#answer\n",
+ "print \"a)T >= \",int(T)\n",
+ "print \"b)a >= \",int(a)\n",
+ "print \"a)Beta = \",beta"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.8, Page 26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a) A changes by (+-) 0.09901 %\n",
+ "b) A changes by (+-) 0.0001 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "a = 10**5 \n",
+ "beta\n",
+ "T\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate():\n",
+ " global a,beta,T\n",
+ " T=a*beta\n",
+ " ans=10.0/(1+T) # for a +- 10% change in a\n",
+ " return ans\n",
+ "\n",
+ "#answer\n",
+ "beta=10**(-3) #given\n",
+ "desensitivity_factor=calculate(); # stores the answer\n",
+ "print \"a) A changes by (+-)\",round(desensitivity_factor,6),\"%\" #part a\n",
+ "\n",
+ "beta=1 #given\n",
+ "desensitivity_factor=calculate();\n",
+ "print \"b) A changes by (+-)\",round(desensitivity_factor,6),\"%\" #part b"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.9, Page 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " A = 995.024876 V/V\n",
+ " Ro = 373.134 mili ohm\n",
+ " Ri = 402.0 Mega ohm\n",
+ "b)\n",
+ " A = 0.999995 V/V\n",
+ " Ro = 0.375 mili ohm\n",
+ " Ri = 400002.0 Mega ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 2.0 # Mega ohm\n",
+ "ro = 75.0 # ohm\n",
+ "a = 200000.0 # V/V\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate(R1,R2):\n",
+ " global a,ro,rd\n",
+ " beta=R1/(R1+R2)\n",
+ " if(R1==float(\"inf\")): # for infinty\n",
+ " beta=1\n",
+ " T=a*beta\n",
+ " A=(1+(R2/R1))/(1+(1/T)) # equation 1.55\n",
+ " if(R1==float(\"inf\")): # for infinity\n",
+ " A=1/(1+(1/T))\n",
+ " Ro=ro/(1+T) # equation 1.61\n",
+ " Ri=rd*(1+T) # equation 1.59\n",
+ " print \" A = \",round(A,6),\"V/V\"\n",
+ " print \" Ro = \",round(Ro*(10**3),3),\"mili ohm\"\n",
+ " print \" Ri = \", round(Ri,3),\"Mega ohm\"\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "calculate(1.0,999)\n",
+ "print \"b)\"\n",
+ "calculate(float(\"inf\"),1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.10, Page 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " A = -0.99999 V/V\n",
+ " Rn = 0.5 ohm\n",
+ " Ri = 100000.0 ohm\n",
+ " Ro = 0.00075 ohm\n",
+ "b)\n",
+ " A = -995.01993 V/V\n",
+ " Rn = 4.99998 ohm\n",
+ " Ri = 1000.0 ohm\n",
+ " Ro = 0.37351 ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "a = 200000.0 # V/V\n",
+ "ro = 75 # ohm\n",
+ "\n",
+ "#Calculating function\n",
+ "\n",
+ "def calculate(R1,R2):\n",
+ " global a,ro\n",
+ " T=a*(R1/(R1+R2)) \n",
+ " A=(-1)*(R2/R1)/(1+(1/T)) # equation 1.63\n",
+ " Rn=R2/(1+a) # equation 1.67b\n",
+ " Ri=R1 # equation 1.68\n",
+ " Ro=ro/(1+T)\n",
+ " print \" A = \",round(A,5),\"V/V\"\n",
+ " print \" Rn = \",round(Rn,5),\"ohm\"\n",
+ " print \" Ri = \",round(Ri,5),\"ohm\"\n",
+ " print \" Ro = \",round(Ro,5),\"ohm\"\n",
+ " \n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "calculate(100000.0,100000.0)\n",
+ "print \"b)\"\n",
+ "calculate(1000.0,1000000.0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.11, Page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "317.440162529\n",
+ "a) A_ideal = -101.1 V/V\n",
+ "b) A = -100.78 V/V\n",
+ "Deviation from ideal = 0.31 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "R1 = 1000000.0 # ohm\n",
+ "R2 = 1000000.0 # ohm\n",
+ "R3 = 100000.0 # ohm\n",
+ "R4 = 1000.0 # ohm\n",
+ "RL = 2000.0 # ohm\n",
+ "rd = 1000000.0 #ohm\n",
+ "a = 10**5 # V/V\n",
+ "ro = 100.0 # ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "A_ideal = (-1)*(R2/R1)*(1+(R3/R2)+(R3/R4)) # ideal op-amp and summing currents at node v1\n",
+ "T = a/(1+(R2/R1)+(R2/rd))/(1+(ro/(R2+(R1*rd/(R1+rd))))+(ro/RL))/100 #equation 1.73\n",
+ "A = A_ideal/(1+(1/T)) \n",
+ "dev=(A_ideal-A)/A_ideal*100\n",
+ "\n",
+ "#answer\n",
+ "print T\n",
+ "print \"a) A_ideal =\",A_ideal,\"V/V\"\n",
+ "print \"b) A =\",round(A,2),\"V/V\"\n",
+ "print \"Deviation from ideal =\",round(dev,2),\"%\"\n",
+ "\n",
+ "#book example has precision error so answer is 0.32%"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.12, Page 40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " Beta = 0.016911 V/V\n",
+ " T = 169.1\n",
+ "b)\n",
+ " Vo= -( 29.82 V1 + 14.91 V2 + 9.94 V3 )\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 1000.0 # kilo ohm\n",
+ "a = 10**4 # V/V\n",
+ "ro = 100.0 #ohm\n",
+ "R1 = 10.0 # kilo ohm\n",
+ "R2 = 20.0 # kilo ohm\n",
+ "R3 = 30.0 # kilo ohm\n",
+ "R4 = 300.0 # kilo ohm\n",
+ "RL = 2.0 # kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def parallel(a,b):\n",
+ " ans=a*b/(a+b)\n",
+ " return ans\n",
+ "\n",
+ "Ra = parallel(R1,parallel(R2,parallel(R3,rd)))\n",
+ "Rb=Ra+R4\n",
+ "Rc=parallel(Rb,RL) #After suppressing all input sources\n",
+ "Rd=Rc+ro/1000 #replacing the op-amp with it's terminal resistances\n",
+ "Vn=Rb/Ra #and applying a test voltage and analysing the circuit\n",
+ "Vt=Rd/Rc\n",
+ "beta=1/Vn/Vt\n",
+ "T=a*beta\n",
+ "v1=R4/R1\n",
+ "v2=R4/R2\n",
+ "v3=R4/R3\n",
+ "A=1/(1+1/T)\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "print \" Beta =\",round(beta,6),\"V/V\"\n",
+ "print \" T =\",round(T,1)\n",
+ "print \"b)\"\n",
+ "print \" Vo= -(\",round(A*v1,2),\"V1 +\",round(A*v2,2),\"V2 +\",round(A*v3,2),\"V3 )\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.13, Page 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Beta = 0.8101 V/V\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 100.0 # kilo ohm\n",
+ "ro = 100.0 # ohm\n",
+ "R1 = 30.0 # kilo ohm\n",
+ "R2 = 20.0 # kilo ohm\n",
+ "R3 = 10.0 # kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def parallel(a,b):\n",
+ " ans=a*b/(a+b)\n",
+ " return ans\n",
+ "\n",
+ "beta_n = (parallel(R1,rd)+R1)/((ro/1000)+R2+parallel(R1,rd)+R3) # from circuit 1.35 after appyling\n",
+ "beta_p = R3/((ro/1000)+R2+parallel(R1,rd)+R3) # voltage divide formula twice\n",
+ "beta=beta_n-beta_p #equation 1.76\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"Beta =\",round(beta,4),\"V/V\"\n",
+ "\n",
+ "# beta_n calculation in book is wrong"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.14, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " Icc = 0.5 mA\n",
+ " Iee = 3.5 mA\n",
+ " I0 = 3 mA\n",
+ "b)\n",
+ " Power Poa = 42.0 mW\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration \n",
+ "\n",
+ "R1 = 10 #kilo ohm\n",
+ "R2 = 20 #kilo ohm\n",
+ "V1 = 3 # V\n",
+ "Iq = 0.5 # mA\n",
+ "RL = 2 #kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "V0 = (-1)*R2/R1*V1\n",
+ "It = abs(V0)/RL # Currents through R1,R2,Rt are i1,i2,It respectively\n",
+ "i1 = It/R1\n",
+ "i2 = i1 # applying voltage divider rule\n",
+ "i0 = i2+It\n",
+ "icc = Iq\n",
+ "iee = icc+ i0\n",
+ "Poa = 30*Iq+((V0+15)*i0) #Whenever current passes through voltage drop, power = vi\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "print \" Icc =\",icc,\"mA\"\n",
+ "print \" Iee =\",iee,\"mA\"\n",
+ "print \" I0 =\",i0,\"mA\"\n",
+ "print \"b)\"\n",
+ "print \" Power Poa =\",Poa,\"mW\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.15, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b)\n",
+ " Change in v = 3.75 micro Volt -> quite a small change\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable Declaration\n",
+ "\n",
+ "ro = 75.0 #kilo ohm\n",
+ "T = 200000.0\n",
+ "Vs = 10.0 # V\n",
+ "Rl = 1.0 #kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "iL = Vs/Rl\n",
+ "Ro = ro/(1+T)\n",
+ "del_v = Ro*10*(10**(-3))\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"b)\"\n",
+ "print \" Change in v =\",round(del_v*(10**6),2),\"micro Volt -> quite a small change\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.16, Page 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The op-amp saturates at Vo=+-13 V\n",
+ "With Vn= 20/3-13/3 = 2.3333 V\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0xa087c88>]"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEhCAYAAABhpec9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm8lGX9//HXR0BxXzIQFQNNcE1JJDWXoySSAkqZWpqK\ntmmK+XVfvl8oK+3n8q0s9w0qcdfOkcVIPYIKmqwae19MDUNSREVBls/vj+uewzDOmTPnMHPf98y8\nn4/HeTDLfeb+zHWGue5r+1zm7oiIiDRno6QDEBGRdFNFISIiBamiEBGRglRRiIhIQaooRESkIFUU\nIiJSkCqKlDKzZ8ysX85jPzGzW8zsC2b27QK/28nMRke368xsmZlNM7MZZjbezD4fPXemmd3cxvg2\nMbMJZlbwM2Rm95rZD3IeO8HMxrTiXDeY2RHR7UYzm2Nm081skpnt1cq4G83sy9Htp81sy9b8fivO\n87qZbZfz2AaXRfQ755nZmVn3/8vMZpvZzKhcbjSz9hv0BlqOYZCZ/XeB5/ub2UtRXNPM7AEz61qi\nc9eZWUMpXkuKo4oivUYBp+Q8djJwP9Ad+E6B3z0PuC/r/nPu3svd9wP+Bvw4erzNi2jcfSUwETih\nhUPv57Pv45To8RZFX+SHu/tzmVMD33H3/YHbgV8VHfS63894APh+K3+/LefJ2KCyADAzA84G/hjd\n/xHwNeAr7v4l4EDgHWDTPL9byv/vDcA3zaxDnvPsA/wWON3d93T3XsCfgG55jm1XwpikTFRRpNej\nwHGZK0Mz6wbs6O7PA9cBh0VXahfk+d0TgdFZ9y16DQO2At7Lfjx67j4z+2bW/Y+ybl9iZi9HLZLh\nWa9bDzTbsok8A+xhZjtEr7U50Bd4wsz6mtnU6Er4bjPbOM/vHw/8tZnXngzslnldM7snuoqdamaD\nosc3ja5mZ5nZY4Qv0Mz7ruezX9yZ93yLmf3NzF7Lfs9RS2G4mU2J4u4ZPf45M/tLdPydWecotiy6\nRVffd0Sv8ZSZdczzGl8F5rj76uj+lcA57v4BgLuvcvdfufuH0Tk+ilpk04GDzey0qIymmdltmcrD\nzPqZ2YvR+3ooiq3Z9+thpe4koB+fdRnwC3efm3nA3RvcfWL0mo1m9r9m9jfgAjMbYGaTo7/beDPr\nFB033Mz+EMU1z8y+l3WOLczs4ajM/pj197nOzP4efVavzxObtIEqipRy9/eAl4Fjo4dOAR6Mbl8G\nTIxaCb/J/r3oS2iNu3+c9fBhZjYN+CdwFHBv5jTZp8wNIXq9fsAX3b0P0As4wMwOi46ZDhzSwvtY\nQ6j0TooeGgg8C6yK4jgpuhJuD5yT5yW+CryS81jmS7g/8Fp0+yrgaXf/SvQerzezzaLX/Mjd9wKG\nAQdk3pu7Lwa2z3wp5rjK3Q8E9gOOiK6SM+WyxN0PAG4FLo4eHwZMcPd9gMeBXYotC3fPVMpfBH4X\nvcb7wDdzXwM4lNAqxMy2ArZw93/mOS5jM2By1AJ7Lzr3IdFV/lrgVDPbnlB+faP3NQX4rxbeL4TP\n5+F5zrkXMLVATA50cPcD3f0m4Hl3P8jdv0z4jF+adew+wJHAwcD/mFmX6PFewAXRuXY1s6+a2eeA\nE9x976j1fE2BGKQVVFGkW3b308nRfch/tZrxBeDtnMcylcouhC6p/1fE62T0A/pFFc0UoCfhCy3T\n/bRRM1e+zb2PU6L7ewAL3X1B9PgI8n/p5L4fA/5kZv9H+HLOfKH1Ay6P4nwW2ITwZX0YUTeNu78K\nzMx5/cVAvr7zk81sCuELb2/CF1LGY9G/U1nXnZJ9njHA0jyvCfnLImOhu2fim0KerproPf073wtH\nrYJpZrbQzA6KHs5UThBaLwcAr0TldCShG/Mr0ft7MXr8dNav6PK9X4BFzcSYHdPnLIybzDWzi7Ke\nejDrdteoNTaTUBFlytqBP7v7Snd/l/B37RM9/rK7L4paNtMJn5P3gRVR63Qw8Emh2KR4qijSrR7o\na2a9gM3cfVqRv1eoAmgg/xfyaqLPQ9Qdkd0NdG1U0fRy9x7ufm/Wc0bLYx2TgC5mth/hynB0nmMK\nxZz9Oc2MUewK3AVckvXcN7Li7Obuc4p47c/Eb2bdgYuAo6Ir09FAdmW4Mvp3DaElVMx7yChUFiuz\nbue+dm7MRN1NH0Xdkrj7X6KWwmus+/ut8PUTuo3IKqM93f1n0euNz3p8b3fPHrtp7v1uRP6//d8J\nFRLu/m7UmrkD2CLrmOVZt28Gfhu1LH9InvGVLGtzYsrE1SFqsfUBHgEGAOMKvI60giqKFIu6JJ4l\ndNFkD3h+ADQ3W+efwA4FXvZQYEGex18n+s8NDAIyg5RPAWdl9VnvZOtmTW1C6OZaGd2fQx7RF9WD\nhFbDGHf/FJgLdDOz3aLDvgs0Fvl+Ml/I/w2cYGa7RHEObTogVK4AE4gG/qPuoy/lvFZn4K2cx7Yi\nfJF9YGadga/ne185ss/zdWDbfAc1UxatkVse1wK3mtnW0bmN9Su1bE8DJ2b9/baLym4y8NXM3yIa\n79m9iFi6RPHk+n/AVWa2R9Zjm7N+pZJdqW5FaJ0AnJlzzPEWZth9DqgjdLvlrZCjz+g27j6W0NLc\nr4j3IEVQRZF+o4B9Wb+LYiawJmrSrzeY7e7/BtpH/fMQ/nNmBr6nA6cSrpYzz2X+895J6IufDhwE\nfBS93nhCJTUp6hp4iHVXhr0IV8hE/dxFvw93XwEMAR6OXnc1cFue33se6J3zWGaMYQXwG+AKQn90\nh2jA9TXgp9GxtxIGPmdFjzWNd0TjOe+6+/L1Xtx9BjANmEOYrfN8M+8pu/x+ChwenXsw+b9AM/L9\nTZveV4H7kFMe7n4roQJ4ycxmRM9PjeJf7zXcfTZwNfCX6Ni/ADu4+38IX9CjosdfJHQxFnq/EK7e\nJ3zmIPfXCOMHIy1MZX4+er3si53s1xlO+By8AizJes4Jn/VnCZ+zn0Wf79w4MsduCTRE72EicGGe\n9yBtYEozXn0szNKZ7e4PtnTsBp7nl8Df3P1xMzsO6O7uvyvxObYgDPgeWMrXjV77B8Dm7v6/pX7t\ncolaDFMJ02Fb2xopZRwbRXH0zpqBVepzDCNMRLixHK8vxVOLojr9HjijnCeIup0OBZ4AcPfRpa4k\notf9CHjWzI4s9WsTJgjcWYbXLZuo6+pOQsswSQOAR8pVSWTRlWwKqEUhIiIFqUUhIiIFqaIQEZGC\nVFGIiEhBqihERKQgVRQiIlKQKgoRESlIFYWIiBSUaEVhYf+AxWb2atZj20U56edFGSW3STJGEZFa\nl3SL4l7CngLZLidksuxByGFzeexRiYhIk8RXZkcpkhvcfd/o/hzgCHdfHCVta3T3PQq8hIiIlFHS\nLYp8Okc7j0HYVKZzksGIiNS6NFYUTaIEaEpGJSKSoOZ20ErSYjPbwd3/He2P+07uAWamykNEpA3c\nvZidGNeTxhZFPetSZJ9BlMY6l7un7mfYsGGJnv9f/3K+/nXny192XnttXUyPPup07uxcfrmzYoXK\nSTFVX1yKqbiftkp6euwoot20zOxNMxsCXAccbWbzgKOi+1KAO9x/P+y/P/TpA5Mnw957r3v+G9+A\nmTNhzhw48ECYPj25WEWk8iTa9eTu327mqa/FGkgFW7IEzjkHZs+GsWPhgAPyH9epEzz2GPzxj9Cv\nHwwdCpdfDu3T2PkoIqmSxq6nilVXVxfr+errYb/9oHt3mDIlfyWRHZMZfPe74dgJE+CQQ0IrI25x\nl1MxFFPx0hiXYiqvxNdRtIWZeSXGXSrLlsEFF8DEiXDffXDYYa1/DXe47Tb47/+Gq68OLYyNdNkg\nUtXMDK+SwWwp4K9/hX33hU03hRkz2lZJQGhdnHNOGM945BE46ihYuLC0sYpIdVBFUSGWL4fzzoMh\nQ+DOO+HWW2GLLTb8db/4RXjuOTjuuDAQfuedobUhIpKhiqICvPhimNH0wQdh9tIxx5T29du1g0su\ngcbG0B01YAAsWlTac4hI5VJFkWIrV8Jll8E3vwm/+hWMHAnbblu+8+29d+iKOvBA6NULRo1S60JE\nNJidWtOmwemnh66h228P01vj9Mor4fz77AO33ALbbx/v+UWk9DSYXSVWr4ZrrgndS5deGtY+xF1J\nAPTuDVOnwi67wJe+BA0N8ccgIumgFkWKzJ4NZ5wB22wD99wDO++cdETBxIlw5plw+OHw61/D1lsn\nHZGItIVaFBVs7Vq46aYw1XXIEHjqqfRUEhDimjEDOnYMrYunn046IhGJk1oUCVu4MFytr1kDI0bA\nbrslHVFhTz0F3/senHACXHcdbL550hGJSLHUoqgw7mHNQp8+MHBgWMuQ9koCwtjJzJnw/vthZtSk\nSUlHJCLlphZFAhYtClflixeHKa/ZmV4ryWOPwbnnhu6y4cNhk02SjkhEClGLogK0lA680ih9uUht\nUIsiJtnpwEeObD4deCVyD+nLL7pI6ctF0kwtihQrJh14JUtL+nIRKQ9VFGW0bFmY0XThhfDgg3D9\n9WGKabXq2jXMihoyBA49NKy5WLs26ahEZEOltqIws9fNbKaZTTOzl5OOp7VKlQ680ih9uUj1SW1F\nAThQ5+693L1P0sEUq1zpwCuN0peLVI80VxQArR50SVImHfiyZeVJB15plL5cpDqkuaJw4K9m9oqZ\nfT/pYArJTQf+hz+UNx14pVH6cpHkzZ7d9t9N7fRYM+vi7m+b2eeB8cD57j4xes6HDRvWdGxdXV1i\nG5knnQ680ih9uUh8GhsbefbZRiZPDsk9P/nkp22aHpvaiiKbmQ0DPnL3G6P7ia+jWL0arr0Wbr4Z\nbrwRTjstDORKy1asgKuvDosPb789pDARkdLL5JJbuxbuuw+++MUqWkdhZpuZ2ZbR7c2BfsCryUa1\nzuzZYa3AxIlhz4bvfleVRGt07Ag33BCmDP/kJ2Hgf9mypKMSqR65ueQaGzcsl1wqKwqgMzDRzKYD\nLwFPuvtfEo4p9enAK43Sl4uU3qJFYbbhbbeFCuLii8PEkg1REV1PuZLoeqq0dOCVRunLRTaMe5go\n8pOfhGSdV10FHTqsf4xSeJRJpaYDrzRKXy7SdkuWwLe+Bb/4BYwdG7I551YSG0IVRQHlaMJJ87bd\nNkwtvu46GDwYrrgiTD0WkebFkUtOFUUe1ZYOvNIofblIy+LMJaeKIke5m3BSnE6dwsZIl1wC/frB\nz38epiSLSPy55FRRZMk04bp1q8504JVG6ctF1pdULjlVFHy2CXfDDdWdDrzSKH25yLpcch98EH8u\nuZqvKGo1HXilUfpyqVW5ueRGjow/l1zNVhRKB16ZlL5casm0adC7N8yfHy5kv/GNZOKoyYpC6cAr\nm9KXS7VbvRquuSZ8N116KTz6aLIJR2uqolA68Oqi9OVSjTK55J5/Pj255Gqmosg04ebNS7YJJ6XV\noUOYwjx6dLgCO/lk+M9/ko5KpPWyc8mddRaMG5eeXHJVX1HkNuEee0x7RlSj3r3D1dcuu4QEgw0N\nSUckUryFC+HII+Hxx+Gll+BHP0q+FZGtqisKpQOvLUpfLpWm1OnAy6XoisLMdjCziqhYlA68til9\nuVSCSsolV9QXv5ltBywEBpU3nA2XacI99lhowp1zjloRtWiLLcKU5zvuCIspzz8/TIkWSVol5pIr\ntoVwKmHf6rPLGMsGyW7CDRigdOASKH25pEml5pIrtqIYAvwY6GpmXcoYDwBm1t/M5pjZfDO7rKXj\nc5twl1yS3iacxE/pyyUN4kgHXi4tVhRm1htY4u5vAn8AzixnQGbWDvgd0B/YC/i2me2Z79hKbMJJ\ncpS+XJIQZzrwcimmRfE94J7o9h+A08sXDgB9gAXu/rq7rwIeAI7PPSjThPv5z2HMmMppwkmylL5c\n4lQtueQKVhRmtjlwDPA4gLu/A8w1s7oyxrQT8GbW/beix9aTSQc+dWqYQy9SLKUvl3Krtlxy7Vt4\n/lPgIHf/NOuxcrcoikrCcMwxw9lii9DvXFdXR11dXZnDkmqTSV9+220hffnVV8PQobBRRUwCl7R6\n8UU44ww4+ODQ1ZlkmqDGxkYaGxs3+HXMW5Ecx8wGuPuTG3zWwuc4CBju7v2j+1cAa939V1nHeGvi\nFmnJggWhH7l9e7j33jDgKNIaK1fC//xPSAP++9+nM02QmeHurV4w0Nprp2tae4I2eAXY3cy6mdnG\nwMlAfQznlRqm9OWyIdKSDrxcmq0ozOwWMzs0zmAA3H01cB7wFDALeNDdZ8cdh9QepS+X1kpbOvBy\nabbrycx+Qria3xF4EBgFdHD3l+MLLz91PUm5rVoVFkXdemvYevWUU7TCX9Y3e3YYi9h2W7j77spI\nE9TWrqcWxyjMrBtwCqHS2Ay4Hxjl7vNaH2ZpqKKQuLzyCpx+OuyzD9xyC2y/fdIRSdLWroXf/AZ+\n+cvQmvjhDyvnIqJsFUXOSXoB9wL7untia59VUUicVqwIM6Luvx9uvz1k+ZTatHBhmPSwdi3cd1/l\npQkq22C2mbU3s0Fmdj8wDpgDVNlQjUjzMunLH3gALrhA6ctrUaWkAy+XQmMU/QhdTscBLxPGKOrd\n/aP4wstPLQpJykcfhQHvMWPgnnugb9+kI5JyW7QIvvc9WLw4TH2t5DRB5WhRXA5MAvZ094Hufn8a\nKgmRJCl9ee1QLrl1WjVGkRZqUUgaLF0aVnK/9BKMGBFW4kp1WLIk7GUze3ZoRVRSptdC4lpwJyIR\npS+vTpWcDrxc1KIQKYF33gnTJP/xj3AFuv/+SUckrbVsWZisMHFimNFUqZleC1GLQiRBSl9e2aol\nHXi5qEUhUmJvvglnnx22Xx05EvbYI+mIpDnLl8Nll8Gf/wx33RVScVQztShEUiKTvnzIkJC+/Ne/\nDgu0JF1efDF0EX7wQUgHXu2VxIZQi0KkjJS+PH0qIR14uahFIZJCSl+eLtWeDrxc1KIQicnf/x4S\nDO6wQ6gwdtwx6Yhqx+rVcO21cPPNcNNNcOqplZPIr5TUohBJub33Dqt7DzwQevWCUaPUuojD7Nlh\nX/Tnn4epU+G002qzktgQalGIJEDpy8uvktOBl0vVtCjMbLiZvWVm06Kf/knHJFJqvXuHq9tddoEv\nfQkaGpKOqLosXAhHHhnWtkyeDD/6kSqJDZG6igJw4CZ37xX9jEs6IJFyUPry0qv1dODlksaKAkB1\nv9SMww8P8/g7dgyti6efTjqiyrRoUZhddtttoYK4+OKwD7psuLRWFOeb2Qwzu9vMtkk6GJFyU/ry\ntlM68PJLZDDbzMYDO+R56ipgMrAkun8N0MXdz875fQ1mS9VS+vLiVWs68HJp62B2+3IE0xJ3P7qY\n48zsLiDvMN/w4cObbtfV1VFXV1eK0EQSl0lf/thjIX35kCEwfDhssknSkaVLfX0YpD71VPjjH0PX\nnayvsbGRxsbGDX6d1E2PNbMu7v52dPtC4EB3/07OMWpRSE1Q+vLPqoV04OVSNdNjgV+Z2UwzmwEc\nAVyYdEAiSVH68vUpHXgyUteiKIZaFFKLajl9ea2lAy+XampRiEgetZq+XOnAk6cWhUgFqoX05bWc\nDrxc1KIQqSHVnr5c6cDTRS0KkQpXTenLlQ68vNSiEKlR1ZK+XOnA00stCpEqUonpy5UOPD5qUYhI\nxaUvVzrwyqCKQqTKVEL6cqUDryyqKESqVFrTlysdeOVRRSFSxdKUvlzpwCuXBrNFakSS6cuVDjwd\nNJgtIgVl0pdfd11IX37FFWH1c7nV18N++4XV41OmqJKoRGpRiNSgONKXKx14+qhFISJFK3f6cqUD\nry5qUYjUuFKmL1c68HRTi0JE2qRU6cuVDrx6qUUhIk3akr5c6cArR0W1KMzsW2b2dzNbY2Zfznnu\nCjObb2ZzzKxfEvG1VSk2MS81xVQcxRQUk748O660pAPX36+8kup6ehUYDEzIftDM9gJOBvYC+gO3\nmFnFdI+l8YOhmIqjmNZp1y4Mcjc2htXTAwaE1dTZca1eHRL4HXNMGJN49NEwQJ4U/f3KK5EvYXef\n4+7z8jx1PDDK3Ve5++vAAqBPrMGJCNB8+vIlS5QOvNak7Wp9R+CtrPtvATslFItIzevQAYYPh9Gj\n4Wc/CxXGvffCWWfBuHGw885JRyhxKNtgtpmNB3bI89SV7t4QHfMscJG7T43u3wxMdvc/RffvAsa4\n+2M5r62RbBGRNmjLYHb7cgQC4O5Ht+HX/gV0zbq/c/RY7muroSsiEpM0dD1lf+nXA6eY2cZm1h3Y\nHXg5mbBERASSmx472MzeBA4CRpvZWAB3nwU8BMwCxgLnasGEiEiyKnLBnYiIxCcNXU/NMrP+0cK7\n+WZ2WTPH/DZ6foaZ9Uo6JjOrM7NlZjYt+rk6hpjuMbPFZvZqgWPiLqeCMSVUTl3N7NlosedrZja0\nmeNiK6tiYoq7rMyso5m9ZGbTzWyWmV3bzHFxf6ZajCuJz1V03nbR+fLuUh53WbUUU6vLyd1T+QO0\nI6yj6AZ0AKYDe+YccyxhVhTAVwgzppKOqQ6oj7msDgN6Aa8283ys5VRkTEmU0w7A/tHtLYC5KfhM\nFRNTEmW1WfRve2AycGjSn6ki44q9rKLz/hfwp3znTrCsCsXUqnJKc4uiD7DA3V9391XAA4QFedkG\nASMA3P0lYBsz65xwTLD+AH3ZuftEYGmBQ+Iup2JigvjL6d/uPj26/REwm7B2J1usZVVkTBB/WX0c\n3dyYcIH0Xs4hsX+miowLYi4rM9uZUBnc1cy5Yy+rImKiwOOfkeaKYifgzaz7+Rbf5TumnEuAionJ\ngUOiJuaYKC1J0uIup2IkWk5m1o3Q4nkp56nEyqpATLGXlZltZGbTgcXAsx4mmmRLpJyKiCuJz9X/\nApcAzeXcTaKsWoqpVeWU5oqi2FH23FqxnKPzxbz2VKCru+8H3Aw8UcZ4WiPOcipGYuVkZlsAjwAX\nRFfxnzkk537Zy6qFmGIvK3df6+77E77QDjezujyHxV5ORcQVa1mZ2QDgHXefRuEr9NjKqsiYWlVO\naa4ochffdWX99B75jsm7QC/OmNz9w0zz2N3HAh3MbLsyxlSMuMupRUmVk5l1AB4F/uju+f5zxF5W\nLcWU5GfK3ZcBo4HeOU8l+plqLq4EyuoQYJCZLQRGAUeZ2cicY+IuqxZjam05pbmieAXY3cy6mdnG\nhKyy9TnH1AOnA5jZQcD77r44yZjMrLNZSJFmZn0IU5Dz9aPGKe5yalES5RSd725glrv/upnDYi2r\nYmKKu6zMbHsz2ya6vSlwNDAt57DYP1PFxBV3Wbn7le7e1d27A6cAz7j76TmHxVpWxcTU2nIqWwqP\nDeXuq83sPOApwqDV3e4+28x+GD1/u7uPMbNjzWwBsBwYknRMwInAOWa2GviY8IcqKzMbBRwBbG9h\nIeMwwqysRMqpmJhIoJyArwKnATPNLPMFcyWwSyauBMqqxZiIv6y6ACMspPjfCPiDuz+d5P+9YuMi\nmc9VNgdIQVkVjIlWlpMW3ImISEFp7noSEZEUUEUhIiIFJVpRWJ40D2Y23Mzeylpa3j/JGEVEal3S\nLYp7CXtjZ3PgJnfvFf2MSyAuERGJJFpRFEjzoI2JRERSIukWRXPOj5aW352ZNy0iIslIfHpslN+m\nwd33je53ApZET18DdHH3s3N+R3N6RUTawNuwlXTqWhTu/o5HCJkP+zRzXOp+hg0blngMikkx1WJc\niqm4n7ZKXUVhZl2y7g4Gmt2MR0REyi/RFB7NpHmoM7P9CbOfFgI/TDBEEZGal2hF4e7fzvPwPbEH\nUiJ1dXVJh/AZiqk4iql4aYxLMZVX4oPZbWFmXolxi4gkyczwNgxmpzZ7rIi0wkUXQc+esFHqhh3b\nZto0uPhi6N496UgEtShEKtvatXDppXDffdC/P3TsmHREpfHCC9C+PTz9NHTqlHQ0VUMtCpFas2oV\nnH02/OMfMG8ebJf0Rool5A7DhsGhh8JTT6llkTBVFCKVaPly+Na3oF07GD8eNtss6YhKywx+9rPQ\nmjjsMBg9GvbbL+moalaVdGiK1JB334W+faFzZ3j88eqrJLKddx7cdBMcfTRMmJB0NDVLFYVIJXnj\njdAdU1cH99wT+vGr3Uknwf33w4knwhNPJB1NTVJFIVIpZs0KlcQPfgDXXRe6Z2rF174GY8fCOefA\nXXclHU3NSePGRduZ2Xgzm2dmf1H2WBFg0iQ46ii49lq48MKko0nGAQeE7qdf/hJ+8Ysw4C2xSLpF\nkW/josuB8e7eA3g6ui9Su0aPhuOPD1NgTz016WiStfvuYersQw/B0KFherCUXRo3LhoEjIhujwBO\niDUokTQZMSJMgW1oCOskBLp0CS2LmTPhO9+BlSuTjqjqJd2iyKezuy+Obi8GOicZjEhirr8+rCVo\nbISvfCXpaNJl663D+opPP4UBA+DDD5OOqKqlesqEu3tzmxQNHz686XZdXV1VJeCSGpdZbT1uHDz/\nPOy8c9IRpVPHjvDww2GA+8gjYcwYreLO0djYSGNj4wa/TuIpPPLscDcHqHP3f0d7Uzzr7nvk/I5S\neEh1yl5t3dBQXautyyWzivuBB7SKuwVtTeGRxq6neuCM6PYZgCZOS21YvjwMWi9dGlZbq5IoTmYV\n99ChYRX3jBlJR1R1Em1RZG9cRBiP+B/gz8BDwC7A68BJ7v5+zu+pRSHV5d134bjjYM894c47a2Mh\nXTk89FBYzf3II3D44UlHkzptbVEk3vXUFqoopKq88QYcc0xoTVx7bW0tpCuHv/41zIa64w44QZMm\ns1VT15NI7ajl1dblklnFfe65WsVdImrfiiRl0iQYPBhuvFEL6UrtgAPguedCS23xYrjySlXCG0Bd\nTyJJGD0ahgyBkSO1kK6c3n47lO/hh8NvflM9OwC2kbqeRCqFVlvHR6u4S0IVhUictNo6flrFvcFU\nUYjEYe1auPji0Jp4/nnYY4+Wf0dKJ7OKe9ddwyrud95JOqKKoopCpNxWrYIzzwyD1xMmKCVHUtq1\ng9tug2OPDTPNFi5MOqKKoVlPIuVU7XtbVxrtxd0mqa0ozOx14ANgDbDK3fskG5FIK2m1dXqdd16o\nLI4+Wqv3xlXoAAATKklEQVS4i5DmricnJAfspUpCKk4t7m1dabQXd9HSXFEAaIWMVB6ttq4cWsVd\nlNQuuDOz/wOWEbqebnf3O7Oe04I7SSettq5M8+eHVdxnn13Vq7jbuuAuze3hr7r722b2eWC8mc2J\ntk4FtHGRpJBWW1euzF7c/fvDv/9dNau4q2bjomKY2TDgI3e/MbqvFoWky4gRcNll8Oc/ayFdJVu2\nDAYNCiu6R4yATTZJOqKSqqoUHma2mZltGd3eHOgHvJpsVCLN0Grr6qFV3HmlsqIAOgMTzWw68BLw\npLv/JeGYRNan1dbVSau4P6Miup5yqetJEqe9ratfFe7FXY2D2SLppNXWtUGruJuktetJJJ3efRf6\n9oXOneHxx1VJ1ILzzoObbgqruCdMSDqaRKiiECmWVlvXrhpfxa2Koop9vOpjPln1SdJhVIcaX23t\n7kxZNIWjRx7NvdPu5YOVHyQdUvxqeBW3BrOrzKIPF/HkvCdpmNfA+H+M56S9T+KSQy5hn077YDX2\n5VYymdXWN9wAp52WdDSxWbF6Bc8sfIb6ufU8Oe9JNuuwGd226cbqtat5ZdErHLTzQQzqOYiBPQby\nhW2+kHS48angVdxtHcwuuqIwsx2Ad9x9bWtPUmqqKNZxd2Yunkn93Hoa5jWw4L0FHPPFYxjUYxDb\nbrotY+ePpX5ePQADewxkUM9BHP6Fw9m43cYJR14hamy19TvL32H0vNHUz6vnmYXPsF/n/Zoqg57b\n92w67sOVHzL+/8ZTP7ee0fNHs+OWOzZ9vnrv2JuNrMo7Kyp0L+6yVhRmth3wL+Db7p54B12tVxQr\nV6/kuX8+R/3ceurn1tOhXQcG9RjEwJ4DOWyXw+jQrsN6x7s7r73zGg3zGmiY18Cc/8yh3279GNhj\nIMfufizbbaqpnXnVwGprd2fWkllNFxqzlsxa77Pxuc0+1+JrrFm7hslvTaZhXgP1c+tZumIpA3Yf\nwKCeg+i7a18261ClA/4VuIq73BXF+cDR0fED2xBfSdViRfGfj//DmPljmrqU9vr8XgzqOYhBPQex\n5/Z7tqpbafFHixk9fzT1c8NVY68uvZoqmh6f61HGd1FBrr8efv97GDeu6hbSrVqzign/nND0xb7G\n1zCoR/gsHdHtiA1ubS54bwENcxuon1fPlEVTqOtWx8AeAxnQYwBdtuxSoneREitWwHe+E1ZwP/YY\nbLll0hEVVO6KYipwPNAAfN3d3259iK0Iyqw/8GugHXCXu/8q5/maqCjm/mduaDXMq2fm4pn07d6X\ngT0GclyP4+i0eaeSnOOTVZ809UM3zGtgq022aupCOLjrwbTfqMZm9qxdC5deGiqIceOqZtvSpZ8s\nZeyCsdTPreepfzxFj8/1aPo779tp37KNX2XO2zCvgXELxrH7drs3XeCU87yxWrMmDHBPmQJjxoR1\nFylVtorCzHoDv3D3Y8zsImBjd7+2jXG2HJBZO2Au8DVCd9ffCF1es7OOqcqKYvXa1bzwxgtNV3of\nr/q46T/zkd2PpGP7jmU9/1pfy9S3pzZdDb657E2O3f1YBvUcRL/d+rHVJluV9fyJq7LV1vmu7Af1\nHMRxux+XyJX9qjWrmPjGxKYu00xLZmDPgdR1q6vscbMKWcVdzoriNuBZd3/QzDoBz7n7nm2Ms+WA\nzA4Ghrl7/+j+5QDufl3WMVVTUSxbsYyn/vEU9XPrGbtgLN226dZUOfTaoVeiV1xvLHujaQbVC2+8\nwMFdD2Zgj4HVOcsle7X1gw9W5EK6zFhBpnW4dMXSpr9X2sYKSjE2kkq/+12YPp3SVdxlqSiizK2v\nAT3d/dPosSeAX7t7YxtjLRyQ2YnAMe7+/ej+acBX3P38rGP8t5N+U1HT0rK9+/G7YPDCmy/w0lsv\nceguhzKo5yAG9BjAzluls6sj3yyXzNXghys/ZNaSWUmH2HbLl8Ptt0HnHeDbp8BG7ZKOqNUe/PuD\nzP3PXHbaaqemC40DdjygYmYf5c622nGLHTlxrxNL1sUaq2lT4eFH4OyzYLcvJh3NeoYeNLQsFUUH\nYDt3X5z12FYA7l6WFTdm9k2gf0sVxYF9toVdd4ONjJ323Ymdv5TOL9h8Jr4xke7bdOf0/U7n6N2O\nZouNt0g6pFbJvXJd9OEiDt3lULpvk87mdkEffRhmNe26Kxx8MJW6++7CpQu57ujr2KfTPkmHssFW\nrF7Bj0f/mPYbta/c7qi33gxdUEceFT5bSYUx8y3+9eq/mu7/7f6/lXcdBYCZDXD3J1t7ktYws4OA\n4VldT1cAa7MHtM3MffDgiplpUO0WvLeAzTtsXnkzWmbNCnPhL7ww/IiU0pQpMHAg/PSn8P3vJx0N\nEMOCu+gk09y9V2tP0hpm1p4wmN0XWAS8TL7B7NWrK2amgaRQja62lphlVnGfdRZcdVXi3eUl3+HO\nzG4xs0M3LKzWc/fVwHnAU8As4MHsSqJJu3Zw221w7LEhB8/ChTFHKhVr9Gg4/ni47z5VElJemb24\nH34Yhg4N068rULMtCjP7CXAysCPwIDAK6ODuL8cXXn6fmfX0+9/DtdemdqaBpEgNrLaWFFq2LFyc\n7LBDoqu4yzk9thtwCqHS2Ay4Hxjl7vNaH2Zp5J0e+9BDIW/8I4+E/Csiuap4tbVUgBSs4o5rjKIX\ncC+wr7snNoew2XUUTz8N3/423HEHnHBC/IFJOlXpamupQAmv4i75GEXWC7c3s0Fmdj8wDpgDfKMN\nMZZf377r8sXfeWfS0UgarFoFZ54ZBq8nTFAlIcmq0LHVZhP5mFk/QpfTcYSZR6OAH7j7RzHF1jYH\nHADPPRemPS5enIqZBpIQ7W0taVSBe3EXGsx+hlA5POru78UaVQuKSuHx9tvw9a+HP0QF5YuXEnn3\nXTjuONhzz9C61LalkkYxj63GMkaRFkXnekrJTAOJ2RtvhLnrxx8fZsOpRSlpFuPYatnGKCra1luH\nwctPP4UBA8JsA6luNb63tVSgChhbre6KAqBjx7DYZddd4cgj4Z13ko5IymXSJDjqKPjlL5WSQypL\nZmz12mvh5z8PactTJHUVhZkNN7O3zGxa9LPhGxVX6EwDaQWttpZKl+JV3KkbozCzYcCH7n5TgWPa\nvh+FVnFXH622lmpSxrHVahujKF/H8o9/DDfdBEcfHebVS2W7/vqws1hjoyoJqQ4pHFtNa0VxvpnN\nMLO7zWybkr/6SSfBqFFw4onwxBMlf3mJwdq1cPHF4Yrr+eeVkkOqS8rGVhOZXG5m44Ed8jx1FXAr\n8LPo/jXAjcDZuQcOHz686XZdXR11dXWtCyIz02DgQFiyJDX54qUI2XtbT5hQ8Xtbi+SVGVsdNiyM\nrbZhL+7GxkYaGxs3OJTUjVFkixISNrj7vjmPl27P7PnzwyruIUO0irsSVMHe1iKtVqK9uKtmjMLM\nsrdJGwy8WtYT7r576Lp45JHUzTSQHO++C1/7GnTuDI8/rkpCasd55yU6tpq6igL4lZnNNLMZwBFA\n+SfEd+kS5jC/+mpIA7xyZdlPKa30xhuh+X3EEXDPPUrJIbUnwbHVVHc9NaekXU/ZUpAvXvLQ3tYi\n62zAXtxV0/WUqJTNNBC02lokV2YV93XXxbaKWxVFLq3iTg+tthbJL+axVVUU+WTyxQ8dGtKUz5iR\ndES1Z+TIMAW2oSF0O4nI+mIcW9UYRUu0F3f8tLe1SPFaMbaqMYpy0Sru+Gi1tUjrxTC2qoqiGBWQ\nL77iaW9rkbYr89iqJqMXKzPT4JhjtBd3qWlva5ENlxlb7dy55Htxq0XRGinOF1+xtNpapLTKkCE7\nkYrCzL5lZn83szVm9uWc564ws/lmNsfM+iURX0FduoTC1yruDafV1iLlUeKx1aRaFK8S8jitV92Z\n2V7AycBeQH/gFjNLX6snhfniK472thYprxKOrSZyCefucyBM1cpxPDDK3VcBr5vZAqAPMDneCIuQ\nmWlw7rlhpsGYMdCpU9JRVYZJk2DwYLjhBi2kEymnzNhq//5hbLWN0na1viPwVtb9t4CdEoqlZVrF\n3XpabS0Sr+xV3G1UthZFgc2JrnT3hla8VN6VdRu8cVGpZGYadOpU8pkGVWfkSLj00rDaWtuWipTd\nehsX9e/f5iwTia7MNrNngYvcfWp0/3IAd78uuj8OGObuL+X8Xnwrs1tDq7ibp9XWIomr5JXZ2UHX\nA6eY2cZm1h3YHXg5mbDaQKu4P0urrUUqXlJ7Zg8GfgtsD4w2s2nu/nV3n2VmDwGzgNXAuelsOhSg\nvbjX0d7WIlVBSQHLZf78sIr7rLNqcxW39rYWSZ1K7nqqTrW8ilurrUWqiiqKcqrFVdxabS1SdVRR\nlFstreLWamuRqqSKIg61sBe39rYWqVoazI6TOwwbFvKunH569cwCmjMH6uvhT3/StqUiKdbWwWxV\nFEn43vdC3/3WWycdSWnMng3f/CaccUbSkYhIAaooRESkoIqaHtvcfhRm1s3MPjGzadHPLUnEJyIi\n66RqP4rIAnfvFf2cG3NcG6Qp+VaKKKbiKKbipTEuxVReiVQU7j7H3eclce5ySuMHQzEVRzEVL41x\nKabySuP02O5Rt1OjmR2adDAiIrUubftRLAK6uvvSaOziCTPb292reJWaiEi6pWo/imKfNzNNeRIR\naYO2zHpKQyKepqDNbHtgqbuvMbNdCftR/F/uL7TljYqISNskNT12sJm9CRxE2I9ibPTUEcAMM5sG\nPAz80N3fTyJGEREJKnLBnYiIxCeNs56amFl/M5tjZvPN7LJmjvlt9PwMM+uVdExmVmdmy7IWDV4d\nQ0z3mNliM3u1wDFxl1PBmBIqp65m9my02PM1MxvazHGxlVUxMcVdVmbW0cxeMrPpZjbLzK5t5ri4\nP1MtxpXE5yo6b7vofHkn6sRdVi3F1OpycvdU/gDtgAVAN6ADMB3YM+eYY4Ex0e2vAJNTEFMdUB9z\nWR0G9AJebeb5WMupyJiSKKcdgP2j21sAc1PwmSompiTKarPo3/bAZODQpD9TRcYVe1lF5/0v4E/5\nzp1gWRWKqVXllOYWRR/CKu3X3X0V8ABwfM4xg4ARAO7+ErCNmXVOOCbIGqCPg7tPBJYWOCTuciom\nJoi/nP7t7tOj2x8Bs4Edcw6LtayKjAniL6uPo5sbEy6Q3ss5JPbPVJFxQcxlZWY7EyqDu5o5d+xl\nVURMFHj8M9JcUewEvJl1/63osZaO2TnhmBw4JGpijjGzvcoYT7HiLqdiJFpOZtaN0OJ5KeepxMqq\nQEyxl5WZbWRm04HFwLPuPivnkETKqYi4kvhc/S9wCdDcfsdJlFVLMbWqnNJcURQ7yp5bK5ZzdL6Y\n155KWDS4H3Az8EQZ42mNOMupGImVk5ltATwCXBBdxX/mkJz7ZS+rFmKKvazcfa2770/4QjvczOry\nHBZ7ORURV6xlZWYDgHfcfRqFr9BjK6siY2pVOaW5ovgX0DXrfldCTVzomJ2jxxKLyd0/zDSP3X0s\n0MHMkt6hKO5yalFS5WRmHYBHgT+6e77/HLGXVUsxJfmZcvdlwGigd85TiX6mmosrgbI6BBhkZguB\nUcBRZjYy55i4y6rFmFpbTmmuKF4BdreQenxj4GSgPueYeuB0ADM7CHjf3RcnGZOZdTYLm0WbWR/C\nFOR8/ahxirucWpREOUXnuxuY5e6/buawWMuqmJjiLisz297MtolubwocDUzLOSz2z1QxccVdVu5+\npbt3dffuwCnAM+5+es5hsZZVMTG1tpzSsDI7L3dfbWbnAU8RBq3udvfZZvbD6Pnb3X2MmR1rZguA\n5cCQpGMCTgTOMbPVwMeEP1RZmdkowmLF7S0sZBxGmJWVSDkVExMJlBPwVeA0YKaFRZ0AVwK7ZOJK\noKxajIn4y6oLMMLMNiJcTP7B3Z9O8v9esXGRzOcqmwOkoKwKxkQry0kL7kREpKA0dz2JiEgKqKIQ\nEZGCVFGIiEhBqihERKQgVRQiIlKQKgoRESlIFYVIFjPb2szOiW53MbOHk45JJGlaRyGSJUrM1+Du\n+5b5PNu6e0vZdUVSQRWFSBYze4CQFnouMJ+wN8S+ZnYmcAKwGWEv9xuBjsB3gJXAse6+1Mx2A34H\nfJ6w4vX77j43z3kagWWENNBj3X11md+aSJup60lkfZcB/3D3XoQ0zdn2BgYDBwK/AD5w9y8Dk4hy\n+QB3AOe7e+/o92/JdxJ3rwNuIqRSmGVmv4gqGZHUSW2uJ5GEWDO3Iex/sBxYbmbvA5ktJl8FvmRm\nmxMydz4c5VuDsMFOXu7+HPCcmW0JXA7MMbOT3P3xErwPkZJRRSFSvJVZt9dm3V9L+L+0EbA0ao00\nMbN2hMzDAH929+HR45sSWihDgK2BocBfyxW8SFupohBZ34fAlq38HYOQ49/MFprZie7+SJTGeV93\nn0nYuW7dL5j9P0K305PAxe4+owSxi5SFKgqRLO7+rpm9YGavEvavzsz28Kzb5LmduX8qcKuZXU1I\nqz4KmJnnVM8CV7v7p6WMX6QcNOtJREQK0qwnEREpSBWFiIgUpIpCREQKUkUhIiIFqaIQEZGCVFGI\niEhBqihERKQgVRQiIlLQ/wfqhyu+stXumgAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x9e977f0>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import scipy as np\n",
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "A = -2 #V/V\n",
+ "peak = 10 # V\n",
+ "\n",
+ "#Calculation \n",
+ "\n",
+ "output = np.absolute(A) * peak\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"The op-amp saturates at Vo=+-13 V\"\n",
+ "print \"With Vn= 20/3-13/3 =\",round((20.0/3)-(13.0/3),4),\"V\"\n",
+ "\n",
+ "#Graphs\n",
+ "\n",
+ "t1 = np.arange(0,1,.0005) # Triangular waveform\n",
+ "t2 = np.arange(1,3,.0005)\n",
+ "t3 = np.arange(3,5,.0005)\n",
+ "\n",
+ "m1 = np.arange(0,0.65,.0005)\n",
+ "m2 = np.arange(.65,1.35,.0005)\n",
+ "m3 = np.arange(1.35,2.65,.0005) # Output Vo wave\n",
+ "m4 = np.arange(2.65,3.35,.0005)\n",
+ "m5 = np.arange(3.35,4.65,.0005)\n",
+ "m6 = np.arange(4.65,5,.0005) # Output Vn wave\n",
+ "m7 = np.arange(0.65,1,.0005)\n",
+ "m8 = np.arange(1,1.35,.0005)\n",
+ "m9 = np.arange(2.65,3,.0005)\n",
+ "m10 = np.arange(3, 3.35, .0005)\n",
+ "\n",
+ "plt.subplot(2,1,1)\n",
+ "\n",
+ "plt.suptitle(\"Vt (Blue), Vo (Red) and Vn (Green) Graphs\")\n",
+ "plt.xlim(0,4.5)\n",
+ "plt.xlabel(\"time->\")\n",
+ "plt.ylabel(\"V->\")\n",
+ "plt.plot(t1,peak*t1,\"b\",)\n",
+ "plt.plot(t2,(-1)*peak*t2+2*(peak),\"b\",)\n",
+ "plt.plot(t3,peak*t3-4*(peak),\"b\",)\n",
+ "\n",
+ "plt.subplot(2,1,2)\n",
+ "\n",
+ "plt.xlim(0,4.5)\n",
+ "plt.xlabel(\"time->\")\n",
+ "plt.ylabel(\"V->\")\n",
+ "plt.plot(m1,-20*m1,\"r\")\n",
+ "plt.plot(m2,np.full(len(m2),-13),\"r\")\n",
+ "plt.plot(m3,20*m3-40,\"r\")\n",
+ "plt.plot(m4,np.full(len(m4),13),\"r\")\n",
+ "plt.plot(m5,-20*m5+80,\"r\")\n",
+ "plt.plot(m6,np.full(len(m6),-13),\"r\")\n",
+ "\n",
+ "plt.plot(m1,np.full(len(m1),0),\"g\",)\n",
+ "plt.plot(m7,6.665*m7-4.4,\"g\")\n",
+ "plt.plot(m8,-6.665*m8+8.8,\"g\")\n",
+ "plt.plot(m3,np.full(len(m3),0),\"g\")\n",
+ "plt.plot(m9,6.665*m9-17.6,\"g\")\n",
+ "plt.plot(m10,-6.665*m10+22.4,\"g\")\n",
+ "plt.plot(m5,np.full(len(m5),0),\"g\")\n",
+ "plt.plot(m6,np.full(len(m6),0),\"g\")"
+ ]
+ }
+ ],
+ "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/sample_notebooks/ARIJITCHATTERJEE/chapter1_1.ipynb b/sample_notebooks/ARIJITCHATTERJEE/chapter1_1.ipynb
new file mode 100755
index 00000000..e66c292c
--- /dev/null
+++ b/sample_notebooks/ARIJITCHATTERJEE/chapter1_1.ipynb
@@ -0,0 +1,895 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 1: Operational Amplifier Fundamentals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.1, Page 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ "The overall gain is 60.0 V/V\n",
+ "The input load is 80.0 % of it's unloaded value\n",
+ "The output load is 75.0 % of it's unloaded value\n",
+ "b)\n",
+ "The overall gain is 53.3 V/V\n",
+ "The input load is 66.7 % of it's unloaded value\n",
+ "The output load is 80.0 % of it's unloaded value\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R0 = 1.0 #ohm\n",
+ "Ri = 100.0 #kilo ohm\n",
+ "Aoc = 100.0 #volts per volts\n",
+ "Rs=0.0 #kilo ohm\n",
+ "Rl=0.0 #ohm\n",
+ "gain=0.0\n",
+ "input_load=0.0\n",
+ "output_load=0.0\n",
+ "\n",
+ "def calculate(): #returns gain\n",
+ " global input_load, output_load\n",
+ " input_load = (Ri/(Rs+Ri))\n",
+ " output_load = (Rl/(R0+Rl))\n",
+ " ans=input_load*Aoc*output_load # in V/V\n",
+ " return ans\n",
+ "#answer part (a)\n",
+ "Rs=25.0\n",
+ "Rl=3.0\n",
+ "gain=calculate()\n",
+ "print \"a)\"\n",
+ "print \"The overall gain is \",round(gain,1),\"V/V\"\n",
+ "print \"The input load is \",input_load*100,\"% of it's unloaded value\"\n",
+ "print \"The output load is \",output_load*100,\"% of it's unloaded value\"\n",
+ "\n",
+ "#answer part (b)\n",
+ "Rs=50.0\n",
+ "Rl=4.0\n",
+ "gain=calculate()\n",
+ "print \"b)\"\n",
+ "print \"The overall gain is \",round(gain,1),\"V/V\"\n",
+ "print \"The input load is \",round(input_load*100,1),\"% of it's unloaded value\"\n",
+ "print \"The output load is \",round(output_load*100,1),\"% of it's unloaded value\"\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.2, Page 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)Vo = 9.17431 V\n",
+ "b)Vo = 9.99101 V\n",
+ "c)Vo = 9.99991 V\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "vt = 1.0 # in volt\n",
+ "R1 = 2.0 # in kilo ohm\n",
+ "R2 = 18.0 #in kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate(a): #returns Vo\n",
+ " global vt,R1,R2\n",
+ " ans=vt*(1+(R2/R1))/(1+((R2/R1)/a)) #equation 1.11\n",
+ " return ans\n",
+ "\n",
+ "#answer\n",
+ "print \"a)Vo = \",round(calculate(10**2),5),\"V\"\n",
+ "print \"b)Vo = \",round(calculate(10**4),5),\"V\"\n",
+ "print \"c)Vo = \",round(calculate(10**6),5),\"V\"\n",
+ "\n",
+ "#textbook contains precision error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.4, Page 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 20 kilo ohm\n",
+ "R2 = 15 kilo ohm\n",
+ "R3 = 30 kilo ohm\n",
+ "Rf = 120 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "rf1 = 3 # coefficient of V1\n",
+ "rf2 = 4 # coefficient of V2\n",
+ "rf3 = 2 # coefficient of V3\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "rf1*=2 # Common factor 2\n",
+ "rf2*=2 # Common factor 2\n",
+ "rf3*=2 # Common factor 2\n",
+ "r1=20 # assumption\n",
+ "rf=r1*rf1\n",
+ "r2=rf/rf2\n",
+ "r3=rf/rf3\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"R3 = \",r3,\"kilo ohm\"\n",
+ "print \"Rf = \",rf,\"kilo ohm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.5, Page 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 10 kilo ohm\n",
+ "R2 = 300 kilo ohm\n",
+ "Rf = 100 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "r1,r2,rf #vo=10*v1+5=-(rf/r1*v1)-rf/r2*(-15)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "r1=10\n",
+ "rf=10*r1; #-rf/r1*v1=10*v1\n",
+ "r2=rf*15/5 #-rf/r2*(-15)=5\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"Rf = \",rf,\"kilo ohm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.6, Page 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R1 = 100 kilo ohm\n",
+ "R2 = 300 kilo ohm\n",
+ "R3 = 25 kilo ohm\n",
+ "R4 = 75 kilo ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable declaration\n",
+ "\n",
+ "ri1=100 # in kilo ohm\n",
+ "ri2=100 # in kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "r1=ri1;\n",
+ "r2=3*r1; #r2/r1=3\n",
+ "# r3 + r4 = ri2 and (1+r1/r2)/(1+r3/r4)=1\n",
+ "#Solving the above two\n",
+ "r3=ri2/4;\n",
+ "r4=ri2-r3\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"R1 = \",r1,\"kilo ohm\"\n",
+ "print \"R2 = \",r2,\"kilo ohm\"\n",
+ "print \"R3 = \",r3,\"kilo ohm\"\n",
+ "print \"R4 = \",r4,\"kilo ohm\"\n",
+ "\n",
+ "#in textbook r3 and r4 values are reversed which doesn't satisfy the equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.7, Page 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)T >= 1000\n",
+ "b)a >= 100000\n",
+ "a)Beta = 0.00999\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable Declaration\n",
+ "\n",
+ "A=100 \n",
+ "accuracy=0.1\n",
+ "\n",
+ "#Calcualtion\n",
+ "\n",
+ "T=100/accuracy\n",
+ "beta=1.0/100.0 # A_ideal=i/beta=100\n",
+ "a=(10**3)/beta\n",
+ "beta=(a/100-1)/a # A=a/(1+(a*beta))\n",
+ "\n",
+ "#answer\n",
+ "print \"a)T >= \",int(T)\n",
+ "print \"b)a >= \",int(a)\n",
+ "print \"a)Beta = \",beta"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.8, Page 26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a) A changes by (+-) 0.09901 %\n",
+ "b) A changes by (+-) 0.0001 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "a = 10**5 \n",
+ "beta\n",
+ "T\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate():\n",
+ " global a,beta,T\n",
+ " T=a*beta\n",
+ " ans=10.0/(1+T) # for a +- 10% change in a\n",
+ " return ans\n",
+ "\n",
+ "#answer\n",
+ "beta=10**(-3) #given\n",
+ "desensitivity_factor=calculate(); # stores the answer\n",
+ "print \"a) A changes by (+-)\",round(desensitivity_factor,6),\"%\" #part a\n",
+ "\n",
+ "beta=1 #given\n",
+ "desensitivity_factor=calculate();\n",
+ "print \"b) A changes by (+-)\",round(desensitivity_factor,6),\"%\" #part b"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.9, Page 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " A = 995.024876 V/V\n",
+ " Ro = 373.134 mili ohm\n",
+ " Ri = 402.0 Mega ohm\n",
+ "b)\n",
+ " A = 0.999995 V/V\n",
+ " Ro = 0.375 mili ohm\n",
+ " Ri = 400002.0 Mega ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 2.0 # Mega ohm\n",
+ "ro = 75.0 # ohm\n",
+ "a = 200000.0 # V/V\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def calculate(R1,R2):\n",
+ " global a,ro,rd\n",
+ " beta=R1/(R1+R2)\n",
+ " if(R1==float(\"inf\")): # for infinty\n",
+ " beta=1\n",
+ " T=a*beta\n",
+ " A=(1+(R2/R1))/(1+(1/T)) # equation 1.55\n",
+ " if(R1==float(\"inf\")): # for infinity\n",
+ " A=1/(1+(1/T))\n",
+ " Ro=ro/(1+T) # equation 1.61\n",
+ " Ri=rd*(1+T) # equation 1.59\n",
+ " print \" A = \",round(A,6),\"V/V\"\n",
+ " print \" Ro = \",round(Ro*(10**3),3),\"mili ohm\"\n",
+ " print \" Ri = \", round(Ri,3),\"Mega ohm\"\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "calculate(1.0,999)\n",
+ "print \"b)\"\n",
+ "calculate(float(\"inf\"),1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.10, Page 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " A = -0.99999 V/V\n",
+ " Rn = 0.5 ohm\n",
+ " Ri = 100000.0 ohm\n",
+ " Ro = 0.00075 ohm\n",
+ "b)\n",
+ " A = -995.01993 V/V\n",
+ " Rn = 4.99998 ohm\n",
+ " Ri = 1000.0 ohm\n",
+ " Ro = 0.37351 ohm\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "a = 200000.0 # V/V\n",
+ "ro = 75 # ohm\n",
+ "\n",
+ "#Calculating function\n",
+ "\n",
+ "def calculate(R1,R2):\n",
+ " global a,ro\n",
+ " T=a*(R1/(R1+R2)) \n",
+ " A=(-1)*(R2/R1)/(1+(1/T)) # equation 1.63\n",
+ " Rn=R2/(1+a) # equation 1.67b\n",
+ " Ri=R1 # equation 1.68\n",
+ " Ro=ro/(1+T)\n",
+ " print \" A = \",round(A,5),\"V/V\"\n",
+ " print \" Rn = \",round(Rn,5),\"ohm\"\n",
+ " print \" Ri = \",round(Ri,5),\"ohm\"\n",
+ " print \" Ro = \",round(Ro,5),\"ohm\"\n",
+ " \n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "calculate(100000.0,100000.0)\n",
+ "print \"b)\"\n",
+ "calculate(1000.0,1000000.0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.11, Page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "317.440162529\n",
+ "a) A_ideal = -101.1 V/V\n",
+ "b) A = -100.78 V/V\n",
+ "Deviation from ideal = 0.31 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "R1 = 1000000.0 # ohm\n",
+ "R2 = 1000000.0 # ohm\n",
+ "R3 = 100000.0 # ohm\n",
+ "R4 = 1000.0 # ohm\n",
+ "RL = 2000.0 # ohm\n",
+ "rd = 1000000.0 #ohm\n",
+ "a = 10**5 # V/V\n",
+ "ro = 100.0 # ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "A_ideal = (-1)*(R2/R1)*(1+(R3/R2)+(R3/R4)) # ideal op-amp and summing currents at node v1\n",
+ "T = a/(1+(R2/R1)+(R2/rd))/(1+(ro/(R2+(R1*rd/(R1+rd))))+(ro/RL))/100 #equation 1.73\n",
+ "A = A_ideal/(1+(1/T)) \n",
+ "dev=(A_ideal-A)/A_ideal*100\n",
+ "\n",
+ "#answer\n",
+ "print T\n",
+ "print \"a) A_ideal =\",A_ideal,\"V/V\"\n",
+ "print \"b) A =\",round(A,2),\"V/V\"\n",
+ "print \"Deviation from ideal =\",round(dev,2),\"%\"\n",
+ "\n",
+ "#book example has precision error so answer is 0.32%"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.12, Page 40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " Beta = 0.016911 V/V\n",
+ " T = 169.1\n",
+ "b)\n",
+ " Vo= -( 29.82 V1 + 14.91 V2 + 9.94 V3 )\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 1000.0 # kilo ohm\n",
+ "a = 10**4 # V/V\n",
+ "ro = 100.0 #ohm\n",
+ "R1 = 10.0 # kilo ohm\n",
+ "R2 = 20.0 # kilo ohm\n",
+ "R3 = 30.0 # kilo ohm\n",
+ "R4 = 300.0 # kilo ohm\n",
+ "RL = 2.0 # kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def parallel(a,b):\n",
+ " ans=a*b/(a+b)\n",
+ " return ans\n",
+ "\n",
+ "Ra = parallel(R1,parallel(R2,parallel(R3,rd)))\n",
+ "Rb=Ra+R4\n",
+ "Rc=parallel(Rb,RL) #After suppressing all input sources\n",
+ "Rd=Rc+ro/1000 #replacing the op-amp with it's terminal resistances\n",
+ "Vn=Rb/Ra #and applying a test voltage and analysing the circuit\n",
+ "Vt=Rd/Rc\n",
+ "beta=1/Vn/Vt\n",
+ "T=a*beta\n",
+ "v1=R4/R1\n",
+ "v2=R4/R2\n",
+ "v3=R4/R3\n",
+ "A=1/(1+1/T)\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "print \" Beta =\",round(beta,6),\"V/V\"\n",
+ "print \" T =\",round(T,1)\n",
+ "print \"b)\"\n",
+ "print \" Vo= -(\",round(A*v1,2),\"V1 +\",round(A*v2,2),\"V2 +\",round(A*v3,2),\"V3 )\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.13, Page 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Beta = 0.8101 V/V\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rd = 100.0 # kilo ohm\n",
+ "ro = 100.0 # ohm\n",
+ "R1 = 30.0 # kilo ohm\n",
+ "R2 = 20.0 # kilo ohm\n",
+ "R3 = 10.0 # kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "def parallel(a,b):\n",
+ " ans=a*b/(a+b)\n",
+ " return ans\n",
+ "\n",
+ "beta_n = (parallel(R1,rd)+R1)/((ro/1000)+R2+parallel(R1,rd)+R3) # from circuit 1.35 after appyling\n",
+ "beta_p = R3/((ro/1000)+R2+parallel(R1,rd)+R3) # voltage divide formula twice\n",
+ "beta=beta_n-beta_p #equation 1.76\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"Beta =\",round(beta,4),\"V/V\"\n",
+ "\n",
+ "# beta_n calculation in book is wrong"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.14, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)\n",
+ " Icc = 0.5 mA\n",
+ " Iee = 3.5 mA\n",
+ " I0 = 3 mA\n",
+ "b)\n",
+ " Power Poa = 42.0 mW\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration \n",
+ "\n",
+ "R1 = 10 #kilo ohm\n",
+ "R2 = 20 #kilo ohm\n",
+ "V1 = 3 # V\n",
+ "Iq = 0.5 # mA\n",
+ "RL = 2 #kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "V0 = (-1)*R2/R1*V1\n",
+ "It = abs(V0)/RL # Currents through R1,R2,Rt are i1,i2,It respectively\n",
+ "i1 = It/R1\n",
+ "i2 = i1 # applying voltage divider rule\n",
+ "i0 = i2+It\n",
+ "icc = Iq\n",
+ "iee = icc+ i0\n",
+ "Poa = 30*Iq+((V0+15)*i0) #Whenever current passes through voltage drop, power = vi\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"a)\"\n",
+ "print \" Icc =\",icc,\"mA\"\n",
+ "print \" Iee =\",iee,\"mA\"\n",
+ "print \" I0 =\",i0,\"mA\"\n",
+ "print \"b)\"\n",
+ "print \" Power Poa =\",Poa,\"mW\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.15, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b)\n",
+ " Change in v = 3.75 micro Volt -> quite a small change\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Variable Declaration\n",
+ "\n",
+ "ro = 75.0 #kilo ohm\n",
+ "T = 200000.0\n",
+ "Vs = 10.0 # V\n",
+ "Rl = 1.0 #kilo ohm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "iL = Vs/Rl\n",
+ "Ro = ro/(1+T)\n",
+ "del_v = Ro*10*(10**(-3))\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"b)\"\n",
+ "print \" Change in v =\",round(del_v*(10**6),2),\"micro Volt -> quite a small change\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 1.16, Page 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The op-amp saturates at Vo=+-13 V\n",
+ "With Vn= 20/3-13/3 = 2.3333 V\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0xb4a42b0>]"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x3ba3a90>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "import scipy as np\n",
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "A = -2 #V/V\n",
+ "peak = 10 # V\n",
+ "\n",
+ "#Calculation \n",
+ "\n",
+ "output = np.absolute(A) * peak\n",
+ "\n",
+ "#answer\n",
+ "\n",
+ "print \"The op-amp saturates at Vo=+-13 V\"\n",
+ "print \"With Vn= 20/3-13/3 =\",round((20.0/3)-(13.0/3),4),\"V\"\n",
+ "\n",
+ "#Graphs\n",
+ "\n",
+ "t1 = np.arange(0,1,.0005) # Triangular waveform\n",
+ "t2 = np.arange(1,3,.0005)\n",
+ "t3 = np.arange(3,5,.0005)\n",
+ "\n",
+ "m1 = np.arange(0,0.65,.0005)\n",
+ "m2 = np.arange(.65,1.35,.0005)\n",
+ "m3 = np.arange(1.35,2.65,.0005) # Output Vo wave\n",
+ "m4 = np.arange(2.65,3.35,.0005)\n",
+ "m5 = np.arange(3.35,4.65,.0005)\n",
+ "m6 = np.arange(4.65,5,.0005) # Output Vn wave\n",
+ "m7 = np.arange(0.65,1,.0005)\n",
+ "m8 = np.arange(1,1.35,.0005)\n",
+ "m9 = np.arange(2.65,3,.0005)\n",
+ "m10 = np.arange(3, 3.35, .0005)\n",
+ "\n",
+ "plt.subplot(2,1,1)\n",
+ "\n",
+ "plt.suptitle(\"Vt (Blue), Vo (Red) and Vn (Green) Graphs\")\n",
+ "plt.xlim(0,4.5)\n",
+ "plt.xlabel(\"time->\")\n",
+ "plt.ylabel(\"V->\")\n",
+ "plt.plot(t1,peak*t1,\"b\",)\n",
+ "plt.plot(t2,(-1)*peak*t2+2*(peak),\"b\",)\n",
+ "plt.plot(t3,peak*t3-4*(peak),\"b\",)\n",
+ "\n",
+ "plt.subplot(2,1,2)\n",
+ "\n",
+ "plt.xlim(0,4.5)\n",
+ "plt.xlabel(\"time->\")\n",
+ "plt.ylabel(\"V->\")\n",
+ "plt.plot(m1,-20*m1,\"r\")\n",
+ "plt.plot(m2,np.full(len(m2),-13),\"r\")\n",
+ "plt.plot(m3,20*m3-40,\"r\")\n",
+ "plt.plot(m4,np.full(len(m4),13),\"r\")\n",
+ "plt.plot(m5,-20*m5+80,\"r\")\n",
+ "plt.plot(m6,np.full(len(m6),-13),\"r\")\n",
+ "\n",
+ "plt.plot(m1,np.full(len(m1),0),\"g\",)\n",
+ "plt.plot(m7,6.665*m7-4.4,\"g\")\n",
+ "plt.plot(m8,-6.665*m8+8.8,\"g\")\n",
+ "plt.plot(m3,np.full(len(m3),0),\"g\")\n",
+ "plt.plot(m9,6.665*m9-17.6,\"g\")\n",
+ "plt.plot(m10,-6.665*m10+22.4,\"g\")\n",
+ "plt.plot(m5,np.full(len(m5),0),\"g\")\n",
+ "plt.plot(m6,np.full(len(m6),0),\"g\")"
+ ]
+ }
+ ],
+ "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
+}