[Go to the Notes on Diffy Qs home page]

# Notes on Diffy Qs - Sage demos for section 1.7

Press the *Activate* or *Evaluate* button below to launch each Sage demonstration.
You will be able to interact with the first demonstration after it launches and
change numbers with sliders.
You may have to wait a little before the graph
or result appears. Be patient.
After the first demonstration there are a few separate Sage demos where you can edit the code
to experiment with Euler's method.

## Euler's method demo

Euler's method for one of three problems

\((1) \qquad y' = 5x + y - 5, \quad y(0) = 1, \)

\((2) \qquad y' = 2-y, \quad y(0) = 0, \)

\((3) \qquad y' = \left(5+\frac{1}{0.001+(x-1.5)^2}\right)(3-y)(2-y)^2, \quad y(0) = 1.9, \)

using several different step sizes h. The actual solution is also graphed in green to compare.
The slider will modify the step size.
Notice how the third example does not seem to get much better as we reduce the step size,
especially for \(x ≥ 1.5 .\)

## Euler's method with Sage

First let's just make a table.

Now let's plot the result.

A challenge for those that know a little Python/Sage
would be to modify the two examples above to do the improved Euler
method (described just above Exercise 1.7.104), or the Runge-Kutta method (described
just above Exercise 1.7.7). Be careful to keep the correct indentation
as Sage is really Python under the hood and the indentation is important.

How about plotting the actual solution. In this code we ask
Sage to symbolically solve, so Sage will only plot the solution if
it can find the actual solution analytically, and it will give you an
error otherwise. This works for the examples (1) and
(2) above, but not for example (3).

Sage has Runge-Kutta built in, so we could just use that instead of solving
exactly, let's do that for the example (3) from above.
That is going to be very close to the real answer for most examples you
throw at it. You can also try playing around with the step parameter below,
and you can see that even Runge-Kutta gets confused with a large enough step size.

The original code is due to Ryan Burkhart, but is now heavily modified.