📖 Scenario: You want to understand how to solve a simple ordinary differential equation (ODE) using MATLAB's ode45 solver. This is useful in many real-life situations like modeling population growth or cooling of an object.
🎯 Goal: Learn how to set up and solve the ODE dy/dt = -2y using ode45 and plot the solution over time.
📋 What You'll Learn
Create a function for the ODE
Set the time span for the solution
Use ode45 to solve the ODE
Plot the solution with labels
💡 Why This Matters
🌍 Real World
ODE solvers like ode45 are used in engineering, physics, biology, and finance to model how things change over time.
💼 Career
Understanding how to use numerical solvers is important for jobs in data science, engineering, and research where modeling real-world systems is required.
Progress0 / 4 steps
1
Define the ODE function
Create a function handle called odefun that takes inputs t and y and returns -2 * y.
MATLAB
Hint
Use the syntax odefun = @(t, y) expression; to create the function handle.
2
Set the time span and initial condition
Create a variable tspan as a vector from 0 to 5, and a variable y0 with the initial value 1.
MATLAB
Hint
Use square brackets to create the vector for tspan.
3
Solve the ODE using ode45
Use ode45 with odefun, tspan, and y0 to get outputs t and y.
MATLAB
Hint
Call ode45 with the function handle, time span, and initial value.
4
Plot the solution
Use plot(t, y) to plot the solution. Add xlabel('Time t'), ylabel('Solution y'), and title('Solution of dy/dt = -2y using ode45').
MATLAB
Hint
Use plot and add labels and title for clarity.
Practice
(1/5)
1. What does the MATLAB function ode45 primarily do?
easy
A. It solves ordinary differential equations numerically.
B. It plots graphs of functions automatically.
C. It calculates the derivative of a function symbolically.
D. It integrates functions analytically.
Solution
Step 1: Understand the purpose of ode45
The ode45 function in MATLAB is designed to solve ordinary differential equations (ODEs) using a numerical method called Runge-Kutta.
Step 2: Compare options with ode45's function
Options A, C, and D describe plotting, symbolic differentiation, and analytical integration, which are not what ode45 does.
Final Answer:
It solves ordinary differential equations numerically. -> Option A
Quick Check:
ode45 solves ODEs numerically = B [OK]
Hint: Remember ode45 solves ODEs numerically, not symbolically or graphing [OK]
Common Mistakes:
Confusing ode45 with plotting functions
Thinking ode45 does symbolic math
Assuming ode45 integrates analytically
2. Which of the following is the correct syntax to call ode45 for solving dy/dt = -2y with initial value y(0)=1 over time interval [0 5]?
easy
A. [t,y] = ode45(@(y,t) -2*y, [0 5], 1);
B. [t,y] = ode45(@(t,y) -2*y, [0 5], 1);
C. [t,y] = ode45(@(t,y) 2*y, 0:5, 1);
D. [t,y] = ode45(@(t,y) -2*y, 0, 5, 1);
Solution
Step 1: Check function handle and argument order
The function handle for ode45 must be @(t,y) for time t and variable y. [t,y] = ode45(@(t,y) -2*y, [0 5], 1); uses @(t,y) correctly with the expression -2*y.
Step 2: Verify time span and initial value format
Time span must be a vector [0 5], and initial value is a scalar 1. [t,y] = ode45(@(t,y) -2*y, [0 5], 1); matches this format exactly.
Final Answer:
[t,y] = ode45(@(t,y) -2*y, [0 5], 1); -> Option B
Quick Check:
Correct syntax: @(t,y), time vector, initial value = A [OK]
Hint: Use @(t,y) for function and time vector in brackets [OK]
Common Mistakes:
Swapping t and y in function handle
Using colon operator instead of vector for time span
Passing time points as separate arguments
3. Consider the code:
f = @(t,y) t - y;
[t,y] = ode45(f, [0 2], 1);
disp(y(end));
What is the output approximately?
medium
A. 1.3
B. 1.0
C. 0.5
D. 2.0
Solution
Step 1: Understand the ODE and initial condition
The ODE is dy/dt = t - y with y(0) = 1, solved over [0 2]. This is a linear ODE where y tends to follow t but is pulled down by -y.
Step 2: Estimate solution behavior at t=2
Numerical solution with ode45 typically gives y around 1.3 at t=2 for this ODE and initial value.
Final Answer:
1.3 -> Option A
Quick Check:
ode45 output y(end) ≈ 1.3 for dy/dt = t - y [OK]
Hint: Recall ode45 returns solution array; last value is y at final time [OK]
ODE functions for ode45 must have arguments in order (t,y), but here it is @(y,t), which is incorrect.
Step 2: Verify other parts of the code
Initial value zero is allowed, time span as [0 1] is valid, and plot labels are optional, so these are not errors.
Final Answer:
Function handle arguments are in wrong order. -> Option C
Quick Check:
Function handle must be @(t,y), not @(y,t) [OK]
Hint: Always use @(t,y) for ode45 function handles [OK]
Common Mistakes:
Swapping t and y in function handle
Thinking initial value can't be zero
Believing time span must be column vector
5. You want to solve the system:
dx/dt = y dy/dt = -x
with initial conditions x(0)=0, y(0)=1 over [0 10]. Which MATLAB code correctly uses ode45 to solve this system?
hard
A. f = @(t,u) [u(1); u(2)];
[t,u] = ode45(f, [0 10], [0 1]);
B. f = @(t,x,y) [y; -x];
[t,u] = ode45(f, [0 10], [0 1]);
C. f = @(u,t) [u(2); -u(1)];
[t,u] = ode45(f, [0 10], [0 1]);
D. f = @(t,u) [u(2); -u(1)];
[t,u] = ode45(f, [0 10], [0 1]);
Solution
Step 1: Define function handle for system of ODEs
The system has two variables x and y, combined as vector u where u(1)=x and u(2)=y. The function must be @(t,u) returning [y; -x], which is [u(2); -u(1)].
Step 2: Check initial conditions and call to ode45
Initial conditions are [0 1] for x=0 and y=1. Time span is [0 10]. f = @(t,u) [u(2); -u(1)];
[t,u] = ode45(f, [0 10], [0 1]); matches this exactly.
Final Answer:
f = @(t,u) [u(2); -u(1)];
[t,u] = ode45(f, [0 10], [0 1]); -> Option D
Quick Check:
System ODEs use @(t,u) with vector u = D [OK]
Hint: Use vector input @(t,u) and return derivatives as vector [OK]
Common Mistakes:
Using separate arguments for variables in function handle
Swapping order of arguments in function handle
Returning wrong derivative vector
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.