<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="0"/><View-Properties><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" bullet="dash" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Dash Item" rightmargin="0.0" spaceabove="3.0" spacebelow="3.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 3" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Author" rightmargin="0.0" spaceabove="8.0" spacebelow="8.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 2" rightmargin="0.0" spaceabove="8.0" spacebelow="2.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 1" rightmargin="0.0" spaceabove="6.0" spacebelow="6.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Maple Plot" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Title" rightmargin="0.0" spaceabove="12.0" spacebelow="12.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.5" name="Maple Output" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" bullet="dot" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Bullet Item" rightmargin="0.0" spaceabove="3.0" spacebelow="3.0"/><Font background="[0,0,0]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="true" name="Heading 3" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" name="_cstyle289"/><Font background="[0,0,0]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="false" name="Heading 2" readonly="false" size="14" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle288"/><Font background="[0,0,0]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="false" name="Heading 1" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle287"/><Font background="[0,0,0]" bold="true" name="_cstyle286"/><Font background="[0,0,0]" bold="true" name="_cstyle285"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input"/><Font background="[0,0,0]" bold="true" name="_cstyle284"/><Font background="[0,0,0]" bold="true" name="_cstyle283"/><Font background="[0,0,0]" italic="true" name="_cstyle282"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle281"/><Font background="[0,0,0]" italic="true" name="_cstyle280"/><Font background="[0,0,0]" bold="false" executable="false" family="Serif" foreground="[0,0,0]" italic="false" name="Normal" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Text" opaque="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle279"/><Font background="[0,0,0]" italic="true" name="_cstyle278"/><Font background="[0,0,0]" italic="true" name="_cstyle277"/><Font background="[0,0,0]" italic="true" name="_cstyle276"/><Font background="[0,0,0]" italic="true" name="_cstyle275"/><Font background="[0,0,0]" italic="true" name="_cstyle274"/><Font background="[0,0,0]" foreground="[0,0,255]" name="_cstyle273"/><Font background="[0,0,0]" foreground="[0,0,255]" name="_cstyle272"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle271"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle270"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math" opaque="false" size="12"/><Font background="[0,0,0]" bold="false" executable="false" family="Serif" foreground="[0,0,0]" italic="false" name="Author" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" family="Times New Roman" foreground="[255,0,0]" name="2D Input" underline="false"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle269"/><Font background="[0,0,0]" bold="true" name="_cstyle268"/><Font background="[0,0,0]" italic="true" name="_cstyle267"/><Font background="[0,0,0]" italic="true" name="_cstyle266"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle265"/><Font background="[0,0,0]" bold="true" family="Monospaced" name="_cstyle264" size="12"/><Font background="[0,0,0]" bold="true" name="_cstyle263"/><Font background="[0,0,0]" italic="true" name="_cstyle262"/><Font background="[0,0,0]" italic="true" name="_cstyle261"/><Font background="[0,0,0]" family="Times New Roman" foreground="[0,0,255]" name="2D Output" underline="false"/><Font background="[0,0,0]" bold="true" name="_cstyle260"/><Font background="[0,0,0]" bold="false" executable="false" family="Serif" foreground="[0,0,0]" italic="false" name="Bullet Item" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle259"/><Font background="[0,0,0]" italic="true" name="_cstyle258"/><Font background="[0,0,0]" italic="true" name="_cstyle257"/><Font background="[0,0,0]" foreground="[255,0,0]" name="_cstyle256"/><Font background="[0,0,0]" family="Times New Roman" name="2D Comment" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle297"/><Font background="[0,0,0]" bold="true" name="_cstyle296"/><Font background="[0,0,0]" bold="true" name="_cstyle295"/><Font background="[0,0,0]" italic="true" name="_cstyle294"/><Font background="[0,0,0]" italic="true" name="_cstyle293"/><Font background="[0,0,0]" italic="true" name="_cstyle292"/><Font background="[0,0,0]" italic="true" name="_cstyle291"/><Font background="[0,0,0]" italic="true" name="_cstyle290"/></Styles><Page-Numbers enabled="false" first-number="1" first-numbered-page="1" horizontal-location="right" style="Page Number" vertical-location="bottom"/><Group><Input><Text-field layout="Title" style="_cstyle256"><Font bold="true" executable="false" family="Serif" italic="false" size="18" underline="true">Hybrid Symbolic-Numeric Methods Applied to Definite Integrals and ODEs</Font></Text-field><Text-field layout="Author" style="Author">K.O. Geddes
Symbolic Computation Group
Department of Computer Science
University of Waterloo
Waterloo  ON  N2L 3G1
CANADA
http://daisy.uwaterloo.ca/~kogeddes</Text-field></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">Abstract</Text-field></Title><Text-field layout="Normal" style="Normal">A scientific computation environment such as Maple supports both symbolic and numeric mathematical computation.  By exploiting the paradigm of hybrid symbolic-numeric computation, an enhanced level of computational power can be achieved in various problem areas.  The strategy is to apply an appropriate combination of symbolic mathematical analysis and numerical computation.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Hybrid symbolic-numeric methods are applied in Maple for the evaluation of definite integrals in the presence of singularities.  For the case of solving ordinary differential equations, we have been investigating techniques to generate numerical update formulas for initial-value problems by applying a symbolic calculus of vector divided differences suggested by W. Kahan.</Text-field></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Hybrid Symbolic-Numeric Integration</Text-field></Title><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 1</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">intf := Int(exp(-x^3)/(x^2+1), x=0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSVpbnRmRzYiLUkkSW50RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2JComLUkkZXhwR0YoNiMsJCokSSJ4R0YlIiIkISIiIiIiLCYqJEYyIiIjRjVGNUY1RjQvRjI7IiIhRjU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The integral does not evaluate in symbolic mode.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">value(intf);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSRpbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkKiYtSSRleHBHRiU2IywkKiRJInhHRigiIiQhIiIiIiIsJiokRjAiIiNGM0YzRjNGMi9GMDsiIiFGMw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Evaluate to a numerical value via numerical integration.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">evalf(intf);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMkIitKJXAkXG0hIzU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Or to higher precision</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">evalf(intf, 25);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMkIjozJTQ4Y3UjUjJWcCRcbSEjRA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 2</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := sin(x)*ln(x)*exp(-x^3):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">intg := int(g, x=0..infinity);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSVpbnRnRzYiLUkkaW50RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2JCooLUkkc2luR0YoNiNJInhHRiUiIiItSSNsbkdGKEYvRjEtSSRleHBHRig2IywkKiRGMCIiJCEiIkYxL0YwOyIiIUkpaW5maW5pdHlHRik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Maple is not able to express the definite integral in closed form.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Evaluating numerically (to 25 digits) yields the following result.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">evalf(intg, 25);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMkITpzMFJRdip6W2VeKXkmPiEjRA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">In addition to dealing with the infinite interval of integration, note that the integrand has a logarithmic singularity at x=0 as the following series expansion shows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">series(g, x=0);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMrLUkieEc2Ii1JI2xuRzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2I0YkIiIiLCRGJiMhIiIiIiciIiQsJEYmRi8iIiUsJEYmI0YsIiQ/IiIiJi1JIk9HRik2I0YsRjA=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The hybrid symbolic-numeric techniques being used by Maple allow reasonably efficient calculation even when very high precision is requested. The computation of the above numerical results employs several of the techniques discussed in the following sections. For more detailed presentations of this approach see [Geddes86], [Geddes92].</Text-field></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">The Case of an Analytic Integrand on a Finite Interval</Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item"><Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle259" underline="false">easy case</Font>:  finite interval of integration, and the integrand is an analytic function with no singularities on the closed interval</Text-field><Text-field layout="Bullet Item" style="Bullet Item">most traditional numerical integration methods could serve for this purpose</Text-field><Text-field layout="Bullet Item" style="Bullet Item">however we want methods which are very <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle257" underline="false">efficient</Font>, including computations with<Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle258" underline="false">very high precision</Font></Text-field><Text-field layout="Normal" style="Normal"/><Section><Title><Text-field layout="Heading 3" style="Heading 3">Clenshaw-Curtis quadrature</Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item">preferred default method in Maple, named <Equation input-equation="ccquad" style="2D Comment">NiMlJ2NjcXVhZEc=</Equation></Text-field><Text-field layout="Bullet Item" style="Bullet Item">based on computing Chebyshev series expansion of integrand on specified interval and then integrating term-by-term</Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Equation input-equation="ccquad" style="2D Comment">NiMlJ2NjcXVhZEc=</Equation> at its best when the integrand is analytic in a sufficiently large region of the complex plane surrounding the interval of integration, in which case the Chebyshev series expansion converges quickly</Text-field><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Current Implementation Technique in Maple </Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item"><Equation input-equation="ccquad" style="2D Comment">NiMlJ2NjcXVhZEc=</Equation> is programmed to detect when convergence is too slow</Text-field><Text-field layout="Bullet Item" style="Bullet Item">slow convergence implies that there is a nearby singularity</Text-field><Text-field layout="Bullet Item" style="Bullet Item">when this occurs, return to the control routine which will invoke the singularity-handling routines</Text-field><Text-field layout="Bullet Item" style="Bullet Item">if attempts to remove the singularity are unsuccessful, invoke <Equation input-equation="quadexp" style="2D Comment">NiMlKHF1YWRleHBH</Equation>, an adaptive <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle260" underline="false">double-exponential quadrature method</Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Equation input-equation="quadexp" style="2D Comment">NiMlKHF1YWRleHBH</Equation> is less sensitive to the presence of nearby singularities, or even singularities at the endpoints of the interval</Text-field><Text-field layout="Normal" style="Normal"/></Section></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Generalized Series Expansions</Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item">main tool for analyzing integrand singularities:  generalized series expansions</Text-field><Text-field layout="Bullet Item" style="Bullet Item">Taylor series, or Laurent series with <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle261" underline="false">finite principal part</Font>, if it exists</Text-field><Text-field layout="Bullet Item" style="Bullet Item">more generally, not only powers of <Equation input-equation="x" style="2D Comment">NiMlInhH</Equation> but also terms involving singular functions such as</Text-field><Text-field layout="Bullet Item" style="Bullet Item">                                       <Equation input-equation="ln(x)" style="2D Comment">NiMtJSNsbkc2IyUieEc=</Equation>, <Equation input-equation="exp(-1/x)" style="2D Comment">NiMtJSRleHBHNiMsJComIiIiRiglInhHISIiRio=</Equation>, <Equation input-equation="exp(-1/x^2)" style="2D Comment">NiMtJSRleHBHNiMsJComIiIiRigqJCUieEciIiMhIiJGLA==</Equation>, etc.</Text-field><Text-field layout="Bullet Item" style="Bullet Item">mathematical validity of such series relies on the fact that the non-polynomial functions appearing in the expansion can be bounded by powers of <Equation input-equation="x" style="2D Comment">NiMlInhH</Equation></Text-field><Text-field layout="Bullet Item" style="Bullet Item">for example, for all <Equation input-equation="x" style="2D Comment">NiMlInhH</Equation> &gt; 0<Equation input-equation="-1/x" style="2D Comment">NiMsJComIiIiRiUlInhHISIiRic=</Equation>
 &lt; <Equation input-equation="ln(x)" style="2D Comment">NiMtJSNsbkc2IyUieEc=</Equation> &lt; <Equation input-equation="x" style="2D Comment">NiMlInhH</Equation><Equation input-equation="0" style="2D Comment">NiMiIiE=</Equation>
 &lt; <Equation input-equation="exp(-1/x)" style="2D Comment">NiMtJSRleHBHNiMsJComIiIiRiglInhHISIiRio=</Equation> &lt; <Equation input-equation="1" style="2D Comment">NiMiIiI=</Equation><Equation input-equation="0" style="2D Comment">NiMiIiE=</Equation>
 &lt; <Equation input-equation="exp(-1/x^2)" style="2D Comment">NiMtJSRleHBHNiMsJComIiIiRigqJCUieEciIiMhIiJGLA==</Equation> &lt; 1</Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle287" underline="false">References</Font>: Very powerful algorithms for computing generalized series expansions have been developed. Some early work was presented in [GeddesGonnet89]. For more recent algorithmic developments see [Salvy91], [Salvy92], [Richardson96].</Text-field></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 3:  Generalized series expansions</Text-field></Title><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">series(sqrt(sin(x)), x=0, 5);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKCokSSJ4RzYiIyIiIiIiI0YoKiRGJSMiIiZGKSMhIiIiIzctSSJPR0kqcHJvdGVjdGVkR0YyNiMqJEYlIyIiKkYpRig=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">series( ln(1-cos(2*x)), x=0, 8 );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMrLUkieEc2IiwmLUkjbG5HNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjIiIjIiIiLUYoNiNGJEYtIiIhIyEiIiIiJEYtI0YzIiMhKiIiJSMhIiMiJU5HIiInLUkiT0dGKjYjRi4iIik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`evalf/int/genseries`( 1/(1-x*exp(-cos(x)/x)), x, 6):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">convert(%,polynom);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsMCIiIkYkKiZJInhHNiJGJC1JJGV4cEc2JEkqcHJvdGVjdGVkR0YrSShfc3lzbGliR0YnNiMsJCokRiYhIiJGMEYkRiQqJkYmIiIjRihGJCNGJEYyKiZGJiIiJEYoRiQjRiQiIikqJkYmRjJGKEYyRiQqJkYmIiIlRihGJCNGMCIjWyomRiZGNUYoRjJGJA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note:  The latter example is a case which is not currently handled by Maple's series command but rather it is generated by a specialized routine.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Transforming to an Analytic Integrand</Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item">if integrand has a singularity at a point of the interval of integration, look for a transformation which will remove the singularity</Text-field><Text-field layout="Bullet Item" style="Bullet Item">two types of transformations:
  - subtracting off the singularity
  - algebraic transformation of variables</Text-field><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 4:  Subtracting off the singularity</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">h := ln(1 - cos(2*x));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJoRzYiLUkjbG5HNiRJKnByb3RlY3RlZEdGKUkoX3N5c2xpYkdGJTYjLCYiIiJGLS1JJGNvc0dGKDYjLCRJInhHRiUiIiMhIiI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Int(h, x=0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkLUkjbG5HRiU2IywmIiIiRi4tSSRjb3NHRiU2IywkSSJ4R0YoIiIjISIiL0YzOyIiIUYu</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Note that the graph of this integrand goes to <Equation input-equation="-infinity" style="2D Comment">NiMsJCUpaW5maW5pdHlHISIi</Equation> at <Equation input-equation="x = 0" style="2D Comment">NiMvJSJ4RyIiIQ==</Equation>.  However, this is an integrable singularity - it behaves like <Equation input-equation="ln(x)" style="2D Comment">NiMtJSNsbkc2IyUieEc=</Equation> near <Equation input-equation="x = 0" style="2D Comment">NiMvJSJ4RyIiIQ==</Equation>.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">plot(h, x=0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Plot"><Plot height="300" type="two-dimensional" width="400">LSUlUExPVEc2Ji0lJ0NVUlZFU0c2JDdebzckJCIzYCoqKioqXG41OyJvISNAJCEzaWgqUSxsRiEqUSIhIzs3JCQiMyMqKioqKipcOEFCTyIhIz8kITNnUjNVZyMpUl03Ri83JCQiMzMrKystS1tWP0YzJCEzUUcmemhKMCRwNkYvNyQkIjMjKSoqKioqKnBVa0NGRjMkITNiSzwhKjQhcDw2IkYvNyQkIjMpKioqKioqekwwZVMkRjMkITNxIW8uKVEvOW41Ri83JCQiM3MqKioqKlxTbXAzJUYzJCEzVHQxZyhIdzEuIkYvNyQkIjNNKysrc3U3b1pGMyQhMz1OKVtyaWolKSoqKiEjPDckJCIzayoqKioqKlImKUdcYUYzJCEzQTlbZmhKU0ooKkZPNyQkIjNTKysrdjFoNm9GMyQhM09sUnVFOzcmRypGTzckJCIzWSoqKioqKjRHJFI8KUYzJCEzPEV4QT1gWz8qKUZPNyQkIjNOKioqKipcJVxETyYqRjMkITMsJDRWNCsjPjcnKUZPNyQkIjMlKioqKioqenFkKSozIiEjPiQhM1FGa08mXFFeTSlGTzckJCIzMysrK05AS2k4RmFvJCEzayo0QlNtdCkpKnlGTzckJCIzKikqKioqKj5jJ3lNO0ZhbyQhM1Qob0g1eGRVYChGTzckJCIzKCkqKioqKiopKTREMj5GYW8kITNWLCdmOGUpKWZBKEZPNyQkIjMnKSoqKioqZlQ6KHpARmFvJCEzaSdbIWU6SCcqZXBGTzckJCIzIyoqKioqKip6Wip6NyRGYW8kITMkR0ZKJFJddE9pRk83JCQiMzMrKytYVEZ3U0ZhbyQhM2A6Z0NZLlEyZEZPNyQkIjM9KysrcU1yVV5GYW8kITM1XiQqSFpKIkhDJkZPNyQkIjMmKioqKioqNHpfIjRpRmFvJCEzMWhDdmImSGsnW0ZPNyQkIjN5KioqKipcO2hFRyhGYW8kITNfIUd6IUgob3phJUZPNyQkIjNvKioqKioqUiZwaE4pRmFvJCEzKVEpKW9oKTRfdFVGTzckJCIzKysrKyo9KUhcNSEjPSQhMyMqeV52VjhYPlFGTzckJCIzJSoqKioqKnovM3VDIkZpciQhM2NxRWsheXddWiRGTzckJCIzNSsrK0okUkRYIkZpciQhM3E7PipbR01DPCRGTzckJCIzNysrKylSJ29rO0ZpciQhM3hwcEM1YCo+IUhGTzckJCIzLSsrKzFKOnc9RmlyJCEzKXoyUDIwQmBtI0ZPNyQkIjMzKysrM0VuJDQjRmlyJCEzQ3okPSdmayIpW0NGTzckJCIzLSsrKy9SRSZHI0ZpciQhM0dBI3oxXClcd0FGTzckJCIzIikqKioqKlxLXTRdI0ZpciQhMy1TaltWVWQqNCNGTzckJCIzJCoqKioqKlxQQXZyI0ZpciQhM3kxKHpvO2ZzJD5GTzckJCIzKSoqKioqKlxuSGkjSEZpciQhM0MyUWVsIT1LeiJGTzckJCIzKikqKioqKnAqZXY6SkZpciQhM20mPUk2ZVc6biJGTzckJCIzJCkqKioqKnohNDdUTEZpciQhM1lIZUxbK3dPOkZPNyQkIjM/KysrTFkuS05GaXIkITNgbktNbEwuSTlGTzckJCIzdSoqKioqNG83VHYkRmlyJCEzMGcncCllJz5OSiJGTzckJCIzMSsrKyRRKm9dUkZpciQhM0VSLXUsRmE7N0ZPNyQkIjM/KysrIj1sajslRmlyJCEzQ0k1SltiODs2Rk83JCQiMysrKytWJlI8UCVGaXIkITNeJ3BUTCopPWUtIkZPNyQkIjMvKysrWGgtJ2UlRmlyJCEzaVUsUUckKSlmTypGaXI3JCQiMyEqKioqKioqUSIzR3klRmlyJCEzNTNbdzI7MyllKUZpcjckJCIzISkqKioqKkg1a10qXEZpciQhM3knWzhlc1UqKnkoRmlyNyQkIjNBKysrKFJRYkAmRmlyJCEzaSJcUChIInlDKyhGaXI3JCQiM2ArKys9PlkyYUZpciQhM1MvQSwhKT4rXGpGaXI3JCQiM1wrKyt5WHU5Y0ZpciQhM2lCLyQzWkFXbiZGaXI3JCQiM2QqKioqKipbeSkpR2VGaXIkITMxKj1QWCtaJDRdRmlyNyQkIjMuKysraV9RUWdGaXIkITMjeTQnKTNCQyEpUSVGaXI3JCQiM0ErKysheSUzVGlGaXIkITMpbzIhKio9JDNHIlFGaXI3JCQiMzUrKytPIVtoWSdGaXIkITM5M2J5dHRGLUtGaXI3JCQiM0krKysjUXgkb21GaXIkITNxNEpHSUhieEVGaXI3JCQiM3MqKioqKlJQK1Ypb0ZpciQhM0UhKVF3QkEpMzkjRmlyNyQkIjNZKioqKipwcGUqenFGaXIkITM/NzpiXyxkdTtGaXI3JCQiM3UqKioqKlIjXCdRSChGaXIkITM/YEU6SjtZJj0iRmlyNyQkIjMjKioqKioqSCxNXlwoRmlyJCEzdHBCUllpKTNXKEZhbzckJCIzUysrKzAjPWJxKEZpciQhM0RTM1BZVXo4SUZhbzckJCIzWSoqKioqcD8yNyJ6RmlyJCIzNykpZWpzbil6OCJGYW83JCQiM2ErKytJWGFFIilGaXIkIjNXRGAkSDEwYEkmRmFvNyQkIjM3KysrbCpSUkwpRmlyJCIzWypmdWA5OEQ6KkZhbzckJCIzaSoqKioqSHZKZ2EpRmlyJCIzdUYvSj5uVyNIIkZpcjckJCIzcyoqKioqSEpuanYpRmlyJCIzPzdDaF52KjNsIkZpcjckJCIzayoqKioqKltRa1wqKUZpciQiM2VSMGBnUS5uPkZpcjckJCIzdyoqKioqKm8wO3IiKkZpciQiM3oiPWB3MCdHOUJGaXI3JCQiM1sqKioqKlx3KEdwJCpGaXIkIjNSKUchZScqNG02RUZpcjckJCIzNysrKyFvSzBlKkZpciQiM1hhJikqUmc1YSJIRmlyNyQkIjMzKysrPDVzI3kqRmlyJCIzMUBjbS4pUk8+JEZpcjckJCIiIiIiISQiM10+d0AhKW9Sek1GaXItJSZDT0xPUkc2JiUkUkdCRyQiIzUhIiIkRmFgbEZqYGxGW2FsLSUrQVhFU0xBQkVMU0c2JFEieDYiUSFGYGFsLSUlRk9OVEc2JCUqSEVMVkVUSUNBR0ZpYGwtJSVWSUVXRzYkO0ZbYWxGaGBsOyQhMld5PEQzL3ZUIiEjOiQiMScqKSo0PSwvRmpGLw==</Plot></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The generalized series expansion of h at x = 0 takes the following form.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">series(h, x=0, 8);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMrLUkieEc2IiwmLUkjbG5HNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjIiIjIiIiLUYoNiNGJEYtIiIhIyEiIiIiJEYtI0YzIiMhKiIiJSMhIiMiJU5HIiInLUkiT0dGKjYjRi4iIik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The non-regular part is</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := 2*ln(x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJxRzYiLCQtSSNsbkc2JEkqcHJvdGVjdGVkR0YqSShfc3lzbGliR0YlNiNJInhHRiUiIiM=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The new expression</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">newh := h - q;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSVuZXdoRzYiLCYtSSNsbkc2JEkqcHJvdGVjdGVkR0YqSShfc3lzbGliR0YlNiMsJiIiIkYuLUkkY29zR0YpNiMsJEkieEdGJSIiIyEiIkYuLUYoNiNGMyEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">is analytic on the interval [0, 1].</Text-field><Text-field layout="Normal" style="Normal">Thus it can be integrated easily by ccquad.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r1 := evalf(Int(newh, x=0..1));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNyMUc2IiQiKydvbnF6JiEjNQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">(computing to 10 digits of accuracy).</Text-field><Text-field layout="Normal" style="Normal">Integrating q is easy because it has the indefinite integral</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int(q, x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomSSJ4RzYiIiIiLUkjbG5HNiRJKnByb3RlY3RlZEdGK0koX3N5c2xpYkdGJjYjRiVGJyIiI0YlISIj</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">and its definite integral can therefore be computed symbolically.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r2 := int(q, x=0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNyMkc2IiEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Finally, summing the two values, we obtain the value for the original definite integration problem.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Int(h, x=0..1)  =  r1 + r2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkkSW50RzYkSSpwcm90ZWN0ZWRHRidJKF9zeXNsaWJHNiI2JC1JI2xuR0YmNiMsJiIiIkYvLUkkY29zR0YmNiMsJEkieEdGKSIiIyEiIi9GNDsiIiFGLyQhK0pLSD85ISIq</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 5:  Algebraic transformation of variables</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">F := sqrt(sin(x));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJGRzYiKiQtSSRzaW5HNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjSSJ4R0YlIyIiIiIiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Int(F, x=0..2);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkKiQtSSRzaW5HRiU2I0kieEdGKCMiIiIiIiMvRi47IiIhRjE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The generalized series expansion of F at x = 0 is of the form</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">series(F, x=0, 5);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKCokSSJ4RzYiIyIiIiIiI0YoKiRGJSMiIiZGKSMhIiIiIzctSSJPR0kqcHJvdGVjdGVkR0YyNiMqJEYlIyIiKkYpRig=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Applying the change of variables t = x^(1/2) yields</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r3 := Int(eval(F,x=t^2) * diff(t^2,t), t = 0..sqrt(2));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNyM0c2Ii1JJEludEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiQsJComLUkkc2luR0YoNiMqJEkidEdGJSIiIyMiIiJGM0YyRjVGMy9GMjsiIiEqJEYzRjQ=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The new integrand is analytic and therefore it can be integrated easily by ccquad.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">evalf(r3);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMkIiszTXM/OyEiKg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Direct Integration of a Generalized Series</Text-field></Title><Text-field layout="Bullet Item" style="Bullet Item">integrand has a singularity, suppose it is at the left end-point <Equation input-equation="x = 0" style="2D Comment">NiMvJSJ4RyIiIQ==</Equation></Text-field><Text-field layout="Bullet Item" style="Bullet Item">no transformation found to remove the singularity</Text-field><Text-field layout="Bullet Item" style="Bullet Item">therefore, treat the generalized series expansion as an approximation of the integrand near the singularity and directly integrate this series term-by-term over its interval of accuracy</Text-field><Text-field layout="Bullet Item" style="Bullet Item">remainder of the interval can then be handled by the numerical integration method</Text-field><Text-field layout="Bullet Item" style="Bullet Item">it is important to move as far as possible away from the singularity before resuming with the numerical method, because the efficiency of numerical methods is affected by the nearness of a singularity</Text-field><Text-field layout="Bullet Item" style="Bullet Item">success of this technique relies on the power of the <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle262" underline="false">symbolic</Font> integrator to handle many of the singular functions which may arise</Text-field><Text-field layout="Bullet Item" style="Bullet Item">for example, term-by-term integration of the generalized series might involve integrals of the form:</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int( ln(x)*x^2, x );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomLUkjbG5HNiRJKnByb3RlY3RlZEdGKEkoX3N5c2xpYkc2IjYjSSJ4R0YqIiIiRiwiIiQjRi1GLiokRixGLiMhIiIiIio=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int( exp(-1/x)*x^2, x );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKiomSSJ4RzYiIiIkLUkkZXhwRzYkSSpwcm90ZWN0ZWRHRitJKF9zeXNsaWJHRiY2IywkKiRGJSEiIkYwIiIiI0YxRicqJkYlIiIjRihGMSNGMCIiJyomRiVGMUYoRjEjRjFGNi1JI0VpR0YqNiRGMUYvRjU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int( exp(-1/x^2)*x^2, x );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKComLUkkZXhwRzYkSSpwcm90ZWN0ZWRHRihJKF9zeXNsaWJHNiI2IyokSSJ4R0YqISIjISIiRi0iIiQjIiIiRjAqJkYlRi9GLUYyI0YuRjAqJkkjUGlHRigjRjIiIiMtSSRlcmZHRic2IyokRi1GL0YyRjQ=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 6</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G := exp(v - v^2/2) / (1 + 1/2*exp(v));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJHRzYiKiYtSSRleHBHNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjLCZJInZHRiUiIiIqJEYuIiIjIyEiIkYxRi8sJkYvRi8tRig2I0YuI0YvRjFGMw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Int(G, v=0..infinity);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkKiYtSSRleHBHRiU2IywmSSJ2R0YoIiIiKiRGLyIiIyMhIiJGMkYwLCZGMEYwLUYsNiNGLyNGMEYyRjQvRi87IiIhSSlpbmZpbml0eUdGJg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">First, the interval is split into <Equation input-equation="0..1" style="2D Comment">NiM7IiIhIiIi</Equation> and <Equation input-equation="1..infinity" style="2D Comment">NiM7IiIiJSlpbmZpbml0eUc=</Equation> .</Text-field><Text-field layout="Normal" style="Normal">For the finite interval, ccquad is applied directly.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r01 := evalf(Int(G, v=0..1));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSRyMDFHNiIkIitIW2MhZSghIzU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">For the infinite interval, the change of variables <Equation input-equation="v = 1/x" style="2D Comment">NiMvJSJ2RyomIiIiRiYlInhHISIi</Equation> transforms the problem into the new integration problem</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r1inf := Int(-eval(G,v=1/x) * diff(1/x,x), x = 0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZyMWluZkc2Ii1JJEludEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiQqKC1JJGV4cEdGKDYjLCYqJEkieEdGJSEiIiIiIiokRjIhIiMjRjMiIiNGNCwmRjRGNC1GLjYjRjEjRjRGOEYzRjJGNi9GMjsiIiFGNA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Let the integrand appearing here be named g.  The first few terms of the generalized series expansion of g are as follows.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := op(1,r1inf);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJnRzYiKigtSSRleHBHNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjLCYqJEkieEdGJSEiIiIiIiokRi8hIiMjRjAiIiNGMSwmRjFGMS1GKDYjRi4jRjFGNUYwRi9GMw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">s := `evalf/int/genseries`(g, x, 6);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJzRzYiLDAqJi1JJGV4cEc2JEkqcHJvdGVjdGVkR0YrSShfc3lzbGliR0YlNiMsJCokSSJ4R0YlISIjISIiIyIiIiIiI0YwRjFGNSooRihGM0YwRjEtRik2IywkKiRGMEYyRjJGNCEiJSooRihGM0YwRjFGN0Y1IiIpKihGKEYzRjBGMUY3IiIkISM7KihGKEYzRjBGMUY3IiIlIiNLKihGKEYzRjBGMUY3IiImISNrLUkiT0dGKzYjKiRGNyIiJ0Y0</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Maple's symbolic integrator determines that the first two terms of s have the following indefinite integrals.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">terms := [seq(simplify(op(i,s),symbolic), i=1..6)]:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int(terms[1],x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJCooSSNQaUdJKnByb3RlY3RlZEdGJiMiIiIiIiNGKUYnLUkkZXJmRzYkRiZJKF9zeXNsaWJHNiI2IywkKiZGKUYnSSJ4R0YuISIiRidGKEYz</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int(terms[2],x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJCoqSSNQaUdJKnByb3RlY3RlZEdGJiMiIiIiIiMtSSRleHBHNiRGJkkoX3N5c2xpYkc2IjYjRidGKEYpRictSSRlcmZHRiw2IywmKiZGKUYnSSJ4R0YuISIiRicqJEYpRidGJ0YoRik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Similarly, the integral of each term is computed.</Text-field><Text-field layout="Normal" style="Normal">If we compute the definite integral over [0, 0.25], say, of the successive terms of the generalized series expansion of g, we find that the successive values are as follows.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Digits := 20:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">seq( int(terms[i], x=0..0.25), i = 1..6 ):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">evalf( [ % ] );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3KCQiNHc1XEphZ2d4ZSIhI0EkITInb1hEYmRoUVpGJiQiMHNpXihlJj1ZIiEjQCQhLFEjKj4vaSUhIz4kIilyWyhbIiEjPCQhJWZbISM6</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Clearly, the series representation is rapidly converging on this interval.</Text-field><Text-field layout="Normal" style="Normal">Summing up these values yields the following result for the integral</Text-field><Text-field layout="Normal" style="Normal">of g over [0, 0.25].</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r1 := convert( %, `+` );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNyMUc2IiQiNDUsKD5YUTp6VDohI0E=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Digits := 10:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font executable="false">Look at a plot of the integrand </Font><Equation input-equation="g" style="2D Math">NiNJImdHNiI=</Equation><Font executable="false"> and its series approximation </Font><Equation input-equation="s" style="2D Math">NiNJInNHNiI=</Equation><Font executable="false"> over the interval </Font><Equation input-equation="[0, 1]" style="2D Math">NiM3JCIiISIiIg==</Equation><Font executable="false"> .</Font></Text-field><Text-field layout="Normal" style="Text">Agreement between the two can be seen on <Equation input-equation="[0, 0.25]" style="2D Math">NiM3JCIiIS1JJkZsb2F0R0kqcHJvdGVjdGVkR0YnNiQiI0QhIiM=</Equation> and perhaps even further to about <Equation input-equation="0.5" style="2D Math">NiMtSSZGbG9hdEdJKnByb3RlY3RlZEdGJTYkIiImISIi</Equation> (to a lower degree of accuracy).</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">s := convert(s, 'polynom'):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">plot({g,s}, x=0..1);</Text-field></Input><Output><Text-field layout="Maple Plot"><Plot height="400" type="two-dimensional" width="400">LSUlUExPVEc2Ji0lJ0NVUlZFU0c2JTdobjckJCIzYCoqKioqXG41OyJvISNAJCIiIUYuNyQkIjMjKioqKioqXDhBQk8iISM/Ri03JCQiMzMrKystS1tWP0YyRi03JCQiMyMpKioqKioqcFVrQ0ZGMkYtNyQkIjNzKioqKipcU21wMyVGMkYtNyQkIjNrKioqKioqUiYpR1xhRjJGLTckJCIzWSoqKioqKjRHJFI8KUYyRi03JCQiMyUqKioqKip6cWQpKjMiISM+Ri03JCQiMyopKioqKio+Yyd5TTtGRUYtNyQkIjMnKSoqKioqZlQ6KHpARkVGLTckJCIzIyoqKioqKip6Wip6NyRGRSQiM2MhZkF1O15SUSMhJE8jNyQkIjMzKysrWFRGd1NGRSQiM1stM0tqXSFIWyMhJFgiNyQkIjMmKioqKioqNHpfIjRpRkUkIjM3JGZDMHU4SVkjISNyNyQkIjNvKioqKioqUiZwaE4pRkUkIjMrVC5vNGEoR0cjISNZNyQkIjMrKysrKj0pSFw1ISM9JCIzdV05aTBWJkdXJCEjTjckJCIzJSoqKioqKnovM3VDIkZhbyQiMyF5eD8vJDQkUlUiISNINyQkIjM1KysrSiRSRFgiRmFvJCIzcyh6YncnUmxIWyEjRTckJCIzNysrKylSJ29rO0ZhbyQiM0FDbUEwaSF6LyIhI0I3JCQiMy0rKysxSjp3PUZhbyQiMyJwMVpIa3VIIlEhI0E3JCQiMzMrKyszRW4kNCNGYW8kIjNdVkIlUkFMMypcRiw3JCQiMy0rKysvUkUmRyNGYW8kIjMjZW1CJmVMYSdmI0YyNyQkIjMnKSoqKioqUjYySlIjRmFvJCIzO2Q1aFp2T3VhRjI3JCQiMyIpKioqKipcS100XSNGYW8kIjN3NE8xckssVDVGRTckJCIzKCkqKioqKipcakI0RUZhbyQiM0tKYERuKEcqPj1GRTckJCIzJCoqKioqKlxQQXZyI0ZhbyQiM2EmcFV6cClIZEhGRTckJCIzKSoqKioqKlxuSGkjSEZhbyQiM0MvYTppKSkqNFEnRkU3JCQiMyopKioqKipwKmV2OkpGYW8kIjN3WVJZPDouMDZGYW83JCQiMyQpKioqKip6ITQ3VExGYW8kIjNbMjFSJjNEcyU9RmFvNyQkIjM/KysrTFkuS05GYW8kIjM6MiQ+b3NJZmcjRmFvNyQkIjN1KioqKio0bzdUdiRGYW8kIjMrOkxhaiYpbyZlJEZhbzckJCIzMSsrKyRRKm9dUkZhbyQiM20qPiZ6Myl5L1wlRmFvNyQkIjM/KysrIj1sajslRmFvJCIzLWNmJSpRN0ZzYUZhbzckJCIzKysrK1YmUjxQJUZhbyQiMy1pL3ctMjVkakZhbzckJCIzLysrK1hoLSdlJUZhbyQiM20hPTMxcz55PihGYW83JCQiMyEqKioqKioqUSIzR3klRmFvJCIzKWVGdipSKCkqKnl5RmFvNyQkIjMhKSoqKioqSDVrXSpcRmFvJCIzViZmVylcJylHMiYpRmFvNyQkIjNBKysrKFJRYkAmRmFvJCIzWCI0MiN6OS9UISpGYW83JCQiM2ArKys9PlkyYUZhbyQiM2xiJ0dQWl0sVCpGYW83JCQiM1wrKyt5WHU5Y0ZhbyQiM0ZxT1dRcE86KCpGYW83JCQiM2QqKioqKipbeSkpR2VGYW8kIjNyUHhGI1sreSQqKkZhbzckJCIzLisrK2lfUVFnRmFvJCIzPCdlJD5mZFQyNSEjPDckJCIzQSsrKyF5JTNUaUZhbyQiMzJRO1U3XCNSLCJGW3g3JCQiMzUrKytPIVtoWSdGYW8kIjNTI1xYQCF6YTk1Rlt4NyQkIjNJKysrI1F4JG9tRmFvJCIzKSp6ZCp5MyM0NTVGW3g3JCQiM3MqKioqKlJQK1Ypb0ZhbyQiM0ZDdS5xOik0KyJGW3g3JCQiM1kqKioqKnBwZSp6cUZhbyQiMylRWlVlKTQ/JiopKkZhbzckJCIzdSoqKioqUiNcJ1FIKEZhbyQiMykpUlJuT0hrVCgqRmFvNyQkIjMjKioqKioqSCxNXlwoRmFvJCIzSSI+SyNmS2Z2JipGYW83JCQiM1MrKyswIz1icShGYW8kIjNjTnNcMyY9WVEqRmFvNyQkIjNZKioqKipwPzI3InpGYW8kIjNZRWBrMUAkWz0qRmFvNyQkIjNhKysrSVhhRSIpRmFvJCIzayYzUmpSPWMnKilGYW83JCQiMzcrKytsKlJSTClGYW8kIjMhKVtzZUpzJHl1KUZhbzckJCIzaSoqKioqSHZKZ2EpRmFvJCIzPSFlSk8kRytAJilGYW83JCQiM3MqKioqKkhKbmp2KUZhbyQiMzd0NVZZbDMlSClGYW83JCQiM2sqKioqKipbUWtcKilGYW8kIjNtU0JMLi9RJjMpRmFvNyQkIjN3KioqKioqbzA7ciIqRmFvJCIzS2FbZG88V1p5RmFvNyQkIjNbKioqKipcdyhHcCQqRmFvJCIzZTlNI3p5U29qKEZhbzckJCIzNysrKyFvSzBlKkZhbyQiM0dcX2NcJj5iVChGYW83JCQiMzMrKys8NXMjeSpGYW8kIjM1KyI+PnUjWzJzRmFvNyQkIiIiRi4kIjNrNkB4JDNeJykpcEZhbzdobkYpRi9GM0Y2RjlGPEY/RkJGRkZJNyRGTUYtNyRGUyQiMydvdj9MMTBIWyNGVzckRlkkIjM3JWVDMHU4SVkjRmduNyRGaW4kIjN3WC5vNGEoR0cjRl1vNyRGX28kIjNrUDlpMFYmR1ckRmRvNyRGZm8kIjNpIXk/LyQ0JFJVIkZqbzckRlxwJCIzJz0hZWxuUmxIW0ZgcDckRmJwJCIzWTVtQTBpIXovIkZmcDckRmhwJCIzRjpSJUhrdUgiUUZccTckRl5xJCIzY1J6I1FBTDMqXEYsNyRGY3EkIjNvZWUneU5WbGYjRjI3JEZocSQiM29RTDNWdk91YUYyNyRGXXIkIjM0KlFEJm9LLFQ1RkU3JEZiciQiM15kY0NiKEcqPj1GRTckRmdyJCIzXzpXOlwnKUhkSEZFNyRGXHMkIjM/MUp2YCQpKjRRJ0ZFNyRGYXMkIjMsYUYsNjcuMDZGYW83JEZmcyQiMylbIXpyMktBWj1GYW83JEZbdCQiM1FKRWBNUCNmZyNGYW83JEZgdCQiMydbVmM9R2ljZSRGYW83JEZldCQiM0ExJXBkIWZTIVwlRmFvNyRGanQkIjNnXTIsSWkyc2FGYW83JEZfdSQiMzdPUDwqM2JtTidGYW83JEZkdSQiM3MkSFpLaWhvPihGYW83JEZpdSQiM2dcYHc9QD94eUZhbzckRl52JCIzNHI5RG1GKVJdKUZhbzckRmN2JCIzdz4oNGYkUT9OISpGYW83JEZodiQiM24+TzMhZTU1UypGYW83JEZddyQiMyMqKSlIUmdMOiwoKkZhbzckRmJ3JCIzaCNHQHQmNEY7KipGYW83JEZndyQiM1hIOTIrbEgvNUZbeDckRl14JCIzIj1eX0R4KmU0NUZbeDckRmJ4JCIzdGopcE5BJ1szNUZbeDckRmd4JCIzP0M/XTRkNC01Rlt4NyRGXHkkIjNUN0twK2R0LyoqRmFvNyRGYXkkIjMtXFwtelcuaigqRmFvNyRGZnkkIjMpUTBGIVtnIltkKkZhbzckRlt6JCIzOS0pKTQ1UzJyJCpGYW83JEZgeiQiM1l4eVQ3QkBOIipGYW83JEZleiQiM1FtenZVLydmKSkpRmFvNyRGanokIjNUWFB1LlIlKjMnKUZhbzckRl9bbCQiM0Mpei0mKlJMJ0gkKUZhbzckRmRbbCQiMyozKlI9YjcmUi4pRmFvNyRGaVtsJCIzSFtEOW1oIkh0KEZhbzckRl5cbCQiMylmKnBOT0UzXnVGYW83JEZjXGwkIjNlT1BNUmRmQnJGYW83JEZoXGwkIjM/RmsjR0YveiNvRmFvNyRGXV1sJCIzRF5PUHQyITReJ0ZhbzckRmJdbCQiMy9ccFxURHUxaUZhbzckRmddbCQiM1NhcEYtMCgqemVGYW8tJSZDT0xPUkc2KSUkUkdCRyQiIzUhIiIkRi5GZmdsRmdnbEZnZ2xGZGdsRmdnbC0lK0FYRVNMQUJFTFNHNiRRIng2IlEhRlxobC0lJUZPTlRHNiQlKkhFTFZFVElDQUdGZWdsLSUlVklFV0c2JDtGZ2dsRmRnbDskITJbKTRIL2U0SD9GYW8kIjJBUyk9ZylRWy4iISM7</Plot></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">For the remaining interval [0.25, 1], ordinary numerical integration methods encounter no difficulties because there are no nearby singularities.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r2 := evalf(Int(g, x=0.25..1));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNyMkc2IiQiK3JCMXRhISM1</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Sum these two values to get the integral r1inf.</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r1inf;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkKigtSSRleHBHRiU2IywmKiRJInhHRighIiIiIiIqJEYwISIjI0YxIiIjRjIsJkYyRjItRiw2I0YvI0YyRjZGMUYwRjQvRjA7IiIhRjI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r1inf  :=  r1 + r2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZyMWluZkc2IiQiK2pUZ3VhISM1</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Finally, we have obtained the answer for the original integration problem.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Int(G, v=0..infinity)  =  r01 + r1inf;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkkSW50RzYkSSpwcm90ZWN0ZWRHRidJKF9zeXNsaWJHNiI2JComLUkkZXhwR0YmNiMsJkkidkdGKSIiIiokRjAiIiMjISIiRjNGMSwmRjFGMS1GLTYjRjAjRjFGM0Y1L0YwOyIiIUkpaW5maW5pdHlHRickIisqKm9eMDghIio=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Exploiting the Hybrid Symbolic-Numeric Paradigm for ODEs</Text-field></Title><Text-field layout="Normal" style="Normal">A natural question to ask is: In what manner could the hybrid symbolic-numeric paradigm, which was successfully applied to the case of numerical definite integration, be applied to the numerical solution of ODEs?  Investigations on this question are in progress.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The paper [Geddes99] presents an investigation of a calculus of divided differences of vector functions, proposed by W. Kahan [Kahan93].  For a given ODE initial-value problem, it is possible to generate numerical update formulas for the system of ODEs by applying the divided difference calculus.  The general concept is to exploit the power of symbolic computation to generate a numerical update formula which is particularly tailored to the given problem.  In some cases, the resulting numerical computation phase can achieve enhanced accuracy and efficiency compared with traditional numerical methods.</Text-field><Section><Title><Text-field layout="Heading 1" style="Heading 1">A Class of Numerical ODE Solvers</Text-field></Title><Section><Title><Text-field layout="Heading 2" style="Heading 2">The Initial Value Problem</Text-field></Title><Text-field layout="Normal" style="Normal">Consider an initial-value problem (IVP)</Text-field><Group><Input><Text-field layout="Normal" style="Normal">               <Equation executable="true" input-equation="diff(y(t), t) = f(y);  `      y`(t[0]) = y[0]" style="2D Input">NiNDJC8tJSVkaWZmRzYkLSUieUc2IyUidEdGKy0lImZHNiNGKS8tJSh+fn5+fn55RzYjJkYrNiMiIiEmRilGNA==</Equation> </Text-field><Text-field layout="Normal" style="Normal">where  <Equation executable="true" input-equation="y(t)" style="2D Input">NiMtJSJ5RzYjJSJ0Rw==</Equation>  is a vector and  <Equation executable="true" input-equation="f(y)" style="2D Input">NiMtJSJmRzYjJSJ5Rw==</Equation>  is a vector function.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Typically the right hand side might be written as  <Equation executable="true" input-equation="f(t, y)" style="2D Input">NiMtJSJmRzYkJSJ0RyUieUc=</Equation>  indicating explicit dependence on both <Equation executable="true" input-equation="t" style="2D Input">NiMlInRH</Equation> and <Equation executable="true" input-equation="y" style="2D Input">NiMlInlH</Equation>.   However, it is always possible to convert such a problem into the form of an autonomous initial value problem (AIVP), and we assume this form here.</Text-field></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Numerical Update Formulas</Text-field></Title><Text-field layout="Normal" style="Normal">To obtain a numerical solution, one determines an <Font executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle265" underline="false">update formula</Font></Text-field><Text-field layout="Normal" style="Normal">                      <Equation executable="true" input-equation="y[n+1] = Q(h, y[n])" style="2D Input">NiMvJiUieUc2IywmJSJuRyIiIkYpRiktJSJRRzYkJSJoRyZGJTYjRig=</Equation></Text-field><Text-field layout="Normal" style="Normal">to advance the (approximate) solution from  <Equation executable="true" input-equation="y(t[n])" style="2D Input">NiMtJSJ5RzYjJiUidEc2IyUibkc=</Equation>  to <Equation executable="true" input-equation="y(t[n+1]) = y(t[n] + h) " style="2D Input">NiMvLSUieUc2IyYlInRHNiMsJiUibkciIiJGLEYsLUYlNiMsJiZGKDYjRitGLCUiaEdGLA==</Equation>  for some chosen step size <Equation executable="true" input-equation="h" style="2D Input">NiMlImhH</Equation> .</Text-field><Section><Title><Text-field layout="Heading 3" style="Heading 3">Euler's Method</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="2D Input"><Equation executable="true" input-equation="Q(h,g) = g + h*f(g)" style="2D Input">NiMvLSUiUUc2JCUiaEclImdHLCZGKCIiIiomRidGKi0lImZHNiNGKEYqRio=</Equation></Text-field><Text-field layout="Normal" style="Normal">is a method with first-order convergence.  It is derived from a Taylor series expansion through first-order terms.  This formula suffers from two disadvantages as a numerical solver: <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle274" underline="false"> low-order</Font> convergence; and it is an <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle275" underline="false">explicit</Font> formula (which has implications for numerical stability).</Text-field></Input></Group></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Euler's Backward Formula</Text-field></Title><Text-field layout="Normal" style="Normal">Solve   <Equation executable="true" input-equation="Q = g + h*f(Q)" style="2D Input">NiMvJSJRRywmJSJnRyIiIiomJSJoR0YnLSUiZkc2I0YkRidGJw==</Equation>   for   <Equation executable="true" input-equation="Q = Q(h,g)" style="2D Input">NiMvJSJRRy1GJDYkJSJoRyUiZ0c=</Equation> .</Text-field><Text-field layout="Normal" style="Normal">This formula also has first-order convergence but it is an <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle266" underline="false">implicit</Font> formula.  Implicit formulas have important advantages for numerical stability, but they imply additional computational steps each iteration.</Text-field></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Second Order Formula based on the Jacobian</Text-field></Title><Text-field layout="Normal" style="Normal">Corresponding to Euler's Method which was based on a Taylor series expansion through first-order terms, we get the following update formula from a Taylor series expansion through second-order terms.</Text-field><Text-field layout="Normal" style="2D Input"><Equation executable="true" input-equation="Q(h,g) = g + h*f(g) + ``(h^2/2)*J[f](g)*f(g)" style="2D Input">NiMvLSUiUUc2JCUiaEclImdHLChGKCIiIiomRidGKi0lImZHNiNGKEYqRioqKC0lIUc2IyomRiciIiNGNCEiIkYqLSYlIkpHNiNGLUYuRipGLEYqRio=</Equation></Text-field><Text-field layout="Normal" style="Normal">where  <Equation executable="true" input-equation="J[f] " style="2D Input">NiMmJSJKRzYjJSJmRw==</Equation>  denotes the Jacobian matrix of <Equation executable="true" input-equation="f" style="2D Input">NiMlImZH</Equation> .  This formula has second-order convergence but it is an <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle276" underline="false">explicit</Font> formula.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Not discussed here is the question of obtaining higher-order formulas (promotion of second-order formulas to fourth-order, or higher order).  See [Kahan97b] for an interesting approach.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The approach we take here to turn the above second-order explicit formula into an implicit formula is to replace the Jacobian matrix <Equation input-equation="J[f](g);" style="2D Comment">NiMtJiUiSkc2IyUiZkc2IyUiZ0c=</Equation> by a <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle277" underline="false">divided difference matrix</Font> <Equation input-equation="DDF(g,Q);" style="2D Comment">NiMtJSREREZHNiQlImdHJSJRRw==</Equation> which approximates <Equation input-equation="J[f](g);" style="2D Comment">NiMtJiUiSkc2IyUiZkc2IyUiZ0c=</Equation> for nearby vectors <Equation input-equation="g;" style="2D Comment">NiMlImdH</Equation> and <Equation input-equation="Q;" style="2D Comment">NiMlIlFH</Equation> .  This approach has some advantages in its ability to generate a numerical update formula <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle267" underline="false">tailored</Font> to the given initial-value problem.  It will be seen that a computer algebra system is indisensible for performing the algebra required by this technique.</Text-field></Section></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Divided Differences of Vector Functions</Text-field></Title><Text-field layout="Normal" style="Normal">We wish to define a matrix which will approximate the Jacobian matrix  <Equation executable="true" input-equation="J[f](g)" style="2D Input">NiMtJiUiSkc2IyUiZkc2IyUiZ0c=</Equation> .  Just as a scalar derivative at a specified point can be approximated by a scalar divided difference based on evaluations at two "nearby" points, we define a matrix</Text-field><Text-field layout="Normal" style="Normal">              <Equation executable="true" input-equation="DDF(X, Z)" style="2D Input">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation></Text-field><Text-field layout="Normal" style="Normal">(a "divided difference function") which satisfies the property</Text-field><Text-field layout="Normal" style="Normal"><Equation executable="true" input-equation="`      f`(X) - f(Z) = DDF(X,Z) * (X - Z)" style="2D Input">NiMvLCYtJSh+fn5+fn5mRzYjJSJYRyIiIi0lImZHNiMlIlpHISIiKiYtJSREREZHNiRGKEYtRiksJkYoRilGLUYuRik=</Equation> .</Text-field><Text-field layout="Normal" style="Normal">Note that <Equation executable="true" input-equation="X" style="2D Input">NiMlIlhH</Equation> and <Equation executable="true" input-equation="Z" style="2D Input">NiMlIlpH</Equation> are vectors.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix is not uniquely determined by the above property unless the dimension of the vector space is 1.  In the 1-dimensional case,</Text-field><Text-field layout="Normal" style="Normal">             <Equation executable="true" input-equation="DDF(X,Z) =  (f(X) - f(Z)) / (X - Z)" style="2D Input">NiMvLSUkRERGRzYkJSJYRyUiWkcqJiwmLSUiZkc2I0YnIiIiLUYsNiNGKCEiIkYuLCZGJ0YuRihGMUYx</Equation>     and it equals    <Equation executable="true" input-equation="diff(f(Z),Z);" style="2D Input">NiMtJSVkaWZmRzYkLSUiZkc2IyUiWkdGKQ==</Equation>    when  <Equation executable="true" input-equation="X = Z" style="2D Input">NiMvJSJYRyUiWkc=</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">In the n-dimensional case, one possible definition of the matrix <Equation executable="true" input-equation="DDF(X,Z)" style="2D Input">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> is</Text-field><Group><Input><Text-field layout="Normal" style="Normal">This is not the preferred definition because the integration can introduce new transcendental functions (e.g. logarithms) and, in general, it yields formulas which are more complicated than necessary.  As pointed out by Kahan, it is preferable to consider a dog-leg path of integration consisting of segments parallel to coordinate axes.  The resulting matrix <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> is composed of entries which are not much more complicated than the original function <Equation input-equation="f;" style="2D Comment">NiMlImZH</Equation> ;  the entries are simply scalar divided differences involving components of the vectors <Equation input-equation="X;" style="2D Comment">NiMlIlhH</Equation> and <Equation input-equation="Z;" style="2D Comment">NiMlIlpH</Equation> .</Text-field></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 1a:  Straight-line Integration</Text-field></Title><Text-field layout="Normal" style="Normal">Consider the system of three equations <Equation input-equation="`y'`(t) = f(y);" style="2D Comment">NiMvLSUjeSdHNiMlInRHLSUiZkc2IyUieUc=</Equation> where </Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">restart;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">with(LinearAlgebra):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := &lt;y1, y2, y3&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f := v -&gt; &lt;1, v[3], cos(v[1])*v[3]+(1-cos(v[1]))*v[2]&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">'f(y)' = f(y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkiZkc2IjYjSSJ5R0YmLUknUlRBQkxFR0YmNiUiJ0cyVi1JJ01BVFJJWEdGJjYjNyU3IyIiIjcjSSN5M0dGJjcjLCYqJi1JJGNvc0c2JEkqcHJvdGVjdGVkR0Y7SShfc3lzbGliR0YmNiNJI3kxR0YmRjJGNEYyRjIqJiwmRjJGMkY4ISIiRjJJI3kyR0YmRjJGMiZJJ1ZlY3RvckdGOjYjSSdjb2x1bW5HRiY=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The Jacobian matrix is</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">J := linalg[jacobian](f(y), y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJKRzYiLUknbWF0cml4R0YlNiM3JTclIiIhRitGKzclRitGKyIiIjclLCYqJi1JJHNpbkc2JEkqcHJvdGVjdGVkR0Y0SShfc3lzbGliR0YlNiNJI3kxR0YlRi1JI3kzR0YlRi0hIiIqJkYxRi1JI3kyR0YlRi1GLSwmRi1GLS1JJGNvc0dGM0Y2RjlGPQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The straight-line integral definition for <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> would yield a matrix whose first two rows are trivial, but the third row of the matrix consists of nontrivial expressions.  The most complicated expression is the (3,1) entry and the result of straight-line integration of this entry is as follows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">X := &lt;X1, X2, X3&gt;:  Z := &lt;Z1, Z2, Z3&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">J31 := unapply(J[3,1], y1,y2,y3);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSRKMzFHNiJmKjYlSSN5MUdGJUkjeTJHRiVJI3kzR0YlRiU2JEkpb3BlcmF0b3JHRiVJJmFycm93R0YlRiUsJiomLUkkc2luRzYkSSpwcm90ZWN0ZWRHRjNJKF9zeXNsaWJHRiU2IzkkIiIiOSZGNyEiIiomRjBGNzklRjdGN0YlRiVGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int(J31(X1+theta*(Z1-X1), X2+theta*(Z2-X2), X3+theta*(Z3-X3)), theta=0..1);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJComLEIqKEkjWDNHNiIiIiJJI1oxR0YoRiktSSRjb3NHNiRJKnByb3RlY3RlZEdGLkkoX3N5c2xpYkdGKDYjSSNYMUdGKEYpRikqJkkjWjNHRihGKS1JJHNpbkdGLUYwRikhIiIqJkYnRilGNEYpRikqKEYnRilGK0YpRjFGKUY2KihJI1gyR0YoRilGKkYpRitGKUY2KiZJI1oyR0YoRilGNEYpRikqJkY6RilGNEYpRjYqKEY6RilGK0YpRjFGKUYpKiZGM0YpLUY1NiNGKkYpRikqKEYzRiktRixGQUYpRipGKUY2KiZGJ0YpRkBGKUY2KihGMUYpRjNGKUZDRilGKSomRjxGKUZARilGNiooRjxGKUZDRilGKkYpRikqJkY6RilGQEYpRikqKEYxRilGPEYpRkNGKUY2RiksJkYqRjZGMUYpISIjRjY=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">In contrast, the corresponding expression computed in Example 1b below is much simpler.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 1b:  Integration via a Dog-leg Path</Text-field></Title><Text-field layout="Normal" style="Normal">In the three-dimensional case, we wish to integrate from a point <Equation input-equation="X = vector([X1, X2, X3]);" style="2D Comment">NiMvJSJYRy0lJ3ZlY3Rvckc2IzclJSNYMUclI1gyRyUjWDNH</Equation> to a point <Equation input-equation="Z = vector([Z1, Z2, Z3]);" style="2D Comment">NiMvJSJaRy0lJ3ZlY3Rvckc2IzclJSNaMUclI1oyRyUjWjNH</Equation>.  We choose to follow a dog-leg path consisting of segments parallel to the coordinate axes so that integration along any particular segment will be single-variable integration.  As we prove in the following section, the <Equation input-equation="j;" style="2D Comment">NiMlImpH</Equation>-<Equation input-equation="th;" style="2D Comment">NiMlI3RoRw==</Equation> column of the matrix <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> can be defined by scalar divided differences in the <Equation input-equation="j;" style="2D Comment">NiMlImpH</Equation>-<Equation input-equation="th;" style="2D Comment">NiMlI3RoRw==</Equation> variable.</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g1 := v -&gt; f(v)[1]:
g2 := v -&gt; f(v)[2]:
g3 := v -&gt; f(v)[3]:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := Matrix(3,3):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF[1,1] := ( g1(&lt;Z[1],X[2],X[3]&gt;) - g1(X) ) / (Z[1] - X[1]):
DDF[2,1] := ( g2(&lt;Z[1],X[2],X[3]&gt;) - g2(X) ) / (Z[1] - X[1]):
DDF[3,1] := ( g3(&lt;Z[1],X[2],X[3]&gt;) - g3(X) ) / (Z[1] - X[1]):

ZXX := &lt;Z[1],X[2],X[3]&gt;:
DDF[1,2] := ( g1(&lt;Z[1],Z[2],X[3]&gt;) - g1(ZXX) ) / (Z[2] - X[2]):
DDF[2,2] := ( g2(&lt;Z[1],Z[2],X[3]&gt;) - g2(ZXX) ) / (Z[2] - X[2]):
DDF[3,2] := ( g3(&lt;Z[1],Z[2],X[3]&gt;) - g3(ZXX) ) / (Z[2] - X[2]):

DDF[1,3] := ( g1(Z) - g1(&lt;Z[1],Z[2],X[3]&gt;) ) / (Z[3] - X[3]):
DDF[2,3] := ( g2(Z) - g2(&lt;Z[1],Z[2],X[3]&gt;) ) / (Z[3] - X[3]):
DDF[3,3] := ( g3(Z) - g3(&lt;Z[1],Z[2],X[3]&gt;) ) / (Z[3] - X[3]):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := map(normal, DDF);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSREREZHNiItSSdSVEFCTEVHRiU2JSInKzpfLUknTUFUUklYR0YlNiM3JTclIiIhRi9GLzclRi9GLyIiIjclKiYsKiomLUkkY29zRzYkSSpwcm90ZWN0ZWRHRjlJKF9zeXNsaWJHRiU2I0kjWjFHRiVGMUkjWDNHRiVGMSEiIiomSSNYMkdGJUYxRjZGMUYxKiYtRjc2I0kjWDFHRiVGMUY9RjFGMSomRkBGMUZCRjFGPkYxLCZGPEY+RkRGMUY+LCZGMUYxRjZGPkY2SSdNYXRyaXhHRjg=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note that the (3,1) entry, in particular, is much simpler than the expression obtained in Example 1a.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Verify that the defining equation for the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix is satisfied.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">map(normal, f(X)-f(Z)-DDF.(X-Z));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSdSVEFCTEVHNiI2JSInMzNWLUknTUFUUklYR0YlNiM3JTcjIiIhRixGLCZJJ1ZlY3Rvckc2JEkqcHJvdGVjdGVkR0YxSShfc3lzbGliR0YlNiNJJ2NvbHVtbkdGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g1 := 'g1': g2 := 'g2': g3 := 'g3':</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 2</Text-field></Title><Text-field layout="Normal" style="Normal">An even starker contrast in the complexity of the formulas can be seen in the following example where <Equation input-equation="f(y);" style="2D Comment">NiMtJSJmRzYjJSJ5Rw==</Equation> is a rational function.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := &lt;y1, y2, y3&gt;:
f := v -&gt; &lt;1, v[3], cos(v[1])/v[3]+(1-cos(v[1]))/v[2]&gt;:
'f(y)' = f(y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkiZkc2IjYjSSJ5R0YmLUknUlRBQkxFR0YmNiUiJz8uYC1JJ01BVFJJWEdGJjYjNyU3IyIiIjcjSSN5M0dGJjcjLCYqJi1JJGNvc0c2JEkqcHJvdGVjdGVkR0Y7SShfc3lzbGliR0YmNiNJI3kxR0YmRjJGNCEiIkYyKiYsJkYyRjJGOEY/RjJJI3kyR0YmRj9GMiZJJ1ZlY3RvckdGOjYjSSdjb2x1bW5HRiY=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Forming the Jacobian matrix and then applying straight-line integration to the (3,1) component, as in Example 1a, yields the following formula involving the functions <Equation input-equation="Si;" style="2D Comment">NiMlI1NpRw==</Equation> and <Equation input-equation="Ci;" style="2D Comment">NiMlI0NpRw==</Equation> (the sine and cosine integrals).</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">J := linalg[jacobian](f(y), y):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">J31 := unapply(J[3,1], y1,y2,y3);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSRKMzFHNiJmKjYlSSN5MUdGJUkjeTJHRiVJI3kzR0YlRiU2JEkpb3BlcmF0b3JHRiVJJmFycm93R0YlRiUsJiomLUkkc2luRzYkSSpwcm90ZWN0ZWRHRjNJKF9zeXNsaWJHRiU2IzkkIiIiOSYhIiJGOSomRjBGNzklRjlGN0YlRiVGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">int(J31(X1+theta*(Z1-X1), X2+theta*(Z2-X2), X3+theta*(Z3-X3)), theta=0..1);</Font></Text-field><Text-field layout="Normal" style="Normal"/></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSpQSUVDRVdJU0VHNiI2JjckSSp1bmRlZmluZWRHSSpwcm90ZWN0ZWRHRiktSSRBbmRHRiU2JjIiIiEqJkkjWDNHRiUiIiIsJkkjWjNHRiUhIiJGMEYxRjQyRi4qJkkjWDJHRiVGMSwmSSNaMkdGJUY0RjdGMUY0MkYvRjEyRjZGMTckRigtRis2JEYtRjo3JEYoLUYrNiRGNUY7NyQsJComLFxvKiotSSNTaUc2JEYpSShfc3lzbGliR0YlNiMqKCwmSSNaMUdGJUY0SSNYMUdGJUYxRjFGM0YxRjJGNEYxRjlGMS1JJGNvc0dGSTYjKihGMkY0RjBGMUZORjFGMS1GUTYjKihGMkY0Rk9GMUYzRjFGMUYxKiotSSNDaUdGSTYjLCQqKEYwRjFGMkY0Rk1GMUY0RjFGOUYxRlBGMS1JJHNpbkdGSUZVRjFGMSoqRlhGMUY3RjEtRmhuRlJGMUZURjFGMSoqRlhGMUY3RjFGUEYxRmduRjFGNCoqLUZINiMqKEY3RjFGOEY0Rk1GMUYxRjNGMS1GUTYjKihGOEY0RjdGMUZORjFGMS1GUTYjKihGOEY0Rk9GMUY5RjFGMUYxKipGXW9GMUYzRjEtRmhuRmFvRjEtRmhuRmRvRjFGMSoqRl1vRjFGMEYxRmBvRjFGY29GMUY0KipGXW9GMUYwRjFGZ29GMUZob0YxRjQqKi1GWTYjLCRGX29GNEYxRjNGMUZnb0YxRmNvRjFGMSoqRlxwRjFGM0YxRmBvRjFGaG9GMUY0KiotRkg2I0ZmbkYxRjlGMUZQRjFGVEYxRjQqKkZhcEYxRjlGMUZqbkYxRmduRjFGNCoqRlxwRjFGMEYxRmdvRjFGY29GMUY0KipGXHBGMUYwRjFGYG9GMUZob0YxRjEqKkZhcEYxRjdGMUZQRjFGVEYxRjEqKkZhcEYxRjdGMUZqbkYxRmduRjFGMSoqRlhGMUY5RjFGam5GMUZURjFGNCoqRkdGMUY5RjFGam5GMUZnbkYxRjEqKi1GWTYjLCQqKEY5RjFGTUYxRjhGNEY0RjFGMEYxRmdvRjFGY29GMUYxKipGW3FGMUYwRjFGYG9GMUZob0YxRjQqKkZHRjFGN0YxRlBGMUZURjFGNCoqRkdGMUY3RjFGam5GMUZnbkYxRjQqKi1GWTYjLCRGTEY0RjFGOUYxRmpuRjFGVEYxRjEqKkZjcUYxRjlGMUZQRjFGZ25GMUY0KipGY3FGMUY3RjFGam5GMUZURjFGNCoqRmNxRjFGN0YxRlBGMUZnbkYxRjEqKi1GSDYjRl5xRjFGM0YxRmBvRjFGY29GMUY0KipGanFGMUYzRjFGZ29GMUZob0YxRjQqKkZqcUYxRjBGMUZgb0YxRmNvRjFGMSoqRmpxRjFGMEYxRmdvRjFGaG9GMUYxKipGW3FGMUYzRjFGZ29GMUZjb0YxRjQqKkZbcUYxRjNGMUZgb0YxRmhvRjFGMUYxLCoqJkY5RjFGM0YxRjEqJkY5RjFGMEYxRjQqJkY3RjFGM0YxRjQqJkY3RjFGMEYxRjFGNEY0SSpvdGhlcndpc2VHRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">In contrast, applying a dog-leg path of integration as in Example 1b yields the following simple entries in the DDF matrix.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Rather than define each entry of the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix by its explicit formula, as we did above, it is more compact to define the entries using procedure <Equation input-equation="scalardiff;" style="2D Comment">NiMlK3NjYWxhcmRpZmZH</Equation> whose definition appears in the next section.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">n := Dimension(X):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Xnew := copy(X):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">for j from 1 to n do
   col[j] := &lt;seq(scalardiff(f,i,j,Z[j],Xnew), i=1..n)&gt;;
   Xnew[j] := Z[j]
od:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := map(normal, linalg[augment](seq(col[j], j=1..n))):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := convert(DDF, Matrix);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSREREZHNiItSSdSVEFCTEVHRiU2JSInM3NgLUknTUFUUklYR0YlNiM3JTclIiIhRi9GLzclRi9GLyIiIjclKiosKiomSSNYMkdGJUYxLUkkY29zRzYkSSpwcm90ZWN0ZWRHRjpJKF9zeXNsaWJHRiU2I0kjWjFHRiVGMSEiIiomRjdGMUkjWDNHRiVGMUYxKiZGNkYxLUY4NiNJI1gxR0YlRjFGMSomRkJGMUZARjFGPkYxRjZGPkZARj4sJkY9Rj5GREYxRj4qKCwmRj5GMUY3RjFGMUkjWjJHRiVGPkY2Rj4sJCooRjdGMUkjWjNHRiVGPkZARj5GPkknTWF0cml4R0Y5</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note that the (3,1) entry, in particular, is vastly simpler than the expression obtained via straight-line integration.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Verify that the defining equation for the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix is satisfied.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">map(normal, f(X)-f(Z)-DDF.(X-Z));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSdSVEFCTEVHNiI2JSInUy9gLUknTUFUUklYR0YlNiM3JTcjIiIhRixGLCZJJ1ZlY3Rvckc2JEkqcHJvdGVjdGVkR0YxSShfc3lzbGliR0YlNiNJJ2NvbHVtbkdGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Algorithm for DDF Matrix Based on Scalar Divided Differences</Text-field></Title><Text-field layout="Normal" style="Normal">In [Geddes99] it is shown that the desired vector divided differences can be computed by the following method which relies on the computation of particular scalar divided differences.</Text-field><Section><Title><Text-field layout="Heading 2" style="Heading 2">Procedure scalardiff</Text-field></Title><Text-field layout="Normal" style="Normal">The scalar divided differences required in the computation of a divided difference matrix <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> arise in the following context.  The function <Equation input-equation="f;" style="2D Comment">NiMlImZH</Equation> is a vector-valued function of a vector argument.  It will be required to compute a scalar divided difference of <Equation input-equation="f[i];" style="2D Comment">NiMmJSJmRzYjJSJpRw==</Equation> , a particular component of <Equation input-equation="f;" style="2D Comment">NiMlImZH</Equation> , where we note that <Equation input-equation="f[i];" style="2D Comment">NiMmJSJmRzYjJSJpRw==</Equation> is a scalar-valued function of a vector argument.  Specifically, the following Maple procedure computes a scalar divided difference of <Equation input-equation="f[i];" style="2D Comment">NiMmJSJmRzYjJSJpRw==</Equation> in the <Equation input-equation="j;" style="2D Comment">NiMlImpH</Equation>-<Equation input-equation="th;" style="2D Comment">NiMlI3RoRw==</Equation> variable, taking into account the case where it reduces to differentiation.</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">scalardiff := proc(f::procedure, i::integer, j::integer, z::algebraic, X::Vector)
   local g,upper,n,W,k;

# f maps an n-vector to an n-vector, where n = dim(X).
# If z &lt;&gt; X[j], the value returned is the scalar divided difference of
# g = f[i], the i-th component of f, in the j-th variable:
#
#   ( g(X[1],...,X[j-1],z,X[j+1],...,X[n]) - g(X) ) / (z - X[j]) .
#
# If z = X[j], the value returned is the corresponding derivative value:
#   g_j(X)  where  g_j = partial derivative of g w.r.t the j-th variable.

   g := v -&gt; f(v)[i];
   if z &lt;&gt; X[j] then
      upper := copy(X);  upper[j] := z;
      (g(upper) - g(X)) / (z - X[j])
   else
      n := Dimension(X);  W := Vector(n, j -&gt; w[j]);
      eval(diff(g(W),W[j]), [seq(W[k]=X[k], k=1..n)])
   fi
end:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Theorem 1</Text-field></Title><Text-field layout="Normal" style="Normal">Let <Equation input-equation="f;" style="2D Comment">NiMlImZH</Equation> be a vector-valued function of a vector argument where the vectors have dimension <Equation input-equation="n;" style="2D Comment">NiMlIm5H</Equation>.  Given any two <Equation input-equation="n;" style="2D Comment">NiMlIm5H</Equation>-vectors <Equation input-equation="X;" style="2D Comment">NiMlIlhH</Equation> and <Equation input-equation="Z;" style="2D Comment">NiMlIlpH</Equation>, define the divided difference matrix <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> by</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" style="2D Comment"><Equation input-equation="`        DDF`(X,Z)[i,j] = scalardiff(f,i,j,Z[j],[Z[1], `...`, Z[j-1], X[j], `...`, X[n]]),`    i` = 1 .. n,`  j` = 1 .. n;" style="2D Comment">NiUvJi0lLH5+fn5+fn5+RERGRzYkJSJYRyUiWkc2JCUiaUclImpHLSUrc2NhbGFyZGlmZkc2JyUiZkdGK0YsJkYpNiNGLDcoJkYpNiMiIiIlJC4uLkcmRik2IywmRixGNkY2ISIiJkYoRjJGNyZGKDYjJSJuRy8lJn5+fn5pRztGNkY/LyUkfn5qR0ZC</Equation></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where <Equation input-equation="scalardiff;" style="2D Comment">NiMlK3NjYWxhcmRpZmZH</Equation> is as defined above.  Then the following identity holds:</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"><Equation input-equation="`        f`(X)-f(Z) = DDF(X,Z)*(X-Z);" style="2D Comment">NiMvLCYtJSp+fn5+fn5+fmZHNiMlIlhHIiIiLSUiZkc2IyUiWkchIiIqJi0lJERERkc2JEYoRi1GKSwmRihGKUYtRi5GKQ==</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Procedure DDFgen</Text-field></Title><Text-field layout="Normal" style="Normal">We can now present procedure <Equation input-equation="DDFgen;" style="2D Comment">NiMlJ0RERmdlbkc=</Equation> which generates the matrix <Equation input-equation="DDF(X,Z);" style="2D Comment">NiMtJSREREZHNiQlIlhHJSJaRw==</Equation> defined in Theorem 1.</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDFgen := proc(f::procedure, X::Vector, Z::Vector)
   local i,j,n,Xnew,col;

# f maps an n-vector to an n-vector, where n = dim(X) = dim(Z).
# The value returned is an n-by-n matrix DDF(X,Z), computed via
# scalar divided differences, which satisfies the identity
#    f(X)-f(Z) = DDF(X,Z) (X-Z) .

   n := Dimension(X);
   if Dimension(Z) &lt;&gt; n then ERROR("expecting dim(X)=dim(Z)") fi;
   Xnew := copy(X);
   for j from 1 to n do
      col[j] := &lt;seq(scalardiff(f,i,j,Z[j],Xnew), i=1..n)&gt;;
      Xnew[j] := Z[j]
   od;
   convert(map(normal, linalg[augment](seq(col[j], j=1..n))), Matrix)
end:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">A DDF-based Update Formula</Text-field></Title><Text-field layout="Normal" style="Normal">Recall the second order update formula based on the Jacobian:</Text-field><Text-field layout="Normal" style="Normal">          <Equation executable="true" input-equation="Q(h,g) = g + h*f(g) + ``(h^2/2)*J[f](g)*f(g)" style="2D Input">NiMvLSUiUUc2JCUiaEclImdHLChGKCIiIiomRidGKi0lImZHNiNGKEYqRioqKC0lIUc2IyomRiciIiNGNCEiIkYqLSYlIkpHNiNGLUYuRipGLEYqRio=</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Consider two "nearby" vectors <Equation executable="true" input-equation="g" style="2D Input">NiMlImdH</Equation> and <Equation executable="true" input-equation="Q" style="2D Input">NiMlIlFH</Equation> (which will correspond to iterates <Equation executable="true" input-equation="y[n]" style="2D Input">NiMmJSJ5RzYjJSJuRw==</Equation> and <Equation executable="true" input-equation="y[n+1]" style="2D Input">NiMmJSJ5RzYjLCYlIm5HIiIiRihGKA==</Equation>, respectively) and approximate the Jacobian <Equation executable="true" input-equation="J[f](g)" style="2D Input">NiMtJiUiSkc2IyUiZkc2IyUiZ0c=</Equation> by <Equation executable="true" input-equation="DDF(g,Q)" style="2D Input">NiMtJSREREZHNiQlImdHJSJRRw==</Equation> .  This leads to the following implicit update formula:</Text-field><Text-field layout="Normal" style="Normal">      Solve    <Equation executable="true" input-equation="Q = g + h*f(g) + ``(h^2/2)*DDF(g,Q)*f(g)" style="2D Input">NiMvJSJRRywoJSJnRyIiIiomJSJoR0YnLSUiZkc2I0YmRidGJyooLSUhRzYjKiZGKSIiI0YyISIiRictJSREREZHNiRGJkYkRidGKkYnRic=</Equation>     for    <Equation executable="true" input-equation="Q = Q(h,g)" style="2D Input">NiMvJSJRRy1GJDYkJSJoRyUiZ0c=</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="_cstyle268"><Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" underline="false">Remarks</Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item">This is an <Font executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle269" underline="false">implicit</Font> formula, thus achieving desirable numerical stability properties.</Text-field><Text-field layout="Bullet Item" style="Bullet Item">The computer algebra system makes it <Font executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle270" underline="false">practical</Font> to form the DDF matrix for the given problem.</Text-field><Text-field layout="Bullet Item" style="Bullet Item">In some cases of interest, it is possible to solve the above implicit formula for <Equation executable="true" input-equation="Q" style="2D Input">NiMlIlFH</Equation> yielding an <Font executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle271" underline="false">explicit</Font> symbolic solution!</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The latter point says that we can simultaneously achieve two apparently contradictory goals:</Text-field><Text-field layout="Dash Item" style="_cstyle272"><Font bold="false" executable="false" family="Serif" italic="false" size="12" underline="false">the numerical stability properties of an implicit formula;</Font></Text-field><Text-field layout="Dash Item" style="_cstyle273"><Font bold="false" executable="false" family="Serif" italic="false" size="12" underline="false">the computational efficiency, in the purely numerical phase, achieved by an explicit formula for the next iterate, without the need to numerically solve a nonlinear system of equations at each step.</Font></Text-field><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Example 3</Text-field></Title><Text-field layout="Normal" style="Normal">This example illustrates the derivation of an explicit numerical update formula by solving implicit equations as discussed above.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Consider the IVP specified by the following nonlinear second-order differential equation <Equation input-equation="de;" style="2D Comment">NiMlI2RlRw==</Equation> with corresponding initial conditions specified by <Equation input-equation="ic;" style="2D Comment">NiMlI2ljRw==</Equation>.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">de := diff(x(t),t$2) - x(t)*diff(x(t),t) = 0;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNkZUc2Ii8sJi1JJWRpZmZHSSpwcm90ZWN0ZWRHRio2JC1JInhHRiU2I0kidEdGJS1JIiRHRio2JEYvIiIjIiIiKiZGLEY0LUYpNiRGLEYvRjQhIiIiIiE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">t0 := sqrt(2)*Pi/8:  xt0 := 2-sqrt(2):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ic := {x(t0) = xt0, D(x)(t0) = 2*xt0};</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNpY0c2IjwkLy1JInhHRiU2IywkKiYiIiMjIiIiRi1JI1BpR0kqcHJvdGVjdGVkR0YxRi8jRi8iIiksJkYtRi8qJEYtRi4hIiIvLS1JIkRHNiRGMUkoX3N5c2xpYkdGJTYjRilGKiwmIiIlRi9GNSEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">For this example, the solution can be expressed in closed form:  <Equation input-equation="x(t) = sqrt(2)*tan(t/sqrt(2));" style="2D Comment">NiMvLSUieEc2IyUidEcqJi0lJXNxcnRHNiMiIiMiIiItJSR0YW5HNiMqJkYnRi1GKSEiIkYt</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Converting <Equation input-equation="de;" style="2D Comment">NiMlI2RlRw==</Equation> to a system of first-order equations, the initial-value problem becomes</Text-field><Text-field layout="Normal" style="Normal">      <Equation executable="true" input-equation="diff(y(t), t) = f(y);  `      y`(t[0]) = y[0]" style="2D Input">NiNDJC8tJSVkaWZmRzYkLSUieUc2IyUidEdGKy0lImZHNiNGKS8tJSh+fn5+fn55RzYjJkYrNiMiIiEmRilGNA==</Equation> </Text-field><Text-field layout="Normal" style="Normal">where</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := &lt;y1,y2&gt;:
f := v -&gt; &lt;v[2], v[1]*v[2]&gt;:
'f(y)' = f(y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkiZkc2IjYjSSJ5R0YmLUknUlRBQkxFR0YmNiUiJyFbSSYtSSdNQVRSSVhHRiY2IzckNyNJI3kyR0YmNyMqJkkjeTFHRiYiIiJGMkY2JkknVmVjdG9yRzYkSSpwcm90ZWN0ZWRHRjpJKF9zeXNsaWJHRiY2I0knY29sdW1uR0Ym</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">and the initial conditions are</Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">[y1,y2](t0) = [xt0, 2*xt0];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvNyQtSSN5MUc2IjYjLCQqJiIiIyMiIiJGK0kjUGlHSSpwcm90ZWN0ZWRHRi9GLSNGLSIiKS1JI3kyR0YnRig3JCwmRitGLSokRitGLCEiIiwmIiIlRi1GNiEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Let us generate a numerical update formula by the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> approach of the previous section.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := &lt;g1,g2&gt;:  Q := &lt;Q1,Q2&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := DDFgen(f,g,Q);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSREREZHNiItSSdSVEFCTEVHRiU2JSInZzpiLUknTUFUUklYR0YlNiM3JDckIiIhIiIiNyRJI2cyR0YlSSNRMUdGJUknTWF0cml4RzYkSSpwcm90ZWN0ZWRHRjZJKF9zeXNsaWJHRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Check the DDF defining property.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">map(normal, f(g)-f(Q)-DDF.(g-Q));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSdSVEFCTEVHNiI2JSInPzBgLUknTUFUUklYR0YlNiM3JDcjIiIhRiwmSSdWZWN0b3JHNiRJKnByb3RlY3RlZEdGMUkoX3N5c2xpYkdGJTYjSSdjb2x1bW5HRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The second-order implicit update formula of the preceding section is of the form</Text-field><Text-field layout="Normal" style="2D Comment"><Equation input-equation="Q = g+h*f(g)+``(h^2/2)*``(DDF*`.`*f(g));" style="2D Comment">NiMvJSJRRywoJSJnRyIiIiomJSJoR0YnLSUiZkc2I0YmRidGJyomLSUhRzYjKiZGKSIiI0YyISIiRictRi82IyooJSREREZHRiclIi5HRidGKkYnRidGJw==</Equation></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">h := 'h':</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">RHS := g + ScalarMultiply(f(g),h) + ScalarMultiply(DDF.f(g), h^2/2);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSRSSFNHNiItSSdSVEFCTEVHRiU2JSInZzBgLUknTUFUUklYR0YlNiM3JDcjLChJI2cxR0YlIiIiKiZJImhHRiVGMUkjZzJHRiVGMUYxKihGMyIiI0YwRjFGNEYxI0YxRjY3IywoRjRGMSooRjNGMUYwRjFGNEYxRjEqJkYzRjYsJiokRjRGNkYxKihJI1ExR0YlRjFGMEYxRjRGMUYxRjFGNyZJJ1ZlY3Rvckc2JEkqcHJvdGVjdGVkR0ZDSShfc3lzbGliR0YlNiNJJ2NvbHVtbkdGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Solving the implicit equations for the components of <Equation input-equation="Q;" style="2D Comment">NiMlIlFH</Equation> yields</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">soln := solve({seq(Q[k]=RHS[k], k=1..2)}, {Q[1],Q[2]});</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSVzb2xuRzYiPCQvSSNRMUdGJSwoSSNnMUdGJSIiIiomSSJoR0YlRitJI2cyR0YlRitGKyooRi0iIiNGKkYrRi5GKyNGK0YwL0kjUTJHRiUsLiooRi1GMEYqRjBGLkYrRjFGLkYrKihGLUYrRipGK0YuRitGKyomRi1GMEYuRjBGMSooRi0iIiRGKkYrRi5GMEYxKihGLSIiJUYqRjBGLkYwI0YrRjs=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">solnlist := [subs(soln,Q1), subs(soln,Q2)];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSlzb2xubGlzdEc2IjckLChJI2cxR0YlIiIiKiZJImhHRiVGKUkjZzJHRiVGKUYpKihGKyIiI0YoRilGLEYpI0YpRi4sLiooRitGLkYoRi5GLEYpRi9GLEYpKihGK0YpRihGKUYsRilGKSomRitGLkYsRi5GLyooRisiIiRGKEYpRixGLkYvKihGKyIiJUYoRi5GLEYuI0YpRjc=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Q := evalf @ unapply(solnlist,h,g1,g2):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Computing solution points via the explicit update formula is straightforward.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">h := 0.005;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJoRzYiJCIiJiEiJA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">t0 := evalf(t0);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSN0MEc2IiQiK3NPZ2BiISM1</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := [evalf(xt0), evalf(2*xt0)];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJnRzYiNyQkIipRa3kmZSEiKiQiK3dHZHI2Rik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">L := [[t0,g[1]]]:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">for i from 1 to 330 do</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">   g := Q(h,g[1],g[2]);</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">   L := [op(L),[t0+i*h,g[1]]]</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">od:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">plots[pointplot](L);</Font></Text-field></Input><Output><Text-field layout="Maple Plot"><Plot height="300" type="two-dimensional" width="400">LSUlUExPVEc2JC0lJ1BPSU5UU0c2Z19sNyQkIitzT2dgYiEjNSQiKlFreSZlISIqNyQkIitzT2cuY0YrJCIrNSlHbCJmRis3JCQiK3NPZ2BjRiskIitScU92ZkYrNyQkIitzT2cuZEYrJCIrPThRTWdGKzckJCIrc09nYGRGKyQiK0BSZCQ0J0YrNyQkIitzT2cuZUYrJCIrVnIlSDonRis3JCQiK3NPZ2BlRiskIisvTF03aUYrNyQkIitzT2cuZkYrJCIrWFpDc2lGKzckJCIrc09nYGZGKyQiK01RPEtqRis3JCQiK3NPZy5nRiskIitoSEgjUidGKzckJCIrc09nYGdGKyQiK1VYZ19rRis3JCQiK3NPZy5oRiskIis8NTY4bEYrNyQkIitzT2dgaEYrJCIrYFsiUWQnRis3JCQiK3NPZy5pRiskIitUJj1aaidGKzckJCIrc09nYGlGKyQiKy1ZI2VwJ0YrNyQkIitzT2cuakYrJCIremI4ZG5GKzckJCIrc09nYGpGKyQiK1lTbD1vRis3JCQiK3NPZy5rRiskIisvRVEhKW9GKzckJCIrc09nYGtGKyQiKyMpUUtVcEYrNyQkIitzT2cubEYrJCIrUTBbL3FGKzckJCIrc09nYGxGKyQiK2dfJm8xKEYrNyQkIitzT2cubUYrJCIrazJYSHJGKzckJCIrc09nYG1GKyQiKyl6cEE+KEYrNyQkIitzT2cubkYrJCIrU15KYnNGKzckJCIrc09nYG5GKyQiKysnKmU9dEYrNyQkIitzT2cub0YrJCIrP2c0I1EoRis3JCQiK3NPZ2BvRiskIit1cyRlVyhGKzckJCIrc09nLnBGKyQiK3FpIik0dkYrNyQkIitzT2dgcEYrJCIrXGYudXZGKzckJCIrc09nLnFGKyQiKyZHKlxRd0YrNyQkIitzT2dgcUYrJCIrKkc0S3EoRis3JCQiK3NPZy5yRiskIisxIXAib3hGKzckJCIrc09nYHJGKyQiKz46UUx5Ris3JCQiK3NPZy5zRiskIitYKlwpKSp5Ris3JCQiK3NPZ2BzRiskIitTdWRrekYrNyQkIitzT2cudEYrJCIrKT5uMC4pRis3JCQiK3NPZ2B0RiskIitdQyNvNClGKzckJCIrc09nLnVGKyQiK3FrTWoiKUYrNyQkIitzT2dgdUYrJCIrb0Q5SSMpRis3JCQiK3NPZy52RiskIisqNDlzSClGKzckJCIrc09nYHZGKyQiK2NXY2skKUYrNyQkIitzT2cud0YrJCIrdnE+SyUpRis3JCQiK3NPZ2B3RiskIitPYTYrJilGKzckJCIrc09nLnhGKyQiK2pJS28mKUYrNyQkIitzT2dgeEYrJCIrQk4jb2opRis3JCQiK3NPZy55RiskIitJL2kwKClGKzckJCIrc09nYHlGKyQiK1d1cnUoKUYrNyQkIitzT2cuekYrJCIrciM9VCUpKUYrNyQkIitzT2dgekYrJCIrbG0jUSIqKUYrNyQkIitzT2cuISlGKyQiK0prJVEpKilGKzckJCIrc09nYCEpRiskIitAOT1hISpGKzckJCIrc09nLiIpRiskIitSYiRbNypGKzckJCIrc09nYCIpRiskIitTRiJlPipGKzckJCIrc09nLiMpRiskIitLcTZuIypGKzckJCIrc09nYCMpRiskIit4Q3ZRJCpGKzckJCIrc09nLiQpRiskIisqPUIyVCpGKzckJCIrc09nYCQpRiskIitTTC4kWypGKzckJCIrc09nLiUpRiskIitkcm9iJipGKzckJCIrc09nYCUpRiskIitFKilvRycqRis3JCQiK3NPZy4mKUYrJCIrISpILy0oKkYrNyQkIitzT2dgJilGKyQiK2BQdnYoKkYrNyQkIitzT2cuJylGKyQiK3pjIylcKSpGKzckJCIrc09nYCcpRiskIislSGpVIyoqRis3JCQiK3NPZy4oKUYrJCIrKT1yISoqKipGKzckJCIrc09nYCgpRiskIissYVUyNUYuNyQkIitzT2cuKSlGKyQiK1w7KVwsIkYuNyQkIitzT2dgKSlGKyQiK1NqZEE1Ri43JCQiK3NPZy4qKUYrJCIraCo0LS4iRi43JCQiK3NPZ2AqKUYrJCIrLkkpeS4iRi43JCQiK3NPZy4hKkYrJCIrbmZmWDVGLjckJCIrc09nYCEqRiskIitlJFxMMCJGLjckJCIrc09nLiIqRiskIisicFY2MSJGLjckJCIrc09nYCIqRiskIispW3oqbzVGLjckJCIrc09nLiMqRiskIit5cyZvMiJGLjckJCIrc09nYCMqRiskIisoZnhaMyJGLjckJCIrc09nLiQqRiskIisiKjR1IzQiRi43JCQiK3NPZ2AkKkYrJCIrNyFbMjUiRi43JCQiK3NPZy4lKkYrJCIrQSMqejM2Ri43JCQiK3NPZ2AlKkYrJCIrIj4mKm82IkYuNyQkIitzT2cuJipGKyQiKyhcT103IkYuNyQkIitzT2dgJipGKyQiK0dQQUw2Ri43JCQiK3NPZy4nKkYrJCIrenVYVDZGLjckJCIrc09nYCcqRiskIitiJFEoXDZGLjckJCIrc09nLigqRiskIitzcDFlNkYuNyQkIitzT2dgKCpGKyQiK2BSV202Ri43JCQiK3NPZy4pKkYrJCIrSypwWzwiRi43JCQiK3NPZ2ApKkYrJCIrXmJNJD0iRi43JCQiK3NPZy4qKkYrJCIrbTkoPT4iRi43JCQiK3NPZ2AqKkYrJCIrUyRbLz8iRi43JCQiK24uTys1Ri4kIitcbzI0N0YuNyQkIituLk8wNUYuJCIrd3d2PDdGLjckJCIrbi5PNTVGLiQiKz46XEU3Ri43JCQiK24uTzo1Ri4kIismM3pfQiJGLjckJCIrbi5PPzVGLiQiKyQ0QFRDIkYuNyQkIituLk9ENUYuJCIrdCM9SUQiRi43JCQiK24uT0k1Ri4kIitvOCg+RSJGLjckJCIrbi5PTjVGLiQiK0w2KTRGIkYuNyQkIituLk9TNUYuJCIrTiRbK0ciRi43JCQiK24uT1g1Ri4kIitgUDwqRyJGLjckJCIrbi5PXTVGLiQiKyM9ZSQpSCJGLjckJCIrbi5PYjVGLiQiK0VDZzI4Ri43JCQiK24uT2c1Ri4kIiswdCFwSiJGLjckJCIrbi5PbDVGLiQiK19PRkU4Ri43JCQiK24uT3E1Ri4kIis7QnFOOEYuNyQkIituLk92NUYuJCIrZVQ+WDhGLjckJCIrbi5PITMiRi4kIitiK3ZhOEYuNyQkIituLk8mMyJGLiQiKyoqM1BrOEYuNyQkIituLk8hNCJGLiQiKyhmZFNQIkYuNyQkIituLk8mNCJGLiQiK3Q1IlFRIkYuNyQkIituLk8rNkYuJCIrbUFqJFIiRi43JCQiK24uTzA2Ri4kIitJQF8uOUYuNyQkIituLk81NkYuJCIrUztbODlGLjckJCIrbi5POjZGLiQiKyZ5Nk5VIkYuNyQkIituLk8/NkYuJCIrdE5oTDlGLjckJCIrbi5PRDZGLiQiK0chKXlWOUYuNyQkIituLk9JNkYuJCIrJj5PU1giRi43JCQiK24uT042Ri4kIitQImZWWSJGLjckJCIrbi5PUzZGLiQiK096dnU5Ri43JCQiK24uT1g2Ri4kIismcExfWyJGLjckJCIrbi5PXTZGLiQiK052eSZcIkYuNyQkIituLk9iNkYuJCIrKzFVMTpGLjckJCIrbi5PZzZGLiQiK2FTODw6Ri43JCQiK24uT2w2Ri4kIiskM0h6XyJGLjckJCIrbi5PcTZGLiQiKyUqbyEpUTpGLjckJCIrbi5PdjZGLiQiKz8obyhcOkYuNyQkIituLk8hPSJGLiQiKzllIjNjIkYuNyQkIituLk8mPSJGLiQiK2ElXD5kIkYuNyQkIituLk8hPiJGLiQiK1Y0PCRlIkYuNyQkIituLk8mPiJGLiQiKzQ7WyVmIkYuNyQkIituLk8rN0YuJCIrMEcpZWciRi43JCQiK24uTzA3Ri4kIis2ZlA8O0YuNyQkIituLk81N0YuJCIrTEInKkc7Ri43JCQiK24uTzo3Ri4kIisyTmtTO0YuNyQkIituLk8/N0YuJCIrJSozVV87Ri43JCQiK24uT0Q3Ri4kIisnKWZIaztGLjckJCIrbi5PSTdGLiQiKzAuRnc7Ri43JCQiK24uT043Ri4kIisuYU0pbyJGLjckJCIrbi5PUzdGLiQiK2lHXys8Ri43JCQiK24uT1g3Ri4kIispSC9HciJGLjckJCIrbi5PXTdGLiQiK2c4PkQ8Ri43JCQiK24uT2I3Ri4kIitJZG9QPEYuNyQkIituLk9nN0YuJCIrRCIqR108Ri43JCQiK24uT2w3Ri4kIisnSC5JdyJGLjckJCIrbi5PcTdGLiQiK00rJGV4IkYuNyQkIituLk92N0YuJCIrazZ4KXkiRi43JCQiK24uTyFHIkYuJCIrXyZHPSE9Ri43JCQiK24uTyZHIkYuJCIrLVQrOj1GLjckJCIrbi5PIUgiRi4kIitmKCpIRz1GLjckJCIrbi5PJkgiRi4kIis0dnJUPUYuNyQkIituLk8rOEYuJCIrJFFmXyY9Ri43JCQiK24uTzA4Ri4kIithdSMqbz1GLjckJCIrbi5PNThGLiQiK1NRcyMpPUYuNyQkIituLk86OEYuJCIrMjJsJyo9Ri43JCQiK24uTz84Ri4kIitvLXI1PkYuNyQkIituLk9EOEYuJCIrJnkvXCM+Ri43JCQiK24uT0k4Ri4kIitwbEJSPkYuNyQkIituLk9OOEYuJCIrJyl6cWA+Ri43JCQiK24uT1M4Ri4kIitgOUtvPkYuNyQkIituLk9YOEYuJCIrViV6SSk+Ri43JCQiK24uT104Ri4kIislWyUpeio+Ri43JCQiK24uT2I4Ri4kIitqIlJJLCNGLjckJCIrbi5PZzhGLiQiK0ZoQ0c/Ri43JCQiK24uT2w4Ri4kIismMzNPLyNGLjckJCIrbi5PcThGLiQiKzN5N2Y/Ri43JCQiK24uT3Y4Ri4kIitMIjNbMiNGLjckJCIrbi5PIVEiRi4kIitqPmwhNCNGLjckJCIrbi5PJlEiRi4kIit0QW0xQEYuNyQkIituLk8hUiJGLiQiKzBAJUc3I0YuNyQkIituLk8mUiJGLiQiK3lYPlJARi43JCQiK24uTys5Ri4kIismKUdzYkBGLjckJCIrbi5PMDlGLiQiKylISUM8I0YuNyQkIituLk81OUYuJCIrbixLKj0jRi43JCQiK24uTzo5Ri4kIitGZlIxQUYuNyQkIituLk8/OUYuJCIrKDRoT0EjRi43JCQiK24uT0Q5Ri4kIismRz42QyNGLjckJCIrbi5PSTlGLiQiKyI+dShlQUYuNyQkIituLk9OOUYuJCIrMSdIbUYjRi43JCQiK24uT1M5Ri4kIis/JSpvJUgjRi43JCQiK24uT1g5Ri4kIitBdyZISiNGLjckJCIrbi5PXTlGLiQiKy4kUTlMI0YuNyQkIituLk9iOUYuJCIramM4XUJGLjckJCIrbi5PZzlGLiQiKzVTMHBCRi43JCQiK24uT2w5Ri4kIitueD4pUSNGLjckJCIrbi5PcTlGLiQiK3Q5ZDJDRi43JCQiK24uT3Y5Ri4kIishenpyVSNGLjckJCIrbi5PIVsiRi4kIisvdi1aQ0YuNyQkIituLk8mWyJGLiQiK0omPnJZI0YuNyQkIituLk8hXCJGLiQiK0E0WShbI0YuNyQkIituLk8mXCJGLiQiK2xvMDNERi43JCQiK24uTys6Ri4kIiskcDcqR0RGLjckJCIrbi5PMDpGLiQiKykpUS5dREYuNyQkIituLk81OkYuJCIrJTNFOWQjRi43JCQiK24uTzo6Ri4kIit4XTQkZiNGLjckJCIrbi5PPzpGLiQiK0RvLzpFRi43JCQiK24uT0Q6Ri4kIitkdUdQRUYuNyQkIituLk9JOkYuJCIrIkdCKWZFRi43JCQiK24uT046Ri4kIispeWdFbyNGLjckJCIrbi5PUzpGLiQiK2ZtIWVxI0YuNyQkIituLk9YOkYuJCIrc3hFSEZGLjckJCIrbi5PXTpGLiQiKzQ3MGBGRi43JCQiK24uT2I6Ri4kIitsVTt4RkYuNyQkIituLk9nOkYuJCIrYldoLEdGLjckJCIrbi5PbDpGLiQiK0MmNGsjR0YuNyQkIituLk9xOkYuJCIrX3ViXkdGLjckJCIrbi5PdjpGLiQiK29rMXhHRi43JCQiK24uTyFlIkYuJCIrY10lSCFIRi43JCQiK24uTyZlIkYuJCIrbT4/SEhGLjckJCIrbi5PIWYiRi4kIitGaSVlJkhGLjckJCIrbi5PJmYiRi4kIitgcilHKUhGLjckJCIrbi5PKztGLiQiK2dWTDVJRi43JCQiK24uTzA7Ri4kIit1eD5RSUYuNyQkIituLk81O0YuJCIrWndbbUlGLjckJCIrbi5POjtGLiQiK25YQCY0JEYuNyQkIituLk8/O0YuJCIrdyUqUUNKRi43JCQiK24uT0Q7Ri4kIisib0JTOiRGLjckJCIrbi5PSTtGLiQiK3MpR1Q9JEYuNyQkIituLk9OO0YuJCIrT3JyOUtGLjckJCIrbi5PUztGLiQiK3k0IWVDJEYuNyQkIituLk9YO0YuJCIrTkxSeEtGLjckJCIrbi5PXTtGLiQiKyZmMiY0TEYuNyQkIituLk9iO0YuJCIrQXc6VUxGLjckJCIrbi5PZztGLiQiK3N4TnZMRi43JCQiK24uT2w7Ri4kIis6SDc0TUYuNyQkIituLk9xO0YuJCIrayVvTVckRi43JCQiK24uT3Y7Ri4kIisjUjUleU1GLjckJCIrbi5PIW8iRi4kIitsXydSXiRGLjckJCIrbi5PJm8iRi4kIitrLTpdTkYuNyQkIituLk8hcCJGLiQiKzxLKXBlJEYuNyQkIituLk8mcCJGLiQiK0lFW0NPRi43JCQiK24uTys8Ri4kIis9eG1pT0YuNyQkIituLk8wPEYuJCIrUiVlOnEkRi43JCQiK24uTzU8Ri4kIitNYjxUUEYuNyQkIituLk86PEYuJCIrZzBhInkkRi43JCQiK24uTz88Ri4kIitPZm5BUUYuNyQkIituLk9EPEYuJCIrIylcZ2tRRi43JCQiK24uT0k8Ri4kIitvPk4yUkYuNyQkIituLk9OPEYuJCIraEAlNCZSRi43JCQiK24uT1M8Ri4kIit6PVMmKlJGLjckJCIrbi5PWDxGLiQiK1cmZTIvJUYuNyQkIituLk9dPEYuJCIrUzIvKDMlRi43JCQiK24uT2I8Ri4kIit5I3lVOCVGLjckJCIrbi5PZzxGLiQiK2hBXSM9JUYuNyQkIituLk9sPEYuJCIrYF51SlVGLjckJCIrbi5PcTxGLiQiK2YzLyNHJUYuNyQkIituLk92PEYuJCIrLFtVTFZGLjckJCIrbi5PIXkiRi4kIisxUyRmUSVGLjckJCIrbi5PJnkiRi4kIispPjInUldGLjckJCIrbi5PIXoiRi4kIismKltbJVwlRi43JCQiK24uTyZ6IkYuJCIrPSY0MWIlRi43JCQiK24uTys9Ri4kIisrYi0zWUYuNyQkIituLk8wPUYuJCIrMSV6bm0lRi43JCQiK24uTzU9Ri4kIittKyNwcyVGLjckJCIrbi5POj1GLiQiKzkoKVwpeSVGLjckJCIrbi5PPz1GLiQiK08icDomW0YuNyQkIituLk9EPUYuJCIrSXk9O1xGLjckJCIrbi5PST1GLiQiKyQ9OUMpXEYuNyQkIituLk9OPUYuJCIrYDFKXV1GLjckJCIrbi5PUz1GLiQiK3dIJSo+XkYuNyQkIituLk9YPUYuJCIreS5RIj4mRi43JCQiK24uT109Ri4kIis7ZXBrX0YuNyQkIituLk9iPUYuJCIrRWknKlJgRi43JCQiK24uT2c9Ri4kIissR0Y8YUYuNyQkIituLk9sPUYuJCIrJEgsblwmRi43JCQiK24uT3E9Ri4kIitKQk15YkYuNyQkIituLk92PUYuJCIreTxIaWNGLjckJCIrbi5PISk9Ri4kIis4NmxbZEYuNyQkIituLk8mKT1GLiQiK1h5X1BlRi43JCQiK24uTyEqPUYuJCIrdWYuSGZGLjckJCIrbi5PJio9Ri4kIisiWydIQmdGLjckJCIrbi5PKz5GLiQiK3d5Vj9oRi43JCQiK24uTzA+Ri4kIisieidmP2lGLjckJCIrbi5PNT5GLiQiK0onPVJLJ0YuNyQkIituLk86PkYuJCIrJEhlMFYnRi43JCQiK24uTz8+Ri4kIitZNG9TbEYuNyQkIituLk9EPkYuJCIrMUhZYW1GLjckJCIrbi5PST5GLiQiKydlIzRzbkYuNyQkIituLk9OPkYuJCIrYDp4JCpvRi43JCQiK24uT1M+Ri4kIislcDooPnFGLjckJCIrbi5PWD5GLiQiKzpsOl1yRi43JCQiK24uT10+Ri4kIit2RE0mRyhGLjckJCIrbi5PYj5GLiQiKyozVGJVKEYuNyQkIituLk9nPkYuJCIrMihSNWQoRi43JCQiK24uT2w+Ri4kIisxJltAcyhGLjckJCIrbi5PcT5GLiQiK0BBP3p5Ri43JCQiK24uT3Y+Ri4kIitWRmNVISlGLjckJCIrbi5PISk+Ri4kIitJPmk3IylGLjckJCIrbi5PJik+Ri4kIitwWiEpKlEpRi43JCQiK24uTyEqPkYuJCIrZkhkdSYpRi43JCQiK24uTyYqPkYuJCIrYSpHdXcpRi43JCQiK24uTys/Ri4kIitqMCMqbyopRi43JCQiK24uTzA/Ri4kIisjPVkneiIqRi43JCQiK24uTzU/Ri4kIitwMkUrJSpGLjckJCIrbi5POj9GLiQiKyVvI1tKJypGLjckJCIrbi5PPz9GLiQiK146NXUpKkYuNyQkIituLk9EP0YuJCIrSigpKkcsIiEiKTckJCIrbi5PST9GLiQiK3ErclI1RmdncDckJCIrbi5PTj9GLiQiK1EwJnoxIkZnZ3A3JCQiK24uT1M/Ri4kIis5I1F4NCJGZ2dwNyQkIituLk9YP0YuJCIrVVg/SDZGZ2dwNyQkIituLk9dP0YuJCIreWlcaTZGZ2dwNyQkIituLk9iP0YuJCIrJHl4eD4iRmdncDckJCIrbi5PZz9GLiQiK1hQQk43RmdncDckJCIrbi5PbD9GLiQiKzxDMnY3RmdncDckJCIrbi5PcT9GLiQiKyVcSHZKIkZnZ3A3JCQiK24uT3Y/Ri4kIisoeXNHTyJGZ2dwNyQkIituLk8hMyNGLiQiK3h5UzY5RmdncDckJCIrbi5PJjMjRi4kIis3XVtqOUZnZ3A3JCQiK24uTyE0I0YuJCIrbXZdPjpGZ2dwNyQkIituLk8mNCNGLiQiKyVcVSp6OkZnZ3A3JCQiK24uTytARi4kIitnTExYO0ZnZ3A3JCQiK24uTzBARi4kIiskcDtqciJGZ2dwNyQkIituLk81QEYuJCIrPEZrJHoiRmdncDckJCIrbi5POkBGLiQiK3g9P3k9RmdncDckJCIrbi5PP0BGLiQiK1ciZjUoPkZnZ3A3JCQiK24uT0RARi4kIisiKSkpXHQ/RmdncDckJCIrbi5PSUBGLiQiK3hVMyg9I0ZnZ3A3JCQiK24uT05ARi4kIitjcnQ4QkZnZ3A3JCQiK24uT1NARi4kIisqeVllWCNGZ2dwNyQkIituLk9YQEYuJCIrYjJVO0VGZ2dwNyQkIituLk9dQEYuJCIrayEpSCp6I0ZnZ3A3JCQiK24uT2JARi4kIisvbVg0SUZnZ3A3JCQiK24uT2dARi4kIismSG5NRCRGZ2dwNyQkIituLk9sQEYuJCIrZ0s9U05GZ2dwNyQkIituLk9xQEYuJCIrKFs9PSlRRmdncDckJCIrbi5PdkBGLiQiK3p3cCZIJUZnZ3A3JCQiK24uTyE9I0YuJCIrL3BAMltGZ2dwNyQkIituLk8mPSNGLiQiK0IpNF5YJkZnZ3A3JCQiK24uTyE+I0YuJCIrIlwqUixqRmdncDckJCIrbi5PJj4jRi4kIitHUW1edUZnZ3A3JCQiK24uTytBRi4kIitQIipSKyIqRmdncDckJCIrbi5PMEFGLiQiK2xYZms2ISIoLSUlRk9OVEc2JCUqSEVMVkVUSUNBRyIjNQ==</Plot></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The solution has a pole at <Equation input-equation="Pi/sqrt(2);" style="2D Comment">NiMqJiUjUGlHIiIiLSUlc3FydEc2IyIiIyEiIg==</Equation> = 2.221441469 .  In this case, our numerical update formula has the traditional problem that it cannot integrate beyond a pole.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Example 4:  A Riccati Equation</Text-field></Title><Text-field layout="Normal" style="Normal">The following example illustrates that solving implicit equations for an explicit update formula can yield very interesting numerical methods.  This example is discussed by Kahan [Kahan93] as an "unconventional numerical method".  In this case, the DDF matrix is not used but rather a splitting technique is applied to the first-order update formula and then the implicit equations are solved.</Text-field><Group><Input><Text-field layout="Normal" style="Normal">The <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle263" underline="false">IVP</Font>:           <Equation executable="true" input-equation="`y'` = t + y^2;  `    y`(0) = 0" style="2D Input">NiNDJC8lI3knRywmJSJ0RyIiIiokJSJ5RyIiI0YoLy0lJn5+fn55RzYjIiIhRjA=</Equation>   .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">As an <Font executable="false" foreground="[0,0,0]" italic="false" style="_cstyle264" underline="false">AIVP</Font>:    <Equation executable="true" input-equation="[y[1], y[2]]*`'` = [1, y[1] + y[2]^2]; `    `*[y[1], y[2]](0,0) = [0,0]" style="2D Input">NiNDJC8qJjckJiUieUc2IyIiIiZGKDYjIiIjRiolIidHRio3JEYqLCZGJ0YqKiRGK0YtRiovKiYlJX5+fn5HRiotRiY2JCIiIUY3Rio3JEY3Rjc=</Equation>  .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := 'g': h := 'h':</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := &lt;y1,y2&gt;:
f := v -&gt; &lt;1, v[1]+v[2]^2&gt;:
'f(y)' = f(y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMvLUkiZkc2IjYjSSJ5R0YmLUknUlRBQkxFR0YmNiUiJysxYC1JJ01BVFJJWEdGJjYjNyQ3IyIiIjcjLCZJI3kxR0YmRjIqJEkjeTJHRiYiIiNGMiZJJ1ZlY3Rvckc2JEkqcHJvdGVjdGVkR0Y8SShfc3lzbGliR0YmNiNJJ2NvbHVtbkdGJg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := &lt;g1,g2&gt;:  Q := &lt;Q1,Q2&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Recall that the first-order update formula (Euler's method) is  <Equation input-equation="Q(h,g) = g+h*f(g);" style="2D Comment">NiMvLSUiUUc2JCUiaEclImdHLCZGKCIiIiomRidGKi0lImZHNiNGKEYqRio=</Equation> .  Apply a splitting technique to the second component of this vector equation (which corresponds to the original scalar IVP).  The main idea is to replace the term <Equation input-equation="g2^2;" style="2D Comment">NiMqJCUjZzJHIiIj</Equation> by an average of <Equation input-equation="g2;" style="2D Comment">NiMlI2cyRw==</Equation> and <Equation input-equation="Q2;" style="2D Comment">NiMlI1EyRw==</Equation>.   Specifically, replace <Equation input-equation="f(g);" style="2D Comment">NiMtJSJmRzYjJSJnRw==</Equation> in the first-order formula by <Equation input-equation="f_split(h,g,Q);" style="2D Comment">NiMtJShmX3NwbGl0RzYlJSJoRyUiZ0clIlFH</Equation> where</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f_split := (h,v,w) -&gt; &lt;1, v[1] + h/2 + v[2]*w[2]&gt;:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f_split(h,g,Q);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMtSSdSVEFCTEVHNiI2JSInUzFgLUknTUFUUklYR0YlNiM3JDcjIiIiNyMsKEkjZzFHRiVGLUkiaEdGJSNGLSIiIyomSSNnMkdGJUYtSSNRMkdGJUYtRi0mSSdWZWN0b3JHNiRJKnByb3RlY3RlZEdGOkkoX3N5c2xpYkdGJTYjSSdjb2x1bW5HRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">For curiousity, note that if one forms the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix for this example one gets</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">DDF := DDFgen(f,g,Q);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSREREZHNiItSSdSVEFCTEVHRiU2JSInW2hkLUknTUFUUklYR0YlNiM3JDckIiIhRi83JCIiIiwmSSNRMkdGJUYxSSNnMkdGJUYxSSdNYXRyaXhHNiRJKnByb3RlY3RlZEdGN0koX3N5c2xpYkdGJQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">but in what follows we are not using the <Equation input-equation="DDF;" style="2D Comment">NiMlJERERkc=</Equation> matrix.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Form and solve the implicit equations obtained via the splitting technique.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">RHS := g + ScalarMultiply(f_split(h,g,Q), h);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSRSSFNHNiItSSdSVEFCTEVHRiU2JSInIW9JJi1JJ01BVFJJWEdGJTYjNyQ3IywmSSNnMUdGJSIiIkkiaEdGJUYxNyMsJkkjZzJHRiVGMSomRjJGMSwoRjBGMUYyI0YxIiIjKiZGNUYxSSNRMkdGJUYxRjFGMUYxJkknVmVjdG9yRzYkSSpwcm90ZWN0ZWRHRj9JKF9zeXNsaWJHRiU2I0knY29sdW1uR0Yl</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">soln := solve({seq(Q[k]=RHS[k], k=1..2)}, {Q[1],Q[2]}):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">solnlist := [subs(soln,Q1), subs(soln,Q2)]:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Q := evalf @ unapply(solnlist,h,g1,g2);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJRRzYiLUkiQEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiRJJmV2YWxmR0YpZio2JUkiaEdGJUkjZzFHRiVJI2cyR0YlRiU2JEkpb3BlcmF0b3JHRiVJJmFycm93R0YlRiU3JCwmOSQiIiI5JUY4LCQqJiwoOSYiIiMqJkY3RjhGOUY4Rj4qJEY3Rj5GOEY4LCYhIiJGOComRjdGOEY9RjhGOEZCI0ZCRj5GJUYlRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Applying this update formula yields the following results.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">h := 0.01;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJoRzYiJCIiIiEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := [0,0];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJnRzYiNyQiIiFGJw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">L := [[g[1],g[2]]]:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">for step from 1 to 500 do</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">   g := Q(h,g[1],g[2]);</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">   L := [op(L),[g[1],g[2]]]</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">od:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">plots[pointplot](L,view=[0..5,-50..50]);</Font></Text-field></Input><Output><Text-field layout="Maple Plot"><Plot height="300" type="two-dimensional" width="400">LSUlUExPVEc2JS0lJ1BPSU5UU0c2YWpsNyQkIiIhRipGKTckJCIiIiEiIyQiKysrKytdISM5NyQkIiIjRi4kIisrNSsrPyEjODckJCIiJEYuJCIrKyssK1hGNzckJCIiJUYuJCIrK2cvKyEpRjc3JCQiIiZGLiQiKytZLF03ISM3NyQkIiInRi4kIisrci4rPUZHNyQkIiIoRi4kIistNzNdQ0ZHNyQkIiIpRi4kIiszJ2YsPyRGRzckJCIiKkYuJCIrQyMqR11TRkc3JCQiIzVGLiQiK2c8XCtdRkc3JCQiIzZGLiQiK0lWel1nRkc3JCQiIzdGLiQiK2crQixzRkc3JCQiIzhGLiQiKyZwUT1YKUZHNyQkIiM5Ri4kIisrc20tKSpGRzckJCIjOkYuJCIrUHFQRDYhIzY3JCQiIztGLiQiK1c2XyFHIkZkcDckJCIjPEYuJCIrcWlxWDlGZHA3JCQiIz1GLiQiKzUxJTRpIkZkcDckJCIjPkYuJCIrIVJMaSE9RmRwNyQkIiM/Ri4kIitDXGYsP0ZkcDckJCIjQEYuJCIrJW9PcT8jRmRwNyQkIiNBRi4kIithOGRBQ0ZkcDckJCIjQkYuJCIrLUhAW0VGZHA3JCQiI0NGLiQiK1NtKFIpR0ZkcDckJCIjREYuJCIrIUh6KUhKRmRwNyQkIiNFRi4kIitbIVJmUSRGZHA3JCQiI0ZGLiQiK19jPF9PRmRwNyQkIiNHRi4kIitdL2hHUkZkcDckJCIjSEYuJCIra2tFOlVGZHA3JCQiI0lGLiQiK2olb0BeJUZkcDckJCIjSkYuJCIrS0lNPltGZHA3JCQiI0tGLiQiK1MnPW84JkZkcDckJCIjTEYuJCIrP2Rpa2FGZHA3JCQiI01GLiQiK0luei1lRmRwNyQkIiNORi4kIitYaU9eaEZkcDckJCIjT0YuJCIrNTVQNWxGZHA3JCQiI1BGLiQiK10rJil6b0ZkcDckJCIjUUYuJCIrOlolKWZzRmRwNyQkIiNSRi4kIismeSlSXXdGZHA3JCQiI1NGLiQiK10mZTowKUZkcDckJCIjVEYuJCIrJilHUGolKUZkcDckJCIjVUYuJCIrXUwqZSkpKUZkcDckJCIjVkYuJCIrcVU8PiQqRmRwNyQkIiNXRi4kIitOR0ZqKCpGZHA3JCQiI1hGLiQiKz5cIz0tIiEjNTckJCIjWUYuJCIrYW1UbzVGW3o3JCQiI1pGLiQiK0MiNGg2IkZbejckJCIjW0YuJCIrIUg0XDsiRlt6NyQkIiNcRi4kIitdVyNbQCJGW3o3JCQiI11GLiQiK11BJ2VFIkZbejckJCIjXkYuJCIrJnBJIT04Rlt6NyQkIiNfRi4kIitoIlE4UCJGW3o3JCQiI2BGLiQiKzFNekQ5Rlt6NyQkIiNhRi4kIislZTA5WyJGW3o3JCQiI2JGLiQiK2ZVPVE6Rlt6NyQkIiNjRi4kIis7JVJoZiJGW3o3JCQiI2RGLiQiK3c5R2I7Rlt6NyQkIiNlRi4kIis3OGk6PEZbejckJCIjZkYuJCIrai08eDxGW3o3JCQiI2dGLiQiK10sJSpSPUZbejckJCIjaEYuJCIrI0hWUiE+Rlt6NyQkIiNpRi4kIitCRD5wPkZbejckJCIjakYuJCIrNTdxTj9GW3o3JCQiI2tGLiQiK3VLWy5ARlt6NyQkIiNsRi4kIisvS2JzQEZbejckJCIjbUYuJCIrITNFSEMjRlt6NyQkIiNuRi4kIisnZjxZSiNGW3o3JCQiI29GLiQiK3pTayhRI0ZbejckJCIjcEYuJCIrN0QtaUNGW3o3JCQiI3FGLiQiK2cweFBERlt6NyQkIiNyRi4kIiskZjFcaCNGW3o3JCQiI3NGLiQiKzcoXE1wI0ZbejckJCIjdEYuJCIreSg+TXgjRlt6NyQkIiN1Ri4kIitTdSRbJkdGW3o3JCQiI3ZGLiQiK2xUc1BIRlt6NyQkIiN3Ri4kIitvQTVBSUZbejckJCIjeEYuJCIrWVwqejUkRlt6NyQkIiN5Ri4kIis5alUmPiRGW3o3JCQiI3pGLiQiK1M5VSVHJEZbejckJCIjISlGLiQiKyRRMV1QJEZbejckJCIjIilGLiQiK0wjM3NZJEZbejckJCIjIylGLiQiK19eMGhORlt6NyQkIiMkKUYuJCIrQWtkY09GW3o3JCQiIyUpRi4kIispWy1RdiRGW3o3JCQiIyYpRi4kIisyXXdfUUZbejckJCIjJylGLiQiKy1wXGBSRlt6NyQkIiMoKUYuJCIrOUMuY1NGW3o3JCQiIykpRi4kIitnclNnVEZbejckJCIjKilGLiQiKyc+ZW1FJUZbejckJCIjISpGLiQiK3ZTI1tQJUZbejckJCIjIipGLiQiKz9cJVxbJUZbejckJCIjIypGLiQiKyNcaXFmJUZbejckJCIjJCpGLiQiK20tQTZaRlt6NyQkIiMlKkYuJCIrNU5ZRltGW3o3JCQiIyYqRi4kIitwJFJlJVxGW3o3JCQiIycqRi4kIiticFJtXUZbejckJCIjKCpGLiQiK1N1PSo9JkZbejckJCIjKSpGLiQiK2JURTlgRlt6NyQkIiMqKkYuJCIrJnAjb1RhRlt6NyQkIiQrIkYuJCIrTjVdcmJGW3o3JCQiJCwiRi4kIitdJ3pQcSZGW3o3JCQiJC0iRi4kIitOO2VRZUZbejckJCIkLiJGLiQiK1NHKGYoZkZbejckJCIkLyJGLiQiKz8/LTtoRlt6NyQkIiQwIkYuJCIrJik0ISllaUZbejckJCIkMSJGLiQiK2JaUS9rRlt6NyQkIiQyIkYuJCIrUzwmR2InRlt6NyQkIiQzIkYuJCIrP1JHL25GW3o3JCQiJDQiRi4kIitTcXdlb0ZbejckJCIkNSJGLiQiK0kzUjtxRlt6NyQkIiQ2IkYuJCIrOiNcczwoRlt6NyQkIiQ3IkYuJCIrbDBXVHRGW3o3JCQiJDgiRi4kIitTejE0dkZbejckJCIkOSJGLiQiKyFRUi1vKEZbejckJCIkOiJGLiQiKyY9b10meUZbejckJCIkOyJGLiQiK05LbkwhKUZbejckJCIkPCJGLiQiK04kemhAKUZbejckJCIkPSJGLiQiK3F2ci0lKUZbejckJCIkPiJGLiQiKytkVSRmKUZbejckJCIkPyJGLiQiKyFlWyUpeSlGW3o3JCQiJEAiRi4kIis6J1F6KSopRlt6NyQkIiRBIkYuJCIrXWkwIz4qRlt6NyQkIiRCIkYuJCIrKzAoNFMqRlt6NyQkIiRDIkYuJCIrNSZmW2gqRlt6NyQkIiREIkYuJCIrJj02UiQpKkZbejckJCIkRSJGLiQiKyZRS2UrIiEiKjckJCIkRiJGLiQiKylwSSlHNUZhY203JCQiJEciRi4kIisnPjNDMCJGYWNtNyQkIiRIIkYuJCIrKyQpZXc1RmFjbTckJCIkSSJGLiQiKyl6JlIsNkZhY203JCQiJEoiRi4kIitgcCZvNyJGYWNtNyQkIiRLIkYuJCIrNCcqKkg6IkZhY203JCQiJEwiRi4kIis4TCYpejZGYWNtNyQkIiRNIkYuJCIrWCVcdT8iRmFjbTckJCIkTiJGLiQiK2o4I2VCIkZhY203JCQiJE8iRi4kIitnWCtsN0ZhY203JCQiJFAiRi4kIitOby4mSCJGYWNtNyQkIiRRIkYuJCIrJ1tlZksiRmFjbTckJCIkUiJGLiQiKztEInlOIkZhY203JCQiJFMiRi4kIittW2shUiJGYWNtNyQkIiRUIkYuJCIrblldQzlGYWNtNyQkIiRVIkYuJCIrQVhXZjlGYWNtNyQkIiRWIkYuJCIrPTNfJlwiRmFjbTckJCIkVyJGLiQiK3NTeks6RmFjbTckJCIkWCJGLiQiKzkkSDhkIkZhY203JCQiJFkiRi4kIis8bD42O0ZhY203JCQiJFoiRi4kIit1NVpfO0ZhY203JCQiJFsiRi4kIitKVkImcCJGYWNtNyQkIiRcIkYuJCIrIT51JlI8RmFjbTckJCIkXSJGLiQiKyF5JmUmeSJGYWNtNyQkIiReIkYuJCIrOUFQTD1GYWNtNyQkIiRfIkYuJCIrWWEvJCk9RmFjbTckJCIkYCJGLiQiK1Jzc00+RmFjbTckJCIkYSJGLiQiK2ktYikpPkZhY203JCQiJGIiRi4kIitTJGZZLyNGYWNtNyQkIiRjIkYuJCIreUdALkBGYWNtNyQkIiRkIkYuJCIrI1wlUWtARmFjbTckJCIkZSJGLiQiK3dbT0dBRmFjbTckJCIkZiJGLiQiK2dSTyZII0ZhY203JCQiJGciRi4kIispUjhjTyNGYWNtNyQkIiRoIkYuJCIrWyVwJFJDRmFjbTckJCIkaSJGLiQiK09qInBeI0ZhY203JCQiJGoiRi4kIit1LGQpZiNGYWNtNyQkIiRrIkYuJCIrZ05vJW8jRmFjbTckJCIkbCJGLiQiKzE1bHZGRmFjbTckJCIkbSJGLiQiK2FgIj4oR0ZhY203JCQiJG4iRi4kIis1YShSKEhGYWNtNyQkIiRvIkYuJCIrIzMmUiMzJEZhY203JCQiJHAiRi4kIithViJ5PiRGYWNtNyQkIiRxIkYuJCIrc0QnNEskRmFjbTckJCIkciJGLiQiKy5Zbl9NRmFjbTckJCIkcyJGLiQiK1YxIlJmJEZhY203JCQiJHQiRi4kIitfMXlYUEZhY203JCQiJHUiRi4kIitZWmQ0UkZhY203JCQiJHYiRi4kIispSCxvMyVGYWNtNyQkIiR3IkYuJCIrTl5CelVGYWNtNyQkIiR4IkYuJCIrMSJ6KilbJUZhY203JCQiJHkiRi4kIitTTmE9WkZhY203JCQiJHoiRi4kIit6Klw0KFxGYWNtNyQkIiQhPUYuJCIrMCRvKVxfRmFjbTckJCIkIj1GLiQiKzUwISlmYkZhY203JCQiJCM9Ri4kIis6MkwxZkZhY203JCQiJCQ9Ri4kIitENlonSCdGYWNtNyQkIiQlPUYuJCIrUyhcIlJuRmFjbTckJCIkJj1GLiQiK1hFImZDKEZhY203JCQiJCc9Ri4kIismZmY+JHlGYWNtNyQkIiQoPUYuJCIrdk1yPCYpRmFjbTckJCIkKT1GLiQiKz9aRkokKkZhY203JCQiJCo9Ri4kIitVLkNKNSEiKTckJCIkIT5GLiQiK25tIz46IkZdZ243JCQiJCI+Ri4kIishXFtTSSJGXWduNyQkIiQjPkYuJCIrO2ohPV0iRl1nbjckJCIkJD5GLiQiKyNwciVwPEZdZ243JCQiJCU+Ri4kIitgJFJBOiNGXWduNyQkIiQmPkYuJCIrU3AnXHUjRl1nbjckJCIkJz5GLiQiKyFSSGl5JEZdZ243JCQiJCg+Ri4kIitJLlgnNCdGXWduNyQkIiQpPkYuJCIraW9GaTohIig3JCQiJCo+Ri4kISs4aiQpeUZGW2puNyQkIiQrI0YuJCErTlo6YHRGXWduNyQkIiQsI0YuJCErV08/T1VGXWduNyQkIiQtI0YuJCErNCtDdUhGXWduNyQkIiQuI0YuJCErZydlM0gjRl1nbjckJCIkLyNGLiQhK1NpQGk9Rl1nbjckJCIkMCNGLiQhK1kiWyJvOkZdZ243JCQiJDEjRi4kIStBd3pgOEZdZ243JCQiJDIjRi4kISstYmIhPiJGXWduNyQkIiQzI0YuJCEreilRPzEiRl1nbjckJCIkNCNGLiQhKyZSLj5lKkZhY203JCQiJDUjRi4kIStTI1FccylGYWNtNyQkIiQ2I0YuJCErcS1VMCEpRmFjbTckJCIkNyNGLiQhK0k9WiNSKEZhY203JCQiJDgjRi4kIStiaCJRJ29GYWNtNyQkIiQ5I0YuJCErWHYoSFMnRmFjbTckJCIkOiNGLiQhK0klM3YqZkZhY203JCQiJDsjRi4kIStiIkh5aiZGYWNtNyQkIiQ8I0YuJCErYnBXO2BGYWNtNyQkIiQ9I0YuJCErJipwVEZdRmFjbTckJCIkPiNGLiQhKyxBJ2Z3JUZhY203JCQiJD8jRi4kISswKio+R1hGYWNtNyQkIiRAI0YuJCErVD0lNEolRmFjbTckJCIkQSNGLiQhKzJiYTZURmFjbTckJCIkQiNGLiQhK05AIXkjUkZhY203JCQiJEMjRi4kISt5NiZ5diRGYWNtNyQkIiREI0YuJCErVVU2K09GYWNtNyQkIiRFI0YuJCErS05DYE1GYWNtNyQkIiRGI0YuJCErdTYzO0xGYWNtNyQkIiRHI0YuJCEreW9pKD0kRmFjbTckJCIkSCNGLiQhK3o+LG5JRmFjbTckJCIkSSNGLiQhK1QleU0mSEZhY203JCQiJEojRi4kIStoPE9ZR0ZhY203JCQiJEsjRi4kIStTcDJYRkZhY203JCQiJEwjRi4kISs9cDVcRUZhY203JCQiJE0jRi4kIStdSCp6YiNGYWNtNyQkIiROI0YuJCErKmVFOFojRmFjbTckJCIkTyNGLiQhK1xIdSlRI0ZhY203JCQiJFAjRi4kISs9XSIqNEJGYWNtNyQkIiRRI0YuJCErUilbWEIjRmFjbTckJCIkUiNGLiQhKzslekI7I0ZhY203JCQiJFMjRi4kISsrczskNCNGYWNtNyQkIiRUI0YuJCErJTMmcEU/RmFjbTckJCIkVSNGLiQhKzFld2k+RmFjbTckJCIkViNGLiQhKzMoKj4sPkZhY203JCQiJFcjRi4kISspeUs9JT1GYWNtNyQkIiRYI0YuJCErMV1eJXkiRmFjbTckJCIkWSNGLiQhKyspMyJIPEZhY203JCQiJFojRi4kISskeihbdjtGYWNtNyQkIiRbI0YuJCErXmNgQjtGYWNtNyQkIiRcI0YuJCErel05dDpGYWNtNyQkIiRdI0YuJCErTnBAQzpGYWNtNyQkIiReI0YuJCErVSVmbVoiRmFjbTckJCIkXyNGLiQhKyFcKFFJOUZhY203JCQiJGAjRi4kISs8P0smUSJGYWNtNyQkIiRhI0YuJCErYSUqUVQ4RmFjbTckJCIkYiNGLiQhK0U3XylIIkZhY203JCQiJGMjRi4kISs7TGxjN0ZhY203JCQiJGQjRi4kIStkZXM6N0ZhY203JCQiJGUjRi4kISt4Rm92NkZhY203JCQiJGYjRi4kISt5OVpPNkZhY203JCQiJGcjRi4kIStRRC8pNCJGYWNtNyQkIiRoI0YuJCErXSVcLjEiRmFjbTckJCIkaSNGLiQhKyNRW0wtIkZhY203JCQiJGojRi4kIStTJnoqcCkqRlt6NyQkIiRrI0YuJCErZy9mNyYqRlt6NyQkIiRsI0YuJCErTmglNDsqRlt6NyQkIiRtI0YuJCErIT4mcDkpKUZbejckJCIkbiNGLiQhK1NRXXQlKUZbejckJCIkbyNGLiQhK3ZXMFAiKUZbejckJCIkcCNGLiQhKzBXLzB5Rlt6NyQkIiRxI0YuJCErXVk9eHVGW3o3JCQiJHIjRi4kIStnKSk+YHJGW3o3JCQiJHMjRi4kISs/QiNHJG9GW3o3JCQiJHQjRi4kISs1NSFlXidGW3o3JCQiJHUjRi4kIStEMio9PydGW3o3JCQiJHYjRi4kISt2aSYzKmVGW3o3JCQiJHcjRi4kIStYMlojZSZGW3o3JCQiJHgjRi4kIStiWl53X0ZbejckJCIkeSNGLiQhK0dleHNcRlt6NyQkIiR6I0YuJCErYXgvcllGW3o3JCQiJCFHRi4kISsnKipINlAlRlt6NyQkIiQiR0YuJCErUnIjRzIlRlt6NyQkIiQjR0YuJCErYSRbZngkRlt6NyQkIiQkR0YuJCErJypvSSFbJEZbejckJCIkJUdGLiQhKzknPmQ9JEZbejckJCIkJkdGLiQhKyJcMT8qR0ZbejckJCIkJ0dGLiQhKyc+ISoqKWYjRlt6NyQkIiQoR0YuJCErUGNcMUJGW3o3JCQiJClHRi4kIStbJlxWLCNGW3o3JCQiJCpHRi4kIStzK1FBPEZbejckJCIkIUhGLiQhK19qVEk5Rlt6NyQkIiQiSEYuJCErRSIpR1E2Rlt6NyQkIiQjSEYuJCErSUxEZSUpRmRwNyQkIiQkSEYuJCErP3JkR2JGZHA3JCQiJCVIRi4kIStLUzkjZiNGZHA3JCQiJCZIRi4kIitsX2tGTkZHNyQkIiQnSEYuJCIrPDcpeUkkRmRwNyQkIiQoSEYuJCIrJipvJlxGJ0ZkcDckJCIkKUhGLiQiK11bd2IjKkZkcDckJCIkKkhGLiQiKzYwQEQ3Rlt6NyQkIiQrJEYuJCIrJSozZUU6Rlt6NyQkIiQsJEYuJCIrWFYoKUg9Rlt6NyQkIiQtJEYuJCIrVTtHTkBGW3o3JCQiJC4kRi4kIitKIikqSFcjRlt6NyQkIiQvJEYuJCIrX1VBYEZGW3o3JCQiJDAkRi4kIismNG1oMSRGW3o3JCQiJDEkRi4kIit6Zi4jUSRGW3o3JCQiJDIkRi4kIit1STAsUEZbejckJCIkMyRGLiQiK2FTV0JTRlt6NyQkIiQ0JEYuJCIrKXpWJVxWRlt6NyQkIiQ1JEYuJCIrTWhIellGW3o3JCQiJDYkRi4kIitOWUQ4XUZbejckJCIkNyRGLiQiKyZbJGVeYEZbejckJCIkOCRGLiQiKyFSZVhwJkZbejckJCIkOSRGLiQiK3Z2WVVnRlt6NyQkIiQ6JEYuJCIrZ0doJlInRlt6NyQkIiQ7JEYuJCIrOjNKYW5GW3o3JCQiJDwkRi4kIitTUyopPXJGW3o3JCQiJD0kRi4kIis1RHIqWyhGW3o3JCQiJD4kRi4kIishNE5yJ3lGW3o3JCQiJD8kRi4kIitnNmJeIylGW3o3JCQiJEAkRi4kIishUnNMaylGW3o3JCQiJEEkRi4kIiswWi5WISpGW3o3JCQiJEIkRi4kIitJLyteJSpGW3o3JCQiJEMkRi4kIitTMXduKSpGW3o3JCQiJEQkRi4kIit3UFFINUZhY203JCQiJEUkRi4kIitZKXlIMiJGYWNtNyQkIiRGJEYuJCIrIW8/dzYiRmFjbTckJCIkRyRGLiQiK3VGUGo2RmFjbTckJCIkSCRGLiQiKzZKSTU3RmFjbTckJCIkSSRGLiQiKyplJVtlN0ZhY203JCQiJEokRi4kIis2Yip6SSJGYWNtNyQkIiRLJEYuJCIrRCwjKmU4RmFjbTckJCIkTCRGLiQiK00jXDhUIkZhY203JCQiJE0kRi4kIit3M1FsOUZhY203JCQiJE4kRi4kIislNEA2XyJGYWNtNyQkIiRPJEYuJCIrLVtveTpGYWNtNyQkIiRQJEYuJCIrbW4+UTtGYWNtNyQkIiRRJEYuJCIrO0Z6KnAiRmFjbTckJCIkUiRGLiQiKzUxaWo8RmFjbTckJCIkUyRGLiQiKyMzVSlIPUZhY203JCQiJFQkRi4kIispM00nKSo9RmFjbTckJCIkVSRGLiQiKy0zPnE+RmFjbTckJCIkViRGLiQiKy1lc1c/RmFjbTckJCIkVyRGLiQiKylldUM3I0ZhY203JCQiJFgkRi4kIiszdnAuQUZhY203JCQiJFkkRi4kIitpSm8pRyNGYWNtNyQkIiRaJEYuJCIrIVFfeFAjRmFjbTckJCIkWyRGLiQiKyMqR0VyQ0ZhY203JCQiJFwkRi4kIitJW2hwREZhY203JCQiJF0kRi4kIitXc0R0RUZhY203JCQiJF4kRi4kIitpZXAjeSNGYWNtNyQkIiRfJEYuJCIrb0JdKSpHRmFjbTckJCIkYCRGLiQiK2hiS0BJRmFjbTckJCIkYSRGLiQiK29bIT46JEZhY203JCQiJGIkRi4kIiskeiczIkgkRmFjbTckJCIkYyRGLiQiKyEzWClSTUZhY203JCQiJGQkRi4kIis8Y0kqZiRGYWNtNyQkIiRlJEYuJCIrP3V4cVBGYWNtNyQkIiRmJEYuJCIrODp6YlJGYWNtNyQkIiRnJEYuJCIrWyw6Y1RGYWNtNyQkIiRoJEYuJCIrRygqKVJQJUZhY203JCQiJGkkRi4kIistQCc9aCVGYWNtNyQkIiRqJEYuJCIrKzMlRyhbRmFjbTckJCIkayRGLiQiK0Q7bWdeRmFjbTckJCIkbCRGLiQiKzA4Iip6YUZhY203JCQiJG0kRi4kIis/WEdPZUZhY203JCQiJG4kRi4kIishNFNwQidGYWNtNyQkIiRvJEYuJCIrK1MrInAnRmFjbTckJCIkcCRGLiQiK05eSDVzRmFjbTckJCIkcSRGLiQiK3Z5UjV5RmFjbTckJCIkciRGLiQiK0k8SDcmKUZhY203JCQiJHMkRi4kIis/diFcTSpGYWNtNyQkIiR0JEYuJCIrKypHXC4iRl1nbjckJCIkdSRGLiQiKyhRbiZlNkZdZ243JCQiJHYkRi4kIitxKj5ZSiJGXWduNyQkIiR3JEYuJCIrTVYjel4iRl1nbjckJCIkeCRGLiQiK1plKyV6IkZdZ243JCQiJHkkRi4kIislPjkzPiNGXWduNyQkIiR6JEYuJCIrTyJ6LSJHRl1nbjckJCIkIVFGLiQiKyg9Q1MiUkZdZ243JCQiJCJRRi4kIitYM1pQa0ZdZ243JCQiJCNRRi4kIitTYTEzPUZbam43JCQiJCRRRi4kISspKW8qekIjRltqbjckJCIkJVFGLiQhK0lsWzVwRl1nbjckJCIkJlFGLiQhK1tlQiUzJUZdZ243JCQiJCdRRi4kISsmPUVyKkdGXWduNyQkIiQoUUYuJCErIyp5TFZBRl1nbjckJCIkKVFGLiQhK094N0g9Rl1nbjckJCIkKlFGLiQhK1FxK1Y6Rl1nbjckJCIkIVJGLiQhK0U9UEw4Rl1nbjckJCIkIlJGLiQhKyEpXDB0NkZdZ243JCQiJCNSRi4kISspUiNSWTVGXWduNyQkIiQkUkYuJCErWF48UCUqRmFjbTckJCIkJVJGLiQhKyFwOnVlKUZhY203JCQiJCZSRi4kIStYcic+KHlGYWNtNyQkIiQnUkYuJCErYmQlM0UoRmFjbTckJCIkKFJGLiQhK04pb0J0J0ZhY203JCQiJClSRi4kISs6eVlxaUZhY203JCQiJCpSRi4kIStdOSlIJ2VGYWNtNyQkIiQrJUYuJCErWGdgK2JGYWNtNyQkIiQsJUYuJCErZykqeXZeRmFjbTckJCIkLSVGLiQhK2oxIkgpW0ZhY203JCQiJC4lRi4kISspZTFzaCVGYWNtNyQkIiQvJUYuJCErXy0nW1AlRmFjbTckJCIkMCVGLiQhK1dSdF9URmFjbTckJCIkMSVGLiQhKyFvQyNbUkZhY203JCQiJDIlRi4kISstWzpmUEZhY203JCQiJDMlRi4kISsyJSlvJGUkRmFjbTckJCIkNCVGLiQhKzFuRT9NRmFjbTckJCIkNSVGLiQhK0N2Ym5LRmFjbTckJCIkNiVGLiQhK19hVENKRmFjbTckJCIkNyVGLiQhKzcsJikqKUhGYWNtNyQkIiQ4JUYuJCErJG8rSSdHRmFjbTckJCIkOSVGLiQhK3VfNlZGRmFjbTckJCIkOiVGLiQhK0BUYEhFRmFjbTckJCIkOyVGLiQhKyd6djtfI0ZhY203JCQiJDwlRi4kISszZS0+Q0ZhY203JCQiJD0lRi4kIStXcjdAQkZhY203JCQiJD4lRi4kIStlQmRGQUZhY203JCQiJD8lRi4kIStHcCp6OCNGYWNtNyQkIiRAJUYuJCErZE8yXz9GYWNtNyQkIiRBJUYuJCErL3pdcD5GYWNtNyQkIiRCJUYuJCErV04uISo9RmFjbTckJCIkQyVGLiQhKyhcNE0iPUZhY203JCQiJEQlRi4kIStbblRSPEZhY203JCQiJEUlRi4kISsneWJ5bSJGYWNtNyQkIiRGJUYuJCErclZhKWYiRmFjbTckJCIkRyVGLiQhKzZjSko6RmFjbTckJCIkSCVGLiQhK3ZpLG05RmFjbTckJCIkSSVGLiQhKz1gXS05RmFjbTckJCIkSiVGLiQhKyVmXzFNIkZhY203JCQiJEslRi4kISs4eEwhRyJGYWNtNyQkIiRMJUYuJCErUyFcOUEiRmFjbTckJCIkTSVGLiQhKzBHKVE7IkZhY203JCQiJE4lRi4kISs1QmEyNkZhY203JCQiJE8lRi4kIStJc0xfNUZhY203JCQiJFAlRi4kISshekg9KSoqRlt6NyQkIiRRJUYuJCErIVssK1gqRlt6NyQkIiRSJUYuJCErKys5RiopRlt6NyQkIiRTJUYuJCErdithNyUpRlt6NyQkIiRUJUYuJCErXVdgMHpGW3o3JCQiJFUlRi4kISsmNCFcMHVGW3o3JCQiJFYlRi4kISsmei89InBGW3o3JCQiJFclRi4kIStEUyFSVSdGW3o3JCQiJFglRi4kISshM1E3JWZGW3o3JCQiJFklRi4kIStOJXpLWSZGW3o3JCQiJFolRi4kISslSD8mKilcRlt6NyQkIiRbJUYuJCErMS5aPlhGW3o3JCQiJFwlRi4kIStjV2xfU0ZbejckJCIkXSVGLiQhK2Q1aCllJEZbejckJCIkXiVGLiQhK20pKilvNyRGW3o3JCQiJF8lRi4kISskSF1xbSNGW3o3JCQiJGAlRi4kISsob2YnM0FGW3o3JCQiJGElRi4kISt6O0hePEZbejckJCIkYiVGLiQhKyllQ1hIIkZbejckJCIkYyVGLiQhK1MmKVJ6JClGZHA3JCQiJGQlRi4kISt6XD82UUZkcDckJCIkZSVGLiQiK1guL053Rkc3JCQiJGYlRi4kIitEQyIqW2BGZHA3JCQiJGclRi4kIismPU0jXCoqRmRwNyQkIiRoJUYuJCIrJypHKG9YIkZbejckJCIkaSVGLiQiKyp6cjYjPkZbejckJCIkaiVGLiQiK2QrRSlRI0ZbejckJCIkayVGLiQiKzFyZWVHRlt6NyQkIiRsJUYuJCIrc09oS0xGW3o3JCQiJG0lRi4kIitVTyIzIlFGW3o3JCQiJG4lRi4kIitUZ24kSCVGW3o3JCQiJG8lRi4kIitVcnEieSVGW3o3JCQiJHAlRi4kIis6RlZ2X0ZbejckJCIkcSVGLiQiK10vU3ZkRlt6NyQkIiRyJUYuJCIrcUQ9I0cnRlt6NyQkIiRzJUYuJCIrZyd5anonRlt6NyQkIiR0JUYuJCIrbCg9Jz10Rlt6NyQkIiR1JUYuJCIrXW5jXHlGW3o3JCQiJHYlRi4kIis/UyMqKlEpRlt6NyQkIiR3JUYuJCIrIWVMLyUqKUZbejckJCIkeCVGLiQiK11YKT1dKkZbejckJCIkeSVGLiQiKzo8XjI1RmFjbTckJCIkeiVGLiQiK0VHNW01RmFjbTckJCIkIVtGLiQiK2d4MEU2RmFjbTckJCIkIltGLiQiK2slenU9IkZhY203JCQiJCNbRi4kIitUJ3kvRCJGYWNtNyQkIiQkW0YuJCIrPVk8OjhGYWNtNyQkIiQlW0YuJCIrUWpwIlEiRmFjbTckJCIkJltGLiQiK3FNPV05RmFjbTckJCIkJ1tGLiQiKyNvKHk/OkZhY203JCQiJChbRi4kIisiM3VPZiJGYWNtNyQkIiQpW0YuJCIrbUctcDtGYWNtNyQkIiQqW0YuJCIrOzcuWjxGYWNtNyQkIiQhXEYuJCIrcWEieiM9RmFjbTckJCIkIlxGLiQiK05PIj4iPkZhY203JCQiJCNcRi4kIisrJClHKio+RmFjbTckJCIkJFxGLiQiK0MrTCE0I0ZhY203JCQiJCVcRi4kIisoR2hgPSNGYWNtNyQkIiQmXEYuJCIrTzZ1JUcjRmFjbTckJCIkJ1xGLiQiK1kxKCkpUSNGYWNtNyQkIiQoXEYuJCIrKVIqPilcI0ZhY203JCQiJClcRi4kIit1SkI4RUZhY203JCQiJCpcRi4kIitqSmFNRkZhY203JCQiJCsmRi4kIitPcXhpR0ZhY20tJSVGT05URzYkJSpIRUxWRVRJQ0FHRmhuLSUlVklFV0c2JDskRiohIiIkRmJbbEZbaXQ7JCEkKyZGW2l0JEZiW2xGKg==</Plot></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The true solution can be expressed in terms of quotients of Bessel functions.  As pointed out by Kahan, one can verify that the above numerical method is performing admirably well through the poles of the solution, a property not common to conventional numerical methods.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">References</Text-field></Title><Text-field layout="Normal" style="Normal">[Geddes86]  K.O. Geddes, Numerical integration in a symbolic context. <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle297" underline="false">Proceedings of SYMSAC'86</Font>, B.W. Char (ed.), ACM Press, New York, 1986, pp. 185-191.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Geddes92]  K.O. Geddes and G.J. Fee, Hybrid symbolic-numeric integration in Maple.  <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle278" underline="false">Proceedings of ISSAC'92</Font>, P.S. Wang (ed.), ACM Press, New York, 1992, pp. 36-41.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Geddes99]  K.O. Geddes, Generating numerical ODE formulas via a symbolic calculus of divided differences. <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle279" underline="false">SIGSAM Bulletin</Font> <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle283" underline="false">33</Font> (<Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle284" underline="false">128</Font>), 1999, pp. 29-42.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[GeddesGonnet89]  K.O. Geddes and G.H. Gonnet, A new algorithm for computing symbolic limits using hierarchical series. Appears in <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle288" underline="false">Symbolic and Algebraic Computation</Font>, P. Gianni (ed.), Lecture Notes in Computer Science, No. <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle289" underline="false">358</Font>, Springer-Verlag, Berlin, 1989, pp. 490-495.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Kahan93]  W. Kahan, Unconventional numerical methods for trajectory calculations.  Manuscript, prepared for the <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle280" underline="false">Workshop on Integration Algorithms for Classical Mechanics</Font>, Fields Institute for Research in Mathematical Sciences, Waterloo, Ontario, Canada, Oct. 1993.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Kahan97a] W. Kahan and Ren-Cang Li, Unconventional schemes for a class of ordinary differential equations -- with applications to the Korteweg-de Vries equation.  <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle281" underline="false">J. Comp. Physics</Font> <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle285" underline="false">134</Font>, 1997, pp. 316-331.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Kahan97b] W. Kahan and Ren-Cang Li, Composition constants for raising the orders of unconventional schemes for ordinary differential equations.  <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle282" underline="false">Math. Comp.</Font><Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle286" underline="false"> 66</Font>, 1997, pp. 1089-1099.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Richardson96]  D. Richardson, B. Salvy, J. Shackell and J. Van derHoeven, Asymptotic expansions of exp-log functions. <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle290" underline="false">Proceedings of ISSAC'96</Font>, Y.N. Lakshman (ed.), ACM Press, New York, 1996, pp. 309-313.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Salvy91]  B. Salvy, Examples of automatic asymptotic expansions. <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle294" underline="false">SIGSAM Bulletin</Font> <Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle295" underline="false">25</Font> (<Font executable="false" family="Serif" foreground="[0,0,0]" italic="false" size="12" style="_cstyle296" underline="false">2</Font>), 1991, pp. 4-17.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[Salvy92]  B. Salvy, General asymptotic scales and computer algebra. Appears in <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle291" underline="false">Asymptotic and Numerical Methods</Font> <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle292" underline="false">for Partial Differential Equations</Font>, <Font bold="false" executable="false" family="Serif" foreground="[0,0,0]" size="12" style="_cstyle293" underline="false">Critical Parameters and Domain Decomposition</Font>, H. Kaper and M. Garbey (ed.), Kluwer Academic Publishers, 1992, pp. 255-266.</Text-field><Text-field layout="Normal" style="Normal"/></Section><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><RTable handle="430728" >TTdSMApJM1JUQUJMRV9TQVZFLzQzMDcyOFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiQiJCIiIiUjeTNHLCYqJi0lJGNvc0c2IyUjeTFHRidGCihGJ0YnKiYsJkYnRidGKyEiIkYnJSN5MkdGJ0YnNiIK</RTable><RTable handle="521500" >TTdSMApJM1JUQUJMRV9TQVZFLzUyMTUwMFgsJSlhbnl0aGluZ0c2IjYiW2dsISIlISEhIyoiJCIkIiIhRicqJiwqKiYtJSRjb3NHNiMlI1oxRyIiCiIlI1gzR0YvISIiKiYlI1gyR0YvRitGL0YvKiYtRiw2IyUjWDFHRi9GMEYvRi8qJkYzRi9GNUYvRjFGLywmRi5GMUY3Ri9GMUYnRicsJkYKL0YvRitGMUYnRi9GKzYiCg==</RTable><RTable handle="430808" >TTdSMApJM1JUQUJMRV9TQVZFLzQzMDgwOFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiQiJCIiIUYnRic2Igo=</RTable><RTable handle="530320" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDMyMFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiQiJCIiIiUjeTNHLCYqJi0lJGNvc0c2IyUjeTFHRidGCighIiJGJyomLCZGJ0YnRitGL0YnJSN5MkdGL0YnNiIK</RTable><RTable handle="537208" >TTdSMApJM1JUQUJMRV9TQVZFLzUzNzIwOFgsJSlhbnl0aGluZ0c2IjYiW2dsISIlISEhIyoiJCIkIiIhRicqKiwqKiYlI1gyRyIiIi0lJGNvc0c2CiMlI1oxR0YsISIiKiZGLUYsJSNYM0dGLEYsKiZGK0YsLUYuNiMlI1gxR0YsRiwqJkY1RixGM0YsRjFGLEYrRjFGM0YxLCZGMEYxRjdGLEYKMUYnRicqKCwmRjFGLEYtRixGLCUjWjJHRjFGK0YxRidGLCwkKihGLUYsJSNaM0dGMUYzRjFGMTYiCg==</RTable><RTable handle="530440" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDQ0MFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiQiJCIiIUYnRic2Igo=</RTable><RTable handle="530480" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDQ4MFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIyUjeTJHKiYlI3kxRyIiIkYnRio2Igo=</RTable><RTable handle="551560" >TTdSMApJM1JUQUJMRV9TQVZFLzU1MTU2MFgsJSlhbnl0aGluZ0c2IjYiW2dsISIlISEhIyUiIyIjIiIhJSNnMkciIiIlI1ExRzYiCg==</RTable><RTable handle="530520" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDUyMFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIyIiIUYnNiIK</RTable><RTable handle="530560" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDU2MFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIywoJSNnMUciIiIqJiUiaEdGKSUjZzJHRilGKSooCkYrIiIjRihGKUYsRikjRilGLiwoRixGKSooRitGKUYoRilGLEYpRikqJkYrRi4sJiokRixGLkYpKiglI1ExR0YpRihGKUYsRilGKUYpRi8KNiIK</RTable><RTable handle="530600" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDYwMFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIyIiIiwmJSN5MUdGJyokJSN5MkciIiNGJzYiCg==</RTable><RTable handle="530640" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDY0MFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIyIiIiwoJSNnMUdGJyUiaEcjRiciIiMqJiUjZzJHCkYnJSNRMkdGJ0YnNiIK</RTable><RTable handle="576148" >TTdSMApJM1JUQUJMRV9TQVZFLzU3NjE0OFgsJSlhbnl0aGluZ0c2IjYiW2dsISIlISEhIyUiIyIjIiIhIiIiRicsJiUjUTJHRiglI2cyR0YoNiIK</RTable><RTable handle="530680" >TTdSMApJM1JUQUJMRV9TQVZFLzUzMDY4MFgqJSlhbnl0aGluZ0c2IjYiW2dsISMlISEhIiMiIywmJSNnMUciIiIlImhHRiksJiUjZzJHRikqJkYqCkYpLChGKEYpRiojRikiIiMqJkYsRiklI1EyR0YpRilGKUYpNiIK</RTable></Worksheet>