Topic 3 First Order Differential Equations
3.1 Classification
Knowing the type of a differential equation will be very helpful for solving it. In Maple, we can use the command odeadvisor(ode, y(x))
supported by the package DETools
to learn what type of equation is it.
Example 3.1 Determine the primary type of each of the following differential equations.
\(y'=xy\)
\(y'=xy+1\)
\(y'=xy+y^2\)
\(y'=\frac{xy}{x^2+y^2}\)
Solution. We first load the package DETools
anonymously.
with(DETools):
Now we can classify those equations using odeadvisor
.
odeadvisor(diff(y(x),x)=x*y(x));
odeadvisor(diff(y(x),x)=x*y(x)+1);
odeadvisor(diff(y(x),x)=x*y(x)+y(x)^2;
odeadvisor(diff(y(x), x) = (x*y(x))/(x^2 + y(x)^2));
Exercise 3.1 Determine the primary type of each of the following differential equations.
\(y'=x^2y^2+x^2\)
\(y'=x^2y+x\)
\(y'=xy+y^3\)
\(y'=\frac{x-y}{x+y}\)
3.2 Solving differential equations
To solve an ordinary differential equation, or a system of them, or initial value problems, you may use the command dsolve({ODE, InitialConditions}, y(x), options)
, where the initial conditions may be omitted to get a general solution. Note that dsolve
returns an equation with \(y(x)\) on the left.
Among options, you may choose to use different method to solve the equations, for example, numeric
, series
or method=laplace
are options that can be imposed and will be used later.
Example 3.2 Consider the differential equation \(y'=2y+x.\)
Find the general solution.
Find the solution that satisfies the initial condition \(y(0)=1\).
Plot the solution curve of the initial value problem.
Solution. It will be convenient to define the differential equation first.
ode221:=diff(y(x), x)=2*y(x)+x:
The general solution can be obtained by the following command.
dsolve(ode221, y(x));
The solution of the initial value problem can be obtained by
sol221:=dsolve({ode221, y(0)=1}, y(x));
To plot the solution curve, we need to get the function expression instead of the equation. This can be done using the command rhs
.
plot(rhs(sol221), x=-5..5)
By default, the dsolve
command only returns a function. To show more detailed information about the computation, you may assign to infolevel[dsolve]
an integer 1 through 5 before using the dsolve
command. For example, after running the following command infolevel[dsolve]:=3
, the output from dsolve
will show three pieces of information: methods tried, successful or not, the solution.
Exercise 3.2 Consider the differential equation \(y'=x+y.\)
Find the general solution.
Find the solution that satisfies the initial condition \(y(0)=1\).
Plot the solution curve of the initial value problem.
3.3 Integrating factors
In Maple, you may use intfactor
that is supported by the package DETools
to find an integrating factor for a given ODE. To test an integrating factor, you may use mutest
which is again supported by the package DETools
. If the command returns a 0, then the expression being tested is an integrating factor.
Example 3.3 Find an integrating factor for the equations \(y'=x^2y-x\) and test it using mutest
.
Solution. Let’s first define the differential equation.
ode231:=diff(y(x), x)=x^2*y(x)-x:
Now loading the package and find an integrating factor \(\mu\).
with(DETools):
mu:=intfactor(ode231);
To test it, you may run the following command.
mutest(mu, ode231, y(x));
Exercise 3.3 Find an integrating factor for the differential equation. \(xy'=y-x.\)
3.4 Commands for specific type of equations
The DETools
package also provides some commands for solving specific type of equations. The following is an incomplete list.
- The command
separablesol(ode, dependent variable)
determines whether the ode is a separable first order ODE and, if so, returns a solution to the equation.
Example 3.4 Consider the first order differential equation \[y'=\frac{x}{x^2y+y}.\]
Executing The following codes
with(DEtools):
sode := diff(y(x), x) = x/(x^2*y(x)+y(x));
exactsol(sode, y(x));
will produce a set of solutions \[\color{blue}{\left\{y(x) = \sqrt{\ln(x^{2}+1)-2\_\textit{C1}}, y(x) = -\sqrt{\ln(x^{2}+1)-2\_\textit{C1}}\right\}}.\]
- The command
linearsol(ode, dependent variable)
determines whether the ode is a first order linear ODE and, if so, returns a solution to the equation.
Example 3.5 Consider the linear first order differential equation \[y'+p(x)y=q(x).\]
Executing The following codes
with(DEtools):
lode := diff(y(x), x) + p(x)*y(x) = q(x);
linearsol(lode, y(x));
will produce a set of solutions \[ \color{blue}{ \{y(x) = {\color{gray}{\int}}(-p(x) z(x)+q(x)){\color{gray}{d}}x +\_\textit{C1}\} } \]
- The command
exactsol(ode, dependent variable)
determines whether the ode is an exact first order ODE and, if so, returns a solution to the equation. When the equation is not exact, it tries to find an integrating factor that converts the equation into an equivalent exact equation.
Example 3.6 Consider the first order differential equation \[(x^2 - y^2)\mathrm{d} x + 2xy\mathrm{d} y.\]
Executing The following codes
with(DEtools):
eode := x^2 - y(x)^2 + 2*x*y(x)*diff(y(x), x) = 0;
exactsol(eode, y(x));
will produce a set of solutions \[ \color{blue}{ \{y(x) = \sqrt{-\_\textit{C1} x -x^{2}}, y(x) = -\sqrt{-\_\textit{C1} x -x^{2}}\} } \]
One can also specific the method (type of the equation) in the dsolve
command so that the equation will be solve by using the given method.