<?xml-stylesheet type="text/xsl" href="../styles/pmathml.xsl"?>
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dsi="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xml:space="preserve"><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><title>D02KAF : NAG Library, Mark 22</title><link rel="stylesheet" href="../styles/libdoc.css" type="text/css"/><script type="text/javascript">
   function showLevel(_levelId){
    var thisLevel = document.getElementById(_levelId);
    var thisplus = document.getElementById( _levelId.concat('plus'));
    var thisminus = document.getElementById( _levelId.concat('minus'));
    if(thisLevel.style.display != "block"){
     thisLevel.style.display = "block";
     thisplus.style.display = "none";
     thisminus.style.display = "inline";
     }
    else{
     thisLevel.style.display = "none";
     thisminus.style.display = "none";
     thisplus.style.display = "inline";
     }
    }
  </script></head><body><hr/><div><a class="rout" href="../../pdf/D02/d02kaf.pdf">D02KAF (PDF version)</a></div><div><a class="chap" href="d02conts.xml">D02 Chapter Contents</a></div><div><a class="chapint" href="d02intro.xml">D02 Chapter Introduction</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div><hr/><h1 class="libdoc">NAG Library Routine Document<br/><br/>D02KAF</h1><div class="paramtext"><div class="header"><b>Note:</b>&#160; before using this routine, please read the Users' Note for your implementation to check the interpretation of <span class="bitalic">bold italicised</span> terms and other implementation-dependent details.</div></div> 
<div class="htmltoc">
<h2 class="htmltoc"><span class="htmltochead" onclick="showLevel('htmltoc');"><span class="htmltocplus" id="htmltocplus">+</span><span class="htmltocminus" id="htmltocminus">&#8722;</span></span>&#160;Contents</h2>
<div class="htmltocitem" id="htmltoc">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#purpose">1&#160;&#160;<b>Purpose</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#specification">2&#160;&#160;<b>Specification</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#description">3&#160;&#160;<b>Description</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#references">4&#160;&#160;<b>References</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#parameters">5&#160;&#160;<b>Parameters</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#errors">6&#160;&#160;<b>Error Indicators and Warnings</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#accuracy">7&#160;&#160;<b>Accuracy</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#fcomments">8&#160;&#160;<b>Further Comments</b></a>
</div><div class="htmltoc">
<span class="htmltoc" onclick="showLevel('tocexample');"><span class="htmltocplus" id="tocexampleplus">+</span><span class="htmltocminus" id="tocexampleminus">&#8722;</span></span>
<a class="htmltoc" href="#example">9&#160;&#160;<b>Example</b></a>
<div class="htmltocitem" id="tocexample">
<div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examtext">9.1&#160;&#160;<b>Program Text</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examdata">9.2&#160;&#160;<b>Program Data</b></a>
</div><div class="htmltoc">
<span class="htmltocplus">&#160;&#160;&#160;</span>
<a class="htmltoc" href="#examresults">9.3&#160;&#160;<b>Program Results</b></a>
</div>
</div>
</div>
</div>
</div><h2 class="standard"><a class="sec" name="purpose" id="purpose"/>1&#160;&#160;Purpose</h2>
<div class="paramtext">D02KAF finds a specified eigenvalue of a regular second-order Sturm&#8211;Liouville system defined on a finite range, using a Pruefer transformation and a shooting method.</div><h2 class="standard"><a class="sec" name="specification" id="specification"/>2&#160;&#160;Specification</h2>
<table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;D02KAF&#160;(</td><td class="tdfspec2"><a class="arg" href="#XL">XL</a>, <a class="arg" href="#XR">XR</a>, <a class="arg" href="#COEFFN">COEFFN</a>, <a class="arg" href="#BCOND">BCOND</a>, <a class="arg" href="#K">K</a>, <a class="arg" href="#TOL">TOL</a>, <a class="arg" href="#ELAM">ELAM</a>, <a class="arg" href="#DELAM">DELAM</a>, <a class="arg" href="#MONIT">MONIT</a>, <a class="arg" href="#IFAIL">IFAIL</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">K, IFAIL</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">XL, XR, BCOND(3,2), TOL, ELAM, DELAM</td></tr><tr><td class="tdfspec1">EXTERNAL</td><td class="tdfspec2">COEFFN, MONIT</td></tr></table><h2 class="standard"><a class="sec" name="description" id="description"/>3&#160;&#160;Description</h2>
<div class="paramtext">D02KAF finds a specified eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;of a Sturm&#8211;Liouville system defined by a self-adjoint differential equation of the second-order

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
 <m:msup>
  <m:mfenced separators="">
   <m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced>
   <m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup>
  </m:mfenced>
  <m:mo>&#8242;</m:mo>
 </m:msup>
 <m:mo>+</m:mo>
 <m:mi>q</m:mi>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>;</m:mo><m:mi>&#955;</m:mi></m:mfenced>
 <m:mi>y</m:mi><m:mo>=</m:mo><m:mn>0</m:mn>
 <m:mtext>, &#8195;</m:mtext>
 <m:mi>a</m:mi><m:mo>&lt;</m:mo><m:mi>x</m:mi><m:mo>&lt;</m:mo><m:mi>b</m:mi>
 <m:mtext>,</m:mtext>
</m:math></td><td class="formula2"/></tr></table></div>

together with boundary conditions of the form

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>a</m:mi><m:mn>2</m:mn></m:msub><m:mi>y</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced><m:mo>=</m:mo><m:msub><m:mi>a</m:mi><m:mn>1</m:mn></m:msub><m:mi>p</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced><m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div><div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>b</m:mi><m:mn>2</m:mn></m:msub><m:mi>y</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced><m:mo>=</m:mo><m:msub><m:mi>b</m:mi><m:mn>1</m:mn></m:msub><m:mi>p</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced><m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

at the two, finite, end points <m:math><m:mi>a</m:mi></m:math>&#160;and <m:math><m:mi>b</m:mi></m:math>.  The functions <m:math><m:mi>p</m:mi></m:math>&#160;and <m:math><m:mi>q</m:mi></m:math>, which are real-valued, are defined by <a class="arg" href="#COEFFN">COEFFN</a>.</div><div class="paramtext">For the theoretical basis of the numerical method to be valid, the following conditions should hold on the coefficient functions:
<table class="standard-100"><tr>
<td style="width:2.1em;" valign="baseline">(a)</td>
<td valign="top"><m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;must be nonzero and must not change sign throughout the closed interval <m:math><m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced></m:math>;</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(b)</td>
<td valign="top"><m:math>
 <m:mfrac other="display">
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>q</m:mi></m:mrow>
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>&#955;</m:mi></m:mrow>
 </m:mfrac>
</m:math>&#160;must not change sign and must be nonzero throughout the open interval <m:math><m:mfenced separators=""><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced></m:math>&#160;and for all relevant values of <m:math><m:mi>&#955;</m:mi></m:math>, and must not be identically zero as <m:math><m:mi>x</m:mi></m:math>&#160;varies, for any relevant value <m:math><m:mi>&#955;</m:mi></m:math>; and,</td>
</tr><tr>
<td style="width:2.1em;" valign="baseline">(c)</td>
<td valign="top"><m:math><m:mi>p</m:mi></m:math>&#160;and <m:math><m:mi>q</m:mi></m:math>&#160;should (as functions of <m:math><m:mi>x</m:mi></m:math>)   have continuous derivatives, preferably up to the fourth-order, on <m:math><m:mfenced separators="" open="[" close="]"><m:mi>a</m:mi><m:mo>,</m:mo><m:mi>b</m:mi></m:mfenced></m:math>.  The differential equation code used will integrate through mild discontinuities, but probably with severely reduced efficiency.  Therefore, if <m:math><m:mi>p</m:mi></m:math>&#160;and <m:math><m:mi>q</m:mi></m:math>&#160;violate this condition,  <a class="rout" href="../D02/d02kdf.xml">D02KDF</a> should be used.</td>
</tr></table>
</div><div class="paramtext">The eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;is determined by a shooting method based on a Pruefer transformation of the differential equations.  Providing certain assumptions are met, the computed value of <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;will be correct to within a mixed absolute/relative error specified by <a class="arg" href="#TOL">TOL</a>.  D02KAF is a driver routine for the more complicated routine <a class="rout" href="../D02/d02kdf.xml">D02KDF</a> whose specification provides more details of the techniques used.</div><div class="paramtext">A good account of the theory of Sturm&#8211;Liouville systems, with some description of Pruefer transformations, is given in Chapter X of <a class="ref" href="#ref029">Birkhoff and Rota (1962)</a>.  An introduction to the use of Pruefer transformations for the numerical solution of eigenvalue problems arising from physics and chemistry is given in <a class="ref" href="#ref027">Bailey (1966)</a>.</div><h2 class="standard"><a class="sec" name="references" id="references"/>4&#160;&#160;References</h2><div class="paramtext"><a name="ref027" id="ref027"/>Bailey P B (1966)  Sturm&#8211;Liouville eigenvalues via a phase function <i>SIAM J. Appl. Math. </i> <b>14</b> 242&#8211;249 </div>
<div class="paramtext"><a name="ref029" id="ref029"/>Birkhoff G and Rota G C (1962)  <i>Ordinary Differential Equations</i> Ginn &amp; Co., Boston and New York </div><h2 class="standard"><a class="sec" name="parameters" id="parameters"/>5&#160;&#160;Parameters</h2>
<dl><dt class="paramhead"><a name="XL" id="XL"/>1: &#160;&#160;&#8194; XL &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dt class="multi-paramhead"><a name="XR" id="XR"/>2: &#160;&#160;&#8194; XR &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the left- and right-hand end points <m:math><m:mi>a</m:mi></m:math>&#160;and <m:math><m:mi>b</m:mi></m:math>&#160;respectively, of the interval of definition of the problem.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#XL"><m:mi mathcolor="#EE0000" mathvariant="bold">XL</m:mi></m:maction><m:mo>&lt;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#XR"><m:mi mathcolor="#EE0000" mathvariant="bold">XR</m:mi></m:maction></m:math>.
</div></dd><dt class="paramhead"><a name="COEFFN" id="COEFFN"/>3: &#160;&#160;&#8194; COEFFN &#8211; SUBROUTINE, supplied by the user.<span class="pclass">External Procedure</span></dt><dd>
<div class="paramtext"><a class="arg" href="#COEFFN">COEFFN</a> must compute the values of the coefficient functions <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;and <m:math><m:mi>q</m:mi><m:mfenced separators=""><m:mi>x</m:mi><m:mo>;</m:mo><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;for given values of <m:math><m:mi>x</m:mi></m:math>&#160;and <m:math><m:mi>&#955;</m:mi></m:math>. <a class="sec" href="#description">Section 3</a> states the conditions which <m:math><m:mi>p</m:mi></m:math>&#160;and <m:math><m:mi>q</m:mi></m:math>&#160;must satisfy.
</div><div class="subprog">
<div class="paramtext">The specification of <a class="arg" href="#COEFFN">COEFFN</a> is:</div><table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;COEFFN&#160;(</td><td class="tdfspec2"><a class="arg" href="../D02/d02kaf.xml#COEFFN_P">P</a>, <a class="arg" href="../D02/d02kaf.xml#COEFFN_Q">Q</a>, <a class="arg" href="../D02/d02kaf.xml#COEFFN_DQDL">DQDL</a>, <a class="arg" href="../D02/d02kaf.xml#COEFFN_X">X</a>, <a class="arg" href="../D02/d02kaf.xml#COEFFN_ELAM">ELAM</a>, <a class="arg" href="../D02/d02kaf.xml#COEFFN_JINT">JINT</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">JINT</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">P, Q, DQDL, X, ELAM</td></tr></table>
<dl><dt class="paramhead"><a name="COEFFN_P" id="COEFFN_P"/>1: &#160;&#160;&#8194; P &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the value of <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;for the current value of <m:math><m:mi>x</m:mi></m:math>.</div></dd><dt class="paramhead"><a name="COEFFN_Q" id="COEFFN_Q"/>2: &#160;&#160;&#8194; Q &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the value of <m:math><m:mi>q</m:mi><m:mfenced separators=""><m:mi>x</m:mi><m:mo>;</m:mo><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;for the current value of <m:math><m:mi>x</m:mi></m:math>&#160;and the current trial value of <m:math><m:mi>&#955;</m:mi></m:math>.</div></dd><dt class="paramhead"><a name="COEFFN_DQDL" id="COEFFN_DQDL"/>3: &#160;&#160;&#8194; DQDL &#8211; <span class="bitalic">double precision</span><span class="pclass">Output</span></dt><dd>
<div class="paramtext"><i>On exit</i>: the value of <m:math>
 <m:mfrac other="display">
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>q</m:mi></m:mrow>
  <m:mrow><m:mo>&#8706;</m:mo><m:mi>&#955;</m:mi></m:mrow>
 </m:mfrac>
 <m:mfenced separators=""><m:mi>x</m:mi><m:mo>;</m:mo><m:mi>&#955;</m:mi></m:mfenced>
</m:math>&#160;for the current value of <m:math><m:mi>x</m:mi></m:math>&#160;and the current trial value of <m:math><m:mi>&#955;</m:mi></m:math>. However <a class="arg" href="../D02/d02kaf.xml#COEFFN_DQDL">DQDL</a> is only used in error estimation and, in the rare cases where it may be difficult to evaluate, an approximation (say to within <m:math><m:mn>20</m:mn><m:mo>%</m:mo></m:math>) will suffice.</div></dd><dt class="paramhead"><a name="COEFFN_X" id="COEFFN_X"/>4: &#160;&#160;&#8194; X &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the current value of <m:math><m:mi>x</m:mi></m:math>.</div></dd><dt class="paramhead"><a name="COEFFN_ELAM" id="COEFFN_ELAM"/>5: &#160;&#160;&#8194; ELAM &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the current trial value of the eigenvalue parameter <m:math><m:mi>&#955;</m:mi></m:math>.</div></dd><dt class="paramhead"><a name="COEFFN_JINT" id="COEFFN_JINT"/>6: &#160;&#160;&#8194; JINT &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext">This parameter is included for compatibility with the more complex routine <a class="rout" href="../D02/d02kdf.xml">D02KDF</a> (which is called by D02KAF).</div>
<div class="paramtext"><i>On entry</i>: need not be set.</div></dd></dl>
</div>
<div class="paramtext"><a class="arg" href="#COEFFN">COEFFN</a> must be declared as EXTERNAL in the (sub)program from which D02KAF is called. Parameters denoted as <span class="italic">Input</span>  must <b>not</b>  be changed by this procedure.</div>
</dd><dt class="paramhead"><a name="BCOND" id="BCOND"/>4: &#160;&#160;&#8194; BCOND(<m:math><m:mn>3</m:mn></m:math>,<m:math><m:mn>2</m:mn></m:math>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;must contain the numbers <m:math><m:msub><m:mi>a</m:mi><m:mn>1</m:mn></m:msub></m:math>, <m:math><m:msub><m:mi>a</m:mi><m:mn>2</m:mn></m:msub></m:math>&#160;specifying the left-hand boundary condition in the form

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msub><m:mi>a</m:mi><m:mn>2</m:mn></m:msub>
<m:mi>y</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced>
<m:mo>=</m:mo>
<m:msub><m:mi>a</m:mi><m:mn>1</m:mn></m:msub>
<m:mi>p</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced>
<m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>

where <m:math><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mn>2</m:mn></m:msub></m:mfenced><m:mo>+</m:mo><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>a</m:mi><m:mn>1</m:mn></m:msub><m:mi>p</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced></m:mfenced><m:mo>&#8800;</m:mo><m:mn>0</m:mn></m:math>.
<div class="paramtext"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn><m:mn>2</m:mn></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn><m:mn>2</m:mn></m:mfenced></m:mrow></m:math>&#160;must contain <m:math><m:msub><m:mi>b</m:mi><m:mn>1</m:mn></m:msub></m:math>, <m:math><m:msub><m:mi>b</m:mi><m:mn>2</m:mn></m:msub></m:math>&#160;such that 

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block"> 
<m:msub><m:mi>b</m:mi><m:mn>2</m:mn></m:msub>
<m:mi>y</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced>
<m:mo>=</m:mo>
<m:msub><m:mi>b</m:mi><m:mn>1</m:mn></m:msub>
<m:mi>p</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced>
<m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced>
</m:math></td><td class="formula2"/></tr></table></div>
 
where <m:math><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>b</m:mi><m:mn>2</m:mn></m:msub></m:mfenced><m:mo>+</m:mo><m:mfenced open="|" close="|" separators=""><m:msub><m:mi>b</m:mi><m:mn>1</m:mn></m:msub><m:mi>p</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced></m:mfenced><m:mo>&#8800;</m:mo><m:mn>0</m:mn></m:math>.</div>
<div class="paramtext">Note the occurrence of <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced></m:math>, <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced></m:math>&#160;in these formulae.</div>
</div>
<div class="paramtext"><i>On exit</i>: <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mn>1</m:mn></m:mfenced></m:mrow></m:math>&#160;and <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#BCOND"><m:mi mathcolor="#EE0000" mathvariant="bold">BCOND</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn><m:mn>2</m:mn></m:mfenced></m:mrow></m:math>&#160;hold values <m:math><m:msub><m:mi>&#963;</m:mi><m:mi>l</m:mi></m:msub><m:mo>,</m:mo><m:msub><m:mi>&#963;</m:mi><m:mi>r</m:mi></m:msub></m:math>&#160;estimating the sensitivity of the computed eigenvalue to changes in the boundary conditions. These values should only be of interest if the boundary conditions are, in some sense, an approximation to some &#8216;true&#8217; boundary conditions. For example, if the range [<a class="arg" href="#XL">XL</a>, <a class="arg" href="#XR">XR</a>] should really be <m:math><m:mfenced separators="" open="[" close="]"><m:mn>0</m:mn><m:mo>,</m:mo><m:mi>&#8734;</m:mi></m:mfenced></m:math>&#160;but instead <a class="arg" href="#XR">XR</a> has been given a large value and the boundary conditions at infinity applied at <a class="arg" href="#XR">XR</a>, then the sensitivity parameter <m:math><m:msub><m:mi>&#963;</m:mi><m:mi>r</m:mi></m:msub></m:math>&#160;may be of interest. Refer to <a class="sec" href="../D02/d02kdf.xml#fcomments5">Section 8.5</a> in D02KDF, for the actual meaning of <m:math><m:msub><m:mi>&#963;</m:mi><m:mi>r</m:mi></m:msub></m:math>&#160;and <m:math><m:msub><m:mi>&#963;</m:mi><m:mi>l</m:mi></m:msub></m:math>.</div></dd><dt class="paramhead"><a name="K" id="K"/>5: &#160;&#160;&#8194; K &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <m:math><m:mi>k</m:mi></m:math>, the index of the required eigenvalue when the eigenvalues are ordered 
 
<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
  <m:msub><m:mi>&#955;</m:mi><m:mn>0</m:mn></m:msub>
  <m:mo>&lt;</m:mo>
  <m:msub><m:mi>&#955;</m:mi><m:mn>1</m:mn></m:msub>
  <m:mo>&lt;</m:mo>
  <m:msub><m:mi>&#955;</m:mi><m:mn>2</m:mn></m:msub>
  <m:mo>&lt;</m:mo>
  <m:mo>&#8943;</m:mo>
  <m:mo>&lt;</m:mo>
  <m:msub><m:mi>&#955;</m:mi><m:mi>k</m:mi></m:msub>
  <m:mo>&lt;</m:mo>
  <m:mo>&#8943;</m:mo>
  <m:mtext>.</m:mtext>
 </m:math></td><td class="formula2"/></tr></table></div></div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#K"><m:mi mathcolor="#EE0000" mathvariant="bold">K</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="TOL" id="TOL"/>6: &#160;&#160;&#8194; TOL &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the tolerance parameter which determines the accuracy of the computed eigenvalue. The error estimate held in <a class="arg" href="#DELAM">DELAM</a> on exit satisfies the mixed absolute/relative error test 
<div class="formula-eqn"><a name="eqn1" id="eqn1"/><table class="formula-eqn"><tr><td class="formula-eqn"><m:math display="block"> <m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction><m:mo>&#8804;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#TOL"><m:mi mathcolor="#EE0000" mathvariant="bold">TOL</m:mi></m:maction><m:mo>&#215;</m:mo><m:mrow><m:mi>max</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mn>1.0</m:mn><m:mo>,</m:mo><m:mfenced open="|" close="|" separators=""><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction></m:mfenced></m:mfenced></m:mrow><m:mtext>,</m:mtext> </m:math></td><td class="formula-eqn2">
      (1)
     </td></tr></table></div>
 where <a class="arg" href="#ELAM">ELAM</a> is the final estimate of the eigenvalue. <a class="arg" href="#DELAM">DELAM</a> is usually somewhat smaller than the right-hand side of <a class="eqn" href="#eqn1">(1)</a> but not several orders of magnitude smaller.</div><div class="paramtext"><i>Constraint</i>:
  <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#TOL"><m:mi mathcolor="#EE0000" mathvariant="bold">TOL</m:mi></m:maction><m:mo>&gt;</m:mo><m:mn>0.0</m:mn></m:math>.
</div></dd><dt class="paramhead"><a name="ELAM" id="ELAM"/>7: &#160;&#160;&#8194; ELAM &#8211; <span class="bitalic">double precision</span><span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: an initial estimate of the eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>.</div>
<div class="paramtext"><i>On exit</i>: the final computed estimate, whether or not an error occurred.</div></dd><dt class="paramhead"><a name="DELAM" id="DELAM"/>8: &#160;&#160;&#8194; DELAM &#8211; <span class="bitalic">double precision</span><span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: an indication of the scale of the problem in the <m:math><m:mi>&#955;</m:mi></m:math>-direction. <a class="arg" href="#DELAM">DELAM</a> holds the initial &#8216;search step&#8217; (positive or negative). Its value is not critical, but the first two trial evaluations are made at <a class="arg" href="#ELAM">ELAM</a> and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction><m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction></m:math>, so the routine will work most efficiently if the eigenvalue lies between these values. A reasonable choice (if a closer bound is not known) is about half the distance between adjacent eigenvalues in the neighbourhood of the one sought. In practice, there will often be a problem, similar to the one in hand but with known eigenvalues, which will help one to choose initial values for <a class="arg" href="#ELAM">ELAM</a> and <a class="arg" href="#DELAM">DELAM</a>.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction><m:mo>=</m:mo><m:mn>0.0</m:mn></m:math>&#160;on entry, it is given the default value of <m:math><m:mn>0.25</m:mn><m:mo>&#215;</m:mo><m:mrow><m:mi>max</m:mi><m:mspace width="0.125em"/><m:mfenced separators=""><m:mn>1.0</m:mn><m:mo>,</m:mo><m:mfenced open="|" close="|" separators=""><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction></m:mfenced></m:mfenced></m:mrow></m:math>.</div>
</div>
<div class="paramtext"><i>On exit</i>: if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>, <a class="arg" href="#DELAM">DELAM</a> holds an estimate of the absolute error in the computed eigenvalue, that is <m:math><m:mfenced open="|" close="|" separators=""><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover><m:mo>-</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction></m:mfenced><m:mo>&#8771;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction></m:math>, where <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;is the true eigenvalue.
<div class="paramtext">If <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>&#8800;</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>, <a class="arg" href="#DELAM">DELAM</a> may hold an estimate of the error, or its initial value, depending on the value of <a class="arg" href="#IFAIL">IFAIL</a>. See <a class="sec" href="#errors">Section 6</a> for further details.</div>
</div></dd><dt class="paramhead"><a name="MONIT" id="MONIT"/>9: &#160;&#160;&#8194; MONIT &#8211; SUBROUTINE, supplied by the NAG Library or the user.<span class="pclass">External Procedure</span></dt><dd>
<div class="paramtext"><a class="arg" href="#MONIT">MONIT</a> is called by D02KAF at the end of each iteration for <m:math><m:mi>&#955;</m:mi></m:math>&#160;and allows you to monitor the course of the computation by printing out the parameters (see <a class="sec" href="#example">Section 9</a> for an example).</div>
<div class="paramtext">If no monitoring is required, the dummy (sub)program D02KAY may be used. (D02KAY is included in the NAG Library.)</div><div class="subprog">
<div class="paramtext">The specification of <a class="arg" href="#MONIT">MONIT</a> is:</div><table class="fspec"><tr><td class="tdfspec1">SUBROUTINE&#160;MONIT&#160;(</td><td class="tdfspec2"><a class="arg" href="../D02/d02kaf.xml#MONIT_NIT">NIT</a>, <a class="arg" href="../D02/d02kaf.xml#MONIT_IFLAG">IFLAG</a>, <a class="arg" href="../D02/d02kaf.xml#MONIT_ELAM">ELAM</a>, <a class="arg" href="../D02/d02kaf.xml#MONIT_FINFO">FINFO</a>)</td></tr><tr><td class="tdfspec1">INTEGER</td><td class="tdfspec2">NIT, IFLAG</td></tr><tr><td class="tdfspec1"><b><i>double&#160;precision</i></b></td><td class="tdfspec2">ELAM, FINFO(15)</td></tr></table>
<dl><dt class="paramhead"><a name="MONIT_NIT" id="MONIT_NIT"/>1: &#160;&#160;&#8194; NIT &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: 15 minus the number of iterations used so far in the search for <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>. (Up to <m:math><m:mn>15</m:mn></m:math>&#160;iterations are permitted.)</div></dd><dt class="paramhead"><a name="MONIT_IFLAG" id="MONIT_IFLAG"/>2: &#160;&#160;&#8194; IFLAG &#8211; INTEGER<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: describes what phase the computation is in. 

<dl>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math></dt>
<dd>An error occurred in the computation at this iteration; an error exit from D02KAF will follow.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>The routine is trying to bracket the eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>.</dd>
<dt class="paramval"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>=</m:mo><m:mn>2</m:mn></m:math></dt>
<dd>The routine is converging to the eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;(having already bracketed it).</dd></dl>
<div class="paramtext">Normally, the iteration will terminate after a sequence of iterates with <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>=</m:mo><m:mn>2</m:mn></m:math>, but occasionally the bracket on <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>&#160;thus determined will not be sufficiently small and the iteration will be repeated with tighter accuracy control.</div>
</div></dd><dt class="paramhead"><a name="MONIT_ELAM" id="MONIT_ELAM"/>3: &#160;&#160;&#8194; ELAM &#8211; <span class="bitalic">double precision</span><span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: the current trial value of <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>.</div></dd><dt class="paramhead"><a name="MONIT_FINFO" id="MONIT_FINFO"/>4: &#160;&#160;&#8194; FINFO(<m:math><m:mn>15</m:mn></m:math>) &#8211; <span class="bitalic">double precision</span> array<span class="pclass">Input</span></dt><dd>
<div class="paramtext"><i>On entry</i>: information about the behaviour of the shooting method, and diagnostic information in the case of errors. It should not normally be printed in full if no error has occurred (that is, if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&#8805;</m:mo><m:mn>0</m:mn></m:math>), though the first few components may be of interest to you. In case of an error (<m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>) all the components of <a class="arg" href="../D02/d02kaf.xml#MONIT_FINFO">FINFO</a> should be printed.
<div class="paramtext">The contents of <a class="arg" href="../D02/d02kaf.xml#MONIT_FINFO">FINFO</a> are as follows:

<dl>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>1</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The current value of the &#8216;miss-distance&#8217; or &#8216;residual&#8217; function <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;on which the shooting method is based. <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn></m:math>&#160;in theory. This is set to zero if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>An estimate of the quantity <m:math><m:mi>&#8706;</m:mi><m:mi>&#955;</m:mi></m:math>&#160;defined as follows. Consider the perturbation in the miss-distance <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;that would result if the local error in the solution of the differential equation were always positive and equal to its maximum permitted value. Then <m:math><m:mi>&#8706;</m:mi><m:mi>&#955;</m:mi></m:math>&#160;is the perturbation in <m:math><m:mi>&#955;</m:mi></m:math>&#160;that would have the same effect on <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>&#955;</m:mi></m:mfenced></m:math>. Thus, at the zero of <m:math><m:mi>f</m:mi><m:mfenced separators=""><m:mi>&#955;</m:mi></m:mfenced><m:mo>,</m:mo><m:mfenced open="|" close="|" separators=""><m:mi>&#8706;</m:mi><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;is an approximate bound on the perturbation of the zero (that is the eigenvalue) caused by errors in numerical solution. If <m:math><m:mi>&#8706;</m:mi><m:mi>&#955;</m:mi></m:math>&#160;is very large then it is possible that there has been a programming error in <a class="arg" href="#COEFFN">COEFFN</a> such that <m:math><m:mi>q</m:mi></m:math>&#160;is independent of <m:math><m:mi>&#955;</m:mi></m:math>. If this is the case, an error exit with <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq5"><m:mn mathcolor="#003399" mathvariant="bold">5</m:mn></m:maction></m:math>&#160;should follow. <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>2</m:mn></m:mfenced></m:mrow></m:math>&#160;is set to zero if <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>3</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The number of internal iterations, using the same value of <m:math><m:mi>&#955;</m:mi></m:math>&#160;and tighter accuracy tolerances, needed to bring the accuracy (that is, the value of <m:math><m:mi>&#8706;</m:mi><m:mi>&#955;</m:mi></m:math>) to an acceptable value. Its value should normally be <m:math><m:mn>1.0</m:mn></m:math>, and should almost never exceed <m:math><m:mn>2.0</m:mn></m:math>.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>4</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The number of calls to <a class="arg" href="#COEFFN">COEFFN</a> at this iteration.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>5</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The number of successful steps taken by the internal differential equation solver at this iteration. A step is successful if it is used to advance the integration.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>6</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The number of unsuccessful steps used by the internal integrator at this iteration.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>7</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The number of successful steps at the maximum step size taken by the internal integrator at this iteration.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>8</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>Not used.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>9</m:mn></m:mfenced></m:mrow></m:math>&#160;to <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>15</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>Set to zero, unless <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_IFLAG"><m:mi mathcolor="#EE0000" mathvariant="bold">IFLAG</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>&#160;in which case they hold the following values describing the point of failure: 

<dl>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>9</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>1 or <m:math><m:mn>2</m:mn></m:math>&#160;depending on whether integration was in a forward or backward direction at the time of failure.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>10</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The value of the independent variable, <m:math><m:mi>x</m:mi></m:math>, the point at which the error occurred.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>11</m:mn></m:mfenced></m:mrow></m:math>, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>12</m:mn></m:mfenced></m:mrow></m:math>, <m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>13</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The current values of the Pruefer dependent variables <m:math><m:mi>&#946;</m:mi></m:math>, <m:math><m:mi>&#981;</m:mi></m:math>&#160;and <m:math><m:mi>&#961;</m:mi></m:math>&#160;respectively. See <a class="sec" href="../D02/d02kef.xml#description">Section 3</a> in D02KEF for a description of these variables.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>14</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The local-error tolerance being used by the internal integrator at the point of failure.</dd>
<dt class="paramval"><m:math><m:mrow><m:maction actiontype="link" dsi:type="simple" dsi:href="#MONIT_FINFO"><m:mi mathcolor="#EE0000" mathvariant="bold">FINFO</m:mi></m:maction><m:mfenced separators="," open="(" close=")"><m:mn>15</m:mn></m:mfenced></m:mrow></m:math></dt>
<dd>The last integration mesh point.</dd></dl></dd></dl>
</div>
</div></dd></dl>
</div>
<div class="paramtext"><a class="arg" href="#MONIT">MONIT</a> must be declared as EXTERNAL in the (sub)program from which D02KAF is called. Parameters denoted as <span class="italic">Input</span>  must <b>not</b>  be changed by this procedure.</div>
</dd><dt class="paramhead"><a name="IFAIL" id="IFAIL"/>10: &#8194; IFAIL &#8211; INTEGER<span class="pclass">Input/Output</span></dt><dd>
<div class="paramtext"><i>On entry</i>: <a class="arg" href="#IFAIL">IFAIL</a> must be set to <m:math><m:mn>0</m:mn></m:math>, <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>. If you are unfamiliar with this parameter you should refer to <a class="sec" href="../GENINT/essint.xml#library3">Section 3.3</a> in  the Essential Introduction for details.</div>
<div class="paramtext"><i>On exit</i>: <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;unless the routine detects an error (see <a class="sec" href="#errors">Section 6</a>). <div class="paramtext">For environments where it might be inappropriate to halt program execution when an error is detected, the value <m:math><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn>1</m:mn></m:math>&#160;is recommended.  If the output of error messages is undesirable, then the value <m:math><m:mn>1</m:mn></m:math>&#160;is recommended.  Otherwise, if you are not familiar with this parameter, the recommended value is <m:math><m:mn>0</m:mn></m:math>.  <b>When the value <m:math><m:mrow><m:mo>-</m:mo><m:mn mathvariant="bold">1</m:mn></m:mrow><m:mtext>&#8203; or &#8203;</m:mtext><m:mn mathvariant="bold">1</m:mn></m:math>&#160;is used it is essential to test the value of <a class="arg" href="#IFAIL">IFAIL</a> on exit.</b></div></div></dd></dl><h2 class="standard"><a class="sec" name="errors" id="errors"/>6&#160;&#160;Error Indicators and Warnings</h2>
<div class="paramtext">If on entry <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">0</m:mn></m:maction></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#errors"><m:mn mathcolor="#003399" mathvariant="bold">-1</m:mn></m:maction></m:math>, explanatory error messages are output on the current error message unit (as defined by <a class="rout" href="../X04/x04aaf.xml">X04AAF</a>).</div><div class="paramtext">Errors or warnings detected by the routine:</div>
<dl class="ifail">
<dt class="errorhead"><a name="IFeq1" id="IFeq1"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>1</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#K"><m:mi mathcolor="#EE0000" mathvariant="bold">K</m:mi></m:maction><m:mo>&lt;</m:mo><m:mn>0</m:mn></m:math>,</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#TOL"><m:mi mathcolor="#EE0000" mathvariant="bold">TOL</m:mi></m:maction><m:mo>&#8804;</m:mo><m:mn>0</m:mn></m:math>.</td></tr></table>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq2" id="IFeq2"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>2</m:mn></m:math></dt>
<dd>
<table class="ifail"><tr><td class="ifail1">On&#160;entry,</td><td class="ifail2-90"><m:math><m:msub><m:mi>a</m:mi><m:mn>1</m:mn></m:msub><m:mo>=</m:mo><m:mi>p</m:mi><m:mfenced separators=""><m:mi>a</m:mi></m:mfenced><m:msub><m:mi>a</m:mi><m:mn>2</m:mn></m:msub><m:mo>=</m:mo><m:mn>0</m:mn></m:math>,</td></tr><tr><td class="ifail1">or</td><td class="ifail2-90"><m:math><m:msub><m:mi>b</m:mi><m:mn>1</m:mn></m:msub><m:mo>=</m:mo><m:mi>p</m:mi><m:mfenced separators=""><m:mi>b</m:mi></m:mfenced><m:msub><m:mi>b</m:mi><m:mn>2</m:mn></m:msub><m:mo>=</m:mo><m:mn>0</m:mn></m:math>,</td></tr></table>
<div class="paramtext">(the array <a class="arg" href="#BCOND">BCOND</a> has been set up incorrectly).</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq3" id="IFeq3"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>3</m:mn></m:math></dt>
<dd>
<div class="paramtext">At some point between <a class="arg" href="#XL">XL</a> and <a class="arg" href="#XR">XR</a> the value of <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;computed by <a class="arg" href="#COEFFN">COEFFN</a> became zero or changed sign. See the last call of <a class="arg" href="#MONIT">MONIT</a> for details.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq4" id="IFeq4"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>4</m:mn></m:math></dt>
<dd>
<div class="paramtext">After <m:math><m:mn>15</m:mn></m:math>&#160;iterations the eigenvalue had not been found to the required accuracy.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq5" id="IFeq5"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>5</m:mn></m:math></dt>
<dd>
<div class="paramtext">The &#8216;bracketing&#8217; phase (with <a class="arg" href="../D02/d02kaf.xml#MONIT_IFLAG">IFLAG</a> of the <a class="arg" href="#MONIT">MONIT</a> equal to <m:math><m:mn>1</m:mn></m:math>) failed to bracket the eigenvalue within ten iterations.  This is caused by an error in formulating the problem (for example, <m:math><m:mi>q</m:mi></m:math>&#160;is independent of <m:math><m:mi>&#955;</m:mi></m:math>), or by very poor initial estimates of <a class="arg" href="#ELAM">ELAM</a> and <a class="arg" href="#DELAM">DELAM</a>.</div>
<div class="paramtext">On exit, <a class="arg" href="#ELAM">ELAM</a> and <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction><m:mo>+</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction></m:math>&#160;give the end points of the interval within which no eigenvalue was located by the routine.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq6" id="IFeq6"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>6</m:mn></m:math></dt>
<dd>
<div class="paramtext">To obtain the desired accuracy the local error tolerance was set so small at the start of some sub-interval that the differential equation solver could not choose an initial step size large enough to make significant progress. See the last call of <a class="arg" href="#MONIT">MONIT</a> for diagnostics.</div></dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq7" id="IFeq7"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>7</m:mn></m:math></dt>
<dd>
<div class="paramtext">At some point the step size in the differential equation solver was reduced to a value too small to make significant progress (for the same reasons as with <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq6"><m:mn mathcolor="#003399" mathvariant="bold">6</m:mn></m:maction></m:math>).  This could be due to pathological behaviour of <m:math><m:mi>p</m:mi><m:mfenced separators=""><m:mi>x</m:mi></m:mfenced></m:math>&#160;and <m:math><m:mi>q</m:mi><m:mfenced separators=""><m:mi>x</m:mi><m:mo>;</m:mo><m:mi>&#955;</m:mi></m:mfenced></m:math>&#160;or to an unreasonable accuracy requirement or to the current value of <m:math><m:mi>&#955;</m:mi></m:math>&#160;making the equations &#8216;stiff&#8217;.  See the last call of <a class="arg" href="#MONIT">MONIT</a> for details.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq8" id="IFeq8"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>8</m:mn></m:math></dt>
<dd>
<div class="paramtext"><a class="arg" href="#TOL">TOL</a> is too small for the problem being solved and the <span class="bitalic">machine precision</span> being used.  The local value of <a class="arg" href="#ELAM">ELAM</a> should be a very good approximation to the eigenvalue <m:math><m:mover><m:mi>&#955;</m:mi><m:mo>~</m:mo></m:mover></m:math>.</div>
</dd>
</dl><dl class="ifail">
<dt class="errorhead"><a name="IFeq9" id="IFeq9"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>9</m:mn></m:math></dt>
<dd>
<div class="paramtext"><a class="rout" href="../C05/c05azf.xml">C05AZF</a>, called by D02KAF, has terminated with the error exit corresponding to a pole of the matching function.  This error exit should not occur, but if it does, try solving the problem again with a smaller value for <a class="arg" href="#TOL">TOL</a>.</div>
</dd>
</dl>
<div class="paramtext"><b>Note:</b> error exits with <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq2"><m:mn mathcolor="#003399" mathvariant="bold">2</m:mn></m:maction></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq3"><m:mn mathcolor="#003399" mathvariant="bold">3</m:mn></m:maction></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq6"><m:mn mathcolor="#003399" mathvariant="bold">6</m:mn></m:maction></m:math>, <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq7"><m:mn mathcolor="#003399" mathvariant="bold">7</m:mn></m:maction></m:math>&#160;or <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFeq9"><m:mn mathcolor="#003399" mathvariant="bold">9</m:mn></m:maction></m:math>&#160;are caused by the inability to set up or solve the differential equation at some iteration and will be immediately preceded by a call of <a class="arg" href="#MONIT">MONIT</a> giving diagnostic information.</div>
<dl class="ifail">
<dt class="errorhead"><a name="IFeq10" id="IFeq10"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>10</m:mn></m:math></dt>
<dt class="multi-errorhead"><a name="IFeq11" id="IFeq11"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>11</m:mn></m:math></dt>
<dt class="multi-errorhead"><a name="IFeq12" id="IFeq12"/><m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#IFAIL"><m:mi mathcolor="#EE0000" mathvariant="bold">IFAIL</m:mi></m:maction><m:mo>=</m:mo><m:mn>12</m:mn></m:math></dt>
<dd>
<div class="paramtext">A serious error has occurred in an internal call to an interpolation routine. Check all (sub)program calls and array dimensions. Seek expert help.</div></dd>
</dl><h2 class="standard"><a class="sec" name="accuracy" id="accuracy"/>7&#160;&#160;Accuracy</h2>
<div class="paramtext">The absolute accuracy of the computed eigenvalue is usually within a mixed absolute/relative bound defined by <a class="arg" href="#TOL">TOL</a> (as defined above).</div><h2 class="standard"><a class="sec" name="fcomments" id="fcomments"/>8&#160;&#160;Further Comments</h2>
<div class="paramtext">The time taken by D02KAF depends on the complexity of the coefficient functions, whether they or their derivatives are rapidly changing, the tolerance demanded, and how many iterations are needed to obtain convergence.  The amount of work per iteration is roughly doubled when <a class="arg" href="#TOL">TOL</a> is divided by <m:math><m:mn>16</m:mn></m:math>.  To make the most economical use of the routine, one should try to obtain good initial values for <a class="arg" href="#ELAM">ELAM</a> and <a class="arg" href="#DELAM">DELAM</a>.</div><div class="paramtext">See <a class="sec" href="../D02/d02kdf.xml#fcomments">Section 8</a> in D02KDF for a discussion of the technique used.</div><h2 class="standard"><a class="sec" name="example" id="example"/>9&#160;&#160;Example</h2>
<div class="paramtext">This example finds the fourth eigenvalue of Mathieu's equations

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msup><m:mi>y</m:mi><m:mrow><m:mo>&#8242;</m:mo><m:mo>&#8242;</m:mo></m:mrow></m:msup><m:mo>+</m:mo><m:mfenced separators=""><m:mi>&#955;</m:mi><m:mo>-</m:mo><m:mn>2</m:mn><m:mi>q</m:mi><m:mrow><m:mi>cos</m:mi><m:mo>&#8289;</m:mo><m:mrow><m:mn>2</m:mn><m:mi>x</m:mi></m:mrow></m:mrow></m:mfenced><m:mi>y</m:mi><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

with boundary conditions

<div class="formula"><table class="formula"><tr><td class="formula"><m:math display="block">
<m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mn>0</m:mn></m:mfenced><m:mo>=</m:mo><m:msup><m:mi>y</m:mi><m:mo>&#8242;</m:mo></m:msup><m:mfenced separators=""><m:mi>&#960;</m:mi> </m:mfenced><m:mo>=</m:mo><m:mn>0</m:mn>
</m:math></td><td class="formula2"/></tr></table></div>

and <m:math><m:mi>q</m:mi><m:mo>=</m:mo><m:mn>5</m:mn></m:math>.  We use a starting value <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#ELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">ELAM</m:mi></m:maction><m:mo>=</m:mo><m:mn>15.0</m:mn></m:math>&#160;and a step <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#DELAM"><m:mi mathcolor="#EE0000" mathvariant="bold">DELAM</m:mi></m:maction><m:mo>=</m:mo><m:mn>4.0</m:mn></m:math>.  We illustrate the effect of varying <a class="arg" href="#TOL">TOL</a> by choosing <m:math><m:maction actiontype="link" dsi:type="simple" dsi:href="#TOL"><m:mi mathcolor="#EE0000" mathvariant="bold">TOL</m:mi></m:maction><m:mo>=</m:mo><m:mtext>1.0D&#8722;5</m:mtext></m:math>&#160;and <m:math><m:mtext>1.0D&#8722;6</m:mtext></m:math>&#160;(note the change in the output value of the error estimate <a class="arg" href="#DELAM">DELAM</a>).  The value of <m:math><m:mi>&#960;</m:mi></m:math>&#160;is calculated using <a class="rout" href="../X01/x01aaf.xml">X01AAF</a>.</div><h3 class="standard"><a class="sec" name="examtext" id="examtext"/>9.1&#160;&#160;Program Text</h3>
<p><a class="verbatimref" href="../../examples/source/d02kafe.f">Program Text (d02kafe.f)</a></p><h3 class="standard"><a class="sec" name="examdata" id="examdata"/>9.2&#160;&#160;Program Data</h3>
<div class="paramtext">None.</div><h3 class="standard"><a class="sec" name="examresults" id="examresults"/>9.3&#160;&#160;Program Results</h3>
<p><a class="verbatimref" href="../../examples/baseresults/d02kafe.r">Program Results (d02kafe.r)</a></p>
<hr/><div><a class="rout" href="../../pdf/D02/d02kaf.pdf">D02KAF (PDF version)</a></div><div><a class="chap" href="d02conts.xml">D02 Chapter Contents</a></div><div><a class="chapint" href="d02intro.xml">D02 Chapter Introduction</a></div>
<div><a class="htmltoc" href="../FRONTMATTER/manconts.xml">NAG Library Manual</a></div>
<div><hr/><a class="genint" href="../FRONTMATTER/copyright.xml">&#169; The Numerical Algorithms Group Ltd, Oxford, UK. 2009</a></div></body></html>
