
Euler’s method for second-order differential equations
Euler’s Method (2nd Order Differential Equations)
IB Mathematics: Applications & Interpretation HL
This lesson extends Euler’s method to second-order differential equations. In IB HL questions, these usually model motion, springs, charge, or other changing systems. The key idea is to convert one second-order differential equation into a system of two first-order differential equations, then apply Euler’s method step by step.
⭐ Key Concepts
- A second-order differential equation contains
or
. - Euler’s method cannot be applied directly to
until the equation is rewritten as a pair of first-order equations. - The standard substitution is:
![Rendered by QuickLaTeX.com \[y = \frac{dx}{dt}\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-3a69266ab1778c395d97884b561e0f72_l3.png?resize=61%2C41&ssl=1)
so that
![Rendered by QuickLaTeX.com \[\frac{dy}{dt} = \frac{d^2x}{dt^2}\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-3faf3888c539947c9f921178991d5136_l3.png?resize=83%2C45&ssl=1)
- You then update both variables at each step:
![Rendered by QuickLaTeX.com \[x_{n+1} = x_n + h y_n\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-1bf9406e119edcc960214c30c1a8b5d3_l3.png?resize=146%2C19&ssl=1)
![Rendered by QuickLaTeX.com \[y_{n+1} = y_n + h\left(\frac{dy}{dt}\right)_n\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-ea2536344c4cd1141bb48f34f82a8cb0_l3.png?resize=190%2C49&ssl=1)
- In many IB questions,
is displacement and
is velocity. - As with first-order Euler’s method, smaller step sizes usually improve the approximation.
What Changes from First-Order Euler’s Method?
For a first-order equation, you only track one quantity, such as
.
For a second-order equation, you must track:
- the quantity itself, such as
, and - its first derivative, such as
.
That is why second-order Euler’s method always works with two linked recurrence formulas.
📘 IB Command Terms
Write down — give the required expression or system clearly.
Use the substitution — replace a derivative with a new variable, usually to simplify the model.
Find — calculate the required value.
Estimate — give an approximate numerical answer.
Predict — use the model to obtain a value beyond the starting point.
Hence — use the result from the previous part.
The Standard IB Setup
Suppose we are given a second-order differential equation in the form
![]()
We introduce
![]()
Then:
![]()
![]()
Now Euler’s method can be applied to the two first-order equations.
Euler Update Formula for Second-Order Equations
If the step size is
, then the recurrence relations are:
![]()
![]()
Also,
![]()
So in every step:
- use the current values
,
, and
, - find the acceleration or second derivative,
- update
, - update
, - repeat.
General Working Template
If
![]()
and you let
![]()
then the coupled system is
![]()
![]()
and Euler’s method gives
![]()
![]()
Worked Example 1: Converting to a System
Question
The equation for the motion of a particle is
![]()
Use the substitution
to write the differential equation as a system of coupled first-order differential equations.
Step 1: Define the substitution
![]()
Step 2: Rewrite the second derivative
Since
, we have
![]()
Step 3: Rearrange the original equation
From
![]()
substitute
and
:
![]()
So
![]()
Answer
The coupled first-order system is
![]()
![]()
📊 IB markscheme-style marks
- A1: correct statement
and 
- A1: correct system of coupled first-order equations
Worked Example 2: Particle Motion
Question
The equation for the motion of a particle is
![]()
When
the particle is stationary at
, so
![]()
Use Euler’s method with step length
to find the displacement of the particle when
.
Step 1: Introduce the substitution
Let
![]()
Then the system is
![]()
![]()
Step 2: Write the recurrence relations
Using
:
![]()
![]()
Initial values:
![]()
Step 3: First iteration to 
At
,
,
:
![]()
![]()
![]()
Step 4: Second iteration to 
![]()
![]()
![]()
![]()
Step 5: Continue in the same way
Repeating the same process up to
gives the following table.
Note: Different values may appear depending on rounding at each stage. The official markscheme version for this question gives a final value close to
![]()
The important IB skill is the correct setup of the recurrence formulas and correct repeated iteration.
📊 IB markscheme-style marks
- M1: recognition that
must appear in the recurrence formula - A1: correct recurrence relation for

- A1: correct recurrence relation for

- A2: correct numerical value for
to acceptable accuracy
Worked Example 3: Spring Model
Question
The displacement,
cm, of the end of a spring, at time
seconds, is given by
![]()
At
,
and
.
Use Euler’s method, with a step length
seconds, to estimate the value of
when
.
Step 1: Let
![]()
Then:
![]()
![]()
Step 2: Write the recurrence relations
![]()
![]()
Step 3: Initial values
![]()
Step 4: First iteration to 
![]()
![]()
Step 5: Second iteration to 
![]()
![]()
![]()
Step 6: Continue the process
Answer
Therefore, the estimate when
is
![]()
📊 IB markscheme-style marks
- A1: correct use of

- A1: correct use of

- M1: correct Euler recurrence equations
- A2: correct estimate

Worked Example 4: Charge on a Capacitor
Question
An electrical circuit contains a capacitor. The charge on the capacitor,
Coulombs, at time
seconds, satisfies
![]()
Initially
and
.
Use Euler’s method with
to estimate the maximum charge on the capacitor during the first second.
Step 1: Let
![]()
Then:
![]()
![]()
Step 2: Write the Euler formulae
![]()
![]()
Step 3: Initial values
![]()
Step 4: First iteration to 
![]()
![]()
![]()
Step 5: Second iteration to 
![]()
![]()
![]()
Step 6: Continue the table through the first second
The charge values rise and then begin to fall. Reading from the completed Euler table, the maximum value occurs at about
and is approximately
![]()
Note: a common error is to read the charge at
instead of identifying the largest charge value reached in the table.
📊 IB markscheme-style marks
- M1: correct setup of either
and
or the equivalent
system - A1: correct differential equation for the second variable
- M1: evidence of correct Euler iteration
- A2: maximum charge
C at about 
Worked Example 5: Improved Model
Question
An improved model is written as
![]()
The same initial conditions as above apply.
Use Euler’s method with a
-interval of
to predict the value of
when
.
Step 1: Let
![]()
Then:
![]()
![]()
Step 2: Write the recurrence relations
![]()
![]()
Step 3: Apply the initial conditions
Using the initial conditions from the earlier model, the iteration begins at
![]()
Step 4: First iteration
![]()
![]()
![]()
Depending on the exact setup used in the earlier part of the full question, the markscheme notes that
and
may also be seen as the first iterative stage in that specific context.
Answer
After continuing the Euler process to
, the markscheme value is
![]()
📊 IB markscheme-style marks
- M1: attempt to write the iterative relationships
- A1: correct recurrence for

- A1: correct recurrence for

- A1: correct use of initial values
- M1: evidence of iteration
- A1: final answer close to

How to Set Out Second-Order Euler Questions in an IB Exam
- Define the substitution clearly, usually
. - Rewrite the second-order equation as two first-order equations.
- Write both recurrence relations.
- State the initial values for both variables.
- Use a table with columns for
,
, and
. - Continue to the required time.
- Read the correct quantity from the table:
- sometimes displacement at a fixed time,
- sometimes velocity,
- sometimes a maximum or minimum value.
🧮 GDC Tips
- Store both variables carefully. You must track the displacement and the velocity.
- Use full calculator precision during the table and round only at the end.
- If trigonometric terms appear, check that your calculator is in the correct mode, usually radians.
- For long tables, use lists or spreadsheet mode if appropriate in your calculator practice.
- Always label clearly which variable is the derivative variable.
⚠ Common Mistakes
- Forgetting to define the substitution.
- Writing only one Euler recurrence formula instead of two.
- Using the new value instead of the current value inside the recurrence formula.
- Mixing up
and
when
. - Reading the value at the final time instead of the maximum value over the interval.
- Rounding too early.
- Using degrees instead of radians when trigonometric functions appear.
📘 Exam Tips
- In IB questions, one mark is often awarded just for writing the coupled system correctly.
- Another method mark is often available for writing the correct recurrence formulas, even before the arithmetic is complete.
- A neat table is the safest layout under pressure.
- If the question asks for a maximum, inspect the whole table instead of stopping at the last row.
- Always state the final answer in context, for example “the displacement is…” or “the maximum charge is…”.
IB-Style Paper 1 Questions
Question 1
The displacement
of a particle satisfies
![]()
with initial conditions
![]()
Use Euler’s method with step size
to estimate
when
.
[5 marks]
Show solution
Let
![]()
Then
![]()
Euler recurrences:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
![]()
Step 2:
![]()
![]()
Therefore,
![]()
Question 2
The displacement
of a spring satisfies
![]()
given that
![]()
Use Euler’s method with step size
to estimate
when
.
[6 marks]
Show solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
![]()
Step 2:
![]()
![]()
Step 3:
![]()
Therefore,
![]()
Question 3
The charge
on a capacitor satisfies
![]()
given that
![]()
Use Euler’s method with step size
to estimate the value of
when
.
[6 marks]
Show solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
![]()
Step 2:
![]()
Therefore,
![]()
🧪 Challenge Problems
Challenge 1
A particle moves according to
![]()
with initial conditions
![]()
Use Euler’s method with step size
to estimate
when
.
Show answer
Let
. Then
![]()
Using Euler’s method gives
![]()
Challenge 2
A spring model satisfies
![]()
with
![]()
Use Euler’s method with step size
to estimate the displacement when
.
Show answer
Using
and Euler’s method gives
![]()
✅ Self-Practice Questions
Self-Practice 1
The displacement
satisfies
![]()
with
![]()
Use Euler’s method with step size
to estimate
when
.
Hidden solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
Initial values:
![]()
Step 1:
![]()
Step 2:
![]()
Therefore,
![]()
Self-Practice 2
A particle satisfies
![]()
with
![]()
Use Euler’s method with step size
to estimate
when
.
Hidden solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
Step 2:
![]()
Therefore,
![]()
Self-Practice 3
The charge
satisfies
![]()
with
![]()
Use Euler’s method with step size
to estimate
when
.
Hidden solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
![]()
Step 2:
![]()
Therefore,
![]()
Self-Practice 4
A particle moves according to
![]()
with
![]()
Use Euler’s method with step size
to estimate
when
.
Hidden solution
Let
![]()
Then
![]()
Recurrence relations:
![]()
![]()
Initial values:
![]()
Step 1:
![]()
Step 2:
![]()
![]()
Step 3:
![]()
Therefore,
![]()
Summary Box
- For second-order equations, first make the substitution
or
. - This converts one second-order differential equation into two first-order equations.
- Then use the pair of Euler formulas:
![Rendered by QuickLaTeX.com \[x_{n+1}=x_n+h y_n\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-849b008366bb32b320df4b1313e94ae3_l3.png?resize=146%2C19&ssl=1)
![Rendered by QuickLaTeX.com \[y_{n+1}=y_n+h f(t_n,x_n,y_n)\]](https://i0.wp.com/alphyschool.org/wp-content/ql-cache/quicklatex.com-945827ab0c0843ac795bb4d3c146f0b2_l3.png?resize=225%2C20&ssl=1)
- You must update both variables at every step.
- IB questions often ask for displacement, charge, velocity, or a maximum value read from the completed table.
Final Exam Checklist
- Have I defined the substitution clearly?
- Have I written the two first-order equations correctly?
- Have I written both Euler recurrence formulas?
- Have I used the current values, not the next values, inside the formulas?
- Have I kept enough decimal places during the iterations?
- Have I read the correct final quantity from the table?



