Files
CalculusWithJuliaNotes.jl/quarto/limits/continuity.qmd
2026-08-11 17:17:08 -04:00

661 lines
19 KiB
Plaintext

# Continuity
{{< include ../_common_code.qmd >}}
This section uses these add-on packages:
```{julia}
using CalculusWithJulia
using Plots
plotly()
using SymPy
```
---
::: {#fig-mobius-strip-biennale}
![](figures/korean-mobius.jpg){width=40%}
A Möbius strip by Koo Jeong A
:::
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 the two graphs show in @fig-two-plots-one-continuous-one-not-almost-always-equal.
::: {#fig-two-plots-one-continuous-one-not-almost-always-equal}
```{julia}
#| hold: true
#| echo: false
plt1 = plot([-1,0], [-1,-1], color=:black, legend=false, linewidth=5)
plot!(plt1, [0, 1], [ 1, 1], color=:black, linewidth=5)
plt1
#| hold: true
#| echo: false
plt2 = plot([-1,-.1, .1, 1], [-1,-1, 1, 1], color=:black, legend=false, linewidth=5)
plot(plt1, plt2)
```
Plot of two functions that are equal at most of their points
:::
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 historically a bit harder to develop. 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:
::: {.definition title="Definition of continuity at a point"}
A function $f(x)$ is continuous at $x=c$ if $\lim_{x \rightarrow c}f(x) = f(c)$.
:::
The definition says three things:
* the limit exists at $c$;
* the function is defined at $c$ ($c$ is in the domain of $f$); and
* the value of the limit is the same as $f(c)$.
The definition speaks to continuity at a point, we can extend it to continuity over an interval $(a,b)$ by saying:
::: {.definition title="Definition of continuity over an open interval"}
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 definition is replaced by a right or left limit, as appropriate.
In particular:
::: {.definition title="Definition of continuity over a close interval"}
A function is *continuous* over $[a,b]$ if it is continuous on $(a,b)$, left continuous at $b$ and right continuous at $a$.
:::
:::{.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 building-block 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 continuous everywhere, 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$. (It is continuous on $[-1,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 the graph in @fig-line-with-removable-discontinity-at-0 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.
::: {#fig-line-with-removable-discontinity-at-0}
```{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)
ts = range(0, 2pi, 100)
C = Shape(0.02 * sin.(ts), 0.03 * cos.(ts))
plot!(C, fill=(:white,1), line=(:black, 1))
```
Function with a removable discontinuity
:::
* 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)$. The graph in @fig-floor-function-with-left-right-limits-indicated emphasizes the right continuity by placing a filled marker for the value of the function when there is a jump and an open marker where the function is not that value.
::: {#fig-floor-function-with-left-right-limits-indicated}
```{julia}
#| echo: false
plt = let
empty_style = (xticks=-4:4, yticks=-4:4,
framestyle=:origin,
legend=false)
axis_style = (arrow=true, side=:head, line=(:gray, 1))
text_style = (10,)
fn_style = (;line=(:black, 3))
fn2_style = (;line=(:red, 4))
mark_style = (;line=(:gray, 1, :dot))
domain_style = (;fill=(:orange, 0.35), line=nothing)
range_style = (; fill=(:blue, 0.35), line=nothing)
ts = range(0, 2pi, 100)
xys = sincos.(ts)
xys = [.1 .* xy for xy in xys]
plot(; empty_style..., aspect_ratio=:equal)
plot!([-4.25,4.25], [0,0]; axis_style...)
plot!([0,0], [-4.25, 4.25]; axis_style...)
for k in -4:4
P,Q = (k,k),(k+1,k)
plot!([P,Q], line=(:black,1))
S = Shape([k .+ xy for xy in xys])
plot!(S; fill=(:black,))
S = Shape([(k+1,k) .+ xy for xy in xys])
plot!(S; fill=(:white,), line=(:black,1))
end
current()
end
plt
```
```{julia}
#| echo: false
plotly()
nothing
```
The `floor` function
:::
* 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 defined by a simple polynomial, so is continuous. At $x=0$ to be continuous we need a limit to exist *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 ~ 0, c)
```
This gives the value of $c$.
This is a bit fussier than need be. As the left and right pieces (say, $f_l$ and $f_r$) as both are polynomials are continuous everywhere, so would have left and right limits given through evaluation. Solving for `c` as follows is enough:
```{julia}
solve(ex1(x=>0) ~ ex2(x=>0), c)
```
##### Example
Identifying from its graph that a function is discontinuous or not can be complicated by the graphing algorithm which simply connects adjacent points with a line segment allowing the eye to fill in the dot-to-dot graphic as a curve. The default plot in @fig-plot-of-floor-function-minus5-halves-to-5-halves-shows-artifacts-of-plotting of the `floor` function shows a potential issue.
::: {#fig-plot-of-floor-function-minus5-halves-to-5-halves-shows-artifacts-of-plotting}
```{julia}
plot(floor, -5/2, 5/2; legend=false)
```
The `floor` function plotted without taking care of the discontinuties may appear "continuous"
:::
The "risers" on the steps are an artifact of the basic dot-to-dot algorithm, which assumes continuity between adjacent points (we were more careful in our earlier plot of this function in @fig-floor-function-with-left-right-limits-indicated).
The following simple function just plots a bunch of points, leaving the eye to fill in the line, though so many points are chosen this doesn't require much effort for simple cases. This function also plots a point on the $x$- and $y$-axes (emphasized by the argument `framestyle=:origin`) for each point graphed to emphasize the range of $y$ values for the specified $x$ values. @fig-pixel-plot-function-kinda-silly-but-just-points-loads shows the `floor` function plotted this way.
```{julia}
function pixel_plot(f, a, b; kwargs...)
xs = range(a, b, 801) # lots of points
ys = f.(xs)
zs = zero.(xs)
p = plot(;framestyle=:origin, legend=false, kwargs...)
scatter!(p, xs, ys; marker=(:square, :black, 1)) # f(x)
scatter!(p, xs, zs; marker=(:square, :blue, 2, 0.03)) # domain, [a,b]
scatter!(p, zs, ys; marker=(:square, :red, 3, 0.25)) # range
p
end
```
::: {#fig-pixel-plot-function-kinda-silly-but-just-points-loads}
```{julia}
pixel_plot(floor, -5/2, 5/2)
```
Plot of `floor` function over $[-5/2, 5/2]$ generated by plotting many points rather than using the dot-to-dot method
:::
The broken up range suggests a fundamentally discontinuous function. In the next section we will state this differently---that a continuous function *will* have an unbroken range when restricted to some interval $[a,b]$.
For one more example, @fig-pixel-plot-sin-sign-big-differences shows the difference between `sin` and `sign`, as functions:
::: {#fig-pixel-plot-sin-sign-big-differences}
```{julia}
p1 = pixel_plot(sin, -pi, pi; title="sin")
p2 = pixel_plot(sign, -pi, pi; title="sign")
plot(p1, p2)
```
Plot of both `sin` and `sign` functions
:::
The continuous `sin` function has an unbroken range, $[-1,1]$; the discountinous `sign` function has a broken range consisting of ${-1, 0, 1}$.
## Rules for continuity
As we've seen, functions can be combined in several ways. How do these relate with continuity?
::: {.relationship title="Rules of continuity"}
Suppose $f(x)$ and $g(x)$ are both continuous on $I$. Then:
* The linear combination $h(x) = a f(x) + b g(x)$ is continuous on $I$ for any real numbers $a$ and $b$;
* The product $h(x) = f(x) \cdot g(x)$ is continuous on $I$; and
* The quotient $h(x) = f(x) / g(x)$ is continuous at all points $c$ in $I$ **where** $g(c) \neq 0$.
* The composition $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)$.
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\ln(x)}$ will be continuous on $(0,\infty)$, the same domain that $g(x) = x\ln(x)$ is continuous. This function (which simplifies to $x^x$ when $x>0$) has a right limit at $0$ (of $1$), but is not right continuous, as $h(0)$ is not defined. (In `Julia`, the function `h(x) = exp(x*log(x))` is not defined at `0` **but** the function `h(x) = x^x` is defined at `0.0` to be `1.0`.)
## 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
let
xs = range(0, stop=2, length=50)
plot(xs, [sqrt(1 - (x-1)^2) for x in xs];
line=(:black,1),
legend=false, xlims=(-0.1,4.1))
plot!([2,3], [1,0]; line=(:black,1))
plot!([3,4],[1,0]; line=(:black,1))
scatter!([(0,0)], markersize=5, markercolor=:black)
scatter!([(2,0)], markersize=5, markercolor=:white)
scatter!([(2, 1)], markersize=5; markercolor=:black)
scatter!([(3,0)], markersize=5; markercolor=:black)
scatter!([(3,1)], markersize=5; markercolor=:white)
scatter!([(4,0)], markersize=5; markercolor=:black)
end
```
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. Their graphs over $[0,1]$ are 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)
```
###### Question
A parametric equation is specified by a parameterization $(f(t), g(t)), a \leq t \leq b$. The parameterization will be continuous if and only if each function is continuous.
Suppose $k_x$ and $k_y$ are positive integers and $a, b$ are positive numbers, will the [Lissajous](https://en.wikipedia.org/wiki/Parametric_equation#Lissajous_Curve) curve given by $(a\cos(k_x t), b\sin(k_y t))$ be continuous?
```{julia}
#| hold: true
#| echo: false
yesnoq(true)
```
Here is a sample graph for $a=1, b=2, k_x=3, k_y=4$:
```{julia}
#| hold: true
a,b = 1, 2
k_x, k_y = 3, 4
plot(t -> a * cos(k_x *t), t-> b * sin(k_y * t), 0, 4pi)
```