Skip to content

Commit

Permalink
Small changes and correction of links
Browse files Browse the repository at this point in the history
  • Loading branch information
meinardmueller committed Oct 4, 2021
1 parent 55aad2a commit f1e926f
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 14 deletions.
2 changes: 1 addition & 1 deletion PCP.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"<a href=\"https://opensource.org/licenses/MIT\"><img src=\"data_layout/PCP_MIT_License_OSIApproved_text.png\" width=\"70\" style=\"float:right;\" alt=\"CC\"></a> \n",
" \n",
"<strong>Note:</strong> The code, text, and figures of the PCP notebooks are licensed under the\n",
"<a href=\"https://opensource.org/licenses/MIT\">MIT License</a>. The latest version of the PCP notebooks is hosted on <a href=\"https://github.com/meinardmueller/PCP\">GitHub</a>. Alternatively, you can download a <a href=\"https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.0.zip\">zip-compressed archive</a> containing the PCP notebooks and all data. Further details can be found on the [PCP notebook on how to get started](PCP_GetStarted.html). We try to continuously improve the PCP notebooks and provide updates on a regular basis (current version: 1.0.0). For suggestions and feedback, please contact <a href=\"https://www.audiolabs-erlangen.de/fau/professor/mueller\">Meinard Müller</a>. If you use and want to refer to the PCP notebooks, please cite:\n",
"<a href=\"https://opensource.org/licenses/MIT\">MIT License</a>. The latest version of the PCP notebooks is hosted on <a href=\"https://github.com/meinardmueller/PCP\">GitHub</a>. Alternatively, you can download a <a href=\"https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.2.zip\">zip-compressed archive</a> containing the PCP notebooks and all data. Further details can be found on the [PCP notebook on how to get started](PCP_GetStarted.html). We try to continuously improve the PCP notebooks and provide updates on a regular basis (current version: 1.0.2). For suggestions and feedback, please contact <a href=\"https://www.audiolabs-erlangen.de/fau/professor/mueller\">Meinard Müller</a>. If you use and want to refer to the PCP notebooks, please cite:\n",
"<br>\n",
"\n",
"<ul>\n",
Expand Down
8 changes: 4 additions & 4 deletions PCP_complex.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
" <li><a href='#basic'>Basic Definitions</a></li>\n",
" <li><a href='#polar'>Polar Representation</a></li>\n",
" <li><a href='#operations'>Complex Operations</a></li>\n",
" <li><a href='#polar'>Polar Coordinate Plot</a></li>\n",
" <li><a href='#polarplot'>Polar Coordinate Plot</a></li>\n",
" <li><a href='#exercise_complex'>Exercise 1: Rotate Complex Number</a></li> \n",
" <li><a href='#exercise_polynomial'>Exercise 2: Roots of Polynomial</a></li>\n",
" <li><a href='#exercise_mandelbrot'>Exercise 3: Mandelbrot Set</a></li> \n",
Expand All @@ -35,7 +35,7 @@
"<div class=\"alert alert-block alert-warning\">\n",
"<h2>Overview and Learning Objectives</h2>\n",
" \n",
"As often in mathematics, transferring a problem from the real into the complex world can lead to significant simplifications. At first sight, this may seem a bit surprising since complex numbers are more difficult to understand than real numbers. As an application of complex numbers, let us consider the problem of finding solutions to polynomial equations. The equation $z^2-1=0$ has the two solutions $z=+1$ and $z=-1$ while the equation $z^2+1=0$ does not have any solution when only considering real numbers. Extending $\\mathbb{R}$ (the space of real numbers) to $\\mathbb{C}$ (the space of complex numbers), however, one also finds for the second equation two solutions given by $z=+i$ and $z=-i$, where $i$ denotes the complex unit. In other words, considering polynomial equations over $\\mathbb{C}$ (rather than $\\mathbb{R}$) makes the problem much easier to understand. In general, an extension of the real numbers to the complex numbers not only gives a broader view but also provides additional tools and structures. We will encounter another application for complex numbers in <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_exp.html\">Unit 7</a>, where we study a complex extension of the exponential function and its relation to trigonometric identities. In this unit, we review the basic properties of complex numbers. In particular, we provide Python code examples for visualizing complex numbers using either Cartesian coordinates or polar coordinates. Such visualizations, while being a nice application of the library `matplotlib` introduced in <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_exp.html\">Unit 5</a>, should help you gain a geometric understanding of complex numbers and the effect of their algebraic operations. In <a href='#exercise_complex'>Exercise 1</a>, you will apply previously introduced Python code to rotate complex numbers and visualize the effect. Then, in <a href='#exercise_polynomial'>Exercise 2</a>, we address the problem of finding the roots of a given polynomial using the NumPy function <code>np.roots</code>. The roots' visualizations will give you a feeling of how the roots distribute in the complex plane depending on the polynomials' coefficients. As another application of complex numbers, we discuss in <a href='#exercise_mandelbrot'>Exercise 3</a> how to generate the Mandelbrot set, which is a famous and one of the most beautiful examples for a fractal set. When going through this unit, we recommend that you do the first two exercises while the third exercise is left as a playground for exploring the beauty of fractals and the power of visualizations (e.g., tweaking around with color maps).\n",
"As often in mathematics, transferring a problem from the real into the complex world can lead to significant simplifications. At first sight, this may seem a bit surprising since complex numbers are more difficult to understand than real numbers. As an application of complex numbers, let us consider the problem of finding solutions to polynomial equations. The equation $z^2-1=0$ has the two solutions $z=+1$ and $z=-1$ while the equation $z^2+1=0$ does not have any solution when only considering real numbers. Extending $\\mathbb{R}$ (the space of real numbers) to $\\mathbb{C}$ (the space of complex numbers), however, one also finds for the second equation two solutions given by $z=+i$ and $z=-i$, where $i$ denotes the complex unit. In other words, considering polynomial equations over $\\mathbb{C}$ (rather than $\\mathbb{R}$) makes the problem much easier to understand. In general, an extension of the real numbers to the complex numbers not only gives a broader view but also provides additional tools and structures. We will encounter another application for complex numbers in <a href=\"PCP_exp.html\">Unit 7</a>, where we study a complex extension of the exponential function and its relation to trigonometric identities. In this unit, we review the basic properties of complex numbers. In particular, we provide Python code examples for visualizing complex numbers using either Cartesian coordinates or polar coordinates. Such visualizations, while being a nice application of the library `matplotlib` introduced in <a href=\"PCP_vis.html\">Unit 5</a>, should help you gain a geometric understanding of complex numbers and the effect of their algebraic operations. In <a href='#exercise_complex'>Exercise 1</a>, you will apply previously introduced Python code to rotate complex numbers and visualize the effect. Then, in <a href='#exercise_polynomial'>Exercise 2</a>, we address the problem of finding the roots of a given polynomial using the NumPy function <code>np.roots</code>. The roots' visualizations will give you a feeling of how the roots distribute in the complex plane depending on the polynomials' coefficients. As another application of complex numbers, we discuss in <a href='#exercise_mandelbrot'>Exercise 3</a> how to generate the Mandelbrot set, which is a famous and one of the most beautiful examples for a fractal set. When going through this unit, we recommend that you do the first two exercises while the third exercise is left as a playground for exploring the beauty of fractals and the power of visualizations (e.g., tweaking around with color maps).\n",
" \n",
"</div>"
]
Expand Down Expand Up @@ -543,7 +543,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"<a id='polar'></a> \n",
"<a id='polarplot'></a> \n",
"## Polar Coordinate Plot\n",
"\n",
"Finally, we show how complex vectors can be visualized in a polar coordinate plot. Also, the following code cell illustrates some functionalities of the Python libraries `numpy` and `matplotlib`."
Expand Down Expand Up @@ -808,7 +808,7 @@
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x1ca556a8488>"
"<IPython.lib.display.YouTubeVideo at 0x1ed714a6f48>"
]
},
"metadata": {},
Expand Down
4 changes: 2 additions & 2 deletions PCP_exp.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"<div class=\"alert alert-block alert-warning\">\n",
"<h2>Overview and Learning Objectives</h2>\n",
" \n",
"The exponential function is one of the most important functions in mathematics. In everyday life, we encounter this function when a phenomenon (e.g., the spread of a viral infection) can be modeled by an initial value and a growth rate. The exponential function has several remarkable mathematical properties, which lead to different ways on how to approach and define this concept. In this unit, we introduce the exponential function by its power series. This definition allows for expanding the definition of a real (defined for real numbers in $\\mathbb{R}$) to a complex exponential function (defined for complex numbers in $\\mathbb{C}$). The complex version of the exponential function will play a central role for defining and understanding the <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_exp.html\">Fourier transform</a> covered in <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_exp.html\">Unit 8</a>. We will then go through important properties such as the exponentiation identity and Euler's Formula, which sheds a different, more natural light on the trigonometric identities of the sine and the cosine functions. Furthermore, we discuss the exponential function from the perspective of differential equations. This also leads to numerical methods for approximating the exponential function's values (methods that are much more efficient than using the power series). Finally, we introduce the notion of roots of unity, which are the roots of a specific polynomial (being of the form $z^N-1$ for some $N\\in\\mathbb{N}$) and can be expressed in terms of the exponential function. These roots of unity are the building blocks of the <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_dft.html\">discrete Fourier transform</a> (DFT) and the FFT algorithm&mdash;topics we cover in <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_dft.html\">Unit 9</a>. While discussing the exponential function, another goal of this unit is to further deepen your skills in Python programming by applying the concepts learned in previous units. In <a href='#exercise_approx_exp'>Exercise 1</a> we ask you to implements and compare two algorithms to approximate the exponential function for some given argument. Then, in <a href='#exercise_gaussian'>Exercise 2</a>, you will write a Python program to compute and plot the Gaussian function given the exponential function. Finally, you will apply in <a href='#exercise_spiral'>Exercise 3</a> the exponential function to create spirals with different properties, which will deepen your understanding of the relationship between the complex exponential function and angles. \n",
"The exponential function is one of the most important functions in mathematics. In everyday life, we encounter this function when a phenomenon (e.g., the spread of a viral infection) can be modeled by an initial value and a growth rate. The exponential function has several remarkable mathematical properties, which lead to different ways on how to approach and define this concept. In this unit, we introduce the <strong>exponential function</strong> by its <strong>power series</strong>. This definition allows for expanding the definition of a real (defined for real numbers in $\\mathbb{R}$) to a complex exponential function (defined for complex numbers in $\\mathbb{C}$). The complex version of the exponential function will play a central role for defining and understanding the <strong>Fourier transform</strong> covered in <a href=\"PCP_dft.html\">Unit 9</a>. We will then go through important properties such as the exponentiation identity and Euler's Formula, which sheds a different, more natural light on the trigonometric identities of the sine and the cosine functions. Furthermore, we discuss the exponential function from the perspective of differential equations. This also leads to numerical methods for approximating the exponential function's values (methods that are much more efficient than using the power series). Finally, we introduce the notion of <strong>roots of unity</strong>, which are the roots of a specific polynomial (being of the form $z^N-1$ for some $N\\in\\mathbb{N}$) and can be expressed in terms of the exponential function. These roots of unity are the building blocks of the <strong>discrete Fourier transform</strong> (DFT) and the <strong>FFT algorithm</strong>&mdash;topics we cover in <a href=\"PCP_dft.html\">Unit 9</a>. While discussing the exponential function, another goal of this unit is to further deepen your skills in Python programming by applying the concepts learned in previous units. In <a href='#exercise_approx_exp'>Exercise 1</a> we ask you to implements and compare two algorithms to approximate the exponential function for some given argument. Then, in <a href='#exercise_gaussian'>Exercise 2</a>, you will write a Python program to compute and plot the Gaussian function given the exponential function. Finally, you will apply in <a href='#exercise_spiral'>Exercise 3</a> the exponential function to create spirals with different properties, which will deepen your understanding of the relationship between the complex exponential function and angles. \n",
" \n",
"</div>"
]
Expand Down Expand Up @@ -334,7 +334,7 @@
"<a id='roots'></a> \n",
"## Roots of Unity\n",
"\n",
"Let $N \\in \\mathbb{N}_{>0}$ be a positive integer. A complex number $\\rho \\in \\mathbb{C}$ is called an $N^\\mathrm{th}$ **root of unity** if $\\rho^N = 1$. It is not hard to see that there are exactly $N$ distinct $N^\\mathrm{th}$ roots of unity, which are exactly the $N$ different roots of the polynomial $z^N-1$ (see also Exercise 2 of <a href=\"https://www.audiolabs-erlangen.de/PCP/PCP_complex.html\">Unit 6</a>). Additionally, if $\\rho^n \\neq 1$ for all $n\\in [1:N-1]$, the root $\\rho$ is called a **primitive** $N^\\mathrm{th}$ root of unity. With the properties mentioned above, it is easy to see that $\\rho_N:=\\exp(2 \\pi i / N)$ is such a **primitive** $N^\\mathrm{th}$ root of unity. Furthermore, all $N^\\mathrm{th}$ roots of unity can be generated by considering the powers of $\\rho_N$:\n",
"Let $N \\in \\mathbb{N}_{>0}$ be a positive integer. A complex number $\\rho \\in \\mathbb{C}$ is called an $N^\\mathrm{th}$ **root of unity** if $\\rho^N = 1$. It is not hard to see that there are exactly $N$ distinct $N^\\mathrm{th}$ roots of unity, which are exactly the $N$ different roots of the polynomial $z^N-1$ (see also Exercise 2 of <a href=\"PCP_complex.html\">Unit 6</a>). Additionally, if $\\rho^n \\neq 1$ for all $n\\in [1:N-1]$, the root $\\rho$ is called a **primitive** $N^\\mathrm{th}$ root of unity. With the properties mentioned above, it is easy to see that $\\rho_N:=\\exp(2 \\pi i / N)$ is such a **primitive** $N^\\mathrm{th}$ root of unity. Furthermore, all $N^\\mathrm{th}$ roots of unity can be generated by considering the powers of $\\rho_N$:\n",
"\n",
"$$1=\\rho_N^0, \\quad \\rho_N^1, \\quad \\rho_N^2, \\quad ...,\\quad \\rho_N^{N-1}$$\n",
"\n",
Expand Down
2 changes: 1 addition & 1 deletion PCP_getstarted.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"Alternatively, you can download a zip-compressed archive containing the PCP notebooks and all data. You can find this archive at \n",
"\n",
"<div class=\"alert alert-block alert-warning\">\n",
" <a href=\"https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.0.zip\">https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.0.zip</a>\n",
" <a href=\"https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.2.zip\">https://www.audiolabs-erlangen.de/resources/MIR/PCP/PCP_1.0.2.zip</a>\n",
"</div> \n",
"\n",
"Decompress the archive and store it on your local computer."
Expand Down
2 changes: 1 addition & 1 deletion PCP_module.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"<div class=\"alert alert-block alert-warning\">\n",
"<h2>Overview and Learning Objectives</h2>\n",
"\n",
"This final unit of the PCP notebooks serves several purposes. First, we give a general introduction to <a href='#python_modules'>Python modules</a> and <a href='#python_packages'>Python packages</a>, which are fundamental concepts for organizing and making Python code available. Second, we introduce the Python package <code>libpcp</code> (that accompany the PCP notebooks) and use this package as a concrete example for illustrating the Python concepts. At the same time, this unit (together with <a href='https://www.audiolabs-erlangen.de/PCP/PCP_getstarted.html'>Unit 1</a>) also documents the technical backbone underlying the PCP notebooks. Last but not least, we will also uncover in this unit the secret of where one can find the sample solutions for all exercises. In summary, we hope that the PCP notebooks help students naturally transition from learning about Python programming and signal processing to beginning independent research following good scientific practices. Another main motivation of the notebooks is to indirectly guide students to employ open-source tools for software development and reproducible research. \n",
"This final unit of the PCP notebooks serves several purposes. First, we give a general introduction to <a href='#python_modules'>Python modules</a> and <a href='#python_packages'>Python packages</a>, which are fundamental concepts for organizing and making Python code available. Second, we introduce the Python package <code>libpcp</code> (that accompany the PCP notebooks) and use this package as a concrete example for illustrating the Python concepts. At the same time, this unit (together with <a href='PCP_getstarted.html'>Unit 1</a>) also documents the technical backbone underlying the PCP notebooks. Last but not least, we will also uncover in this unit the secret of where one can find the sample solutions for all exercises. In summary, we hope that the PCP notebooks help students naturally transition from learning about Python programming and signal processing to beginning independent research following good scientific practices. Another main motivation of the notebooks is to indirectly guide students to employ open-source tools for software development and reproducible research. \n",
"\n",
"</div>"
]
Expand Down
Loading

0 comments on commit f1e926f

Please sign in to comment.