352 - Topic 03 - Qualitative Solutions

3299 days ago by Professor352

Solving Separable Differential Equations

John Travis

Mississippi College

Blanchard, Devaney and Hall, 4th edition.

Once again, we consider various differential equations in the form

$\frac{\mathrm{dy} }{\mathrm{dt}} = f(t,y)$

Qualitative analysis can be appropriate when:

• it may be more difficult to discern an analytic approach to solving the equation
• all you want is an idea about how solutions behave over time
• you need only asymptotic behavior (as $t \to \infty$)
# Worksheet still under development. Use at your own risk! 8-o
t,y,yy = var('t y yy') def f(t,y): # enter the desired right hand side below return t^2+y def ff(t,yy): # enter the desired right hand side below return t^2+yy html('Using $f(t,y) = '+str(f(t,y))+'$') yy = function('yy',t) DE = diff(yy,t)== f(t,yy) html('Differential Equation is $%s$'%str(latex(DE)))
 Using $f(t,y) = t^2 + y$Differential Equation is $D[0]\left({\rm yy}\right)\left(t\right) = t^{2} + {\rm yy}\left(t\right)$ Using Differential Equation is
tmin=-2 tmax=2 ymin=-2 ymax=2
plot_slope_field(f(t,y),(t,tmin,tmax),(y,ymin,ymax)).show(aspect_ratio=1) html('<center>Slope field for $dy/dt = %s$</center>'%str(f(t,y)))
 Slope field for $dy/dt = t^2 + y$ Slope field for
# Overlay particular slopes on the slope field above at an interactively chosen initial value. Also draw soln curve. @interact def _(t0 = slider(tmin,tmax,1/10,tmin,label='$t_0$'),y0 = slider(ymin,ymax,1/10,(ymin+ymax)/2,label='$y_0$'), soln_curve=checkbox(default=False,label='Draw Solution?')): G = plot_slope_field(f(t,y),(t,tmin,tmax),(y,ymin,ymax),color='gray') G += point((t0,y0),color='red',size=40) G += plot(f(t0,y0)*(t-t0)+y0,(t,t0-0.2,t0+0.2),color='blue') # could blow up if vertical...need parametric if soln_curve: desolve_rk4(t^2+y^2,y,ics=[t0,y0],end_points=[tmin,tmax],step=0.1) # G += points(desolve_rk4(ff(t,yy),yy,ics=[t0,y0],end_points=[tmin,tmax],step=0.1)) G.show(aspect_ratio=1) html('<center>Slope field for $dy/dt = %s$</center>'%str(f(t,y)))

Click to the left again to hide and once more to show the dynamic interactive window

# The following still have issues. Fixes?
# This works ok so long as DE is autonomous. Putting any t's in the DE make this take forever. P=desolve_rk4(DE,y,ics=[0,1],ivar=t,output='slope_field',end_points=[-4,6],thickness=3) show(P)
points(desolve_rk4(f(t,y),y,ics=[0,1]),ivar=t)
 verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw  verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw verbose 0 (154: primitive.py, options) WARNING: Ignoring option 'ivar'=t verbose 0 (154: primitive.py, options) The allowed options for Point set defined by 101 point(s) are: alpha How transparent the point is. faceted If True color the edge of the point. hue The color given as a hue. legend_color The color of the legend text legend_label The label for this item in the legend. rgbcolor The color as an RGB tuple. size How big the point is (i.e., area in points^2=(1/72 inch)^2). zorder The layer level in which to draw 
# do something with isoclines...
# Playing around with slope fields @interact def _(t0 = slider(tmin,tmax,1/10,tmin,label='$t_0$'),y0 = slider(ymin,ymax,1/10,(ymin+ymax)/2,label='$y_0$'), soln_curve=checkbox(default=False,label='Draw Solution?')): G = plot_slope_field(f(t,y),(t,tmin,tmax),(y,ymin,ymax),color='gray') G += point((t0,y0),color='red',size=40) G += plot(f(t0,y0)*(t-t0)+y0,(t,t0-0.2,t0+0.2),color='blue') # could blow up if vertical...need parametric if soln_curve: desolve_rk4(t^2+y,y,ics=[t0,y0],end_points=[tmin,tmax],step=0.1) G += points(desolve_rk4(ff(t,yy),yy,ics=[t0,y0],end_points=[tmin,tmax],step=0.1)) G.show(aspect_ratio=1) html('<center>Slope field for $dy/dt = %s$</center>'%str(f(t,y)))

Click to the left again to hide and once more to show the dynamic interactive window