352 - Topic 02 - Separable Equations

3187 days ago by Professor352

Solving Separable Differential Equations

John Travis

Mississippi College

Blanchard, Devaney and Hall, 4th edition.

Enter the right-hand-side for a separable differential equation of the form

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

with y as a function of t entered as "y(t)" instead of just plain "y".

Of course, the DE will be separable if it is possible to write $f(t,y) = g(y) h(t)$ for some functions $g$ and $h$.

# Worksheet still under development. Use at your own risk! 8-o 
       
var('t,k,M,m') y = function('y', t) f = 3*y^2/t # f = 1*y*(10-y)*(y-2) F = maxima.factor(f) html('Differential Equation can be separated into\n\n<center>$dy/dx = %s$</center>'%str(latex(F))) # Enter the domain value for the initial condition t0=0 t1=2 # Enter the range value for the initial condition y0=1 sol = desolve(diff(y,t) - f, y) sol_p = desolve(diff(y,t) - f, y, ics=[t0,y0]) html('The exact general solution for this problem is given by $y(t)=%s $'%str(latex(sol))) var('y') G = plot(sol_p,(t,t0,t1)) + point2d((t0,y0),color='red',pointsize=20) show(G) 
       
Differential Equation can be separated into

The exact general solution for this problem is given by 
verbose 0 (2387: plot.py, generate_plot_points) WARNING: When plotting,
failed to evaluate function at 200 points.
verbose 0 (2387: plot.py, generate_plot_points) Last error message:
'unable to simplify to float approximation'
Differential Equation can be separated into

The exact general solution for this problem is given by 
verbose 0 (2387: plot.py, generate_plot_points) WARNING: When plotting, failed to evaluate function at 200 points.
verbose 0 (2387: plot.py, generate_plot_points) Last error message: 'unable to simplify to float approximation'
var('x,y,M') f = 1/(x*(M-x)) f.show() f.partial_fraction(x).show() 
       

                                
                            

                                
# checking a nice example var ('C') f = integrate(x*sin(x),x)+C soln = f/x^2 print soln solnp = diff(soln,x) print solnp # and plug both back into original de # x y' + 2 y = sin(x) print left = x*solnp +2*soln left.show() print left.simplify() 
       
-(x*cos(x) - C - sin(x))/x^2
sin(x)/x + 2*(x*cos(x) - C - sin(x))/x^3

x*(sin(x)/x + 2*(x*cos(x) - C - sin(x))/x^3) - 2*(x*cos(x) - C -
sin(x))/x^2
-(x*cos(x) - C - sin(x))/x^2
sin(x)/x + 2*(x*cos(x) - C - sin(x))/x^3

x*(sin(x)/x + 2*(x*cos(x) - C - sin(x))/x^3) - 2*(x*cos(x) - C - sin(x))/x^2