kcrisman avatar kcrisman committed bce39a7 Draft

Updated calculus sections with Sage cell

Comments (0)

Files changed (5)

 
 <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>
 
 <!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>
 
 
 <!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>
 
 
                            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>
 
 
   <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>
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.