use quarto, not Pluto to render pages

This commit is contained in:
jverzani
2022-07-24 16:38:24 -04:00
parent 93c993206a
commit 7b37ca828c
879 changed files with 793311 additions and 2678 deletions

View File

@@ -0,0 +1,10 @@
[deps]
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665"
SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6"

View File

@@ -0,0 +1,69 @@
var l = -1.5;
var r = 1.75;
var N = 8;
const b = JXG.JSXGraph.initBoard('jsxgraph', {
boundingbox: [l, 6.0, r,-2.0], axis:true
});
var f = function(x) {return Math.pow(x,5) - x - 1};
var graph = b.create('functiongraph', [f, l, r]);
slider = b.create('slider', [[0.25, 1], [1.0, 1], [0,0,N-1]],
{snapWidth:1,
suffixLabel:"n = "});
var intervals = [[0,1.5]];
for (i = 1; i < N; i++) {
var old = intervals[i-1];
var ai = old[0];
var bi = old[1];
var ci = (ai + bi)/2;
var fa = f(ai);
var fb = f(bi);
var fc = f(ci);
if (fc == 0) {
var newint = [ci, ci];
} else if (fa * fc < 0) {
var newint = [ai, ci];
} else {
var newint = [ci, bi];
}
intervals.push(newint);
};
b.create('functiongraph', [f,
function() {
var n = slider.Value();
return intervals[n][0];
},
function() {
var n = slider.Value();
return intervals[n][1];
}
], {strokeWidth:5});
var seg = b.create("segment", [function() {
var n = slider.Value();
var ai = intervals[n][0];
return [ai, 0];
},
function() {
var n = slider.Value();
var bi = intervals[n][1];
return [bi, 0];
}], {strokeWidth: 5});
b.create("point", [function() {
var n = slider.Value();
var ai = intervals[n][0]
return ai;
}, 0], {name:"a_n"});
b.create("point", [function() {
var n = slider.Value();
var bi = intervals[n][1]
return bi;
}, 0], {name: "b_n"});

View File

@@ -0,0 +1,537 @@
# Continuity
```{julia}
#| echo: false
import Logging
Logging.disable_logging(Logging.Info) # or e.g. Logging.Info
Logging.disable_logging(Logging.Warn)
import SymPy
function Base.show(io::IO, ::MIME"text/html", x::T) where {T <: SymPy.SymbolicObject}
println(io, "<span class=\"math-left-align\" style=\"padding-left: 4px; width:0; float:left;\"> ")
println(io, "\\[")
println(io, sympy.latex(x))
println(io, "\\]")
println(io, "</span>")
end
# hack to work around issue
import Markdown
import CalculusWithJulia
function CalculusWithJulia.WeaveSupport.ImageFile(d::Symbol, f::AbstractString, caption; kwargs...)
nm = joinpath("..", string(d), f)
u = "![$caption]($nm)"
Markdown.parse(u)
end
nothing
```
This section uses these add-on packages:
```{julia}
using CalculusWithJulia
using Plots
using SymPy
```
```{julia}
#| echo: false
#| results: "hidden"
using CalculusWithJulia.WeaveSupport
const frontmatter = (
title = "Continuity",
description = "Calculus with Julia: Continuity",
tags = ["CalculusWithJulia", "limits", "continuity"],
);
nothing
```
---
The definition Google finds for *continuous* is *forming an unbroken whole; without interruption*.
The concept in calculus, as transferred to functions, is similar. Roughly speaking, a continuous function is one whose graph could be drawn without having to lift (or interrupt) the pencil drawing it.
Consider these two graphs:
```{julia}
#| hold: true
#| echo: false
plt = plot([-1,0], [-1,-1], color=:black, legend=false, linewidth=5)
plot!(plt, [0, 1], [ 1, 1], color=:black, linewidth=5)
plt
```
and
```{julia}
#| hold: true
#| echo: false
plot([-1,-.1, .1, 1], [-1,-1, 1, 1], color=:black, legend=false, linewidth=5)
```
Though similar at some level - they agree at nearly every value of $x$ - the first has a "jump" from $-1$ to $1$ instead of the transition in the second one. The first is not continuous at $0$ - a break is needed to draw it - where as the second is continuous.
A formal definition of continuity was a bit harder to come about. At [first](http://en.wikipedia.org/wiki/Intermediate_value_theorem) the concept was that for any $y$ between any two values in the range for $f(x)$, the function should take on the value $y$ for some $x$. Clearly this could distinguish the two graphs above, as one takes no values in $(-1,1)$, whereas the other - the continuous one - takes on all values in that range.
However, [Cauchy](http://en.wikipedia.org/wiki/Cours_d%27Analyse) defined continuity by $f(x + \alpha) - f(x)$ being small whenever $\alpha$ was small. This basically rules out "jumps" and proves more useful as a tool to describe continuity.
The [modern](http://en.wikipedia.org/wiki/Continuous_function#History) definition simply pushes the details to the definition of the limit:
> A function $f(x)$ is continuous at $x=c$ if $\lim_{x \rightarrow c}f(x) = f(c)$.
This says three things
* The limit exists at $c$.
* The function is defined at $c$ ($c$ is in the domain).
* The value of the limit is the same as $f(c)$.
This speaks to continuity at a point, we can extend this to continuity over an interval $(a,b)$ by saying:
> A function $f(x)$ is continuous over $(a,b)$ if at each point $c$ with $a < c < b$, $f(x)$ is continuous at $c$.
Finally, as with limits, it can be convenient to speak of *right* continuity and *left* continuity at a point, where the limit in the defintion is replaced by a right or left limit, as appropriate.
:::{.callout-warning}
## Warning
The limit in the definition of continuity is the basic limit and not an extended sense where infinities are accounted for.
:::
##### Examples of continuity
Most familiar functions are continuous everywhere.
* For example, a monomial function $f(x) = ax^n$ for non-negative, integer $n$ will be continuous. This is because the limit exists everywhere, the domain of $f$ is all $x$ and there are no jumps.
* Similarly, the basic trigonometric functions $\sin(x)$, $\cos(x)$ are continuous everywhere.
* So are the exponential functions $f(x) = a^x, a > 0$.
* The hyperbolic sine ($(e^x - e^{-x})/2$) and cosine ($(e^x + e^{-x})/2$) are, as $e^x$ is.
* The hyperbolic tangent is, as $\cosh(x) > 0$ for all $x$.
Some familiar functions are *mostly* continuous but not everywhere.
* For example, $f(x) = \sqrt{x}$ is continuous on $(0,\infty)$ and right continuous at $0$, but it is not defined for negative $x$, so can't possibly be continuous there.
* Similarly, $f(x) = \log(x)$ is continuous on $(0,\infty)$, but it is not defined at $x=0$, so is not right continuous at $0$.
* The tangent function $\tan(x) = \sin(x)/\cos(x)$ is continuous everywhere *except* the points $x$ with $\cos(x) = 0$ ($\pi/2 + k\pi, k$ an integer).
* The hyperbolic co-tangent is not continuous at $x=0$ when $\sinh$ is $0$,
* The semicircle $f(x) = \sqrt{1 - x^2}$ is *continuous* on $(-1, 1)$. It is not continuous at $-1$ and $1$, though it is right continuous at $-1$ and left continuous at $1$.
##### Examples of discontinuity
There are various reasons why a function may not be continuous.
* The function $f(x) = \sin(x)/x$ has a limit at $0$ but is not defined at $0$, so is not continuous at $0$. The function can be redefined to make it continuous.
* The function $f(x) = 1/x$ is continuous everywhere *except* $x=0$ where *no* limit exists.
* A rational function $f(x) = p(x)/q(x)$ will be continuous everywhere except where $q(x)=0$. (The function $f$ may still have a limit where $q$ is $0$, should factors cancel, but $f$ won't be defined at such values.)
* The function
$$
f(x) = \begin{cases}
-1 & x < 0 \\
0 & x = 0 \\
1 & x > 0
\end{cases}
$$
is implemented by `Julia`'s `sign` function. It has a value at $0$, but no limit at $0$, so is not continuous at $0$. Furthermore, the left and right limits exist at $0$ but are not equal to $f(0)$ so the function is not left or right continuous at $0$. It is continuous everywhere except at $x=0$.
* Similarly, the function defined by this graph
```{julia}
#| hold: true
#| echo: false
plot([-1,-.01], [-1,-.01], legend=false, color=:black)
plot!([.01, 1], [.01, 1], color=:black)
scatter!([0], [1/2], markersize=5, markershape=:circle)
```
is not continuous at $x=0$. It has a limit of $0$ at $0$, a function value $f(0) =1/2$, but the limit and the function value are not equal.
* The `floor` function, which rounds down to the nearest integer, is also not continuous at the integers, but is right continuous at the integers, as, for example, $\lim_{x \rightarrow 0+} f(x) = f(0)$. This graph emphasizes the right continuity by placing a point for the value of the function when there is a jump:
```{julia}
#| hold: true
#| echo: false
x = [0,1]; y=[0,0]
plt = plot(x.-2, y.-2, color=:black, legend=false)
plot!(plt, x.-1, y.-1, color=:black)
plot!(plt, x.-0, y.-0, color=:black)
plot!(plt, x.+1, y.+1, color=:black)
plot!(plt, x.+2, y.+2, color=:black)
scatter!(plt, [-2,-1,0,1,2], [-2,-1,0,1,2], markersize=5, markershape=:circle)
plt
```
* The function $f(x) = 1/x^2$ is not continuous at $x=0$: $f(x)$ is not defined at $x=0$ and $f(x)$ has no limit at $x=0$ (in the usual sense).
* On the Wikipedia page for [continuity](https://en.wikipedia.org/wiki/Continuous_function) the example of Dirichlet's function is given:
$$
f(x) =
\begin{cases}
0 & \text{if } x \text{ is irrational,}\\
1 & \text{if } x \text{ is rational.}
\end{cases}
$$
The limit for any $c$ is discontinuous, as any interval about $c$ will contain *both* rational and irrational numbers so the function will not take values in a small neighborhood around any potential $L$.
##### Example
Let a function be defined by cases:
$$
f(x) = \begin{cases}
3x^2 + c & x \geq 0,\\
2x-3 & x < 0.
\end{cases}
$$
What value of $c$ will make $f(x)$ a continuous function?
We note that for $x < 0$ and for $x > 0$ the function is a simple polynomial, so is continuous. At $x=0$ to be continuous we need a limit to exists and be equal to $f(0)$, which is $c$. A limit exists if the left and right limits are equal. This means we need to solve for $c$ to make the left and right limits equal. We do this next with a bit of overkill in this case:
```{julia}
@syms x c
ex1 = 3x^2 + c
ex2 = 2x-3
del = limit(ex1, x=>0, dir="+") - limit(ex2, x=>0, dir="-")
```
We need to solve for $c$ to make `del` zero:
```{julia}
solve(del, c)
```
This gives the value of $c$.
## Rules for continuity
As we've seen, functions can be combined in several ways. How do these relate with continuity?
Suppose $f(x)$ and $g(x)$ are both continuous on $I$. Then
* The function $h(x) = a f(x) + b g(x)$ is continuous on $I$ for any real numbers $a$ and $b$;
* The function $h(x) = f(x) \cdot g(x)$ is continuous on $I$; and
* The function $h(x) = f(x) / g(x)$ is continuous at all points $c$ in $I$ **where** $g(c) \neq 0$.
* The function $h(x) = f(g(x))$ is continuous at $x=c$ *if* $g(x)$ is continuous at $c$ *and* $f(x)$ is continuous at $g(c)$.
So, continuity is preserved for all of the basic operations except when dividing by $0$.
##### Examples
* Since a monomial $f(x) = ax^n$ ($n$ a non-negative integer) is continuous, by the first rule, any polynomial will be continuous.
* Since both $f(x) = e^x$ and $g(x)=\sin(x)$ are continuous everywhere, so will be $h(x) = e^x \cdot \sin(x)$.
* Since $f(x) = e^x$ is continuous everywhere and $g(x) = -x$ is continuous everywhere, the composition $h(x) = e^{-x}$ will be continuous everywhere.
* Since $f(x) = x$ is continuous everywhere, the function $h(x) = 1/x$ - a ratio of continuous functions - will be continuous everywhere *except* possibly at $x=0$ (where it is not continuous).
* The function $h(x) = e^{x\log(x)}$ will be continuous on $(0,\infty)$, the same domain that $g(x) = x\log(x)$ is continuous. This function (also written as $x^x$) has a right limit at $0$ (of $1$), but is not right continuous, as $h(0)$ is not defined.
## Questions
###### Question
Let $f(x) = \sin(x)$ and $g(x) = \cos(x)$. Which of these is not continuous everywhere?
$$
f+g,~ f-g,~ f\cdot g,~ f\circ g,~ f/g
$$
```{julia}
#| hold: true
#| echo: false
choices = ["``f+g``", "``f-g``", "``f\\cdot g``", "``f\\circ g``", "``f/g``"]
answ = length(choices)
radioq(choices, answ)
```
###### Question
Let $f(x) = \sin(x)$, $g(x) = \sqrt{x}$.
When will $f\circ g$ be continuous?
```{julia}
#| hold: true
#| echo: false
choices = [L"For all $x$", L"For all $x > 0$", L"For all $x$ where $\sin(x) > 0$"]
answ = 2
radioq(choices, answ, keep_order=true)
```
When will $g \circ f$ be continuous?
```{julia}
#| hold: true
#| echo: false
choices = [L"For all $x$", L"For all $x > 0$", L"For all $x$ where $\sin(x) > 0$"]
answ = 3
radioq(choices, answ, keep_order=true)
```
###### Question
The composition $f\circ g$ will be continuous everywhere provided:
```{julia}
#| hold: true
#| echo: false
choices = [
L"The function $g$ is continuous everywhere",
L"The function $f$ is continuous everywhere",
L"The function $g$ is continuous everywhere and $f$ is continuous on the range of $g$",
L"The function $f$ is continuous everywhere and $g$ is continuous on the range of $f$"]
answ = 3
radioq(choices, answ, keep_order=true)
```
###### Question
At which values is $f(x) = 1/\sqrt{x-2}$ not continuous?
```{julia}
#| hold: true
#| echo: false
choices=[
L"When $x > 2$",
L"When $x \geq 2$",
L"When $x \leq 2$",
L"For $x \geq 0$"]
answ = 3
radioq(choices, answ)
```
###### Question
A value $x=c$ is a *removable singularity* for $f(x)$ if $f(x)$ is not continuous at $c$ but will be if $f(c)$ is redefined to be $\lim_{x \rightarrow c} f(x)$.
The function $f(x) = (x^2 - 4)/(x-2)$ has a removable singularity at $x=2$. What value would we redefine $f(2)$ to be, to make $f$ a continuous function?
```{julia}
#| hold: true
#| echo: false
f(x) = (x^2 -4)/(x-2);
numericq(f(2.00001), .001)
```
###### Question
The highly oscillatory function
$$
f(x) = x^2 (\cos(1/x) - 1)
$$
has a removable singularity at $x=0$. What value would we redefine $f(0)$ to be, to make $f$ a continuous function?
```{julia}
#| hold: true
#| echo: false
numericq(0, .001)
```
###### Question
Let $f(x)$ be defined by
$$
f(x) = \begin{cases}
c + \sin(2x - \pi/2) & x > 0\\
3x - 4 & x \leq 0.
\end{cases}
$$
What value of $c$ will make $f(x)$ continuous?
```{julia}
#| hold: true
#| echo: false
val = (3*0 - 4) - (sin(2*0 - pi/2))
numericq(val)
```
###### Question
Suppose $f(x)$, $g(x)$, and $h(x)$ are continuous functions on $(a,b)$. If $a < c < b$, are you sure that $lim_{x \rightarrow c} f(g(x))$ is $f(g(c))$?
```{julia}
#| hold: true
#| echo: false
choices = [L"No, as $g(c)$ may not be in the interval $(a,b)$",
"Yes, composition of continuous functions results in a continuous function, so the limit is just the function value."
]
answ=1
radioq(choices, answ)
```
###### Question
Consider the function $f(x)$ given by the following graph
```{julia}
#| hold: true
#| echo: false
xs = range(0, stop=2, length=50)
plot(xs, [sqrt(1 - (x-1)^2) for x in xs], legend=false, xlims=(0,4))
plot!([2,3], [1,0])
scatter!([3],[0], markersize=5)
plot!([3,4],[1,0])
scatter!([4],[0], markersize=5)
```
The function $f(x)$ is continuous at $x=1$?
```{julia}
#| hold: true
#| echo: false
yesnoq(true)
```
The function $f(x)$ is continuous at $x=2$?
```{julia}
#| hold: true
#| echo: false
yesnoq(false)
```
The function $f(x)$ is right continuous at $x=3$?
```{julia}
#| hold: true
#| echo: false
yesnoq(false)
```
The function $f(x)$ is left continuous at $x=4$?
```{julia}
#| hold: true
#| echo: false
yesnoq(true)
```
###### Question
Let $f(x)$ and $g(x)$ be continuous functions whose graph of $[0,1]$ is given by:
```{julia}
#| hold: true
#| echo: false
xs = range(0, 1, length=251)
plot(xs, [sin.(2pi*xs) cos.(2pi*xs)], layout=2, title=["f" "g"], legend=false)
```
What is $\lim_{x \rightarrow 0.25} f(g(x))$?
```{julia}
#| hold: true
#| echo: false
val = sin(2pi * cos(2pi * 1/4))
numericq(val)
```
What is $\lim{x \rightarrow 0.25} g(f(x))$?
```{julia}
#| hold: true
#| echo: false
val = cos(2pi * sin(2pi * 1/4))
numericq(val)
```
What is $\lim_{x \rightarrow 0.5} f(g(x))$?
```{julia}
#| hold: true
#| echo: false
choices = ["Can't tell",
"``-1.0``",
"``0.0``"
]
answ = 1
radioq(choices, answ)
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
const b = JXG.JSXGraph.initBoard('jsxgraph', {
boundingbox: [-6, 1.2, 6,-1.2], axis:true
});
var f = function(x) {return Math.sin(x) / x;};
var graph = b.create("functiongraph", [f, -6, 6])
var seg = b.create("line", [[-6,0], [6,0]], {fixed:true});
var X = b.create("glider", [2, 0, seg], {name:"x", size:4});
var P = b.create("point", [function() {return X.X()}, function() {return f(X.X())}], {name:""});
var Q = b.create("point", [0, function() {return P.Y();}], {name:"f(x)"});
var segup = b.create("segment", [P,X], {dash:2});
var segover = b.create("segment", [P, [0, function() {return P.Y()}]], {dash:2});
txt = b.create('text', [2, 1, function() {
return "x = " + X.X().toFixed(4) + ", f(x) = " + P.Y().toFixed(4);
}]);

1698
quarto/limits/limits.qmd Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

26
quarto/limits/process.jl Normal file
View File

@@ -0,0 +1,26 @@
using CwJWeaveTpl
fnames = [
"limits",
"limits_extensions",
#
"continuity",
"intermediate_value_theorem"
]
process_file(nm; cache=:off) = CwJWeaveTpl.mmd(nm * ".jmd", cache=cache)
function process_files(;cache=:user)
for f in fnames
@show f
process_file(f, cache=cache)
end
end
"""
## TODO limits
"""