{
"cells": [
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import sympy as sy\n",
"sy.init_printing() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linear Transformation "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There many new terminologies in this chapter, however they are not entirely new to us."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let $V$ and $W$ be vector spaces. The mapping $T:\\ V\\rightarrow W$ is called a linear transformation if an only if\n",
"\n",
"$$\n",
"T(u+v)=T(u)+T(v)\\quad \\text{and} \\quad T(cu)=cT(u)\n",
"$$\n",
"\n",
"for all $u,v\\in V$ and all $c\\in R$. If $T:\\ V\\rightarrow W$, then $T$ is called a linear operator. For each $u\\in V$, the vector $w=T(u)$ is called the image of $u$ under $T$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Parametric Function Plotting "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need one tool for illustrating the idea of linear transformation.\n",
"\n",
"We want to plot any line in vector space by an equation: $p = p_0+tv$. We need to know vector $p_0$ and $v$ to plot the line. \n",
"\n",
"For instance, $p_0 = (2, 6)$, $v=(5, 3)$ and $p = (x, y)$, subsitute them into our equation\n",
"$$\n",
"\\left[\n",
"\\begin{matrix}\n",
"x\\\\y\n",
"\\end{matrix}\n",
"\\right]=\\left[\n",
"\\begin{matrix}\n",
"2\\\\6\n",
"\\end{matrix}\n",
"\\right]+\n",
"t\\left[\n",
"\\begin{matrix}\n",
"5\\\\3\n",
"\\end{matrix}\n",
"\\right]\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will create a plot to illustrate the linear transformation later."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"def paraEqPlot(p0, v0, p1, v1):\n",
" t = np.linspace(-5, 5)\n",
" ################### First Line ####################\n",
" fig, ax = plt.subplots(figsize = (10, 10))\n",
" x = p0[0,:] + v0[0,:]*t\n",
" y = p0[1,:] + v0[1,:]*t\n",
" ax.plot(x, y, lw = 3, color = 'red')\n",
" ax.grid(True)\n",
" ax.scatter(p0[0,:], p0[1,:], s = 150, ec = 'red', fc = 'black', zorder = 3)\n",
" \n",
" ################### First Line ####################\n",
" x = p1[0,:] + v1[0,:]*t\n",
" y = p1[1,:] + v1[1,:]*t\n",
" ax.plot(x, y, lw = 3, color = 'blue')\n",
" ax.grid(True)\n",
" ax.scatter(p1[0,:], p1[1,:], s = 150, ec = 'red', fc = 'black', zorder = 3)\n",
" \n",
" ax.spines['left'].set_position('zero')\n",
" ax.spines['bottom'].set_position('zero')\n",
"\n",
" # Eliminate upper and right axes\n",
" ax.spines['right'].set_color('none')\n",
" ax.spines['top'].set_color('none')\n",
"\n",
" # Show ticks in the left and lower axes only\n",
" ax.xaxis.set_ticks_position('bottom')\n",
" ax.yaxis.set_ticks_position('left')\n",
" \n",
" string = '$(%.d, %.d)$' % (p0[0,:], p0[1,:])\n",
" ax.text(x= p0[0,:]+.5, y = p0[1,:], s = string, size = 14)\n",
" \n",
" string = '$(%.d, %.d)$' % (p1[0,:], p1[1,:])\n",
" ax.text(x= p1[0,:]+.5, y = p1[1,:], s = string, size = 14)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A Simple Linear Transformation "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we know the parametric functions in $\\mathbb{R}^2$, we can show how a linear transformation acturally works on a line."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's say, we perform linear transformation on a vector $(x, y)$, \n",
"\n",
"$$\n",
"T\\left(\\left[\\matrix{x\\cr y}\\right]\\right)=\\pmatrix{3x-2y\\cr -2x+3y}\\\\\n",
"$$\n",
"and substitute the parametric function into the linear operator.\n",
"\n",
"$$\n",
"T\\left(\\left[\\matrix{4+t\\cr 5+3t}\\right]\\right)=\\pmatrix{3(4+t)-2(5+3t)\\cr -2(4+t)+3(5+3t)}=\\left[\n",
"\\begin{matrix}\n",
"2-3t\\\\7+7t\n",
"\\end{matrix}\n",
"\\right]\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The red line is transformed into"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"