{ "cells": [ { "cell_type": "code", "execution_count": 139, "id": "fa3de3a9", "metadata": {}, "outputs": [], "source": [ "from sympy import I, symbols, integrate, exp, pi, expand, sin, cos, lambdify, trigsimp\n", "import numpy as np\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": 108, "id": "b2d7fdea", "metadata": {}, "outputs": [], "source": [ "f_n, t, m, n, theta = symbols(\"f_n t m n \\\\theta\", real=True)" ] }, { "cell_type": "code", "execution_count": 46, "id": "d72c7fa4", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle e^{- 2 i \\pi f_{n} t}$" ], "text/plain": [ "exp(-2*I*pi*f_n*t)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e1 = exp(-I*2*pi*f_n*t)\n", "e1" ] }, { "cell_type": "code", "execution_count": 115, "id": "4c9b8ac1", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: m = 0 \\wedge n = 0 \\\\- \\frac{\\theta \\sin^{2}{\\left(\\theta n \\right)}}{2} - \\frac{\\theta \\cos^{2}{\\left(\\theta n \\right)}}{2} + \\frac{\\sin{\\left(\\theta n \\right)} \\cos{\\left(\\theta n \\right)}}{2 n} & \\text{for}\\: m = - n \\\\\\frac{\\theta \\sin^{2}{\\left(\\theta n \\right)}}{2} + \\frac{\\theta \\cos^{2}{\\left(\\theta n \\right)}}{2} - \\frac{\\sin{\\left(\\theta n \\right)} \\cos{\\left(\\theta n \\right)}}{2 n} & \\text{for}\\: m = n \\\\- \\frac{m \\sin{\\left(\\theta n \\right)} \\cos{\\left(\\theta m \\right)}}{m^{2} - n^{2}} + \\frac{n \\sin{\\left(\\theta m \\right)} \\cos{\\left(\\theta n \\right)}}{m^{2} - n^{2}} & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((0, Eq(m, 0) & Eq(n, 0)), (-\\theta*sin(\\theta*n)**2/2 - \\theta*cos(\\theta*n)**2/2 + sin(\\theta*n)*cos(\\theta*n)/(2*n), Eq(m, -n)), (\\theta*sin(\\theta*n)**2/2 + \\theta*cos(\\theta*n)**2/2 - sin(\\theta*n)*cos(\\theta*n)/(2*n), Eq(m, n)), (-m*sin(\\theta*n)*cos(\\theta*m)/(m**2 - n**2) + n*sin(\\theta*m)*cos(\\theta*n)/(m**2 - n**2), True))" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(sin(m*theta)* sin(n*theta), theta)" ] }, { "cell_type": "code", "execution_count": 114, "id": "c21e3f7b", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} \\frac{\\frac{\\theta n}{2} - \\frac{\\sin{\\left(\\theta n \\right)} \\cos{\\left(\\theta n \\right)}}{2}}{n} & \\text{for}\\: n \\neq 0 \\\\0 & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise(((\\theta*n/2 - sin(\\theta*n)*cos(\\theta*n)/2)/n, Ne(n, 0)), (0, True))" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(sin(n*theta)* sin(n*theta), theta)" ] }, { "cell_type": "code", "execution_count": 116, "id": "06f2b71b", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} - \\frac{- \\frac{\\pi n}{2} + \\frac{\\sin{\\left(\\pi n \\right)} \\cos{\\left(\\pi n \\right)}}{2}}{n} + \\frac{\\frac{\\pi n}{2} - \\frac{\\sin{\\left(\\pi n \\right)} \\cos{\\left(\\pi n \\right)}}{2}}{n} & \\text{for}\\: n \\neq 0 \\\\0 & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((-(-pi*n/2 + sin(pi*n)*cos(pi*n)/2)/n + (pi*n/2 - sin(pi*n)*cos(pi*n)/2)/n, Ne(n, 0)), (0, True))" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(sin(n*theta)* sin(n*theta), (theta, -pi, pi))" ] }, { "cell_type": "code", "execution_count": 117, "id": "f36b8f79", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} - \\frac{- \\frac{\\pi n}{2} - \\frac{\\sin{\\left(\\pi n \\right)} \\cos{\\left(\\pi n \\right)}}{2}}{n} + \\frac{\\frac{\\pi n}{2} + \\frac{\\sin{\\left(\\pi n \\right)} \\cos{\\left(\\pi n \\right)}}{2}}{n} & \\text{for}\\: n \\neq 0 \\\\2 \\pi & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((-(-pi*n/2 - sin(pi*n)*cos(pi*n)/2)/n + (pi*n/2 + sin(pi*n)*cos(pi*n)/2)/n, Ne(n, 0)), (2*pi, True))" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(cos(n*theta)* cos(n*theta), (theta, -pi, pi))" ] }, { "cell_type": "code", "execution_count": 141, "id": "bd3b970d", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} i \\pi & \\text{for}\\: f_{n} = - \\frac{1}{2 \\pi} \\\\- i \\pi & \\text{for}\\: f_{n} = \\frac{1}{2 \\pi} \\\\- \\frac{1}{4 \\pi^{2} f_{n}^{2} e^{2 i \\pi^{2} f_{n}} - e^{2 i \\pi^{2} f_{n}}} + \\frac{1}{4 \\pi^{2} f_{n}^{2} e^{- 2 i \\pi^{2} f_{n}} - e^{- 2 i \\pi^{2} f_{n}}} & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((I*pi, Eq(f_n, -1/(2*pi))), (-I*pi, Eq(f_n, 1/(2*pi))), (-1/(4*pi**2*f_n**2*exp(2*I*pi**2*f_n) - exp(2*I*pi**2*f_n)) + 1/(4*pi**2*f_n**2*exp(-2*I*pi**2*f_n) - exp(-2*I*pi**2*f_n)), True))" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ea1 = integrate(e1*sin(t), (t, -pi, pi))\n", "ea1" ] }, { "cell_type": "code", "execution_count": 142, "id": "c7d299bf", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} - i \\pi & \\text{for}\\: f_{n} = \\frac{1}{\\pi} \\\\i \\pi & \\text{for}\\: f_{n} = - \\frac{1}{\\pi} \\\\\\frac{1}{2 \\pi^{2} f_{n}^{2} e^{2 i \\pi^{2} f_{n}} - 2 e^{2 i \\pi^{2} f_{n}}} - \\frac{1}{2 \\pi^{2} f_{n}^{2} e^{- 2 i \\pi^{2} f_{n}} - 2 e^{- 2 i \\pi^{2} f_{n}}} & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((-I*pi, Eq(f_n, 1/pi)), (I*pi, Eq(f_n, -1/pi)), (1/(2*pi**2*f_n**2*exp(2*I*pi**2*f_n) - 2*exp(2*I*pi**2*f_n)) - 1/(2*pi**2*f_n**2*exp(-2*I*pi**2*f_n) - 2*exp(-2*I*pi**2*f_n)), True))" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ea1 = integrate(e1*sin(2*t), (t, -pi, pi))\n", "ea1" ] }, { "cell_type": "code", "execution_count": 119, "id": "93e5e2e8", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\pi$" ], "text/plain": [ "pi" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(sin(2*theta)*sin(2*theta), (theta, -pi, pi))" ] }, { "cell_type": "code", "execution_count": 120, "id": "f55b253a", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\pi$" ], "text/plain": [ "pi" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(cos(2*theta)*cos(2*theta), (theta, -pi, pi))" ] }, { "cell_type": "code", "execution_count": 122, "id": "dbd7be7a", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} - \\frac{i e^{- 2 i \\pi m} e^{- 2 i \\pi n}}{m + n} & \\text{for}\\: m \\neq - n \\\\- 2 \\pi & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((-I*exp(-2*I*pi*m)*exp(-2*I*pi*n)/(m + n), Ne(m, -n)), (-2*pi, True))" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(exp(I*m*theta)*exp(I*n*theta), (theta, -pi- pi))" ] }, { "cell_type": "code", "execution_count": 124, "id": "0bc1fa1a", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\begin{cases} - \\frac{i \\left(- i \\sin{\\left(4 \\pi n \\right)} + \\cos{\\left(4 \\pi n \\right)}\\right)}{2 n} & \\text{for}\\: 2 n \\neq 0 \\\\- 2 \\pi & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "Piecewise((-I*(-I*sin(4*pi*n) + cos(4*pi*n))/(2*n), Ne(2*n, 0)), (-2*pi, True))" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(exp(I*n*theta)*exp(I*n*theta), (theta, -pi- pi)).rewrite(sin)" ] }, { "cell_type": "code", "execution_count": 99, "id": "ee38db41", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\sin{\\left(4 \\pi^{2} f_{n} \\right)}}{2 \\pi f_{n}}$" ], "text/plain": [ "sin(4*pi**2*f_n)/(2*pi*f_n)" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ea2 = ea1.args[0].args[0].rewrite(sin).expand()\n", "ea2" ] }, { "cell_type": "code", "execution_count": 103, "id": "1ed8fb19", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\sin{\\left(4 \\pi n \\right)}}{2 n}$" ], "text/plain": [ "sin(4*pi*n)/(2*n)" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ea2.subs(f_n, n/(pi))" ] }, { "cell_type": "code", "execution_count": 133, "id": "3fc8a35e", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{i e^{i \\pi m} e^{i \\pi n}}{m + n} + \\frac{i e^{- i \\pi m} e^{- i \\pi n}}{m + n}$" ], "text/plain": [ "-I*exp(I*pi*m)*exp(I*pi*n)/(m + n) + I*exp(-I*pi*m)*exp(-I*pi*n)/(m + n)" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res = integrate(exp(I*(m+n)*theta), (theta, -pi,pi))\n", "res" ] }, { "cell_type": "code", "execution_count": 136, "id": "6d9ee0d4", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{i e^{i \\pi m} e^{i \\pi n}}{m + n} + \\frac{i e^{- i \\pi m} e^{- i \\pi n}}{m + n}$" ], "text/plain": [ "-I*exp(I*pi*m)*exp(I*pi*n)/(m + n) + I*exp(-I*pi*m)*exp(-I*pi*n)/(m + n)" ] }, "execution_count": 136, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e2 = res\n", "e2" ] }, { "cell_type": "code", "execution_count": 137, "id": "d50df4eb", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{i \\left(- i \\sin{\\left(\\pi m \\right)} + \\cos{\\left(\\pi m \\right)}\\right) \\left(- i \\sin{\\left(\\pi n \\right)} + \\cos{\\left(\\pi n \\right)}\\right)}{m + n} - \\frac{i \\left(i \\sin{\\left(\\pi m \\right)} + \\cos{\\left(\\pi m \\right)}\\right) \\left(i \\sin{\\left(\\pi n \\right)} + \\cos{\\left(\\pi n \\right)}\\right)}{m + n}$" ], "text/plain": [ "I*(-I*sin(pi*m) + cos(pi*m))*(-I*sin(pi*n) + cos(pi*n))/(m + n) - I*(I*sin(pi*m) + cos(pi*m))*(I*sin(pi*n) + cos(pi*n))/(m + n)" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e4 =e2.rewrite(cos)\n", "e4" ] }, { "cell_type": "code", "execution_count": 138, "id": "e6b95d7e", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{2 \\sin{\\left(\\pi m \\right)} \\cos{\\left(\\pi n \\right)}}{m + n} + \\frac{2 \\sin{\\left(\\pi n \\right)} \\cos{\\left(\\pi m \\right)}}{m + n}$" ], "text/plain": [ "2*sin(pi*m)*cos(pi*n)/(m + n) + 2*sin(pi*n)*cos(pi*m)/(m + n)" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e5 = e4.expand()\n", "e5" ] }, { "cell_type": "code", "execution_count": 140, "id": "44cede37", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{2 \\sin{\\left(\\pi \\left(m + n\\right) \\right)}}{m + n}$" ], "text/plain": [ "2*sin(pi*(m + n))/(m + n)" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trigsimp(e5)" ] }, { "cell_type": "code", "execution_count": 69, "id": "61bcb83e", "metadata": {}, "outputs": [], "source": [ "fn = lambdify(n, e5.subs(pi, np.pi))" ] }, { "cell_type": "code", "execution_count": 72, "id": "73608a5b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.6666666666666666" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fn(3)" ] }, { "cell_type": "code", "execution_count": 74, "id": "2a80e953", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-2*np.pi, 2*np.pi, num=1000)\n", "sgn = 1\n", "y = np.zeros(1000)\n", "for n1 in range(1, 10,2):\n", " y += fn(n1)*sgn*np.cos(n1*x)\n", " sgn *= -1\n", "plt.plot(x,y)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "35348752", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }