from numpy import *
from scipy import linalg
from scipy.linalg import norm
from matplotlib.pyplot import *
from prettytable import PrettyTable
from timeit import default_timer as timer
import sys
sys.path.append('fncbook/')
import fncbook as FNC
# This (optional) block is for improving the display of plots.
# from IPython.display import set_matplotlib_formats
# set_matplotlib_formats("svg","pdf")
# %config InlineBackend.figure_format = 'svg'
rcParams["figure.figsize"] = [7, 4]
rcParams["lines.linewidth"] = 2
rcParams["lines.markersize"] = 4
rcParams['animation.html'] = "jshtml" # or try "html5"
For one-step methods such as Runge–Kutta, Theorem 6.2.1 guarantees that the method converges and that the global error is of the same order as the local truncation error. For multistep methods, however, a new wrinkle is introduced.
The source of the exponential growth in Example 6.8.1 is not hard to identify. Recall that we can rewrite (6.8.1) as ρ(Z)ui−1=hσ(Z)ui−1 using the forward shift operator Z:
Therefore, as h→0, the two roots of z2+4z−5 will each correspond to an approximate solution in the form (6.8.4) of the LIAF method. These roots are z=1 and z=−5, and the growth curve at the end of Example 6.8.1 is approximately ∣(−5)i∣.
It turns out that lacking zero-stability is the only thing that can go wrong for a consistent multistep method.
The Dahlquist equivalence theorem is one of the most important and celebrated in the history of numerical analysis. It can be proved more precisely that a zero-stable, consistent method is convergent in the same sense as Theorem 6.2.1, with the error between numerical and exact solutions being of the same order as the local truncation error, for a wide class of problems.
You may have noticed that the Adams and BD formulas use only about half of the available data from the past k steps, i.e., they have many possible coefficients set to zero. For instance, a k-step AB method uses only the fj-values and has order k. The order could be made higher by also using uj-values, like the LIAF method does for k=2. Also like the LIAF method, however, such attempts are doomed by instability.
The lesson of Theorem 6.8.3 is that accuracy is not the only important feature, and trying to optimize for it leads to failure. New lessons on the same theme appear in Absolute stability.