{{{id=29| # Copyright 2009, P. Lutus # Released under the GPL (http://www.gnu.org/copyleft/gpl.html) /// }}} {{{id=3| %auto # reset() # commented out for now -- ticket 7255 # special equation rendering def render(x,name = "temp.png",size = "normal"): if(type(x) != type("")): x = latex(x) latex.eval("\\" + size + " $" + x + "$",{},"",name) var('a b r c c_t x y z t q k1 k2 k_1 k_2 omega') def fa(t): a = [0,1,0,-1,0] return a[int(t)] /// }}} {{{id=30| render(y == x^2,"this.png","Large") /// }}} {{{id=8| # example chart code block dt = 100.0 pos = [] vel = [] acc = [] p = 0.0 v = 0.0 a = 0.0 ppos = 0 vpos = 2.5 apos = 5 pcolor = 'blue' vcolor = '#008000' acolor = '#800000' for st in range(5 * dt): t = st/dt a = fa(t) v += a / dt p += v / dt pos.append(p+ppos) vel.append(v+vpos) acc.append(a+apos) alp = list_plot(acc,plotjoined=True,rgbcolor=acolor) vlp = list_plot(vel,plotjoined=True,rgbcolor=vcolor) posp = list_plot(pos,plotjoined=True,rgbcolor=pcolor) lines = Graphics() labels = Graphics() for n in range(0,6): lines += line([(n * dt,0),(n*dt,6.3)],linestyle='--',rgbcolor='#808080') labels += text("%.0f sec" % (n*20),(n*dt,6.6),rgbcolor='black') for x in range(0,2): xm = x*dt*5.4-20 for n in range(-1,2): labels += text("%+d" % n,(xm,apos+n),rgbcolor=acolor) for n in range(0,2): labels += text("%+d" % n,(xm,vpos+n),rgbcolor=vcolor) for n in range(0,3): labels += text("%+d" % n,(xm,ppos+n),rgbcolor=pcolor) show((alp+vlp+posp+lines+labels),axes=False) /// }}} {{{id=9| render(latex("$y'(t) = \int y''(t) \, dt + C$"),"diffeq_acc_vel_integral.png","large") /// }}} {{{id=10| render(latex("$y(t) = \int y'(t) \, dt + C$"),"diffeq_vel_pos_integral.png","large") /// }}} {{{id=11| render(latex("$y'(t) = \\frac{d}{dt} y(t)$"),"diffeq_vel_pos_deriv.png","large") /// }}} {{{id=12| render(latex("$y''(t) = \\frac{d}{dt} y'(t)$"),"diffeq_acc_vel_deriv.png","large") /// }}} {{{id=13| render(latex("$y(t) = \\frac{d}{dt} (\\int y(t) \, dt)$"),"diffeq_fundamental_theorem.png","large") /// }}} {{{id=19| render(latex("$y(t) + r c y'(t) = 0$"),"diffeq_first_example1.png","large") /// }}} {{{id=20| render(latex("$y(0) = 1$"),"diffeq_first_example2.png","large") /// }}} {{{id=14| var('y,r,c,t') y = function('y',t) de = y + r*c*diff(y,t) == 0 des = desolve(de,[y,t],[0,1]) render(des,"diffeq_first_example_solution.png","Large") /// }}} {{{id=21| show(des) ///
e^{-\frac{t}{c r}}
}}} {{{id=23| f(t,r,c) = des plot(f(t,1,1),(t,0,5),figsize=(4,3)) /// }}} {{{id=15| f(t,a,b,r,c) = (a-b) * des + b render("$y(t) = " + latex(f(t,a,b,r,c)) + "$","diffeq_first_example_function.png","large") /// }}} {{{id=16| # r = 10000 ohms, c = 100e-6 farads lbl = text("$RC \, Circuit, \, r = 10000\Omega, \, c = 100\mu f $",(3,3),fontsize=12,rgbcolor='#006000') p = plot(f(t,0,10,10000,100e-6),(t,0,5), figsize=(4,3),axes_labels=['time','v']) show(p+lbl) /// }}} {{{id=24| render(latex("$y(t) + r c y'(t) = sin(\\omega t)$"),"diffeq_second_example1.png","large") /// }}} {{{id=25| y = function('y',t) de = y + r*c_t*diff(y,t) == sin(omega * t) des = desolve(de,[y,t]) render(des,"diffeq_second_example2.png","Large") /// }}} {{{id=26| des2 = (des.subs(c == 0)).full_simplify() df(r,c_t,omega,t) = des2 render(y == df(r,c,omega,t),"diffeq_second_example3.png","Large") /// }}} {{{id=27| # r = 1000 ohms, c = 0.5e-6 farads, f = 440 r = 1000 c = 0.5e-6 f = 440 omega = 2*pi*f pa = plot(sin(omega*t),(t,0,.005),rgbcolor=('#800000'),axes_labels=['time','v']) pb = plot(df(r,c,omega,t),(t,0,.005),rgbcolor=('#008000')) lbl = text("$f = %.0f Hz \,r = %.0f \Omega \, c = %.1f {\mu}f$" % (f,r,c*1e6),(.0025,1.2),fontsize=12,rgbcolor='black') show(pa+pb+lbl,figsize=(4,3)) /// }}} {{{id=28| /// }}}