{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using Plots, ComplexPhasePortrait, ApproxFun"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"$$\n",
"\\def\\dashint{{\\int\\!\\!\\!\\!\\!\\!-\\,}}\n",
"\\def\\infdashint{\\dashint_{\\!\\!\\!-\\infty}^{\\,\\infty}}\n",
"\\def\\D{\\,{\\rm d}}\n",
"\\def\\dx{\\D x}\n",
"\\def\\dt{\\D t}\n",
"\\def\\C{{\\mathbb C}}\n",
"\\def\\CC{{\\cal C}}\n",
"\\def\\HH{{\\cal H}}\n",
"\\def\\I{{\\rm i}}\n",
"\\def\\qqfor{\\qquad\\hbox{for}\\qquad}\n",
"$$\n",
"\n",
"# M3M6: Methods of Mathematical Physics\n",
"\n",
"Dr. Sheehan Olver\n",
"
\n",
"s.olver@imperial.ac.uk\n",
"\n",
"\n",
"\n",
"# Lecture 2: Cauchy's theorem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"References: \n",
"\n",
"1. M.J. Ablowitz & A.S. Fokas, Complex Variables: Introduction and Applications, Second Edition, Cambridge University Press, 2003\n",
"2. R. Earl, Metric Spaces and Complex Analysis, https://courses.maths.ox.ac.uk/node/view_material/5392, 2015\n",
"\n",
"\n",
"### Complex-differentiable functions \n",
"\n",
"\n",
"**Definition (Complex-differentiable)** Let $D \\subset {\\mathbb C}$ be an open set. A function $f : D \\rightarrow {\\mathbb C}$ is called _complex-differentiable_ at a point $z_0 \\in D$ if \n",
"$$ \n",
" f'(z_0) = \\lim_{z \\rightarrow z_0} {f(z) - f(z_0) \\over z - z_0}\n",
"$$\n",
"exists, for any angle of approach to $z_0$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Holomorphic functions\n",
"\n",
"**Definition (Holomorphic)** Let $D \\subset {\\mathbb C}$ be an open set. A function $f : D \\rightarrow {\\mathbb C}$ is called _holomorphic_ in $D$ if it is complex-differentiable at all $z \\in D$.\n",
"\n",
"**Definition (Entire)** A function is _entire_ if it is holomorphic in ${\\mathbb C}$\n",
"\n",
"\n",
"*Examples*\n",
"\n",
"1. $1$ is entire\n",
"2. $z$ is entire\n",
"3. $1/z$ is holomorphic in ${\\mathbb C} \\backslash \\{0\\}$\n",
"4. $\\sin z$ is entire\n",
"5. $\\csc z$ is holomorphic in ${\\mathbb C} \\backslash \\{\\ldots,-2\\pi,-\\pi,0,\\pi,2\\pi,\\ldots\\}$\n",
"6. $\\sqrt z$ is holomorphic in ${\\mathbb C} \\backslash (-\\infty,0]$\n",
"\n",
"We can usually infer the domain where a function is holomorphic from a phase portrait, here we see that ${\\rm arcsinh}\\, z$ has cuts on $[\\I,\\I \\infty)$ and $[-\\I,-\\I \\infty)$, and a zero (red–green–blue–red) at zero, hence we can infer that it is holomorphic in $\\C \\backslash ([\\I,\\I \\infty) \\cup [-\\I,-\\I \\infty))$."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"phaseplot(-4..4, -4..4, z -> asinh(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following example $\\sqrt{z-1} \\sqrt{z+1}$ is analytic in ${\\mathbb C}\\backslash [-1,1]$ and will be returned to:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"phaseplot(-4..4, -4..4, z -> sqrt(z-1)sqrt(z+1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Contours\n",
"\n",
"**Definition (Contour)** A _contour_ is a continuous & piecewise-continuously differentiable function $\\gamma : [a,b] \\rightarrow {\\mathbb C}$.\n",
"\n",
"**Definition (Simple)** A _simple contour_ is a contour that is 1-to-1.\n",
"\n",
"**Definition (Closed)** A _closed contour_ is a contour such that $\\gamma(a) = \\gamma(b)$\n",
"\n",
"*Examples of contours*\n",
"\n",
"1. Line segment $[a,b]$ is a simple contour, with $\\gamma(t) = t$\n",
"1. Arc from $re^{ia}$ to $re^{ib}$ is a simple contour, with $\\gamma(t) = re^{i t}$\n",
"2. Circle of radius $r$ is a closed simple contour, with $\\gamma(t) = re^{i t}$ and $a = -\\pi$, $b = \\pi$\n",
"3. $\\gamma(t) = \\cos (t+i)^2$ defines a contour that is not simple or closed\n",
"4. $\\gamma(t) = e^{i t} + e^{2i t}$ for $[a,b] = [-\\pi,\\pi]$ defines a contour that is closed but not simple\n",
"\n",
"Here's an example of a closed contour that is not simple:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a,b = -π, π\n",
"tt = range(a, stop=b, length=1000)\n",
"\n",
"γ = t -> exp(im*t) +exp(2im*t)\n",
"\n",
"plot(real.(γ.(tt)), imag.(γ.(tt)); ratio=1.0, legend=false, arrow=true)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Contour integrals\n",
"\n",
"**Definition (Contour integral)** The _contour integral_ over $\\gamma$ is defined by\n",
"$$\n",
"\\int_\\gamma f(z) dz := \\int_a^b f(\\gamma(t)) \\gamma'(t) dt\n",
"$$\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> real(exp(z)), Arc(0.,1.,(0,π/2))) # Not holomorphic!\n",
"\n",
"plot(domain(f); legend=false, ratio=1.0, arrow=true)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.2485382363935424 + 1.949326343919058im"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(f) # this means contour integral"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.2485382363935429 + 1.9493263439190578im"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g = im*Fun(t-> f(exp(im*t))*exp(im*t), 0 .. π/2)\n",
"sum( g ) # this is standard integral"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An important property of a contour is its _arclength_:\n",
"\n",
"**Definition (Arclength)** The _arclength_ of $\\gamma$ is defined as\n",
"$$\n",
" {\\cal L}(\\gamma) := \\int_a^b |\\gamma'(t)| dt\n",
"$$\n",
"\n",
"A very useful result is that we can use the maximum and arclength to bound integrals:\n",
"\n",
"**Proposition (ML)** Let $f : \\gamma \\rightarrow {\\mathbb C}$ and \n",
"$$\n",
" M = \\sup_{z \\in \\gamma} |f(z)|\n",
"$$ \n",
"Then\n",
"$$\n",
" \\left|\\int_\\gamma f(z) dz \\right| \\leq M {\\cal L}(\\gamma)\n",
" $$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cauchy's theorem\n",
"\n",
"**Proposition** If $f(z)$ is holomorphic on $\\gamma$, then\n",
"$$\\int_\\gamma f'(z) dz = f(\\gamma(b)) - f(\\gamma(a))$$"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-2.1779795225909058 + 0.8414709848078968im, -2.177979522590906 + 0.8414709848078968im)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> exp(z), Arc(0.,1.,(0,π/2))) # Not holomorphic!\n",
"\n",
"sum(f) , f(im)-f(1)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-2.1779795225909058 + 0.8414709848078968im, -2.177979522590906 + 0.8414709848078968im)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> exp(z), Arc(0.,1.,(0,π/2))) # Holomorphic!\n",
"\n",
"sum(f) , f(im)-f(1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-2.1779795225909053 + 0.8414709848078966im, -2.177979522590907 + 0.8414709848078968im)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> exp(z), Segment(1,im)) # Holomorphic!\n",
"\n",
"sum(f) , f(im)-f(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Theorem (Cauchy)** If $f$ is holomorphic inside and on a closed contour $\\gamma$, then \n",
"$$\\oint_\\gamma f(z) dz = 0$$"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-3.3420237696193494e-16 + 3.141592653589793im"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> real(exp(z)), Circle()) # Not holomorphic!\n",
"\n",
"sum(f)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.9644937254112756e-17 - 1.4872544363724962e-16im"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = Fun( z -> exp(z), Circle()) # Holomorphic!\n",
"\n",
"sum(f)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.0.1",
"language": "julia",
"name": "julia-1.0"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.0.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}