# Commits

committed bce39a7 Draft

Updated calculus sections with Sage cell

# Calc.html


 <h1>Calculus and all that Jazz</h1>

-<p>In one form or another, the bulk of college mathematics is either calculus, preparation for functions
+<p>In one form or another, the bulk of college mathematics is either calculus, preparation for functions
 and calculus, or using calculus in new ways.  </p>

-	<ul>
-		<li><a href="Symbolic.html" class="internal">Functions and Symbolic Expressions</a></li>
-		<li><a href="DoingCalc.html" class="internal">Doing Calculus</a>
-	</ul>
+        <ul>
+          <li><a href="Symbolic.html" class="internal">Functions and Symbolic Expressions</a></li>
+          <li><a href="DoingCalc.html" class="internal">Doing Calculus</a>
+            <ul>
+              <li><a href="DoingCalc.html#basics" class="internal">The Basics</a></li>
+              <li><a href="DoingCalc.html#numerical" class="internal">Numerical Methods</a></li>
+            </ul>
+          </li>
+          <li><a href="MoreCalc.html" class="internal">More Calculus Ideas</a>
+            <ul>
+              <li><a href="MoreCalc.html#DE" class="internal">Differential Equations</a></li>
+              <li><a href="MoreCalc.html#multiVar" class="internal">Multivariable</a></li>
+            </ul>
+        </li>
+        </ul>

 <p>All these examples are listed together on the Sage worksheet for this article at #Calc. FIXME - make this true.</p>


# DoingCalc.html

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">

+<!-- This stuff makes the Sage cell instances work right -->
+    <script src="http://aleph.sagemath.org/static/jquery.min.js"></script>
+    <script src="http://aleph.sagemath.org/embedded_sagecell.js"></script>
+    <script>
+$(function () { + sagecell.makeSagecell({inputLocation: '#FirstFunc', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#FirstFunc2', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Typeset', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Tidbit1', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Nintegral1', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Nintegral2', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Nintegral3', + template: sagecell.templates.restricted}); + sagecell.makeSagecell({inputLocation: '#Model', + template: sagecell.templates.restricted}); +}); + </script> + + +  <head>  <title>Doing Calculus</title>  <meta name="author" content="Byungchul Cha, Karl-Dieter Crisman, Dan Drake, and Jason Grout" />    <h1>Doing Calculus</h1>   -Sage can do a lot of calculus! We'll briefly see +Sage can do a lot of calculus! We'll see  <ul>  <li><a href=#basics>The basics</a> of single-variable calculus</li> -<li><a href=#DE>Differential equations</a></li>  <li>Using <a href=#numerical>numerical methods</a></li> -<li><a href=#multiVar>Multivariable</a> ideas</li> +<li><a href=MoreCalc.html#DE>Differential equations</a></li> +<li><a href=MoreCalc.html#multiVar>Multivariable</a> ideas</li>  </ul>    <h2 id=basics>The basics</h2>    <p>Now we've already learned to define functions and symbolic expressions. So what can we do with them?</p>   -<p>FIXME: Add screenshots/single cell server stuff in appropriate places.</p> +<p>We'll always start by defining a function to do calculus on, such as <code>f(x)=x^3+1</code>.</p>   -<p>Let's start by defining a function to do calculus on. "f(x)=x^3+1"</p> +<div id="FirstFunc"><script type="text/x-sage">f(x)=x^3+1 +print lim(f,x=1) +print diff(f,x) +print integrate(f,x)</script></div>   -<p>The main things we do are limits, derivatives, and integrals. All three are fairly easy to use: -<ul> -<li>lim(f,x=1)</li> -<li>diff(f,x)</li> -<li>integrate(f,x)</li> -</ul></p> +<p>Notice that all of the normal calculus functions require the variable in one form or another. +There is good reason for this. For instance, things are quite different with a different variable +of differentiation or integration!</p>   -<p>There are lots of additional options, though. For instance, "lim(f,x=1,dir='right')" will give a -one-sided limit. (Notice the quotes; such <em>keywords</em> are usually quoted.) One can also use the -syntax "derivative(f,x)".</p> +<div id="FirstFunc2"><script type="text/x-sage">var('y') +f(x)=x^3+1 +print diff(f,y) +print integrate(f,y)</script></div>   -<p>It's also useful to see a typeset version of your answer - for instance, for  -"diff(x^2*e^(-x)/(sin(x)+2^x),x)". -In such cases, either click the "Typeset" button at the top of the worksheet, or do  -"show(command)". For example, we get something nice for "show(diff(x^2*e^(-x)/(sin(x)+2^x),x))".  -We would certainly want this for the result of "integrate(1/(1+x^5),x)".</p> +<p>There are various additional options. For instance, <code>lim(f,x=1,dir='right')</code> will give a +one-sided limit. (Notice the quotes; such <em>keywords</em> are usually quoted if they are not numerical.) +Sage tries to have a number of options for such common methods; for examples, one +can also use the syntax <code>derivative(f,x)</code> or <code>f.diff(x)</code>.</p> + +<p>As before, it can be useful to see a typeset version of your answer -- for instance, for +complicated derivatives like <code>diff(x^2*e^(-x)/(sin(x)+2^x),x)</code>. Recall that +one can use the <code>show(...)</code> command here, or, in a Sage worksheet, click the +"Typeset" button at the top of the worksheet. Here are two typical ones.</p> + +<div id="Typeset"><script type="text/x-sage">show(diff(x^2*e^(-x)/(sin(x)+2^x),x)) +show(integrate(1/(1+x^5),x))</script></div>    <p>A few other useful tidbits:  <ul> -<li>Definite integrals have similar syntax to plotting - "integral(cos(x),(x,0,pi/2))".</li> -<li>If Sage (via Maxima) doesn't know the answer, it will tell you - "integral(sinh(x^2+sqrt(x-1)),x)".</li> -<li>And other symbolic calculus things are in Sage, too, like Taylor polynomials: -"g(x)=taylor(sinh(x^2+sqrt(x-1)),x,3,6); g(x)"</li> -</ul></p> - -<h2 id="DE">Differential Equations</h2> - -<p>Sage has a number of differential equation solvers built in.</p> - -<p>For symbolic solutions, a little bit of syntax is needed. We will define an <em>abstract</em> function -"y" below, as well as the differential equation, then solve it with the "desolve" command (for <b>d</b>ifferential -<b>e</b>quation <b>solve</b>r). -<ul> -<li>y = function('y',x)</li> -<li>de = diff(y,x) + y -2</li> -<li>h = desolve(de, y)</li>  -<li>expand(h)</li> +<li>Definite integrals have similar syntax to plotting -- <code>integral(cos(x),(x,0,pi/2))</code>.</li> +<li>Other symbolic calculus things are in Sage, too, like Taylor polynomials -- +<code>taylor(sinh(x^2+sqrt(x-1)),x,3,6)</code>.</li> +<li>And, if Sage (via Maxima) doesn't know the answer, it will tell you. +</li>  </ul> -We can also specify initial conditions, with syntax "h = desolve(de, y, ics=[0,3])".</p> - -<p>A great use of all this is to combine it with a plot for a slope field, so students can see  -the solution following the slope field from the initial condition. We need to declare "y" as a  -symbolic variable now, so we can plot with it; up til now, it is a function, not a variable.</p> - -<ul> -<li>Plot1=plot_slope_field(2-y,(x,0,3),(y,0,5)) </li> -<li>Plot2=plot(h,x,0,3) </li> -<li>Plot1+Plot2 </li> -<li>FIXME: Include screenshot</li> -</ul> +</p> +<div id="Tidbit1"><script type="text/x-sage">integral(sinh(x^2+sqrt(x-1)),x)</script></div>    <h2 id="numerical">Numerical Methods are Calculus, too!</h2>   -<p>Many differential equations must be solved numerically, of course. The following example compares  -a Runge-Kutta solution with the symbolic solution - a very pleasing graphic. We use the "points" command -to plot the list of points that comes from the numerical solver. -<ul> -<li>y = function('y',x)</li> -<li>de = diff(y,x) + y -2</li> -<li>h = desolve_rk4(de, y, step=.05, ics=[0,3]) </li> -<li>h1 = desolve(de, y, ics=[0,3])</li> -<li>plot(h1,(x,0,5),color='red')+points(h) </li> -</ul> -There are many other solvers available with the help command "ode_solver?".</p> - -<p>We can get numerical solutions to integrals as well. Take "integral(1/(1+x^2+x^5),x,1,2)". We may want a  -numerical approximation, since -Sage does not give a symbolic answer. Here are three methods of doing this. +<p>We can get numerical solutions to integrals as well. +Take <code>integral(1/(1+x^2+x^5),x,1,2)</code>. We may want a numerical approximation, since +Sage does not give a symbolic answer but just returns the original question. +Here are three methods of doing this, each with its own syntax.  <ul>  <li> -sage: integral(1/(1+x^2+x^5),x,1,2).n() -0.12109372470732925 +<div id="Nintegral1"><script type="text/x-sage">integral(1/(1+x^2+x^5),x,1,2).n()</script></div>  </li>  <li> -sage: numerical_integral(1/(1+x^2+x^5),1,2) -(0.12109372470732925, 1.3444104130769713e-15) +<div id="Nintegral2"><script type="text/x-sage">numerical_integral(1/(1+x^2+x^5),1,2)</script></div>  </li>  <li> -sage: (1/(1+x^2+x^5)).nintegrate(x,1,2) -(0.12109372470732926, 1.3444104130769719e-15, 21, 0) +<div id="Nintegral3"><script type="text/x-sage">(1/(1+x^2+x^5)).nintegrate(x,1,2)</script></div>  </li>  </ul> -</p> +Notice that each of these methods gives different information; the final one gives not just +the answer and a bound on the error, but also how many evaluations of the integrand were involved +as well as an error marker (0 meant there was no error).</p>   -<p>FIXME: Interpolation example?</p> +<p>Many differential equations must be solved numerically as well, of course. +We include an example of how to do this in our section on <a href=MoreCalc.html#DE>differential equations</a>.</p>   -<h2 id="multiVar">Calculus of More than One Variable</h2> +<p>Modeling is another topic that is often done numerically. Sage uses Scipy for doing least squares +in the <code>find_fit</code> function. In this example, we have slightly randomized some points along a standard parabola and are trying +to fit this to a parabola; the interested reader may want to read about +<a href="http://docs.python.org/tutorial/datastructures.html#list-comprehensions">Python list comprehensions</a> +to see exactly how we got the data, but on a first reading the plot will be sufficient to tell the story. +The syntax is necessarily a little more complicated for getting the model back from Sage, so again +we encourage the reader to recall how to find help for a function.</p>   -<p>All we need to do to do calculus in more than one variable with Sage is to declare those  -other variables, like with "var('y')", or to define them as a function like "f(x,y)". -See <a href="Symbolic.html">the previous section</a> for more details.</p> +<div id="Model"><script type="text/x-sage">var('a b') +model(x) = a*x^2+b +DATA = [[z,z^2+1+3*random()] for z in [1..10]] +F = find_fit(DATA,model,solution_dict=True) +plot(model.subs(a=F[a],b=F[b]),(x,0,10))+points(DATA,color='green',pointsize=10)</script></div>   -<p>Once you've done this, lots of things come easily. Define a function, and use the tab-completion -to find all sorts of methods. -<ul> -<li>f(x,y)=2*sin(x)+y*x^3</li> -<li>f.diff()</li> -<li>f.hessian()</li> -<li>f.integrate(y); f.integrate(x)</li> -</ul> -Note that we can integrate as we please, like "sin(x).integrate(y)".</p> +<!-- +FIXME: should we look for something here? +<p>Finally, let's see another typical use of Interpolation example?</p> +-->   -<p>Vector-valued functions also work, and we can calculate arc length. -<ul> -<li>var('t')</li> -<li>r = vector((2*t-4, t^2, (1/4)*t^3))</li> -<li>r_prime = r.diff(t)</li> -<li>arclength = integral(r_prime.norm(),t,0,pi).n()</li> -</ul> -The arc length in this case turns out to be about 14.9.</p>   -<p>Sage makes it easy to show stunning plots for this subject as well.</p>   -<p>FIXME: Vector field 3d plot example</p> -  -<p>FIXME: Contour plot example</p> +<p>Next, we'll see more how to do <a href="MoreCalc.html" class=internal>more topics</a> +that typically come up in the extended calculus sequence!</p>   -<p>FIXME: Or perhaps just point to the plotting page?</p> -   <div class="footer"> -<p>Previous: <a href="Calc.html" class="internal">Calculus and all that Jazz</a> | Up: <a href="Calc.html" class="internal">Calculus and all that Jazz</a> | Next: <a href="Algebra.html" class="internal">Algebraic Matters</a></p> +<p>Previous: <a href="Symbolic.html" class="internal">Functions and Symbolic Expressions</a> | Up: <a href="Calc.html" class="internal">Calculus and all that Jazz</a> | Next: <a href="MoreCalc.html" class="internal">More Calculus Ideas</a></p>  </div>     # MoreCalc.html  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">   +<!-- This stuff makes the Sage cell instances work right --> + <script src="http://aleph.sagemath.org/static/jquery.min.js"></script> + <script src="http://aleph.sagemath.org/embedded_sagecell.js"></script> + <script> +$(function () {
+    sagecell.makeSagecell({inputLocation:  '#FirstODE',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#FirstODEPlot',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#SecondODEPlot',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#MultivarFuncs',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#Arclength',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#Contour',
+                           template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#VecField3D',
+                           template:       sagecell.templates.restricted});
+});
+    </script>
+
+
 <head>
 <title>More Calculus Ideas</title>
 <meta name="author" content="Byungchul Cha, Karl-Dieter Crisman, Dan Drake, and Jason Grout" />

 <h1>More Calculus Ideas</h1>

-<p>There are many other topics in college mathematics which are relevant to calculus than the
-single-variable functions and how to compute basic integral and derivatives, though.  Here, we give a
-brief overview of how to use Sage in <a href="#MultiVar">multivariable calculus</a> and with <a
+<p>There are many other calculus-related topics in college mathematics beyond single-variable calculus.
+Here, we give a brief overview of how to use Sage in <a href="#MultiVar">multivariable calculus</a> and with <a
 href="#DE">basic ordinary differential equations</a>.</p>

-<h2 id="MultiVar">Calculus of More than One Variable</h2>
-
-<p>Sage can do multivariable calculus, but I don't know anything about it because I haven't taught it
-since I started using Sage.  Jason?</p>

 <h2 id="DE">Differential Equations</h2>

-<p>Be sure to show that we finally can do all the stuff nicely that used to be annoying, thanks to Robert
-Marik's work on polishing wdj's stuff.  We should show at least one slope field with a solution.</p>
+<p>Sage has a number of differential equation solvers built in.</p>
+
+
+<p>For symbolic solutions, a little bit of syntax is needed.
+<ul>
+<li>We first define an <em>abstract</em> function <code>y</code>.</li>
+<li>We then define the differential equation using the <code>diff</code> syntax.  The idea is that
+<code>diff(y,x)+y-2==0</code>.</li>
+<li>Then we solve it with the "desolve" command (for <b>d</b>ifferential <b>e</b>quation <b>solve</b>r).</li>
+</ul>
+
+<div id="FirstODE"><script type="text/x-sage">y = function('y',x)
+de = diff(y,x) + y -2
+h = desolve(de, y)
+expand(h)</script></div>
+
+<p>This gives a symbolic solution, complete with constant.  But for a specific solution, we can
+specify initial conditions, with the syntax <code>h = desolve(de, y, ics=[0,3])</code>.  Here,
+<code>ics</code> is for <b>i</b>nitial <b>c</b>ondition<b>s</b>.</p>
+
+<p>A great use of all this is to combine it with a plot for a slope field, so students can see
+the solution following the slope field from the initial condition.  Notice that here we first let <code>y</code>
+be a function, but then switch it to being a symbolic variable, so we can plot with it.  This is
+just for convenience; one could just as easily plot the slope field for <code>2-z</code>; the name of
+the independent variable for the slope field is not relevant.</p>
+
+<div id="FirstODEPlot"><script type="text/x-sage">y = function('y',x)
+de = diff(y,x) + y -2
+h = desolve(de, y, ics=[0,3])
+var('y')
+Plot1 = plot_slope_field(2-y,(x,0,3),(y,0,5))
+Plot2 = plot(h,(x,0,3))
+Plot1+Plot2</script></div>
+
+<p>Many differential equations must be solved numerically, of course.  The following example compares
+a Runge-Kutta solution of this equation with the numerical solution -- a very pleasing graphic.
+We use the <code>points</code> command to plot the list of points that comes from the numerical solver.
+<div id="SecondODEPlot"><script type="text/x-sage">y = function('y',x)
+de = diff(y,x) + y -2
+h = desolve_rk4(de, y, step=.05, ics=[0,3])
+h1 = desolve(de, y, ics=[0,3])
+plot(h1,(x,0,5),color='red')+points(h)</script></div>
+There are many other solvers available; try the help command <code>ode_solver?</code>.</p>
+
+
+<h2 id="multiVar">Calculus of More than One Variable</h2>
+
+<p>All we need to do to do calculus in more than one variable with Sage is to declare those
+other variables, like with <code>var('y')</code>, or to define them as a function like <code>f(x,y)=...</code>.
+See <a href="Symbolic.html">the section on symbolics</a> for more details.</p>
+
+<p>Once you've done this, lots of things come easily.  Define a function, and use the tab-completion
+to find all sorts of methods.  Here are some of many examples.
+<div id="MultivarFuncs"><script type="text/x-sage">f(x,y)=2*sin(x)+y*x^3
+show(f.diff())
+show(f.hessian())
+show(f.integrate(y))
+show(integrate(f,x))</script></div>
+Since these are still functions of two variables, we show them as such (or in the case of the
+Hessian, a matrix of such).</p>
+
+
+<p>Vector-valued functions also work, and we can calculate arc length using our calculus knowledge.
+Here, we use the vector construction; see the <a href="Algebra.html#Matrices" class=internal>linear algebra
+section</a> for more information about them.
+<div id="Arclength"><script type="text/x-sage">var('t')
+r = vector((2*t-4, t^2, (1/4)*t^3))
+r_prime = r.diff(t)
+arclength = integral(r_prime.norm(),t,0,pi)
+arclength.n()</script></div>
+The <code>norm</code> method is taking the vector space norm (length) of this vector.
+Do you remember what is being done in the last line?</p>
+
+<p>Sage makes it easy to show great plots for this subject as well. The first example shows the
+relation between the gradient and the level curves for a function (in this case, a paraboloid).</p>
+
+<div id="Contour"><script type="text/x-sage">f(x,y)=x^2+y^2
+C = contour_plot(f,(x,-3,3),(y,-3,3),fill=False)
+V = plot_vector_field(f.gradient(),(x,-3,3),(y,-3,3))
+C+V</script></div>
+
+<p>This can be particularly useful when trying to demonstrate ideas that are truly hard to visualize
+in two dimensions.  Here is the same relationship in <i>three</i> dimensions.</p>
+
+<div id="VecField3D"><script type="text/x-sage">f(x,y,z)=x^2+y^2+z^2
+V = plot_vector_field3d(f.gradient(),(x,-3,3),(y,-3,3),(z,-3,3))
+P = implicit_plot3d(f(x,y,z)-9,(x,-3,3),(y,-3,3),(z,-3,3),opacity=.2,color='orange')
+Q = implicit_plot3d(f(x,y,z)-4,(x,-3,3),(y,-3,3),(z,-3,3),opacity=.3,color='green')
+R = implicit_plot3d(f(x,y,z)-1,(x,-3,3),(y,-3,3),(z,-3,3),opacity=.4,color='pink')
+V+P+Q+R</script></div>
+
+<p>There are many more three-dimensional plots available as well -- see
+<a href="http://sagemath.org/doc/reference/plot3d.html">the Sage 3D Graphics documentation</a>
+for more information.</p>

 <div class="footer">
-<p>Previous: <a href="DoingCalc.html" class="internal">Doing Basic Calculus</a> | Up: <a href="Calc.html" class="internal">Calculus and all that Jazz</a> | Next: <a href="OtherTopics.html" class="internal">We Got Your Topics Right Here!</a></p>
+<p>Previous: <a href="DoingCalc.html" class="internal">Doing Basic Calculus</a> | Up: <a href="Calc.html" class="internal">Calculus and all that Jazz</a> | Next: <a href="Algebra.html" class="internal">Algebraic Matters</a></p>
 </div>



# Symbolic.html

                            template:       sagecell.templates.restricted});
     sagecell.makeSagecell({inputLocation:  '#Simp2',
                            template:       sagecell.templates.restricted});
+    sagecell.makeSagecell({inputLocation:  '#Simp3',
+                           template:       sagecell.templates.restricted});
     sagecell.makeSagecell({inputLocation:  '#Solve1',
                            template:       sagecell.templates.restricted});
     sagecell.makeSagecell({inputLocation:  '#Solve2',
 notation again.</p>


-<div id="Simp1"><script type="text/x-sage">var('z')
+<div id="Simp2"><script type="text/x-sage">var('z')
 z = ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1))
 print z
 z.simplify_rational()</script></div>
 <p>This looks a little ugly.  To use FIXME: which? MathJax/jsmath to make it look nicely
 typeset, try using <code>show()</code>.</p>

-<div id="Simp2"><script type="text/x-sage">var('z')
+<div id="Simp3"><script type="text/x-sage">var('z')
 z = ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1))
 show(z.simplify_rational())</script></div>


# index.html


   <li><a href="Intro.html" class="internal">Getting Started with Sage</a>
     <ul>
-      <li><a href="Started.html" class="internal">Getting Started with the Online Notebook</a>
-      <li><a href="Evaluate.html" class="internal">Getting Started Evaluating Commands</a>
-      <li><a href="Help.html" class="internal">Finding Help and Discovering Sage's Abilities</a>
+      <li><a href="Started.html" class="internal">Getting Started with the Online Notebook</a></li>
+      <li><a href="Evaluate.html" class="internal">Getting Started Evaluating Commands</a></li>
+      <li><a href="Help.html" class="internal">Finding Help and Discovering Sage's Abilities</a></li>
     </ul>
   </li>


       <li><a href="Plot.html" class="internal">Plotting</a>
         <ul>
-          <li><a href="Plot.html#SV" class="internal">Just a bit more single-variable plotting</a>
-          <li><a href="Plot.html#Other" class="internal">Other two-dimensional plots</a>
-          <li><a href="Plot.html#3d" class="internal">Three-dimensional plots</a>
+          <li><a href="Plot.html#SV" class="internal">Just a bit more single-variable plotting</a></li>
+          <li><a href="Plot.html#Other" class="internal">Other two-dimensional plots</a></li>
+          <li><a href="Plot.html#3d" class="internal">Three-dimensional plots</a></li>
         </ul>
       </li>

       <li><a href="Calc.html" class="internal">Symbolics and Calculus</a>
         <ul>
-          <li><a href="Symbolic.html" class="internal">Functions and Symbolic Expressions</a>
+          <li><a href="Symbolic.html" class="internal">Functions and Symbolic Expressions</a></li>
           <li><a href="DoingCalc.html" class="internal">Doing Calculus</a>
             <ul>
-              <li><a href="DoingCalc.html#basics" class="internal">The Basics</a>
-              <li><a href="DoingCalc.html#DE" class="internal">Differential Equations</a>
-              <li><a href="DoingCalc.html#numerical" class="internal">Numerical Methods</a>
-              <li><a href="DoingCalc.html#multiVar" class="internal">Multivariable</a>
+              <li><a href="DoingCalc.html#basics" class="internal">The Basics</a></li>
+              <li><a href="DoingCalc.html#numerical" class="internal">Numerical Methods</a></li>
             </ul>
+          </li>
+          <li><a href="MoreCalc.html" class="internal">More Calculus Ideas</a>
+            <ul>
+              <li><a href="MoreCalc.html#DE" class="internal">Differential Equations</a></li>
+              <li><a href="MoreCalc.html#multiVar" class="internal">Multivariable</a></li>
+            </ul>
+        </li>
         </ul>
       </li>

       <li><a href="Algebra.html" class="internal">Algebraic Matters</a>
         <ul>
-          <li><a href="Algebra.html#Matrices" class="internal">Matrices and Their Friends</a>
-          <li><a href="Algebra.html#AbstractAlgebra" class="internal">Groups, Rings, and Beyond</a>
-          <li><a href="Algebra.html#NumberTheory" class="internal">Number Theory</a>
+          <li><a href="Algebra.html#Matrices" class="internal">Matrices and Their Friends</a></li>
+          <li><a href="Algebra.html#AbstractAlgebra" class="internal">Groups, Rings, and Beyond</a></li>
+          <li><a href="Algebra.html#NumberTheory" class="internal">Number Theory</a></li>
         </ul>
       </li>

       <li><a href="OtherTopics.html" class="internal">Additional Basic Topics</a>
         <ul>
-          <li><a href="OtherTopics.html#Graphs" class="internal">Graphs</a>
-          <li><a href="OtherTopics.html#Statistics" class="internal">Statistics</a>
-          <li><a href="OtherTopics.html#Combinatorics" class="internal">Combinatorics</a>
+          <li><a href="OtherTopics.html#Graphs" class="internal">Graphs</a></li>
+          <li><a href="OtherTopics.html#Statistics" class="internal">Statistics</a></li>
+          <li><a href="OtherTopics.html#Combinatorics" class="internal">Combinatorics</a></li>
         </ul>
       </li>