From 64d949698432e05f2a372d9edc859c5b9df1f438 Mon Sep 17 00:00:00 2001 From: kinitrupti Date: Fri, 12 May 2017 18:40:35 +0530 Subject: Revised list of TBCs --- .../ARIJITCHATTERJEE_version_backup/chapter1.ipynb | 904 +++++++++++++++++++++ 1 file changed, 904 insertions(+) create mode 100755 sample_notebooks/ARIJITCHATTERJEE/ARIJITCHATTERJEE_version_backup/chapter1.ipynb (limited to 'sample_notebooks/ARIJITCHATTERJEE/ARIJITCHATTERJEE_version_backup/chapter1.ipynb') diff --git a/sample_notebooks/ARIJITCHATTERJEE/ARIJITCHATTERJEE_version_backup/chapter1.ipynb b/sample_notebooks/ARIJITCHATTERJEE/ARIJITCHATTERJEE_version_backup/chapter1.ipynb new file mode 100755 index 00000000..d287e069 --- /dev/null +++ b/sample_notebooks/ARIJITCHATTERJEE/ARIJITCHATTERJEE_version_backup/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": [ + "[]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "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 +} -- cgit