{
"cells": [
{
"cell_type": "markdown",
"id": "027fc675-c13c-4f3d-9978-84c7e23f259e",
"metadata": {},
"source": [
"# 2025-09-05 Convergence classes\n",
"\n",
"* Rootfinding as a modeling tool\n",
"\n",
"* Limitations of bisection\n",
"\n",
"* Convergence classes\n",
"\n",
"* Intro to Newton methods\n",
"\n",
"See also [FNC](https://tobydriscoll.net/fnc-julia/nonlineqn/fixed-point.html#linear-convergence)"
]
},
{
"cell_type": "markdown",
"id": "4b4eb083-69d6-4e11-8a99-7567cab74771",
"metadata": {},
"source": [
"## Stability: Volume of a polygon"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "d3ed367f-8aee-4af5-bab6-cf822ea98001",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"
"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# what is the area of this polygon\n",
"using Plots\n",
"default(lw=4, ms=5, legendfontsize=12, xtickfontsize=12, ytickfontsize=12)\n",
"\n",
"X = ([1 0; 2 1; 1 3; 0 1; -1 1.5; -2 -1; .5 -2; 1 0])\n",
"\n",
"R(θ) = [cos(θ) -sin(θ); sin(θ) cos(θ)]\n",
"Y = X * R(deg2rad(10))' .+ [1e8 1e8]\n",
"\n",
"plot(Y[:,1], Y[:,2], seriestype=:shape, aspect_ratio=:equal)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9d017813-6255-41ce-ba29-24cc5e175331",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"vol_X = pvolume(X) = 9.25\n",
"vol_Y = pvolume(Y) = 8.022769168019295\n"
]
}
],
"source": [
"using LinearAlgebra\n",
"\n",
"function pvolume(X)\n",
" n = size(X, 1)\n",
" vol = sum(det(X[i:i+1, :]) / 2 for i in 1:n-1)\n",
"end\n",
"\n",
"@show vol_X = pvolume(X)\n",
"@show vol_Y = pvolume(Y);"
]
},
{
"cell_type": "markdown",
"id": "a191b89e-47d2-4088-9923-1b4825b4ddee",
"metadata": {},
"source": [
"Why is the first digit wrong?\n",
"These values are ~$10^8$ and $\\epsilon_\\text{machine} \\approx 10^{-16}$ so shouldn't we get about 8 correct digits?"
]
},
{
"cell_type": "markdown",
"id": "c91e5a19-4755-4a2a-b5d6-a3ac4b091766",
"metadata": {},
"source": [
"## Rootfinding\n",
"\n",
"> Given $f \\left( x \\right)$, find $x_*$ such that $f \\left( x_* \\right) = 0$.\n",
"\n",
"We are working with scalars for now and will revisit vector valued functions later."
]
},
{
"cell_type": "markdown",
"id": "47d7a6a7-2528-4455-b668-fb766ec5d69c",
"metadata": {},
"source": [
"* We don't have $f \\left( x \\right)$ but rather the algorithm `f(x)` that approximates it.\n",
"\n",
"* Sometimes we have extra information, such as `fp(x)` that approximates $f' \\left( x \\right)$.\n",
"\n",
"* If we have the source code for `f(x)`, we might be able to transform it to provide `fp(x)`."
]
},
{
"cell_type": "markdown",
"id": "89c60ceb-23fb-47fe-958b-386b674183c6",
"metadata": {},
"source": [
"### Iterative Bisection"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "030390f1-f8a5-48d8-9dfb-90916392cf05",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bisect_iter (generic function with 1 method)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Bisection algorithm from last time\n",
"f(x) = cos(x) - x\n",
"\n",
"hasroot(f, a, b) = f(a) * f(b) < 0\n",
"\n",
"function bisect_iter(f, a, b, tol)\n",
" hist = Float64[]\n",
" while abs(b - a) > tol\n",
" mid = (a + b) / 2\n",
" push!(hist, mid)\n",
" if hasroot(f, a, mid)\n",
" b = mid\n",
" else\n",
" a = mid\n",
" end\n",
" end\n",
" hist\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4c939443-6d9a-4905-9b33-1fbc1ef97615",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"56"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# How many steps does this take?\n",
"length(bisect_iter(f, -1, 3, 1e-20))"
]
},
{
"cell_type": "markdown",
"id": "5ca66e80-bfde-4aeb-b7f7-666c4a99ca09",
"metadata": {},
"source": [
"### How fast does the error decrease?"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ac85fde1-c380-42be-a03e-09b833e0ab62",
"metadata": {},
"outputs": [
{
"ename": "LoadError",
"evalue": "ParseError:\n\u001b[90m# Error @ \u001b[0;0m\u001b]8;;file:///home/jeremy/Documents/csci-3656-fall-2025/source/notebooks/In[5]#8:48\u001b\\\u001b[90mIn[5]:8:48\u001b[0;0m\u001b]8;;\u001b\\\nks = 1:length(hist)\nplot!(ks, 4 * (.5 .^ ks), label = \"~\\$2^{-k}\\$)\u001b[48;2;120;70;70m\u001b[0;0m\n\u001b[90m# └ ── \u001b[0;0m\u001b[91munterminated string literal\u001b[0;0m",
"output_type": "error",
"traceback": [
"ParseError:\n\u001b[90m# Error @ \u001b[0;0m\u001b]8;;file:///home/jeremy/Documents/csci-3656-fall-2025/source/notebooks/In[5]#8:48\u001b\\\u001b[90mIn[5]:8:48\u001b[0;0m\u001b]8;;\u001b\\\nks = 1:length(hist)\nplot!(ks, 4 * (.5 .^ ks), label = \"~\\$2^{-k}\\$)\u001b[48;2;120;70;70m\u001b[0;0m\n\u001b[90m# └ ── \u001b[0;0m\u001b[91munterminated string literal\u001b[0;0m",
"",
"Stacktrace:",
" [1] top-level scope",
"\u001b[90m @\u001b[39m \u001b[90m\u001b[4mIn[5]:8\u001b[24m\u001b[39m"
]
}
],
"source": [
"hist = bisect_iter(f, -1, 3, 1e-10)\n",
"r = hist[end] # What are we trusting?\n",
"\n",
"hist = hist[1:end-1]\n",
"scatter( abs.(hist .- r), yscale=:log10, label=\"\\$x_k\\$\")\n",
"\n",
"ks = 1:length(hist)\n",
"plot!(ks, 4 * (.5 .^ ks), label = \"~\\$2^{-k}\\$)"
]
},
{
"cell_type": "markdown",
"id": "8a847f8d-0542-4816-bd39-6468a9bb5e9d",
"metadata": {},
"source": [
"So the error $e_k = x_k - x_*$ satisfies the bound\n",
"\n",
"$$ \\left\\lvert e_k \\right\\rvert \\leq c 2^{-k} $$"
]
},
{
"cell_type": "markdown",
"id": "b428e8e9-aa1d-4e40-a58a-8d71032830e3",
"metadata": {},
"source": [
"## Convergence classes\n",
"\n",
"A convergent rootfinding algorithm procudes a sequence of approximations $x_k$ such that\n",
"\n",
"$$ \\lim_{k \\rightarrow \\infty} x_k \\rightarrow x_* $$\n",
"\n",
"where $f \\left( x_* \\right) = 0$.\n",
"For analysis, it is convenient to define the errors $e_k = x_k - x_*$. We say that an iterative algorithm is **$q$-linearly convergent** if\n",
"\n",
"$$ \\lim_{k \\rightarrow \\infty} \\lvert e_{k + 1} \\rvert / \\lvert e_k \\rvert = \\rho < 1 $$\n",
"\n",
"(**$q$** stands for \"quotient\")\n",
"A smaller convergence factor $\\rho$ represents faster convergence.\n",
"\n",
"A slightly weaker condition, $r$-linear convengence or **linear convergence**, is that\n",
"\n",
"\n",
"$$ \\lvert e_{k + 1} \\rvert \\leq \\lvert e_k \\rvert $$\n",
"\n",
"for all sufficiently large $k$ when the sequence $\\left\\lbrace e_k \\right\\rbrace$ converges $q$-linearly to 0."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7724758a-e850-4c7c-8855-e4d1f424959e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"
"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ρ = 0.8\n",
"errors = [1.]\n",
"for i in 1:30\n",
" next_e = errors[end] * ρ\n",
" push!(errors, next_e)\n",
"end\n",
"\n",
"plot(errors, yscale=:log10, ylims=(1e-10, 1), label=\"p = 0.8\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "900f78b8-fdbc-4fed-8e94-bd4b0a2ce12b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"
"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"e = hist .- r\n",
"\n",
"scatter(abs.(errors[2:end] ./ errors[1:end-1]), ylims=(0,1), label=\"\\$|e_{k+1}|/|e_k|\\$\")"
]
},
{
"cell_type": "markdown",
"id": "a9390e1a-f557-493e-b810-06f8d3ad9391",
"metadata": {},
"source": [
"### What about bisection\n",
"\n",
"Is bisection\n",
"\n",
"a) $q$-linearly convergent\n",
"\n",
"b) $r$-linearly convergent\n",
"\n",
"c) neither"
]
},
{
"cell_type": "markdown",
"id": "d3c534e2-848a-48f1-b7a1-1a8c7fa287ec",
"metadata": {},
"source": [
"Note\n",
"\n",
"* Specifying an interval is often inconvenient\n",
"\n",
"* An interval in which the function changes sign guarantees convergence (robustness)\n",
"\n",
"* No derivative information is required\n",
"\n",
"* If bisection works for $f \\left( x \\right)$, then it works and gives the same accuracy for $f \\left( x \\right) \\sigma \\left( x \\right)$ where $\\sigma \\left( x \\right) > 0$\n",
"\n",
"* Roots of even degree are problematic\n",
"\n",
"* A bound on the solution error is directly available\n",
"\n",
"* The convergence rate is modest – one iteration per bit of accuracy"
]
},
{
"cell_type": "markdown",
"id": "d6fc912f-0ce5-45c5-be95-f29d80643c65",
"metadata": {},
"source": [
"## Newton-Raphson method"
]
},
{
"cell_type": "markdown",
"id": "c8ee0410-33d4-4fef-ae61-4ce56193154a",
"metadata": {},
"source": [
"Much of numerical analysis is based on [Taylor series](https://en.wikipedia.org/wiki/Taylor_series), the approximation\n",
"\n",
"$$ f \\left( x \\right) = f \\left( x_0 \\right) + f' \\left( x_0 \\right) \\left( x - x_0 \\right) + f'' \\left( x_0 \\right) \\left( x - x_0 \\right)^2 / 2 + \\cdots $$\n",
"\n",
"centered on some reference point $\\left( x_0 \\right)$.\n",
"\n",
"(Note - how big are the terms in my $\\cdots$ above?)\n",
"\n",
"In numerical computation, it is exceedingly rare to look beyond the first-order approximation\n",
"\n",
"$$ \\tilde{f}_{x_0} \\left( x \\right) = f \\left( x_0 \\right) + f' \\left( x_0 \\right) \\left( x - x_0 \\right) $$\n",
"\n",
"Since $\\tilde{f}_{x_0} \\left( x \\right)$ is a linear function, we can explicitly compute the unique solution of $\\tilde{f}_{x_0} \\left( x \\right) = 0$ as $x = x_0 - f \\left( x_0 \\right) / f' \\left( x_0 \\right)$.\n",
"\n",
"This is Newton’s Method (aka Newton-Raphson or Newton-Raphson-Simpson) for finding the roots of differentiable functions."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e48ced34-7e48-45cd-a756-d93af71f7724",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k=1, x_k=1.0000000000000000, f_k=-4.5969769413186023e-01\n",
"k=2, x_k=0.7503638678402439, f_k=-1.8923073822117442e-02\n",
"k=3, x_k=0.7391128909113617, f_k=-4.6455898990771516e-05\n",
"k=4, x_k=0.7390851333852840, f_k=-2.8472058044570758e-10\n",
"k=5, x_k=0.7390851332151607, f_k=0.0000000000000000e+00\n"
]
},
{
"data": {
"text/plain": [
"(0.7390851332151607, 0.0, 5)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using Printf\n",
"\n",
"function newton(f, fp, x0; tol=1e-8, verbose=false)\n",
" x = x0\n",
" for k in 1:100 # max number of iterations\n",
" fx = f(x)\n",
" fpx = fp(x)\n",
" if verbose\n",
" println(\"k=$k, x_k=$(@sprintf(\"%.16f\", x)), f_k=$(@sprintf(\"%.16e\", fx))\")\n",
" end\n",
" if abs(fx) < tol\n",
" return x, fx, k\n",
" end\n",
" x = x - fx / fpx\n",
" end \n",
"end\n",
"\n",
"f(x) = cos(x) - x\n",
"fp(x) = -sin(x) - 1\n",
"newton(f, fp, 1; tol=1e-15, verbose=true)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.11.6",
"language": "julia",
"name": "julia-1.11"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}