Commit 27765308 authored by Jim Hefferon's avatar Jim Hefferon

more on slides for three_ii

parent 7009e8e1
......@@ -1198,7 +1198,7 @@ is more fruitful and more central to further progress.
\( \zero_V \) maps to \( \zero_W \).
It is closed under linear combinations because, where
\( \vec{v}_1,\dots,\vec{v}_n\in V \) are elements
of the inverse image set
of the inverse image
\( \set{\vec{v}\in V\suchthat h(\vec{v})=\zero_W} \),
for \( c_1,\ldots,c_n\in\Re \)
\begin{equation*}
......@@ -1456,7 +1456,7 @@ many members of the domain.
%<*InverseImage>
Recall that for any function $\map{h}{V}{W}$,
the set of elements of $V$ that map to \( \vec{w}\in W \)
is the \definend{inverse image set\/}\index{inverse image}%
is the \definend{inverse image\/}\index{inverse image}%
\index{function! inverse image}
$h^{-1}(\vec{w})=\set{\vec{v}\in V\suchthat h(\vec{v})=\vec{w}}$.
Above, the left side shows three inverse image sets.
......
......@@ -29,3 +29,70 @@ pen DXPEN=linecap(0)
+linewidth(1pt);
texpreamble("\usepackage{conc}");
// HSL color space, to lighten or darken
// see http://en.wikipedia.org/wiki/HSL_and_HSV
// To lighten, something like this:
// HSL hsl=HSL(0.116,0.675,0.255);
// hsl.l=1-((1-hsl.l)/4.0);
// pen p=hsl.rgb();
struct HSL {
real hue; // hue in degrees
real h; // hue in [0..1]
real s; // saturation
real l; // lightness
// Initialize
// expects r, g, b in [0..1]
void operator init(real r, real g, real b) {
real mincolorsize=min(r,g,b);
real maxcolorsize=max(r,g,b);
real chroma=maxcolorsize-mincolorsize;
// hue
real hprime;
if (chroma==0) {
hprime=0;
} else if (maxcolorsize==r) {
hprime=fmod((g-b)/chroma,6);
} else if (maxcolorsize==g) {
hprime=2+(b-r)/chroma;
} else {
hprime=4+(r-g)/chroma;
}
this.hue=60*hprime;
this.h=this.hue/360.0;
// lightness
this.l=(maxcolorsize+mincolorsize)/2;
//saturation
if (chroma==0) {
this.s=0;
} else {
this.s=chroma/(1-fabs(2*this.l-1));
}
}
// return pen with the hsl converted to rgb
// Note: does not handle grays
pen rgb() {
real chroma=(1-fabs(2*this.l-1))*this.s;
real hprime=this.hue/60.0;
real x=chroma*(1-fabs(fmod(hprime,2.0)-1));
real r1, g1, b1, m, r, g, b;
if ((0<=hprime) && (hprime<1)) {
r1=chroma; g1=x; b1=0;
} else if ((1<=hprime) && (hprime<2)) {
r1=x; g1=chroma; b1=0;
} else if ((2<=hprime) && (hprime<3)) {
r1=0; g1=chroma; b1=x;
} else if ((3<=hprime) && (hprime<4)) {
r1=0; g1=x; b1=chroma;
} else if ((4<=hprime) && (hprime<5)) {
r1=x; g1=0; b1=chroma;
} else {
r1=chroma; g1=0; b1=x;
}
m=this.l-chroma/2.0;
r=r1+m; g=g1+m; b=b1+m;
return rgb(r,g,b);
}
}
......@@ -8,23 +8,20 @@ settings.maxtile=(20,20);
import three;
import graph3;
currentprojection=perspective((20,4,6),target=(0,4,0));
// currentlight=adobe;
pen plane_vector_pen=linecap(0)
+linewidth(2.5pt);
pen inverse_image_pen=linecap(1) // round, to make dots
+linewidth(1.5pt);
// pair domain_vec_tip;
// path domain_vec;
// for(int i=0; i < 5; ++i) {
// domain_vec_tip=(2,2+1.5*i/3.0);
// domain_vec=(0,0)--domain_vec_tip;
// // this gives an endpoint to the vector that is 0.15 ps points from end
// draw((0,0)--arcpoint(reverse(domain_vec),.15),VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// dot(domain_vec_tip,inverse_image_pen+blue);
// }
// dot((2,0),inverse_image_pen+red);
// Axes
axes3(xlabel="",ylabel="",zlabel="",
min=(-0.2,-0.2,-0.2),
max=(5,9.5,4.5),
AXISPEN,
arrow=None);
// Vectors in the codomain plane
pair plane_endpt[]={(2,3), (-4,5)};
plane_endpt.push(plane_endpt[0]+plane_endpt[1]);
path plane_vec[];
......@@ -36,17 +33,10 @@ path space_vec[];
path vec1=(0,0)--(2,3);
path vec2=(0,0)--(-4,5);
path vec3=(0,0)--(-4,5);
// Axes
axes3(xlabel="",ylabel="",zlabel="",
min=(-0.2,-0.2,-0.2),
max=(5,9.5,4.5),
AXISPEN,
arrow=None);
// Parallelogram of vectors in the plane
draw(path3(plane_endpt[0]--plane_endpt[2]),VECTORPEN+gray(0.9));
draw(path3(plane_endpt[1]--plane_endpt[2]),VECTORPEN+gray(0.9));
// draw and label the codomain plane vectors
for(int i=0; i < 3; ++i) {
draw(path3(plane_vec[i]),VECTORPEN+color[i]+gray(0.95),Arrow3(DefaultHead2,VECTORHEADSIZE,FillDraw));
}
......@@ -54,9 +44,9 @@ label(Label("{\tiny $\vec{w}_1$}"),path3(plane_vec[0]));
label(Label("{\tiny $\vec{w}_2$}"),path3(plane_vec[1]),NW);
label(Label("{\tiny $\vec{w}_3=\vec{w}_1+\vec{w}_2$}",Relative(0.6)),path3(plane_vec[2]),N);
// Draw inverse image sets
// Domain vectors and inverse image sets
triple inv_image_pt;
real starting_hgt[]={8,8}; // how high above the plane vector starts the inverse image
real starting_hgt[]={8,8}; // how high above the plane starts the inverse image
starting_hgt.push(starting_hgt[0]+starting_hgt[1]);
path3 domain_vec[];
for (int i=0; i<3; ++i) {
......@@ -66,7 +56,7 @@ for (int i=0; i<3; ++i) {
inv_image_pt=(xpart(plane_endpt[i]), ypart(plane_endpt[i]), (-j+starting_hgt[i])/6);
dot(inv_image_pt,inverse_image_pen+color[i]);
}
// this gives an endpoint to the vector that is 0.15 ps points from end
// the vector endpoint is 0.15 ps points from inverse image dot
domain_vec[i]=(0,0,0)--(xpart(plane_endpt[i]),ypart(plane_endpt[i]),starting_hgt[i]/6);
draw((0,0,0)--arcpoint(reverse(domain_vec[i]),.15),VECTORPEN+color[i],arrow=Arrow3(DefaultHead2,VECTORHEADSIZE,FillDraw));
}
......
// three_ii_proj1.asy
import jh;
real height; height=1.75cm; size(0,height);
import graph;
pen inverse_image_pen=linecap(1)
+linewidth(1.5pt);
real red=0.9; real green=0.0; real blue=0.0;
pen color=rgb(red,green,blue); // red
draw((0,0)--(2,0),inverse_image_pen+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,0));
real[] xticks={-1,1,2,3,4,5};
real[] yticks={1,2,3,4};
xaxis("",-1.2,5.25,AXISPEN,RightTicks("%",Size=2,xticks));
yaxis("",-0.2,4.1,AXISPEN,LeftTicks("%",Size=2,yticks));
// three_ii_proj.asy
// three_ii_proj2.asy
import jh;
real height; height=1.75cm; size(0,height);
import graph;
pen inverse_image_pen=linecap(1)
+linetype(new real[] {0,2})
+linewidth(1.5pt);
real red=0.9; real green=0.0; real blue=0.0;
pen color=rgb(red,green,blue); // red
pair domain_vec_tip;
path domain_vec;
HSL hsl=HSL(red,green,blue);
hsl.s=hsl.s/1.2;
for(int i=0; i < 5; ++i) {
domain_vec_tip=(2,2+1.5*i/3.0);
domain_vec=(0,0)--domain_vec_tip;
// this gives an endpoint to the vector that is 0.15 ps points from end
draw((0,0)--arcpoint(reverse(domain_vec),.15),VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
dot(domain_vec_tip,inverse_image_pen+blue);
// draw((0,0)--arcpoint(reverse(domain_vec),.15),VECTORPEN+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
draw(domain_vec,VECTORPEN+hsl.rgb(),arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,1.5));
dot(domain_vec_tip,inverse_image_pen);
}
dot((2,0),inverse_image_pen+red);
draw((0,0)--(2,0),inverse_image_pen+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,0));
// dot((2,0),inverse_image_pen+color);
real[] xticks={-1,1,2,3,4,5};
real[] yticks={1,2,3,4};
xaxis("",-1.2,5.1,AXISPEN,RightTicks("%",Size=2,xticks));
xaxis("",-1.2,5.25,AXISPEN,RightTicks("%",Size=2,xticks));
yaxis("",-0.2,4.1,AXISPEN,LeftTicks("%",Size=2,yticks));
// path xaxis=(-4.1,0)--(4.1,0);
// path yaxis=(0,-1.1)--(0,4.1);
// draw(xaxis,AXISPEN);
// draw(yaxis,AXISPEN);
// draw(unitcircle,THINPEN);
// draw(e1,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e1_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// three_ii_proj.asy
// three_ii_proj3.asy
import jh;
real height; height=1.75cm; size(0,height);
import graph;
pen inverse_image_pen=linecap(1)
+linetype(new real[] {0,2})
+linewidth(1.5pt);
real red=0.0; real green=0.0; real blue=0.9;
pen color=rgb(red,green,blue); // red
pair domain_vec_tip;
path domain_vec;
HSL hsl=HSL(red,green,blue);
hsl.s=hsl.s/1.3;
for(int i=0; i < 5; ++i) {
domain_vec_tip=(3,1+2*i/3.0);
domain_vec=(0,0)--domain_vec_tip;
// this gives an endpoint to the vector that is 0.15 ps points from end
draw((0,0)--arcpoint(reverse(domain_vec),.15),VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
dot(domain_vec_tip,inverse_image_pen+blue);
draw(domain_vec,VECTORPEN+hsl.rgb(),arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,1.5));
dot(domain_vec_tip,inverse_image_pen+color);
}
dot((3,0),inverse_image_pen+red);
draw((0,0)--(3,0),inverse_image_pen+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,0));
// dot((3,0),inverse_image_pen+color);
real[] xticks={-1,1,2,3,4,5};
real[] yticks={1,2,3,4};
xaxis("",-1.2,5.1,AXISPEN,RightTicks("%",Size=2,xticks));
xaxis("",-1.2,5.25,AXISPEN,RightTicks("%",Size=2,xticks));
yaxis("",-0.2,4.1,AXISPEN,LeftTicks("%",Size=2,yticks));
// path xaxis=(-4.1,0)--(4.1,0);
// path yaxis=(0,-1.1)--(0,4.1);
// draw(xaxis,AXISPEN);
// draw(yaxis,AXISPEN);
// draw(unitcircle,THINPEN);
// draw(e1,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e1_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// three_ii_proj.asy
// three_ii_proj5.asy
import jh;
real height; height=1.75cm; size(0,height);
import graph;
pen inverse_image_pen=linecap(1)
+linetype(new real[] {0,2})
+linewidth(1.5pt);
real red=0.9; real green=0.0; real blue=0.9;
pen color=rgb(red,green,blue); // red
pair domain_vec_tip;
path domain_vec;
HSL hsl=HSL(red,green,blue);
// hsl.s=hsl.s/1.25;
for(int i=0; i < 5; ++i) {
domain_vec_tip=(5,1.25+2*i/3.0);
domain_vec=(0,0)--domain_vec_tip;
// this gives an endpoint to the vector that is 0.15 ps points from end
draw((0,0)--arcpoint(reverse(domain_vec),.15),VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
dot(domain_vec_tip,inverse_image_pen+blue);
draw(domain_vec,VECTORPEN+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,1.5));
dot(domain_vec_tip,inverse_image_pen+color);
}
dot((5,0),inverse_image_pen+red);
draw((0,0)--(5,0),inverse_image_pen+color,arrow=Arrow(DefaultHead,VECTORHEADSIZE),PenMargin(-1,0));
// dot((5,0),inverse_image_pen+color);
real[] xticks={-1,1,2,3,4,5};
real[] yticks={1,2,3,4};
xaxis("",-1.2,5.1,AXISPEN,RightTicks("%",Size=2,xticks));
xaxis("",-1.2,5.25,AXISPEN,RightTicks("%",Size=2,xticks));
yaxis("",-0.2,4.1,AXISPEN,LeftTicks("%",Size=2,yticks));
// path xaxis=(-4.1,0)--(4.1,0);
// path yaxis=(0,-1.1)--(0,4.1);
// draw(xaxis,AXISPEN);
// draw(yaxis,AXISPEN);
// draw(unitcircle,THINPEN);
// draw(e1,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2,VECTORPEN,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e1_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
// draw(e2_rotated,VECTORPEN+blue,arrow=Arrow(DefaultHead,VECTORHEADSIZE));
......@@ -507,7 +507,7 @@ The rank of this map is $1$.
%..........
\begin{frame}{Inverse image}
\begin{frame}{Homomorphisms organize the domain}
\centergraphic{../ch3.5}
\ExecuteMetaData[../map2.tex]{InverseImage}
......@@ -520,15 +520,23 @@ Consider the projection map $\map{\pi}{\Re^2}{\Re}$.
The check that $\pi$ is a homomorphism is routine.
\end{frame}
\begin{frame}
Many vectors are mapped
to $2$;
think of these as ``$2$-vectors.''
\centergraphic{asy/three_ii_proj2.pdf}
We can identify the codomain $\Re$ with the $x$-axis in $\Re^2$.
Here the $2\in\Re$ is in red.
\centergraphic{asy/three_ii_proj1.pdf}
\pause
These are ``$3$-vectors,'' the inverse images of $3$.
Many vectors in the domain $\Re^2$ are mapped to $2$.
Here are a few elements of $\pi^{-1}(2)$.
These are associated by $\pi$ with $2$, so they
are in red.
\centergraphic{asy/three_ii_proj2.pdf}
Where colors aren't available we can call these
``$2$~vectors.''
\end{frame}\begin{frame}
These are some ``$3$-vectors,'' inverse images of $3$.
\centergraphic{asy/three_ii_proj3.pdf}
\pause
Where $\pi(\vec{u})=2$ and $\pi(\vec{v})=3$
The definition of addition preservation is that
where $\pi(\vec{u})=2$ and $\pi(\vec{v})=3$
then $\pi(\vec{u}+\vec{v})=\pi(\vec{u})+\pi(\vec{v})=5$
so $\vec{u}+\vec{v}$ is a ``$5$-vector.''
\centergraphic{asy/three_ii_proj5.pdf}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment