forked from CalculusWithJulia/CalculusWithJulia.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
toc.jmd
285 lines (130 loc) · 15.8 KB
/
toc.jmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# Calculus with Julia
This is a set of notes for learning [calculus](http://en.wikipedia.org/wiki/Calculus). Since the mid 90s there has been a push to teach calculus using many different points of view. The [Harvard](http://www.math.harvard.edu/~knill/pedagogy/harvardcalculus/) style rule of four says that as much as possible the conversation should include a graphical, numerical, algebraic, and verbal component. These notes use the programming language [Julia](http://julialang.org) to illustrate the graphical, numerical, and, at times, the algebraic aspects of calculus.
There are many examples of integrating a computer algebra system (such as `Mathematica`, `Maple`, or `Sage`) into the calculus conversation. Computer algebra systems can be magical. The popular [WolframAlpha](http://www.wolframalpha.com/) website calls the full power of `Mathematica` while allowing an informal syntax that is flexible enough to be used as a backend for Apple's Siri feature. ("Siri what is the graph of x squared minus 4?")
For learning purposes, computer algebra systems model very well the algebraic/symbolic treatment of the material while providing means to illustrate the numeric aspects.
Theses notes are a bit different in that `Julia` is primarily used for the numeric style of computing and the algebraic/symbolic treatment is added on. Doing the symbolic treatment by hand can be very beneficial while learning, and computer algebra systems make those exercises seem kind of pointless, as the finished product can be produced much easier.
Our real goal is to get at the concepts using technology as much as possible without getting bogged down in the mechanics of the computer language. We feel `Julia` has a very natural syntax that makes the initial start up not so much more difficult than using a calculator. The notes restrict themselves to a reduced set of computational concepts. This set is sufficient for working the problems in mathematics, but do not cover thoroughly many aspects of programming. (Those who are interested can go off on their own and `Julia` provides a rich opportunity to do so.) Within this restricted set, are operators that make many of the computations of calculus reduce to a function call of the form `action(function, arguments...)`. With a small collection of actions that can be composed, many of the problems associated with introductory calculus can be attacked.
These notes are presented in pages covering a fairly focused concept, in a spirit similar to a section of a book. Just like a book, there are try-it-yourself questions at the end of each page. All have a limited number of self-graded answers. These notes borrow ideas from many sources including [Strang](https://ocw.mit.edu/resources/res-18-001-calculus-online-textbook-spring-2005/), [Knill](http://www.math.harvard.edu/~knill/teaching), [Schey](https://www.amazon.com/Div-Grad-Curl-All-That/dp/0393925161/), Thomas Calculus, Rogawski and Adams, and several Wikipedia pages.
## Getting started with Julia
Before beginning, we need to get started with Julia. This is akin to going out and buying a calculator, though it won't take as long.
- [Getting Started](getting-started-with-julia.html)
----
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/CalculusWithJulia/CwJScratchPad.git/master) Julia can be used through the internet for free using the [mybinder.org](https://mybinder.org) service.
Click on the `CalcululsWithJulia.ipynb` file after launching Binder by clicking on the badge.
## Precalculus
Many of the necessary computational skills needed for employing `Julia` successfully to assist in learning calculus are in direct analogy to concepts of mathematics that are first introduced in precalculus or prior. This precalculus *review*, covers some of the basic materials mathematically (though not systematically). More importantly it illustrates the key computational mechanics we will use throughout.
A quick rundown of the `Julia` concepts presented in this setion is in a [Julia overview](precalc/julia_overview.html).
### Number systems
Taking for granted a familiarity with basic calculators, we show in these two sections how `Julia` implements the functionality of a calculator in a manner not so different.
- [Calculator](precalc/calculator.html)
- [Variables](precalc/variables.html)
Calculators really only use one type of number -- floating point numbers. Floating point numbers are a model for the real numbers. However, there are many different sets of numbers in mathematics. Common ones include the integers, rational numbers, real numbers, and complex numbers. As well, we discuss logical values and vectors of numbers. Though integers are rational numbers, rational numbers are real numbers, and real numbers may be viewed as complex numbers, mathematically, these distinctions serve a purpose. `Julia` also makes these distinctions and more.
- [Number Systems](precalc/numbers_types.html)
- [Inequalities and Boolean Values](precalc/logical_expressions.html)
Vectors as a mathematical object could be postponed for later, but they are introduced here as the `Julia` implementation makes an excellent choice for a container of one or more values. We also see how to work with more than one value at a time, a useful facility in future work.
- [Vectors](precalc/vectors.html)
An arithmetic progression is a sequence of the form $a, a+h, a+2h, \dots, a+kh$. For example $3, 10, 17, 24, .., 52$. They prove very useful in describing collections of numbers. We introduce the range operator that models these within `Julia` and comprehensions that allow one to easily modify the simple sequences.
- [Arithmetic Progressions](precalc/ranges.html)
### Functions
The use of functions within calculus is widespread. This section shows how the basic usage within `Julia` follows very closely to common mathematical usage. It also shows that the abstract concept of a function is quite valuable.
- [Functions](precalc/functions.html)
A graphing calculator makes it very easy to produce a graph. `Julia`, using the `Plots` package, makes it even easier and more flexible.
- [Graphs of Functions](precalc/plotting.html)
- [Transformations of Functions](precalc/transformations.html)
- [Inverse Runctions](precalc/inversefunctions.html)
#### Polynomials
Polynomials play an important role in calculus. They give a family of functions for which the basic operations are well understood. In addition, they can be seen to provide approximations to functions. This section discusses polynomials and introduces the add-on package `SymPy` for manipulating expressions in `Julia` symbolically. (This package uses the SymPy library from Python.)
- [Polynomials](precalc/polynomial.html)
The roots of a univariate polynomial are the values of $x$ for which $p(x)=0$. Roots are related to its factors. In calculus, the zeros of a derived function are used to infer properties of a function. This section shows some tools in `SymPy` to find factors and roots, when they are available, and introduces the `Roots` package for estimating roots numerically.
- [Polynomial Roots](precalc/polynomial_roots.html)
A rational expression is the ratio of two polynomial expressions. This section covers some additional details that arise when graphing such expressions.
- [Rational functions](precalc/rational_functions.html)
#### Exponential and logarithmic functions
- [Exponential and Logarithmic Functions](precalc/exp_log_functions.html)
#### Trigonometric functions
Trigonometric functions are used to describe triangles, circles and oscillatory behaviors. This section provide a brief review.
- [Trigonometric Functions](precalc/trig_functions.html)
## Limits and Continuity
The notion of a limit is at the heart of the two main operations of calculus, differentiation and integration.
- [Limits](limits/limits.html)
- [Examples and Extensions of the basic limit definition](limits/limits_extensions.html)
Continuous functions are at the center of any discussion of calculus concepts. These sections define them and illustrate a few implications for continuous functions.
- [Continuity](limits/continuity.html)
- [The Intermediate Value Theorem](limits/intermediate_value_theorem.html), the extreme value theorem and the bisection method.
## Derivatives
The derivative of a function is a derived function that for each $x$ yields the slope of the *tangent line* of the graph of $f$ at $(x,f(x))$.
- [Derivatives](derivatives/derivatives.html)
- [Numeric Derivatives](derivatives/numeric_derivatives.html)
The derivative of a function has certain features. These next sections explore one of the first uses of the derivative -- using its zeros to characterize the original function.
- [The Mean Value Theorem](derivatives/mean_value_theorem.html)
- [Optimization](derivatives/optimization.html)
- [Curve Sketching](derivatives/curve_sketching.html)
The tangent line to the graph of a function at a point has slope given through the derivative. That the tangent line is the best linear approximation to the curve yields some insight to the curve through knowledge of just the tangent lines.
- [Linearization](derivatives/linearization.html)
- [Newton's Method](derivatives/newtons_method.html)
- [L'Hospital's Rule](derivatives/lhopitals_rule.html)
The derivative finds use outside of the traditional way of specifying a function or relationship. These two sections look at some different cases.
- [Implicit Derivatives](derivatives/implicit_differentiation.html)
- [Related Rates](derivatives/related_rates.html)
A generalization of the tangent line as the "best" approximation to a function by a line leads to the concept of the Taylor polynomial.
- [Taylor polynomials](derivatives/taylor_series_polynomials.html)
## Integration
The integral is initially defined in terms of an associated area and then generalized. The Fundamental Theorem of Calculus allows this area to be computed easily through a related function and specifies the relationship between the integral and the derivative.
- [Area](integrals/area.html)
- [The Fundamental Theorem of Calculus](integrals/ftc.html)
Integration is not algorithmic, but rather problems can involve an array of techniques. Many of these are implemented in `SymPy`. Theses sections introduce the main techniques that find widespread usage.
- [Substitution](integrals/substitution.html)
- [Integration by Parts](integrals/integration_by_parts.html)
- [Partial Fractions](integrals/partial_fractions.html)
- [Improper Integrals](integrals/improper_integrals.html)
### Applications
Various applications of the integral are presented. The first two sections continue with the idea that an integral is related to area. From there, it is seen that volumes, arc-lengths, and surface areas may be expressed in terms of related integrals.
- [Mean Value Theorem for Integrals](integrals/mean_value_theorem.html)
- [Area between curves](integrals/area_between_curves.html)
- [Center of mass](integrals/center_of_mass.html)
- [Volumes by slicing](integrals/volumes_slice.html)
- [Arc length](integrals/arc_length.html)
- [Surface Area](integrals/surface_area.html)
#### Ordinary differential equations
Ordinary differential equations are an application of integration and the fundamental theorem of calculus.
- [ODEs](ODEs/odes.html)
- [Euler method](ODEs/euler.html)
## Multivariable calculus
Univariate functions take a single number as an input and return a number as the output. Notationally, we write $f: R \rightarrow R$. More generally, a function might have several input variables and might return several output variables, notationally $F: R^n \rightarrow R^m$, for positive, integer values of $n$ and $m$. Special cases are when $n=1$ (a space curve) or when $m=1$ (a scalar-valued function). Many of the concepts of calculus for univariate functions carry over, with suitable modifications.
Polar coordinates are an often useful alternative to describing location in the $x$-$y$ plane.
- [Polar Coordinates](differentiable_vector_calculus/polar_coordinates.html)
The calculus of functions involving more than $1$ variable is greatly simplified by the introduction of vectors and matrices. These objects, and their associated properties, allow many of the concepts of calculus of a single variable to be carried over.
- [Vectors](differentiable_vector_calculus/vectors.html)
In general we will consider multivariable functions from $R^n$ into $R^m$ (functions of $n$ variables that return $m$ different values), but it is helpful to specialize to two cases first. These are vector valued functions ($f: R \rightarrow R^n$) and scalar functions ($f:R^n \rightarrow R$).
- [Vector-valued functions](differentiable_vector_calculus/vector_valued_functions.html)
- [Scalar functions and their derivatives](differentiable_vector_calculus/scalar_functions.html)
We discuss applications of the derivative for scalar functions. These include linearization, optimization, and constrained optimization.
- [Applications for scalar functions](differentiable_vector_calculus/scalar_functions_applications.html)
The derivative of a mulitvariable function is discussed here. We will see that with the proper notation, many formulas from single variable calculus will hold with slight modifications.
- [Vector fields](differentiable_vector_calculus/vector_fields.html)
----
Integral vector calculus begins with a generalization of integration to compute area to integration to compute volumes (and its generalization to higher dimensions). The integration concept is then extended to integration over curves and surfaces. With this, generalizations of the fundamental theorem of calculus are discussed.
We begin with the generalization of the Riemann integral to compute area to the computation of volume and its higher dimensional interpretations.
- [Double and triple integrals](integral_vector_calculus/double_triple_integrals.html)
Line and surface integrals are computed by 1- and 2-dimensional integrals, but offer new interpretations, espcially when vector fields are considered.
- [Line and surface integrals](integral_vector_calculus/line_integrals.html)
There are three main operations in differential vector calculus, the gradient, the divergence, and the curl. This is an introduction to the two latter ones.
- [Divergence and curl](integral_vector_calculus/div_grad_curl.html)
The fundamental theorem of calculus states that a definite integral over an interval can be computed using a related function and the boundary points of the interval. The fundamental theorem of line integrals is a higher dimensional analog. In this section, related theorems are considered: Green's theorem in $2$ dimensions and Stokes' theorem and the divergence theorem in $3$ dimensions.
- [Green's theorem, Stokes' theorem, and the divergence theorem](integral_vector_calculus/stokes_theorem.html)
----
Here is a quick review of the math topics discussed on vector calculus.
- [Review of vector calculus](integral_vector_calculus/review.html)
## Bibliography
- [Bibliography](bibliography.html)
## A quick review
- [Quick notes](quick-notes.html)
A review of the `Julia` concepts used within these notes.
## Miscellaneous
- Some different [interfaces](julia_interfaces.html) interfaces to `Julia`.
- The [CalculusWithJulia](calculus_with_julia.html) package.
- [Unicode symbol](unicode.html) usage in `Julia`.
----
## Contributing, commenting, ...
This is a work in progress. To report an issue, make a comment, or suggest something new, please file an [issue](https://github.com/CalculusWithJulia/CalculusWithJulia.github.io/issues/). In your message add the tag `@jverzani` to ensure it is not overlooked. Otherwise, an email to `verzani` at `math.csi.cuny.edu` will also work.
To make edits to the document directly, a pull request with the modified `*.jmd` files should be made. Minor edits to the `*.jmd` files should be possible through the GitHub web interface. The `*.html` files are generated using `Julia's` `Weave` package and an internal package `CwJWeaveTpl`. This need not be done.