# Instability in a multistep method¶

Consider the ridiculously simple IVP $$u'=u$$, $$u(0)=1$$, whose solution is $$e^t$$.

using FundamentalsNumericalComputation

dudt = (u,t) -> u;
u_exact = exp;
a = 0.0;  b = 1.0;


Let’s apply the LIAF method to this problem for varying fixed step sizes. We’ll measure the error at the time $$t=1$$.

n = [5,10,20,40,60]
err = zeros(size(n))
t = [];  u = [];
for (j,n) = enumerate(n)
h = (b-a)/n
t = [ a + i*h for i=0:n ]
u = [1; u_exact(h); zeros(n-1)];
f = [dudt(u[1],t[1]); zeros(n)];
for i = 2:n
f[i] = dudt(u[i],t[i])
u[i+1] = -4*u[i] + 5*u[i-1] + h*(4*f[i]+2*f[i-1])
end
err[j] = abs(u_exact(b) - u[end])
end

pretty_table( (n=n,h=(b-a)./n,error=err), backend=:html )

n h error
Int64 Float64 Float64
5 0.2 0.01604519922158687
10 0.1 2.845479238377764
20 0.05 1.6224961462218664e6
40 0.025 9.3442027524627e18
60 0.016666666666666666 1.740134731635269e32

The error starts out promisingly, but things explode from there. A graph of the last numerical attempt yields a clue.

plot(t,abs.(u),m=:o,label="",
xlabel="t",yaxis=(:log10,"|u|"),title="LIAF solution")


It’s clear that the solution is growing exponentially in time.