/usr/share/doc/xmds2/bulirschStoer.html is in xmds2-doc 2.2.3+dfsg-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Modified Midpoint Method — XMDS2 2.2.3 documentation</title>
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '2.2.3',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="file:///usr/share/javascript/mathjax/MathJax.js?config=TeX-AMS_HTML,file:///usr/share/doc/xmds2/_static/mathjax-use-tex-fonts.js"></script>
<link rel="shortcut icon" href="_static/xmds_favicon.ico"/>
<link rel="top" title="XMDS2 2.2.3 documentation" href="index.html" />
<link rel="up" title="Reference section" href="reference_index.html" />
<link rel="next" title="Advanced Topics" href="advanced_topics.html" />
<link rel="prev" title="XMDS2 script elements" href="reference_elements.html" />
</head>
<body role="document">
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="advanced_topics.html" title="Advanced Topics"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="reference_elements.html" title="XMDS2 script elements"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">XMDS2 2.2.3 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="reference_index.html" accesskey="U">Reference section</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="modified-midpoint-method">
<span id="mmdetail"></span><span id="index-0"></span><h1>Modified Midpoint Method<a class="headerlink" href="#modified-midpoint-method" title="Permalink to this headline">¶</a></h1>
<p>Although the modified midpoint can be used standalone as an ordinary differential equation integrator, it is regarded as much more powerful when used as a stepper to complement the Bulirsch-Stoer technique.</p>
<p>The modified midpoint method advances a vector of dependent variables <span class="math">\(y(x)\)</span> from a point <span class="math">\(x\)</span>, to a point <span class="math">\(x + H\)</span> by a sequence of <span class="math">\(n\)</span> substeps, each of size <span class="math">\(h=H/n\)</span>.</p>
<p>The number of right-hand side evaluations required by the modified midpoint method is <span class="math">\(n+1\)</span>. The formulas for the method are</p>
<div class="math">
\[\begin{split}z_0 &= y(x) \\
z_1 &= z_0 + h f(x, z_0) \\
z_{m+1} &= z_{m-1} + 2 h f(x + m h, z_m)\; \text{ for } m = 1, 2, \dots, n-1 \\
y(x+H) \approx y_n &= \frac{1}{2} \left[ z_n + z_{n-1} + h f(x + H, z_n) \right]\end{split}\]</div>
<p>The error of this, expressed as a power series in <span class="math">\(h\)</span>, the stepsize, contains only even powers of <span class="math">\(h\)</span>:</p>
<div class="math">
\[\begin{split}y_n - y(x + H) &= \sum_{i=1}^{\infty} \alpha_i h^{2i}\end{split}\]</div>
<p>where <span class="math">\(H\)</span> is held constant, but <span class="math">\(h\)</span> changes <span class="math">\(y\)</span> by varing the <span class="math">\(n\)</span> in <span class="math">\(h = H/n\)</span>.</p>
<p>The importance of this even power series is that using Richardson Extrapolation to combine steps and knock out higher-order error terms gains us two orders at a time.</p>
<p>The modified midpoint method is a second-order method, but holds an advantage over second order Runge-Kutta, as it only requires one derivative evaluation per step, instead of the two evaluations that Runge-Kutta necessitates.</p>
</div>
<div class="section" id="bulirsch-stoer-algorithm">
<span id="bsdetail"></span><span id="index-1"></span><h1>Bulirsch-Stoer Algorithm<a class="headerlink" href="#bulirsch-stoer-algorithm" title="Permalink to this headline">¶</a></h1>
<p>The Bulirsch-Stoer algorithm utilizes three core concepts in its design.</p>
<p>First, the usage of Richardson Extrapolation.</p>
<img alt="_images/richardsonExtrapolation.png" class="align-center" src="_images/richardsonExtrapolation.png" />
<p>Richardson Extrapolation considers the final answer of a numerical calculation as being an analytic function of an adjustable parameter such as the stepsize <span class="math">\(h\)</span>. That analytic function can be probed by performing the calculation with various values of <span class="math">\(h\)</span>, none of them being necessarily small enough to yield the accuracy that we desire. When we know enough about the function, we fit it to some analytic form and then evaluate it at the point where <span class="math">\(h = 0\)</span>.</p>
<p>Secondly, the usage of rational function extrapolation in Richardson-type applications. Rational function fits can remain good approximations to analytic functions even after the various terms in powers of <span class="math">\(h\)</span>, all have comparable magnitudes. In other words, <span class="math">\(h\)</span> can be so large as to make the whole notion of the “order” of the method meaningless — and the method can still work superbly.</p>
<p>The third idea is to use an integration method whose error function is strictly even, allowing the rational function or polynomial approximation to be in terms of the variable <span class="math">\(h^2\)</span> instead of just <span class="math">\(h\)</span>.</p>
<p>These three ideas give us the Bulirsch-Stoer method, where a single step takes us from <span class="math">\(x\)</span> to <span class="math">\(x + H\)</span>, where <span class="math">\(H\)</span> is supposed to be a significantly large distance. That single step consists of many substeps of the modified midpoint method, which is then extrapolated to zero stepsize.</p>
<p>(Excerpts derived from <strong>Numerical Recipes: The Art of Scientific Computing</strong>, Third Edition (2007), p1256; Cambridge University Press; ISBN-10: 0521880688, <a class="reference external" href="http://www.nr.com/">http://www.nr.com/</a>)</p>
</div>
<div class="section" id="error-scaling-behaviour">
<span id="errorscaling"></span><span id="index-2"></span><h1>Error Scaling Behaviour<a class="headerlink" href="#error-scaling-behaviour" title="Permalink to this headline">¶</a></h1>
<a class="reference internal image-reference" href="_images/error_scaling.png"><img alt="_images/error_scaling.png" class="align-center" src="_images/error_scaling.png" style="width: 800px; height: 600px;" /></a>
<p>The graph above shows the error scaling behaviour for the Bulirsch-Stoer method. This was generated using data from XMDS2 for a simple problem whose analytical solution was known. For more information and to generate this plot yourself see the testsuite/integrators/richardson_extrapolation/error_scaling directory. There you will find the .xmds files for generating the data and a python script to generate the plot above (requires gnuplot).</p>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="index.html">
<img class="logo" src="_static/xmds_logo.png" alt="Logo"/>
</a></p>
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Modified Midpoint Method</a></li>
<li><a class="reference internal" href="#bulirsch-stoer-algorithm">Bulirsch-Stoer Algorithm</a></li>
<li><a class="reference internal" href="#error-scaling-behaviour">Error Scaling Behaviour</a></li>
</ul>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="advanced_topics.html" title="Advanced Topics"
>next</a> |</li>
<li class="right" >
<a href="reference_elements.html" title="XMDS2 script elements"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">XMDS2 2.2.3 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="reference_index.html" >Reference section</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2008-2014, Graham Dennis, Joe Hope and Mattias Johnsson. Licensed under the GNU FDL.
Last updated on Jan 21, 2017.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.6.
</div>
</body>
</html>
|