No No Section: Date of Submission
No No Section: Date of Submission
1. This document is in MS Word format and must be submitted online in pdf format through the page
of your canvas you downloaded this file by clicking Submit Assignment tab located at the upper
right side.
2. The filename must be in the format LabExerciseNoGroupNoCAESection.pdf.
3. Fill out the tables thoroughly and accurately.
4. Please use grammarly.com for the elegance of your responses. You may utilize your T.I.P. email
account for that circumstance.
5. Before converting the final report to a pdf file, see to it that the pages are in presentable manner.
6. Lastly, you are only allowed one (1) submission for this activity. So please think twice before
submission. Be sure that everything is ok.
Grading Criteria
2 10
3 10
4 10
5 10
6 10
7 10
8 10
9 10
10 10
11 10
12 10
13 10
Total 130
1. Objective(s):
The activity aims to solve differential equations using matlab.
3. Discussion :
Ordinary differential equations tend to arise whenever you need to model changing quantities that depend
on the amount of other quantities around it. For example, in chemistry, the time rate of change of
concentration ( dx/dt ) of a chemical solution often depends on the concetrations of other chemicals that
surround it. In biology, differential equations are often used in population dynamics, to model the evolution
and/or extinction of a particular species (like people, animals, bacteria, or even viruses like HIV) (eg.,
Volterra Equations). In finance, the stock market is often modeled via sets of coupled differential equations
(e.g., Black-Scholes equation). In physics, dfq's are everywhere { we've seen them in Cosmology (e.g.,
Friedmann's Equations, non-linear structure growth and perturbation theory), Classical Dynamics (e.g., the
orbits of planets, stars, and galaxies as specialized N-body problems, hydrodynamics),and Radioactive
Transfer. Most differential equations are too complicated to write down a solution by hand (an "analytical
solution"), so one has to revert to numerics to find any kind of solution at all.
Numerical methods are commonly used for solving mathematical problems that are formulated in
science and engineering where it is difficult or even impossible to obtain exact solutions. Only a limited
number of differential equations can be solved analytically. Numerical methods, on the other hand, can give
an approximate solution to (almost) any equation. An ordinary differential equation (ODE) is an equation
that contains an independent variable, a dependent variable and derivatives of the dependent variable.
The MATLAB ODE solvers are written to solve problems of the form
dx/dt = F(t,x)
The Matlab ODE solvers are accesses by calling a function of the form
Options (if omitted or set to [], the default A data structure which allows the user to set
settings are used various options associated with the ode solver
dx_dt = …
return
ODE45 (an explicit Runge-Kutta method) is efficient, but can become unstable with stiff systems.
This will manifest itself by the solver taking shorter and shorter time steps to compensate. The
solution will either take a long time, or the time step will be reduced to the point where machine
precision causes the routine to fail.
The problems of solving an ODE are classified into initial-value problems (IVP) and
boundary value problems (BVP), depending on how the conditions at the endpoints of the domain
are specified. All the conditions of an initial-value problem are specified at the initial point. On the
other hand, the problem becomes a boundary-value problem if the conditions are needed for both
initial and final points. The ODE in the time domain are initial-value problems, so all the conditions
are specified at the initial time, such as t = 0 or x = 0. For notations, we use t or x as an
independent variable.Some literatures use t as time for independent variable.
4. Resources:
Matlab
5. Procedure:
1. Though Matlab is primarily a numeric package, it can solve straightforward differential equations
symbolically. Suppose, for example, we want to solve the first order differential equation y’ = xy
where y’ = dy/dx =y’(x).
2. We can use Matlab’s built-in dsolve(). The input for solving this problem in Matlab is given below:
>>y = dsolve(‘Dy = y*x’,’x’) where y’(x) must be written as Dy. If it is y” (x), same as d 2 y/ x 2 ,it
must be written as D2y.If it is y’’’(x), same as d 3 y/ x3 , it must be written as D3y. It is 8y’(x), same
as 8dy/dx, it must be written as 8*Dy. All in Java command window. Press enter and record the
results.
3. Notice in particular that MATLAB uses capital D to indicate the derivative and requires that the
entire equation appear in single quotes. MATLAB takes t to be the independent variable by default,
so here x must be explicitly defined as the independent variable. Alternatively, if you are going to
use the same equation a number of times, you might choose to define it as a variable, say eqn 1.
>>eqn1 = ‘Dy=y*x’;
>>y = dsolve(eqn1,’x’)
>>x = linspace(0,1,20);
>>z= eval(vectorize(y));
>>plot(x,z)
6. Suppose we want to solve and plot the solution to the second order equation
>>y = dsolve(eqn2,inits2,’x’)
>>z = eval(vectorize(y));
>>plot(x,z)
8. Suppose we want to solve and plot the solutions to the system of three ordinary differential
equations
To find a general solution, each equation is now braced in its own pair of (single) quotation marks:
Press enter and record the results. Notice that since no independent variable is specified,
MATLAB used its default, t.
With conditions:
>> xx = eval(vectorize(x));
>> yy = eval(vectorize(y));
10. To find numerical solutions, MATLAB has a number of tools for numerically solving ordinary
differential equations. Built-in functions ode23 and ode45, which implement versions of Runge-
Kutta 2nd/3rd order and Runge-Kutta 4th and 5th order, respectively. Numerically approximate the
solution of the first order differential equation
For any differential equation in the form y’ = f(x,y), we begin by defining the function f(x,y). For
single equations, we can define f(x,y) as an inline function
11. The basic usage for MATLAB’s solver ode45 is ode45(function, domain, initial condition). That is ,
we use
>>[x,y] = ode45(f,[0,0.5],1)
>>plot(x,y)
13. Choosing the partition. In approximating this solution, the algorithm ode 45 has selected a certain
partition [0,0.5] and MATLAB has returned a value of y at each point in this partition. It is often the
case that we would like to specify the partition of values on which MATLAB returns an
approximation. For example, we might only want to approximate y(0.1),y(0.2)…… y(0.5).We can
specify this by entering the vector values [0,0.1,0.2,0.3,0.4,0.5] as the domain in ode45. That is, we
use
>>xvalues = 0:.1:.5
>>[x,y]=ode45(f,xvalues,1)
14. Several options are available for MATLAB’s ode45 solver, giving the user limited control over the
algorithm.Two important options are relative and absolute tolerance, respectively RelTol and
AbsTol in MATLAB. At each step of the ode45 algorithm, an error is approximated for that step. If y k
is the approximation of y(xk) at step k, and ek is the approximate error at this step, then MATLAB
chooses its partition to insure
where the default values are RelTol=.001 and AbsTol=.000001. As an example for when we might
want to change these values, observe that if yk becomes large, then the error ek will be allowed to
grow quite large. In this case, we increase the value of RelTol. For the equation y’ = xy 2 + y, with
y(0)=1, the values of y get quite large as x near 1. In fact, with the default error tolerances, we find
that the command
Leads to an error message,caused by the fact that the values of y are getting too large as x nears
1.In order to fix this problem,we choose a smaller value for RelTol
>>options = odeset(‘RelTol’,1e-10);
>>[x,y]=ode45(f,[0,1],1,options);
>>max(y)
15. Alternatively, we can solve the same ODE by first defining f(x,y) as an M-file firstode.m
yprime = x*y^2 + y;
In this case, we only require one change in the ode45 command: we must use a pointer @ to
indicate the m-file. That is, we use the following commands
>>xspan=[0,.5];
>>y0=1;
>.[x,y]=ode23(@firstode,xspan,y0);
>>x
16. Solving a system of ODE in MATLAB is quite similar to solving a single equation, though since a
system of equations cannot be defined as an inline function we must define it as an M-file. Solve
the system of Lorenz equations,
dy/dt = -σx + σy
dy/dt = ρx – y -xz
dy/dt = -βz + xy
where for the purposes of this example, we will take σ = 10, β = 8/3, and ρ=28, as well as x(0)=-8,
y(0)=8, and z(0)=27. The MATLAB M-file containing the Lorenz equations appears below
sig = 10;
beta = 8/3;
rho=28;
17. Observe that x is stored as x(1), y is stored as x(2) and z is stored as x(3).Additionally, xprime is a
column vector,as is evident from semicolon following appearance of x(2).In the command
window,we type
>>x0=[-8 8 27];
>>tspan=[0,20];
>>[t,x]= ode45(@lorenz,tspan,x0)
18. The matrix has been denoted x in the statement calling ode45, and in general any coordinate of the
matrix can be specified as x(m,n) where m denotes the row and n denotes the column.What we
will be most interested in is referring to the columns x, which correspond with values of the
components of the system. Along these lines, we can denote all row or all x by a colon : . For
example, x(:,1) refers to all rows in the first column of the matrix x; that is, it refers to all values of
our original x component. Using this information, we can easily plot the Lorenz strange attractor,
which is a plot of z versus x:
>>plot(x(:,1),x(:,3))
Press enter and record the results.
>>subplot(3,1,1)
>>plot(t,x(:,1))
>>subplot(3,1,2)
>>plot(t,x(:,2)
>>subplot(3,1,3)
>>plot(t,x(:,3)
20. In analyzing system of differential equations, we often want to experiment with different parameter
values. For example, in studying the Lorenz equations we might want to consider the behavior as a
function of the values of σ,β and ρ. Of course, one way to change this is to manually re-open the
M-file Lorenz.m each time we want to try new values, but not only is a slow way to do it, it’s
unwieldy to automate it. What we can do instead is pass parameter values directly to our M-file
through the ode45 call statement.Alter Lorenz.m into lorenz1.m, the latter of which accepts a vector
of parameters that we denote p.
sig=p(1);beta=p(2);rho=p(3);
>>[t,x]=ode45(@lorenz1,tspan,x0,[],p)
22. The first step in solving a second (or higher) order ordinary differential equation in MATLAB is to
write the equation as a first order system. For the equation
y1‘(x) = y2(x)
23. Another class of ODE’s that often arise in applications are boundary value problems (BVP’s).
Consider ,for example, the differential
y” – 3y’ + 2y = 0
y(0) = 0
y(1)=10
where our conditions y(0)=0 and y(1) = 10 are specified on the boundary of the interval of
interest
interest x ∈ [0,1]. The first step in solving this type of equation is to write it as a first order system
y1 ‘ = y2
y2 ‘ = -2y1 + 3y2
25. Next , we write the boundary conditions as the M-file bc.m, which records boundary residues
Res=[y0(1);y1(1)-10];
By residue, we mean the left-hand side of the boundary condition once it has been set to 0.In this
case, the second boundary condition is y(1)=10, so its residue is y(1)-10, which is recorded in the
second component of the vector that bc.m returns The variables y0 and y1 represent the solution at
x=0 and at x=1 respectively, while the 1 in the parenthesis indicates the first component of the
vector. In the event that the second boundary condition was y’(1) = 10, we would replace y1(1)-10
with y1(2)-10.
26. We are now in a position to begin solving the boundary value problem. In the following code, we
first specify a grid of x values for MATLAB to solve on and an initial guess for the vector that would
be given for an initial value problem [y(0),y’(0)].We solve the boundary value problem with
MATLAB’s built-in solver bvp4c.
>>sol = bvp4c(@bvpexample,@bc,sol);
>>sol.x
27. We observe that in this case MATLAB returns the solution as a structure whose first component
sol.x simply contains the x values we specified.The second component of the structure sol is sol.y,
which is the matrix containing as its first row values of y(x) at the grid points we specified, and as
its second row the corresponding values of y’(x).
28. For the first order differential equation where the highest derivative of the function is one :
From calculus, we all know that the solution to this equation is y(t) = Ce -5t, where C is some arbitrary
constant. If we specified an initial condition (say, y(0)= 1.43), then our analytical solution would be
y(t) = 1.43 e-5t.
29. In Matlab, we can use numerical integration techniques to solve differential equations like this
one.For the differential equation in Procedure No. 28, you would make two .m files (one will be a
function file, and the other will be a script that calls the function file).Using Matlab editor, create the
file below and save it as ilovecats.m.
dy = zeros(1,1);
dy = -5 * y;
[t,y]=ode45(‘ilovecats’,[0,10],1.43);
plot(t,y,’-‘)
xlabel(‘time’);
ylabel(‘y(t)’);
30. Type ‘help ode45’ at the prompt. As a general rule of thumb, ode45 is the best function to apply as
a first try for most problems.Ode 45 is an explicit (4,5) Runge-Kutta integrating technique.At Matlab
prompt, type happyscript.m. Press enter and record the results.
31. A 2nd order differential equation is one where the highest derivative term is of order 2:
To integrate this in Matlab, we have to rewrite this single equation into a set of 2 first order
differential equations. The reason behind this is because all Runge-Kutta solvers, including ode45,
are built to only integrate over equations of the type dy/dt = f(t,y).We can easily do this by hand, by
setting:
dy1/ dt = y2
dy2/dt = - ω2 sin(y1)
function dy = pendulumcats(t,y)
dy = zeros(2,1);
omega = 1;
dy(1) = y(2);
dy(2) = -omega*omega*sin(y(1));
xlabel (‘time’);
ylabel(‘y_{1}(t)’);
title(‘\theta (t)’);
figure;
plot(t,y(:,2),'-');
xlabel('time');
ylabel('y_{2}(t)');
title('d \theta / dt (t)');
figure;
plot(y(:,1),y(:,2),'-');
xlabel('\theta (t)');
ylabel('d \theta / dt (t)');
title('Phase Plane Portrait for undamped pendulum');
34. The change in the function file, pendulumcats.m, is the initialization part in line two – dy =
zeros(2,1); This is because we now have two equations we are integrating over (y1(t) and y2(t), so
Matlab will store their data into a matrix with two columns.If you just type y at your Matlab prompt,
you will get two columns of data that display.The first column is the set of y(t) (or y1(t)), whose data
points you can alone access by typing y(:,1) at your prompt.The second column of y are the
datapoints for y2(t), which you can access by themselves by typing y(:,2) at your prompt.
35. Run the commands. Record the results.
36. Back in the day, scientists didn't know as much, and thought they could accurately predict the
weather once computers became more powerful. This is because weather people used many sets
of differential equations to model the weather, and it took a long time to integrate those equations
(keep in mind that awesome things like Matlab weren't around in the 50s and 60s { people still used
slide rulers and tables to calculate many things, and the computers that were available back in the
day had very little computing power, so integrating some ODEs, like those in the pendulum
example, would take a crazy long time for the computer to chug through!).
Edward Lorenz was a mathematician and weather forecaster for the US Army Air Corps,
and later an MIT professor. For many years, he was interested in solving a simple set of 3 coupled
differential equations just because he wanted to find out what the weather would be like during the
next week." These equations are called the Lorenz Equations, and were derived from simplified
equations of convection rolls rising in the atmosphere. They are pretty simple and can be
expressed as:
dx/dt = -Px + Py
dy/dt = rx – y – xz
dz/dt = xy –bz
where P, r and b are all constants ( P represents the Prandtl number, and r is the ratio of Rayleigh
number to the critical Rayleigh number), and x, y and z are all functions of time. We can use Matlab
to look at trajectories (i.e. plots of x(t) vs time, y(t) vs. time and z(t) vs. time) or phase plane
portraits (i.e. x(t) vs y(t), x(t) vs z(t), and/or y(t) vs z(t) for this system.
37. The function file lorenz.m) should look like:
function dy = lorenz(t,y)
dy = zeros(3,1);
P=10;
r=28;
b=8/3
dy(1)=P*(y(2)-y(1));
subplot(221)
plot (y(:,1),y(:,2),’-);
xlable(‘x(t)’);
ylabel(‘y(t)’);
subplot(222)
plot(y(:,1),y(:,3),’-‘);
xlabel(“x(t)”);
ylabel(‘ z(t)’);
title(‘Phase Plane Portrait for Lorenz attractor – z(t) vs x(t)’);
subplot(223)
plot(‘ y(:,2),y(:,3,)’-’);
xlabel(‘y(t)’);
ylabel(‘z(t)’);
suplot(224)
plot(0,0,’.’);
xlabel(‘Edward Lorenz’);
ylabel(‘Kitties’);
title(‘Kitties vs Lorenz’);
39. Run the script.It should take a little while to run. Record the results.
40. To make a 3D plot ,add the following to the bottom of the script.
plot3(y(:,1),y(:,2),y(:,3),’-‘)
xlabel(‘x(t)’);
ylabel(‘y(t)’);
zlabel(‘z(t));
41. The Matlab code to solve dy/dx = y(x) with no initial conditions is shown below:
ODE1= ‘dy = y’
ODE1solved=dsolve(ODE1, ‘x’)
Record the results.
initConds = ‘y(0) = 5’
x = -5:0.01:5;
y_values = eval(vectorize(ODE1solved);
plot(x,y_values)
44. The same ideas apply to higher ODEs. To solve a second-order ODE with initial values at y(0) and
y’(0).Then plot the function in the range [-5,5]
ODE2solved = simplify)dissolve(ODE2,initConds));
pretty(ODE2solved)
t=-5 :0.01:5;
y_values=eval(vectorize(ODE2solved));
plot(t,y_values)
45. Systems of ODEs can be solved in a similar manner.One simply defines each equation as before.
The only thing that changes is the return of the dsolve function, which is now an array containing
the explicit solutions of each of the functions in the system
[x,y,z] = dsolve(sysODE1,sysODE2,sysODE3,initConds)
7. Conclusion:
8. Assessment (Rubric for Laboratory Performance):
TECHNOLOGICAL INSTITUTE OF THE PHILIPPINES
RUBRIC FOR MODERN TOOL USAGE
(Engineering Programs)
Student Outcome (e): Use the techniques, skills, and modern engineering tools necessary for engineering
practice in complex engineering activities.
Program: Chemical Engineering Course: __________ Section: _______ ____Sem SY ________
Performance Unsatisfactory Developing Satisfactory Very Satisfactory Score
Indicators 1 2 3 4
1. Apply Fails to identify Identifies Identifies modern Recognizes the
appropriate any modern modern techniques and is benefits and
techniques, techniques to techniques but able to apply constraints of
skills, and perform fails to apply these in modern
modern discipline- these in performing engineering tools
tools to specific performing discipline-specific and shows
perform a engineering discipline- engineering task. intention to apply
discipline- task. specific them for
specific engineering engineering
engineering task. practice.
task.
2. Demonstrate Fails to apply Attempts to Shows ability to Shows ability to
skills in any modern apply modern apply fundamental apply the most
applying tools to solve tools but has procedures in appropriate and
different engineering difficulties to using modern effective modern
techniques problems. solve tools when solving tools to solve
and modern engineering engineering engineering
tools to problems. problems. problems.
solve
engineering
problems.
3. Recognize Does not Recognizes Recognizes the Recognizes the
the benefits recognize the some benefits benefits and need for benefits
and benefits and and constraints of and constraints of
constraints constraints of constraints of modern modern
of modern modern modern engineering tools engineering tools
engineering engineering engineering and shows and makes good
tools. tools. tools. intention to apply use of them for
them for engineering
engineering practice.
practice.
Total Score
Mean Score = (Total Score / 3)
Percentage Rating = (Total Score / 12) x 100%
Evaluated by: Engr. Crispulo G. Maranan
Printed Name and Signature of Faculty Member Date