<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="1"/><View-Properties><Hide name="Section Range"/><Hide name="Group Range"/><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" bullet="none" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 1" rightmargin="0.0" spaceabove="8.0" spacebelow="4.0"/><Layout alignment="left" bullet="none" 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" bullet="none" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Title" rightmargin="0.0" spaceabove="12.0" spacebelow="12.0"/><Layout alignment="left" bullet="dot" linespacing="0.0" name="Bullet Item" spaceabove="3.0" spacebelow="3.0"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" italic="false" name="Maple Input" opaque="false" size="10" subscript="false" superscript="false" underline="false"/><Font background="[0,0,0]" family="Serif" foreground="[0,128,128]" hyperlink="true" name="Hyperlink" opaque="false" size="12" underline="true"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Text" opaque="false" size="12" subscript="false" superscript="false" underline="false"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math_11" opaque="false" size="10"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math_10" opaque="false" size="12"/><Font background="[0,0,0]" bold="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Bullet Item" opaque="false" size="12" underline="false"/><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="true" family="Serif" foreground="[0,0,0]" italic="false" name="Heading 1" opaque="false" size="14" subscript="false" superscript="false" underline="false"/><Font background="[0,0,0]" family="Times New Roman" name="Author" opaque="false" size="12"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math_24" opaque="false" size="10"/><Font background="[0,0,0]" bold="true" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Title" opaque="false" size="14" subscript="false" superscript="false" underline="false"/><Font background="[0,0,0]" bold="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal" opaque="false" size="12" underline="false"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" opaque="false" size="10" underline="false"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math_2" opaque="false" size="10"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math_1" opaque="false" size="10"/></Styles><Page-Numbers enabled="true" first-number="1" first-numbered-page="1" horizontal-location="centred" style="Page Number" vertical-location="bottom"/><Group><Input><Text-field layout="Title" style="Title">Numerical and Graphical Solutions of Volterra Integral Equations of the Second Kind</Text-field></Input></Group><Group><Input><Text-field alignment="centred" layout="Normal" style="Normal"><Font bold="true" executable="false" foreground="[0,0,0]" italic="false" style="Author" subscript="false" superscript="false" underline="false">Leigh C. Becker and Micah Wheeler</Font></Text-field><Text-field alignment="centred" layout="Normal" style="Normal"><Hyperlink bold="false" italic="false" linktarget="http://www.cbu.edu/sciences/math.html" style="Hyperlink">Department of Mathematics</Hyperlink><Hyperlink bold="false" italic="false" linktarget="http://www.cbu.edu/" style="Hyperlink">
Christian Brothers University</Hyperlink><Hyperlink bold="false" italic="false" linktarget="http://www.cbu.edu/" style="Hyperlink">
650 E. Parkway South</Hyperlink><Hyperlink bold="false" italic="false" linktarget="http://www.cbu.edu/" style="Hyperlink">
Memphis, TN 38104</Hyperlink><Hyperlink bold="false" italic="false" linktarget="mailto:lbecker@cbu.edu" style="Hyperlink">
lbecker@cbu.edu</Hyperlink> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1"><Font executable="false">1. Introduction</Font></Text-field></Title><Text-field layout="Normal" style="Text">     The principal part of this worksheet is the Maple procedure in Section 4 called <Font bold="true">Volterra</Font>.  It can be used to numerically solve a <Font italic="true">Volterra integral equation of the second kind, </Font>namely, an equation of the form<Font bold="true">

(<Font italic="false" style="2D Math" subscript="false" superscript="false" underline="false">1.1) </Font></Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Equation input-equation="x(t) = f(t)+Int(k(t, s, x(s)), s = 0 .. t)" style="2D Math">NiMvLUkieEc2IjYjSSJ0R0YmLCYtSSJmR0YmRiciIiItSSRJbnRHNiRJKnByb3RlY3RlZEdGMEkoX3N5c2xpYkdGJjYkLUkia0dGJjYlRihJInNHRiYtRiU2I0Y2L0Y2OyIiIUYoRiw=</Equation>,
   
where <Font italic="true">x, f, </Font>and <Font italic="true">k</Font> are vector-valued functions with <Font italic="true">m </Font>components.  If <Font italic="true">f </Font>and <Font italic="true">k</Font> are continuous and <Font italic="true">k </Font>satisfies a Lipschitz condition with respect to <Font italic="true">x</Font>, then a unique solution <Font italic="true">x</Font>(<Font italic="true">t</Font>) of (1.1) exists.  For more information, see Burton [2, secs. 2.1 and 3.2] or Linz [4, sec. 4.1].  Since (1.1) is a vector equation, it is equivalent to a system consisting of the <Font italic="true">m</Font> scalar equations<Font bold="true">

(1.2)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">          </Font><Equation input-equation="x[i](t) = f[i](t)+Int(k[i](t, s, x(s)), s = 0 .. t)" style="2D Math">NiMvLSZJInhHNiI2I0kiaUdGJzYjSSJ0R0YnLCYtJkkiZkdGJ0YoRioiIiItSSRJbnRHRic2JC0mSSJrR0YnRig2JUYrSSJzR0YnLUYmNiNGOC9GODsiIiFGK0Yw</Equation>   (<Font italic="true">i</Font> = 1, ... , <Font italic="true">m</Font>).
</Text-field><Text-field layout="Normal" style="Text"><Font bold="true">     Volterra</Font> approximates the solution <Font italic="true">x</Font>(<Font italic="true">t</Font>) at equally spaced points <Font italic="true">t<Font subscript="true">n </Font></Font>using the implicit trapezoidal rule in conjunction with Newton's method for nonlinear systems.  Computer programs in other programming languages that will numerically solve (1.1) using this approach already exist in the literature.  Among them is a Pascal program in [4, ch. 12].  There is a Fortran program in [5, ch. 18.2] that will numerically solve the linear version of (1.1), i.e., when<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">k</Font>(<Font italic="true">t</Font>, <Font italic="true">s</Font>, <Font italic="true">x</Font>(<Font italic="true">s</Font>)) = <Font italic="true">k</Font>(<Font italic="true">t</Font>, <Font italic="true">s</Font>) <Font italic="true">x</Font>(<Font italic="true">s</Font>), with the explicit trapezoidal rule. Despite the availability of these and other such programs, there are advantages in using the <Font bold="true">Volterra </Font>procedure; notably among them are: </Text-field><Text-field firstindent="0.0" layout="Bullet Item" leftmargin="0.0" linebreak="space" rightmargin="0.0" style="Bullet Item"><Font style="Text">The tedium of computing all of the first-order partial derivatives of the components of the kernel <Font italic="true">k </Font>by hand </Font><Font executable="false" subscript="false" superscript="false">(cf. equation (2.9) in Section 2) <Font style="Text">is eliminated with the </Font></Font><Hyperlink bold="false" executable="false" italic="false" linktarget="Help:VectorCalculus[Jacobian]" style="Hyperlink">Jacobian</Hyperlink><Font style="Text"> and </Font><Hyperlink bold="false" italic="false" linktarget="Help:unapply" style="Hyperlink">unapply</Hyperlink><Hyperlink hyperlink="true" linktarget="Help:VectorCalculus[Jacobian]" style="Text"> commands.  </Hyperlink></Text-field><Text-field firstindent="0.0" layout="Bullet Item" leftmargin="0.0" linebreak="space" rightmargin="0.0" style="Bullet Item"><Font style="Text">Newton's method for </Font><Font executable="false" subscript="false" superscript="false">nonlinear systems entails solving linear algebraic systems (cf. (2.11) in Section 2). This is achieved with the command </Font><Hyperlink bold="false" executable="false" italic="false" linktarget="Help:LinearAlgebra[LinearSolve]" style="Hyperlink" subscript="false" superscript="false">LinearSolve</Hyperlink><Font executable="false" subscript="false" superscript="false">.</Font></Text-field><Text-field firstindent="0.0" layout="Bullet Item" leftmargin="0.0" linebreak="space" rightmargin="0.0" style="Bullet Item"><Font style="Text">With the graph</Font><Font executable="false" subscript="false" superscript="false">ics facilities of Maple<Font style="Text">, the numerical solutions obtained with <Font bold="true">Volterra</Font> are easily graphed with the </Font></Font><Hyperlink bold="false" executable="false" italic="false" linktarget="Help:plots[pointplot]" style="Hyperlink" subscript="false" superscript="false">pointplot</Hyperlink><Font style="Text"> or </Font><Hyperlink bold="false" executable="false" italic="false" linktarget="Help:plots[pointplot3d]" style="Hyperlink" subscript="false" superscript="false">pointplot3d</Hyperlink><Font style="Text"> commands.</Font></Text-field><Text-field layout="Normal" style="Text">     Four examples using <Font bold="true">Volterra</Font> to numerically solve equations of the form (1.1)--or those that can be written in that form--and graph the results are included in this worksheet.  The first example is a system of two nonlinear equations taken from Linz [4, p. 201]; it is considered in Section 5.  In Section 6, we use <Font bold="true">Volterra </Font>to numerically solve the scalar linear Volterra equation considered by Jerri [3, pp. 90-93]. In Section 7, we choose a scalar Volterra integro-differential equation of the form<Font bold="true">

(1.3)</Font>         <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="diff(x(t), t) = a(t)*x(t)+Int(b(t, s)*x(s), s = 0 .. t)" style="2D Math">NiMvLUklZGlmZkdJKnByb3RlY3RlZEdGJjYkLUkieEc2IjYjSSJ0R0YqRiwsJiomLUkiYUdGKkYrIiIiRihGMUYxLUkkSW50R0YqNiQqJi1JImJHRio2JEYsSSJzR0YqRjEtRik2I0Y5RjEvRjk7IiIhRixGMQ==</Equation>
</Text-field><Text-field layout="Normal" style="Text">from Example 1.2.1 in Burton [2, p. 8] to show how to change such an equation to an equivalent system of Volterra integral equations of the second kind so that we can numerically solve it with <Font bold="true">Volterra</Font>.  The last example is found in Section 8, where we concocted a system of three nonlinear Volterra integral equations.</Text-field><Text-field layout="Normal" style="Text"/></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">2. The mathematics underlying the Volterra procedure </Text-field></Title><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">     </Font>The <Font bold="true">Volterra </Font>procedure<Font bold="true"> </Font>approximates <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">the solution </Font><Font italic="true">x</Font>(<Font italic="true">t</Font>) of (1.1) at the equally spaced points<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="true" style="2D Math" subscript="true" superscript="false" underline="false">n </Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">=</Font> <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">0</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> + </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">nh</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font>for <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">n</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = 1</Font>, ... , <Font italic="true">N</Font>, <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">w</Font>here<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">0 </Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">= 0 </Font>and <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">N </Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">is the total number of steps of size </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">h</Font>.  <Font italic="true">X<Font subscript="true">n </Font></Font>denotes the approximation of<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">x</Font>(<Font italic="true">t</Font>) at <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="true" style="2D Math" subscript="true" superscript="false" underline="false">n</Font>.  In the <Font bold="true">Volterra </Font>procedure itself, <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="true" style="2D Math" subscript="true" superscript="false" underline="false">n </Font>and <Font italic="true">X<Font subscript="true">n </Font></Font>are denoted by t[n] and X[n], respectively.  </Text-field><Text-field layout="Normal" style="Text">     Let us briefly describe the mathematics underlying the procedure.  Setting<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font> <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="true" style="2D Math" subscript="true" superscript="false" underline="false">n</Font> in (1.1), we have</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.1)</Font>          <Equation input-equation="x(t[n]) = f(t[n])+int(k(t[n], t, x(t)), t=0..t[n])" style="2D Math">NiMvLUkieEc2IjYjJkkidEdGJjYjSSJuR0YmLCYtSSJmR0YmRiciIiItSSRpbnRHRiY2JC1JImtHRiY2JUYoRiktRiU2I0YpL0YpOyIiIUYoRi8=</Equation>.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">By the composite trapezoidal rule (cf. [1, p. 200]) , an approximation of the integral in (2.1) is   </Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.2)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">          </Font><Equation input-equation="h/2" style="2D Math">NiMqJkkiaEc2IiIiIiIiIyEiIg==</Equation> <Font size="16">[</Font><Equation input-equation="k(t[n], t[0], x(t[0]))" style="2D Math">NiMtSSJrRzYiNiUmSSJ0R0YlNiNJIm5HRiUmRig2IyIiIS1JInhHRiU2I0Yr</Equation> + 2 <Equation input-equation="Sum(k(t[n], t[j], x(t[j])), j = 1 .. n-1)" style="2D Math">NiMtSSRTdW1HNiI2JC1JImtHRiU2JSZJInRHRiU2I0kibkdGJSZGKzYjSSJqR0YlLUkieEdGJTYjRi4vRjA7IiIiLCZGLUY2RjYhIiI=</Equation>  +  <Equation input-equation="k(t[n], t[n], x(t[n]))" style="2D Math">NiMtSSJrRzYiNiUmSSJ0R0YlNiNJIm5HRiVGJy1JInhHRiU2I0Yn</Equation><Font size="16">]</Font>.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">Replacing <Font italic="true">x</Font>(<Font italic="true">t<Font subscript="true">n</Font></Font>) in (2.1) and (2.2) by <Font italic="true">X<Font subscript="true">n</Font></Font>, we obtain the implicit trapezoidal rule </Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.3) </Font>       <Equation input-equation="X[n] = f(t[n])" style="2D Math">NiMvJkkiWEc2IjYjSSJuR0YmLUkiZkdGJjYjJkkidEdGJkYn</Equation> + <Equation input-equation="h" style="2D Math">NiNJImhHNiI=</Equation><Font size="18">[</Font> <Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="k(t[n], t[0], X[0])" style="2D Math">NiMtSSJrRzYiNiUmSSJ0R0YlNiNJIm5HRiUmRig2IyIiISZJIlhHRiVGLA==</Equation> + <Equation input-equation="Sum(k(t[n], t[j], X[j]), j = 1..n-1)" style="2D Math">NiMtSSRTdW1HNiI2JC1JImtHRiU2JSZJInRHRiU2I0kibkdGJSZGKzYjSSJqR0YlJkkiWEdGJUYvL0YwOyIiIiwmRi1GNUY1ISIi</Equation>  + <Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="k(t[n], t[n], X[n])" style="2D Math">NiMtSSJrRzYiNiUmSSJ0R0YlNiNJIm5HRiVGJyZJIlhHRiVGKQ==</Equation><Font size="18">]</Font>,</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">where<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">X</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">0</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">f</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(0) </Font>since <Font italic="true">x</Font>(0) = <Font italic="true">f</Font>(0).   </Text-field><Text-field layout="Normal" style="Text">     Defining <Equation input-equation="sigma[n]" style="2D Math">NiMmSSZzaWdtYUc2IjYjSSJuR0Yl</Equation> by</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.4)</Font>         <Equation input-equation="sigma[n]" style="2D Math">NiMmSSZzaWdtYUc2IjYjSSJuR0Yl</Equation> := <Equation input-equation="f(t[n])" style="2D Math">NiMtSSJmRzYiNiMmSSJ0R0YlNiNJIm5HRiU=</Equation> +<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="h" style="2D Math">NiNJImhHNiI=</Equation><Font size="16">[</Font><Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="k(t[n], t[0], X[0])" style="2D Math">NiMtSSJrRzYiNiUmSSJ0R0YlNiNJIm5HRiUmRig2IyIiISZJIlhHRiVGLA==</Equation> +<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="Sum(k(t[n], t[j], X[j]), j = 1 .. n-1)" style="2D Math">NiMtSSRTdW1HNiI2JC1JImtHRiU2JSZJInRHRiU2I0kibkdGJSZGKzYjSSJqR0YlJkkiWEdGJUYvL0YwOyIiIiwmRi1GNUY1ISIi</Equation> <Font size="16">]</Font>, </Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">we can rewrite (2.3) as</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.5)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">          </Font><Equation input-equation="X[n]" style="2D Math">NiMmSSJYRzYiNiNJIm5HRiU=</Equation> - <Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="h" style="2D Math">NiNJImhHNiI=</Equation><Equation input-equation="k(t[n], t[n], X[n]) - sigma[n] = 0" style="2D Math">NiMvLCYtSSJrRzYiNiUmSSJ0R0YnNiNJIm5HRidGKSZJIlhHRidGKyIiIiZJJnNpZ21hR0YnRishIiIiIiE=</Equation>,</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">where 0 denotes the zero vector.  From (2.5), we see that<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">X<Font subscript="true">n </Font></Font>is the solution of the vector equation</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.6)</Font>          <Equation input-equation="phi(u) = 0" style="2D Math">NiMvLUkkcGhpRzYiNiNJInVHRiYiIiE=</Equation>,</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">where <Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation> is the vector-valued function</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.7)</Font>        <Equation input-equation="phi(u)" style="2D Math">NiMtSSRwaGlHNiI2I0kidUdGJQ==</Equation> := <Equation input-equation="u" style="2D Math">NiNJInVHNiI=</Equation> - <Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="h* k(t[n], t[n], u) - sigma[n]" style="2D Math">NiMsJiomSSJoRzYiIiIiLUkia0dGJjYlJkkidEdGJjYjSSJuR0YmRitJInVHRiZGJ0YnJkkmc2lnbWFHRiZGLSEiIg==</Equation>.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">     We will obtain an approximation to the solution <Font italic="true">X<Font subscript="true">n</Font></Font> of (2.6) by way of the matrix-valued function <Font italic="true">G</Font> defined in (2.8).  If<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">A</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">u</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">) </Font>is an <Font italic="true">m</Font> by <Font italic="true">m</Font> matrix-valued function that is invertible in a neighborhood of<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">X<Font subscript="true">n</Font></Font>, then<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">X<Font subscript="true">n</Font></Font> is a fixed point of  
</Text-field><Text-field layout="Normal" style="Text"><Font bold="true">(2.8)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Equation input-equation="G(u) := u - A(u)*phi(u)" style="2D Math">NiM+LUkiR0c2IjYjSSJ1R0YmLCZGKCIiIiomLUkiQUdGJkYnRiotSSRwaGlHRiZGJ0YqISIi</Equation>.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">Assuming the components of <Font italic="true">G</Font>(<Font italic="true">u</Font>) have continuous first and second order partial derivatives and that the first order partial derivatives at <Font italic="true">X<Font subscript="true">n </Font></Font>are equal to zero, it can be shown that<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> if </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">A</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">u</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font> is set equal to <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">the </Font>Jacobian matrix of <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">the function </Font><Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation>, <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">the iterates </Font><Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p) </Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">defined by (2.10) below will usually converge quadratically to </Font><Font italic="true">X<Font subscript="true">n</Font></Font>, provided the starting value is sufficiently close to <Font italic="true">X<Font subscript="true">n</Font></Font>.  T<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">he </Font><Font bold="true" italic="true">Jacobian matrix of</Font> <Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation> is the<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">m</Font> by <Font italic="true">m</Font> matrix <Font italic="true">J</Font>(<Font italic="true">u</Font>) with the element
</Text-field><Text-field layout="Normal" style="Text"><Font bold="true">(2.9)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">        </Font> <Font italic="true">J</Font>(<Font italic="true">u</Font>)<Font italic="true" subscript="true">ij</Font> = <Equation input-equation="Diff(phi[i](u), u[j])" style="2D Math">NiMtSSVEaWZmRzYiNiQtJkkkcGhpR0YlNiNJImlHRiU2I0kidUdGJSZGLTYjSSJqR0Yl</Equation> = <Equation input-equation="delta" style="2D Math">NiNJJmRlbHRhRzYi</Equation><Font italic="true" subscript="true">ij</Font> - <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="1/2" style="2D Math">NiMqJiIiIkYkIiIjISIi</Equation> <Equation input-equation="h" style="2D Math">NiNJImhHNiI=</Equation> <Equation input-equation="Diff(k[i](t[n], t[n], u), u[j])" style="2D Math">NiMtSSVEaWZmRzYiNiQtJkkia0dGJTYjSSJpR0YlNiUmSSJ0R0YlNiNJIm5HRiVGLUkidUdGJSZGMTYjSSJqR0Yl</Equation>
</Text-field><Text-field layout="Normal" style="Text">in row <Font italic="true">i</Font> and column <Font italic="true">j</Font>, where <Equation input-equation="delta" style="2D Math">NiNJJmRlbHRhRzYi</Equation><Font italic="true" subscript="true">ij </Font>is the <Hyperlink bold="false" executable="false" italic="false" linktarget="Help:Kronecker delta" style="Hyperlink" subscript="false" superscript="false">Kronecker delta</Hyperlink><Hyperlink hyperlink="true" linktarget="Help:Kronecker delta" style="Text">.  </Hyperlink><Hyperlink hyperlink="true" linktarget="Help:Kronecker delta" style="Text">D</Hyperlink>etails of the statements made here follow from the discussion of Newton's method for nonlinear systems in [1, sec. 10.2].  Linz gives a brief outline of the trapezoidal rule and Newton's method for Volterra integral systems of the second kind in Section 12.1 of [4].   </Text-field><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">     We obtain </Font><Font italic="true">X<Font subscript="true">n </Font></Font>from<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">X<Font subscript="true">n-</Font></Font><Font subscript="true">1 </Font>by setting<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(0)  </Font>:= <Font italic="true">X<Font subscript="true">n-</Font></Font><Font subscript="true">1</Font> and then generating the iterates <Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p)</Font> from </Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.10)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p) </Font>= <Font italic="true">G</Font>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>) = <Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1) </Font>-  <Font italic="true">J </Font><Font superscript="true">-1</Font>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>)<Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>)</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">for<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> p =</Font> 1, 2, 3, ... .  (This is Newton's method for nonlinear systems.)  Let <Font italic="true">y</Font> denote the solution of the matrix equation</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.11)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">J</Font>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>)<Font italic="true">y</Font> =  <Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>).  </Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">Then the iteration formula (2.10) becomes</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text"><Font bold="true">(2.12)</Font>         <Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p)  </Font>=  <Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1) </Font> - <Font superscript="true"> </Font><Font italic="true">y</Font>.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">We compute the solution <Font italic="true">y</Font> = <Font italic="true">J </Font><Font superscript="true">-1</Font>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>)<Equation input-equation="phi" style="2D Math">NiNJJHBoaUc2Ig==</Equation>(<Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p-1)</Font>) using the command <Hyperlink bold="false" executable="false" italic="false" linktarget="Help:LinearAlgebra[LinearSolve]" style="Hyperlink" subscript="false" superscript="false">LinearSolve</Hyperlink><Hyperlink hyperlink="true" linktarget="Help:LinearAlgebra[LinearSolve]" style="Text">.  </Hyperlink>The iterates <Font italic="true">X<Font subscript="true">n</Font></Font><Font superscript="true">(p) </Font>are computed until the <Hyperlink bold="false" executable="false" italic="false" linktarget="Help:LinearAlgebra[VectorNorm]" style="Hyperlink" subscript="false" superscript="false">infinity norm</Hyperlink><Hyperlink hyperlink="true" linktarget="Help:LinearAlgebra[VectorNorm]" style="Text"> </Hyperlink>of the vector<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">y</Font> is less than a prescribed tolerance <Font italic="true">Tol.</Font>  Then <Font italic="true">X<Font subscript="true">n  </Font></Font>is assigned the value of the last iterate.  However, should the number of iterations at any stage exceed some assigned maximum value that we call <Font italic="true">Iter_Max</Font>, the procedure will be terminated<Font italic="true">.</Font>
</Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">3. Initialization</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">restart:
with(LinearAlgebra, LinearSolve, VectorNorm);
with (plots, pointplot, display, pointplot3d, display3d);
with(VectorCalculus, Jacobian);
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Digits := 10;
</Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1"><Font executable="false">4. The Volterra procedure</Font></Text-field></Title><Text-field layout="Normal" style="Text">To implement <Font bold="true">Volterra</Font>, assign values to <Font italic="true">m, h, N, Tol</Font>, <Font italic="true">Iter_Max</Font>, respectively, where</Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font executable="false" italic="true" subscript="false" superscript="false">m</Font><Font executable="false" subscript="false" superscript="false"> := number of equations; also, the number of unknown scalar functions <Font italic="true">x</Font></Font><Font executable="false" italic="true" subscript="true" superscript="false">i</Font><Font executable="false" subscript="false" superscript="false">(<Font italic="true">t</Font>)<Font italic="true">;</Font></Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font executable="false" italic="true" subscript="false" superscript="false">h </Font><Font executable="false" subscript="false" superscript="false">:= step size;</Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font executable="false" italic="true" subscript="false" superscript="false">N</Font><Font executable="false" subscript="false" superscript="false"> := total number of steps of size <Font italic="true">h;</Font></Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font executable="false" italic="true" subscript="false" superscript="false">Tol </Font><Font executable="false" subscript="false" superscript="false">:= tolerance;</Font></Text-field><Text-field layout="Bullet Item" style="Bullet Item"><Font executable="false" italic="true" subscript="false" superscript="false">Iter_Max</Font><Font executable="false" subscript="false" superscript="false"> := maximum number of Newton iterations.</Font>
</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra := proc(m::posint, h::positive, N::posint, Tol::positive, Iter_Max::posint)
  local i, j, p, Matrix_Partials;  
  global n, t, k, kpartial, X, sigma, J, phi, y, epsilon; 

  <Font size="10" style="Text">Let </Font><Font bold="false" italic="true" style="2D Math_1" subscript="false" superscript="false" underline="false">y,</Font><Font bold="true" italic="false" style="2D Math_1" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="sigma" style="2D Math_1">NiNJJnNpZ21hRzYi</Equation><Font size="10" style="Text">, </Font><Equation input-equation="phi" style="2D Math_2">NiNJJHBoaUc2Ig==</Equation><Font size="10" style="Text">, and <Font italic="true">X<Font subscript="true">n</Font></Font> be vectors with <Font italic="true">m</Font> components:</Font> 
  y := Vector(m);  sigma := Vector(m);  phi := Vector(m);  

  for n from 0 to N do 
      X[n] := Vector(m)  <Equation input-equation="#(cf. equation (7), Section 2)" style="2D Math">NiI=</Equation>
  end do;

  <Font italic="true" size="10" style="Text">J</Font><Font size="10" style="Text"> is the <Font italic="true">m</Font> by <Font italic="true">m </Font>Jacobian matrix defined by equation (2.9): </Font>
  J := Matrix(m, m);

  <Font size="10" style="Text">The matrix <Font italic="true">kpartial</Font> consists of the first-order partial derivatives of <Font italic="true">k</Font>(<Font italic="true">t, s, x</Font>):</Font>
  Matrix_Partials := Jacobian(k(t, s, v), vlist);
  kpartial := unapply(Matrix_Partials, t, s, x);

  t[0] := 0;       <Font size="10" style="Text"> (<Font italic="true">t</Font><Font subscript="true">0</Font> = 0 and <Font italic="true">X</Font><Font subscript="true">0</Font> = <Font italic="true">f</Font>(0))</Font>
  X[0] := f(t[0]);

  for n from 1 to N do    
     t[n] := t[n-1] + h;   

  sigma := f(t[n]) + 0.5*h*k(t[n], t[0], X[0]);   <Font size="10" style="Text">(cf.  (2.4))</Font>
      for j from 1 to n-1 do
         sigma :=  sigma + h*k(t[n], t[j], X[j])
      end do;

      X[n] := X[n-1];

      p := 0;  epsilon := 1;  <Font bold="false" italic="false" size="10" style="2D Math" subscript="false" superscript="false" underline="false">(To begin, choose a value for epsilon greater than </Font><Font italic="true" size="10" style="Text">Tol</Font><Font size="10" style="Text">.)</Font>  
       
      while (epsilon &gt;= Tol) and (p &lt;= Iter_Max) do
         p := p + 1;

         for i from 1 to m do   <Font size="10" style="Text">(cf. (2.9))</Font>
            for j from 1 to m do
               if i = j then
                  J[i, j] := 1 - 0.5*h*kpartial(t[n], t[n], X[n])[i, j]
               else
                  J[i, j] := - 0.5*h*kpartial(t[n], t[n], X[n])[i, j]
               end if;
            end do;
         end do;

         phi := X[n] - 0.5*h*k(t[n], t[n], X[n]) - sigma;   <Font size="10" style="Text">(cf.  (2.7))</Font>

         <Font size="10" style="Text">LinearSolve(<Font italic="true">J</Font>, phi) computes the solution <Font italic="true">y</Font> of the linear system</Font><Font bold="true" italic="false" size="10" style="2D Math_10" subscript="false" superscript="false" underline="false"> </Font><Font italic="true" size="10" style="Text">Jy</Font><Font size="10" style="Text"> = </Font><Equation input-equation="phi" style="2D Math_11">NiNJJHBoaUc2Ig==</Equation><Font size="10" style="Text">:</Font>
         y := LinearSolve(J, phi);

         <Font size="10" style="Text">VectorNorm(<Font italic="true">y</Font>) computes the infinity norm of <Font italic="true">y </Font>(cf. Sec. 2 and [1, p.419]).</Font>
         epsilon := VectorNorm(y);     

         X[n] := X[n] - y;  <Font size="10" style="Text">(cf. (2.12))</Font>

      end do;   <Font size="10" style="Text">(end of the "while" loop)</Font>

      <Font size="10" style="Text">Test for convergence:</Font>
      if epsilon &gt;= Tol then
         "The maximum number of Newton iterations has been exceeded.";
          break
      end if;  

  end do;   <Font size="10" style="Text">(end of the "for <Font italic="true">n</Font> from 1 to <Font italic="true">N</Font> do" loop)</Font>
  end proc:<Font style="Text">
 </Font></Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1"><Font executable="false">5. A Volterra system of two equations</Font></Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">Linz [4, ch. 13] computes the numerical solution of the Volterra system</Text-field><Text-field layout="Normal" style="Text"> <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">        </Font><Equation input-equation="x[1](t)" style="2D Math">NiMtJkkieEc2IjYjIiIiNiNJInRHRiY=</Equation><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = </Font><Equation input-equation="t" style="2D Math">NiNJInRHNiI=</Equation><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> +</Font><Equation input-equation="int({1/(1+x[1](s)^2)+cos(t-s)*x[2](s)}, s = 0 .. t)" style="2D Math">NiMtSSRpbnRHNiI2JDwjLCYqJiIiIkYqLCZGKkYqKiQtJkkieEdGJTYjRio2I0kic0dGJSIiI0YqISIiRioqJi1JJGNvc0dGJTYjLCZJInRHRiVGKkYyRjRGKi0mRi82I0YzRjFGKkYqL0YyOyIiIUY6</Equation><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Font bold="true">
(5.1)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Equation input-equation="x[2](t) = 1+Int({sin(t-s)*x[1](s)-exp(s-t)*x[2](s)}, s = 0 .. t)" style="2D Math">NiMvLSZJInhHNiI2IyIiIzYjSSJ0R0YnLCYiIiJGLS1JJEludEdGJzYkPCMsJiomLUkkc2luR0YnNiMsJkYrRi1JInNHRichIiJGLS0mRiY2I0YtNiNGOEYtRi0qJi1JJGV4cEdGJzYjLCZGOEYtRitGOUYtLUYlRj1GLUY5L0Y4OyIiIUYrRi0=</Equation>    </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">using the step size <Font italic="true">h</Font> = 0.2.  See equations (13.1) and (13.2) on p. 201 in [4].  We use <Font bold="true">Volterra</Font> to numerically solve and graph (5.1), after which we compare the results with the values listed in Table 13.1 on p. 202 in Linz.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Since system (5.1) consists of two equations<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">m</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = 2</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">m:=2;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the function <Font italic="true">f</Font>(<Font italic="true">t</Font>):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f := proc(t)
   Vector([t, 1])
end proc:
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font italic="true">f  </Font>has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f(t); 
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the kernel <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">):  </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">k := proc(t, s, x::Vector)
   Vector([1/(1 + x[1]^2) + cos(t-s)*x[2], sin(t-s)*x[1] - exp(s-t)*x[2]])
end proc:
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font> has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">v := Vector(m, symbol = x):   vlist := convert(v, 'list'):
k(t, s, v);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that (5.1) has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">for i from 1 to m do
   x[i](t) = f(t)[i] + Int(k(t, s, v)[i], s = 0..t)
end do;</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">Applying <Font bold="true">Volterra</Font> to (5.1) with step size <Font italic="true">h</Font> = 0.2:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra(2, 0.2, 50, 10^(-8),5);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">N:=n-1; <Font size="10" style="Text">(total number of steps of size </Font><Font bold="false" italic="true" style="2D Math_24" subscript="false" superscript="false" underline="false">h</Font><Font size="10" style="Text">)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">d:=1;   <Font size="10" style="Text">(In the following table, every value is displayed if <Font italic="true">d</Font> = 1; every other value if <Font italic="true">d</Font> = 2, etc.)</Font><Font style="Text"> </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">M:=5;   <Font size="10" style="Text">(<Font italic="true">M</Font> + 1 is the number of values that will be displayed in each column.)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">
Numerical solution:</Font><Font italic="true">
Remark.  </Font>In the following table, x1(t) and x2(t) denote the respective approximations of <Font italic="true">x</Font><Font subscript="true">1</Font>(<Font italic="true">t</Font>) and <Font italic="true">x</Font><Font subscript="true">2</Font>(<Font italic="true">t</Font>) for <Font italic="true">h</Font> = 0.2.  (The approximations agree with the values Linz [4] gives on p. 202.)</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">printf("        t        x1(t)        x2(t)       \n");
for j from 0 to M do
   printf("%10.1f   %10.5f   %10.5f\n", t[d*j], X[d*j][1], X[d*j][2])
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Graphs:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x1(t) vs. <Font italic="true">t:</Font> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">P[1] := pointplot([seq([t[n], X[n][1]], n = 0..N)], color=black, labels=[t, "x1"],
        labelfont=[times, bold, 12]):
P[2] := pointplot([seq([t[n], X[n][1]], n = 0..N)], color=magenta, style=line, 
        thickness=1, labels=[t, "x1"], labelfont=[times, bold, 12]):   
display(P[1], P[2]); 
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x2(t) vs. <Font italic="true">t:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">P[3] := pointplot([seq([t[n], X[n][2]], n = 0..N)], color=black, labels=[t, "x2"],
        labelfont=[times, bold, 12]):
P[4] := pointplot([seq([t[n], X[n][2]], n = 0..N)], color=green, style=line, 
        thickness=1, labels=[t, "x2"], labelfont=[times, bold, 12]):   
display(P[3], P[4]);
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">1(t) and x2(t) </Font>vs. <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font italic="true">:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">P[5] := pointplot3d([seq([t[n], X[n][1], X[n][2]], n = 0..N)], view = [0..10, 0..10, 0...10], 
        color=black, labels=[t, "x1", "x2"], labelfont=[times, bold, 12], 
        axes = normal, tickmarks = [3,3,3], orientation = [45, 100]): 
P[6] := pointplot3d([seq([t[n], X[n][1], X[n][2]], n = 0..N)], view = [0..10, 0..10, 0...10], 
        color=blue, labels=[t, "x1", "x2"], labelfont=[times, bold, 12], 
        axes = normal, style=line, tickmarks = [3, 3, 3], thickness=1):   
display(P[5], P[6]); </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">6. A scalar Volterra equation</Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">We numerically solve the scalar Volterra equation</Text-field><Text-field layout="Normal" style="Text"><Font bold="true">(6.1)<Font italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font></Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">         </Font><Equation input-equation="x(t) = t-Int((t-s)*x(s), s = 0 .. t)" style="2D Math">NiMvLUkieEc2IjYjSSJ0R0YmLCZGKCIiIi1JJEludEc2JEkqcHJvdGVjdGVkR0YuSShfc3lzbGliR0YmNiQqJiwmRihGKkkic0dGJiEiIkYqLUYlNiNGM0YqL0YzOyIiIUYoRjQ=</Equation>   </Text-field><Text-field layout="Normal" style="Text">and compare the results to the analytical solution <Font italic="true">x</Font>(<Font italic="true">t</Font>) = sin <Font italic="true">t</Font>.  See Jerri [3, p. 78; pp. 90-93].</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">
For the scalar equation (6.1), <Font italic="true">m</Font> = 1:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">m := 1;</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the function <Font italic="true">f</Font>(<Font italic="true">t</Font>):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f := proc(t)
   Vector([t])
end proc:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font italic="true">f</Font>  has been entered correctly :</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f(t);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the kernel <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">k := proc(t, s, x::Vector)
   Vector([(s - t)*x[1]])
end proc:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font> has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">v := Vector(m, symbol = x):   vlist := convert(v, 'list'):
k(t, s, v);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that (6.1) has been correctly entered:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">for i from 1 to m do
   x[i](t) = f(t)[i] + Int(k(t, s, v)[i], s = 0..t)
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Applying <Font bold="true">Volterra</Font> to (6.1) with step size <Font italic="true">h</Font> = 1:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra(1, 1, 4, 10^(-5), 5);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">N:=n-1; <Font size="10" style="Text">(total number of steps of size <Font italic="true">h</Font>)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">d:=1;   <Font size="10" style="Text">(In the following table, every value is displayed if <Font italic="true">d</Font> = 1; every other value if <Font italic="true">d</Font> = 2, etc.)</Font><Font style="Text"> </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">M:=4;   <Font size="10" style="Text">(</Font><Font italic="true" style="Text">M</Font><Font size="10" style="Text"> + 1 is the number of values that will be displayed in each column.)</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Numerical solution:</Font>  <Font italic="true">
Remark.  </Font>The following approximations x1(t) of <Font italic="true">x</Font><Font subscript="true">1</Font>(<Font italic="true">t</Font>) = <Font italic="true">x</Font>(<Font italic="true">t</Font>) = sin <Font italic="true">t </Font>agree with the values Jerri [3] gives in Table 3.1 on p. 91.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">printf("        t         x1(t)        sin(t)  \n");
for j from 0 to M do
   printf("%10.1f   %10.4f    %10.4f\n", t[d*j], X[d*j][1], sin(t[d*j]))
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Graph: </Font>(cf. Jerri [3, p. 92])</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Q[1] := pointplot([seq([t[n], X[n][1]], n = 0..4)], color=black, labels=[t, "x1"], 
        labelfont=[times, bold, 12]):
Q[2] := pointplot([seq([t[n], X[n][1]], n = 0..4)], color=blue, style = line, 
        thickness=1,  labels=[t, "x1"], labelfont=[times, bold, 12]):   
display(Q[1], Q[2]);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">
Applying <Font bold="true">Volterra</Font> to (6.1) with step size <Font italic="true">h</Font> = 0.1:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra(1, .1, 63, 10^(-5), 5);
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">N:=n-1; <Font size="10" style="Text">(total number of steps of size <Font italic="true">h</Font>)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">d:=3;   <Font size="10" style="Text">(In the following table, every value is displayed if <Font italic="true">d</Font> = 1; every other value if <Font italic="true">d</Font> = 2, etc.)</Font><Font style="Text"> </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">M:=21;  <Font size="10" style="Text">(<Font italic="true">M</Font> + 1 is the number of values that will be displayed in each column.)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">
Comparison of the numerical solution x1(t) with the analytical solution sin <Font italic="true">t:</Font></Font>    </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">printf("        t         x1(t)        sin(t)  \n");
for j from 0 to M do
   printf("%10.1f   %10.4f    %10.4f\n", t[d*j], X[d*j][1], sin(t[d*j]))
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Graphs:</Font>
x1(t) vs. <Font italic="true">t:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Q[3] := pointplot([seq([t[n], X[n][1]], n = 0..63)], color=black, labels=[t, "x1"], 
        labelfont=[times, bold, 12], symbol=box, symbolsize=6, legend="numerical solution"):
display(Q[3]);
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">sin <Font italic="true">t</Font> vs <Font italic="true">t:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Q[4] := pointplot([seq([t[n], sin(t[n])], n = 0..63)], color=blue, labels=[t, "x"], 
        labelfont=[times, bold, 12], symbol=cross, symbolsize=10, legend="x = sin(t)"):
display(Q[4]);
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x1(t) and sin <Font italic="true">t </Font>plotted on the same set of axes: </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">display(Q[3], Q[4], title="A comparision of the numerical and analytical solutions", 
titlefont=[times, bold, 12], labels=[t, " "]);
</Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1"><Font executable="false">7. A scalar Volterra integro-differential equation</Font></Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">The unique analytical solution of the scalar Volterra integro-differential equation
</Text-field><Text-field layout="Normal" style="Text"><Font bold="true">(7.1)</Font>         <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> </Font><Equation input-equation="diff(x(t), t)" style="2D Math">NiMtSSVkaWZmR0kqcHJvdGVjdGVkR0YlNiQtSSJ4RzYiNiNJInRHRilGKw==</Equation> = <Equation input-equation="-3*x(t)" style="2D Math">NiMsJComIiIkIiIiLUkieEc2IjYjSSJ0R0YpRiYhIiI=</Equation> - <Equation input-equation="Int(exp(s-t)*x(s), s = 0 .. t)" style="2D Math">NiMtSSRJbnRHNiI2JComLUkkZXhwR0YlNiMsJkkic0dGJSIiIkkidEdGJSEiIkYtLUkieEdGJTYjRixGLS9GLDsiIiFGLg==</Equation></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">satisfying the initial condition <Font italic="true">x</Font>(0) = 1 is <Font italic="true">x</Font>(<Font italic="true">t</Font>) = e<Font superscript="true">-2<Font italic="true">t</Font></Font><Font italic="true"> - t</Font>e<Font superscript="true">-2<Font italic="true">t </Font></Font>(cf. Burton [2, pp. 8-9]).  In order to solve (7.1) with the <Font bold="true">Volterra </Font>procedure, we must first change (7.1) to an equivalent system of two Volterra integral equations by letting <Font italic="true">x</Font><Font subscript="true">1</Font>(<Font italic="true">t</Font>) = <Font italic="true">x</Font>(<Font italic="true">t</Font>) and <Font italic="true">x</Font><Font subscript="true">2</Font>(<Font italic="true">t</Font>) = <Font italic="true">x'</Font>(<Font italic="true">t</Font>).  Then we obtain</Text-field><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">           </Font><Equation input-equation="x[1](t) = 1 + Int(x[2](s), s= 0..t)" style="2D Math">NiMvLSZJInhHNiI2IyIiIjYjSSJ0R0YnLCZGKUYpLUkkSW50RzYkSSpwcm90ZWN0ZWRHRjBJKF9zeXNsaWJHRic2JC0mRiY2IyIiIzYjSSJzR0YnL0Y4OyIiIUYrRik=</Equation></Text-field><Text-field layout="Normal" style="Text"><Font bold="true">(7.2)</Font>  </Text-field><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">          </Font><Equation input-equation="x[2](t)" style="2D Math">NiMtJkkieEc2IjYjIiIjNiNJInRHRiY=</Equation> = <Equation input-equation="-3" style="2D Math">NiMsJCIiJCEiIg==</Equation> + <Equation input-equation="Int({-exp(s-t)*x[1](s)-3*x[2](s)}, s = 0 .. t)" style="2D Math">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkPCMsJiomLUkkZXhwR0YlNiMsJkkic0dGKCIiIkkidEdGKCEiIkYyLSZJInhHRig2I0YyNiNGMUYyRjQqJiIiJEYyLSZGNzYjIiIjRjlGMkY0L0YxOyIiIUYz</Equation>.
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Since (7.2) consists of two equations<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">m</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = 2</Font>. </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">m := 2;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the function <Font italic="true">f</Font>(<Font italic="true">t</Font>):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f := proc(t)
   Vector([1, -3])
end proc:
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font italic="true">f</Font>  has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f(t);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the kernel <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">k := proc(t, s, x::Vector)
   Vector([x[2], -exp(s-t)*x[1]-3*x[2]]);
end proc:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">) </Font>has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">v := Vector(m, symbol = x):   vlist := convert(v, 'list'):
k(t, s, v);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that the system (7.2) has been entered correctly:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">for i from 1 to m do
   x[i](t) = f(t)[i] + Int(k(t, s, v)[i], s = 0..t)
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Applying <Font bold="true">Volterra</Font> to (7.2) with step size <Font italic="true">h</Font> = 0.1:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra(2, .1, 40, 10^(-8), 5);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">N:=n-1; <Font size="10" style="Text">(total number of steps of size <Font italic="true">h</Font>)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">d:=2;  <Font size="10" style="Text"> (In the following table, every value is displayed if <Font italic="true">d</Font> = 1; every other value if <Font italic="true">d</Font> = 2, etc.)</Font><Font style="Text"> </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">M:=20;  <Font size="10" style="Text">(<Font italic="true">M</Font> + 1 is the number of values that will be displayed in each column.) </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Comparison of the exact values of the analytical solution <Font italic="true">x</Font>(<Font italic="true">t</Font>) = e<Font superscript="true">-2<Font italic="true">t</Font></Font><Font italic="true"> - t</Font>e<Font superscript="true">-2<Font italic="true">t</Font></Font></Font> <Font bold="true">with the numerical approximations of <Font italic="true">x</Font>(<Font italic="true">t</Font>): </Font> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">printf("        t        exact     approximation   \n");
for j from 0 to M do
   printf("%10.1f   %10.5f    %10.5f\n", t[d*j], exp(-2*d*t[j])-d*t[j]*exp(-2*d*t[j]), X[d*j][1])
end do;</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">
Graphs:</Font>
Graph of x1(t), the numerical approximation of <Font italic="true">x</Font>(<Font italic="true">t</Font>):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">R[1] := pointplot([seq([t[n], X[n][1]], n = 0..40)], color=black, labels=[t, "x1"], 
        labelfont=[times, bold, 12]): 
R[2] := pointplot([seq([t[n], X[n][1]], n = 0..40)], color=blue, style = line, connect=true, 
        thickness=1,  labels=[t, "x1"], labelfont=[times, bold, 12], title="Numerical solution",
        titlefont=[times, bold, 12]):   
display(R[1], R[2]);  </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Graph of the analytical solution <Font italic="true">x</Font>(<Font italic="true">t</Font>) = e<Font superscript="true">-2<Font italic="true">t</Font></Font><Font italic="true"> - t</Font>e<Font superscript="true">-2<Font italic="true">t</Font></Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">plot(exp(-2*t) - t*exp(-2*t), t=0..4, labels=[t, x], labelfont=[times, bold, 12], 
color=magenta, title="Analytical solution", titlefont=[times, bold, 12], thickness=2);</Text-field></Input></Group><Text-field layout="Normal" style="Text"/></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">8. <Font executable="false">A Volterra system of three equations</Font></Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">In this section, we numerically solve the Volterra system of three integral equations</Text-field><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">           </Font><Equation input-equation="x[1](t)" style="2D Math">NiMtJkkieEc2IjYjIiIiNiNJInRHRiY=</Equation> = <Equation input-equation="8*sin(t)" style="2D Math">NiMqJiIiKSIiIi1JJHNpbkc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliRzYiNiNJInRHRitGJQ==</Equation> + <Equation input-equation="Int(x[2](s)*x[3](s)*cos(s), s = 0 .. t)" style="2D Math">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkKigtJkkieEdGKDYjIiIjNiNJInNHRigiIiItJkYtNiMiIiRGMEYyLUkkY29zR0YlRjBGMi9GMTsiIiFJInRHRig=</Equation></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(8.1)</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">   </Font><Equation input-equation="x[2](t)" style="2D Math">NiMtJkkieEc2IjYjIiIjNiNJInRHRiY=</Equation><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = </Font><Equation input-equation="t/4" style="2D Math">NiMqJkkidEc2IiIiIiIiJSEiIg==</Equation> + <Equation input-equation="int({exp(s-t)*sin(t)*cos(2*s)*x[1](s)-3*x[2](s)}, s = 0 .. t)" style="2D Math">NiMtSSRpbnRHNiI2JDwjLCYqKi1JJGV4cEc2JEkqcHJvdGVjdGVkR0YtSShfc3lzbGliR0YlNiMsJkkic0dGJSIiIkkidEdGJSEiIkYyLUkkc2luR0YsNiNGM0YyLUkkY29zR0YsNiMqJiIiI0YyRjFGMkYyLSZJInhHRiU2I0YyNiNGMUYyRjIqJiIiJEYyLSZGPzYjRjxGQUYyRjQvRjE7IiIhRjM=</Equation></Text-field><Text-field layout="Normal" style="Text"><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">           </Font><Equation input-equation="x[3](t)" style="2D Math">NiMtJkkieEc2IjYjIiIkNiNJInRHRiY=</Equation> = <Equation input-equation="1 - cos(t)" style="2D Math">NiMsJiIiIkYkLUkkY29zRzYiNiNJInRHRichIiI=</Equation> + <Equation input-equation="Int({x[1](s)*x[2](s)+exp(s-t)*sin(t)*cos(s)*x[2](s)-x[3](s)}, s = 0 .. t)" style="2D Math">NiMtSSRJbnRHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYkPCMsKComLSZJInhHRig2IyIiIjYjSSJzR0YoRjEtJkYvNiMiIiNGMkYxRjEqKi1JJGV4cEdGJTYjLCZGM0YxSSJ0R0YoISIiRjEtSSRzaW5HRiU2I0Y9RjEtSSRjb3NHRiVGMkYxRjRGMUYxLSZGLzYjIiIkRjJGPi9GMzsiIiFGPQ==</Equation></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">and graph the results.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">
Since (8.1) consists of three equations<Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">m</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = 3</Font>.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">m:=3;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the function <Font italic="true">f</Font>(<Font italic="true">t</Font>):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f := proc(t)
   Vector([8*sin(t), t/4, 1-cos(t)])
end proc:
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font italic="true">f  </Font>has been correctly entered:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">f(t); 
 </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Enter the kernel <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">k := proc(t, s, x::Vector)
   Vector([x[2]*x[3]*cos(s), exp(s-t)*sin(t)*cos(2*s)*x[1]-3*x[2],
           x[1]*x[2] + exp(s-t)*sin(t)*cos(s)*x[2] -x[3]]);
end proc:
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">k</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">s</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">, </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font> has been correctly entered:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">v := Vector(m, symbol = x):   vlist := convert(v, 'list'):
k(t, s, v);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Check that (8.1) has been correctly entered:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">for i from 1 to m do
   x[i](t) = f(t)[i] + Int(k(t, s, v)[i], s = 0..t)
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">Applying <Font bold="true">Volterra</Font> to (8.1) with step size <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">h</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false"> = 0.1</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Volterra(3, 0.1, 150, 10^(-8),5);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">N:=n-1; <Font size="10" style="Text">(total number of steps of size <Font italic="true">h</Font>)</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">d:=5;   <Font size="10" style="Text">(In the following table, every value is displayed if <Font italic="true">d</Font> = 1; every other value if <Font italic="true">d</Font> = 2, etc.)</Font><Font style="Text"> </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">M:=30;  <Font size="10" style="Text">(<Font italic="true">M</Font> + 1 is the number of values that will be displayed in each column.)</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Numerical approximation of the solution </Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">1</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">), </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">2</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">), </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">3</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">)</Font>)<Font bold="true">:  </Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">printf("    t       x1(t)      x2(t)      x3(t)       \n");
for j from 0 to M do
   printf("%6.2f   %8.4f   %8.4f   %8.4f\n", t[d*j], X[d*j][1], X[d*j][2], X[d*j][3])
end do;
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font bold="true">Graphs:</Font>
x1(t) vs. <Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font italic="true">:</Font> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">S[1] := pointplot([seq([t[n], X[n][1]], n = 0..N)], color=black, labels=[t, "x1"], 
        labelfont=[times, bold, 12]):
S[2] := pointplot([seq([t[n], X[n][1]], n = 0..N)], color=green, style=line, 
        thickness=1, labels=[t, "x1"], labelfont=[times, bold, 12]):   
display(S[1], S[2]);
 </Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x2(t) vs. <Font italic="true">t:</Font> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">S[3] := pointplot([seq([t[n], X[n][2]], n = 0..N)], color=black, labels=[t, "x2"], 
        labelfont=[times, bold, 12]):
S[4] := pointplot([seq([t[n], X[n][2]], n = 0..N)], color=magenta, style=line, thickness=1, 
        labels=[t, "x2"], labelfont=[times, bold, 12]):   
display(S[3], S[4]); 
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text">x3(t) vs. <Font italic="true">t:</Font> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">S[5] := pointplot([seq([t[n], X[n][3]], n = 0..N)], color=black, labels=[t, "x3"],
        labelfont=[times, bold, 12]):
S[6] := pointplot([seq([t[n], X[n][3]], n = 0..N)], color=gold, style=line, 
        thickness=1,  labels=[t, "x3"], labelfont=[times, bold, 12]):   
display(S[5], S[6]); 
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Text">
Graph of the numerical approximation of the solution <Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">1</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">), </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">2</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">), </Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">x</Font><Font bold="false" italic="false" style="2D Math" subscript="true" superscript="false" underline="false">3</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">(</Font><Font bold="false" italic="true" style="2D Math" subscript="false" superscript="false" underline="false">t</Font><Font bold="false" italic="false" style="2D Math" subscript="false" superscript="false" underline="false">))</Font>:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">S[7] := pointplot3d([seq([X[n][1], X[n][2], X[n][3]], n = 0..N)], color=black, 
        labels=["x1", "x2", "x3"], labelfont=[times, bold, 12], tickmarks=[3,3,3], 
        axes=normal, orientation=[50, 60]):
S[8] := pointplot3d([seq([X[n][1], X[n][2], X[n][3]],n = 0..N)], color=blue,                                       labels=["x1","x2","x3"],labelfont=[times, bold, 12], 
        style=line, tickmarks = [3, 3, 3], thickness=1):   
display(S[7], S[8]);  </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Text"/></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">9. Epilogue</Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">This worksheet can be used to compute and graph numerical solutions of other systems of Volterra integral equations of the second kind by modifying the examples in Sections 5, 6, and 8.  Numerical solutions of scalar Volterra integro-differential equations can also be computed and graphed by modifying the example in Section 7.  </Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 1" style="Heading 1">10. References</Text-field></Title><Group><Input><Text-field layout="Normal" style="Text">[1]   Richard L. Burden and J. Douglas Faires, <Font italic="true">Numerical Analysis, </Font>8th ed., Thomson Brooks/Cole, Belmont, CA, 2005.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">[2]  T. A. Burton, <Font italic="true">Volterra Integral and Differential Equations,</Font> 2nd ed., Mathematics in Science &amp; Engineering, 202, Elsevier, 2005.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">[3]  Abdul J. Jerri, <Font italic="true">Introduction to Integral Equations with Applications</Font>, Pure &amp; Applied Mathematics, vol. 93, Marcel Dekker, New York, 1985.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">[4]  Peter Linz, <Font italic="true">Analytical and Numerical Methods for Volterra Equations</Font>, Studies in Applied Mathematics 7, SIAM, Philadelphia, 1985.</Text-field><Text-field layout="Normal" style="Text"/><Text-field layout="Normal" style="Text">[5]  W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery, <Font italic="true">Numerical Recipes in Fortran 77: the Art of Scientific Computing, </Font>vol. 1,<Font italic="true"> </Font>2nd ed., Cambridge University Press, 1986-1992.  An Adobe Acrobat version is found at the web site: <Hyperlink bold="false" executable="false" italic="false" linktarget="http://library.lanl.gov/numerical/" style="Hyperlink" subscript="false" superscript="false">http://library.lanl.gov/numerical/</Hyperlink> .</Text-field></Input></Group></Section><Group><Input><Text-field layout="Normal" style="Text"><Font italic="true">
Legal Notice: The copyright for this application is owned by the authors. Neither Maplesoft nor the authors are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the authors for permission if you wish to use this application in for-profit activities.</Font></Text-field></Input></Group><Group><Input><Text-field layout="Heading 1" style="Heading 1"><Font executable="false">* End of worksheet *</Font></Text-field></Input></Group><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/></Worksheet>