#set document(title: "2.1 The Span Collapses", author: "XYZ Homework") #set page(width: 8.5in, height: auto, margin: 1in) #import "@preview/cetz:0.5.2" #set text(font: ("STIX Two Text", "Libertinus Serif", "New Computer Modern"), size: 10.5pt, lang: "en") #show math.equation: set text(font: ("STIX Two Math", "New Computer Modern Math")) #set par(justify: true, leading: 0.62em, spacing: 0.9em) #set enum(spacing: 1.1em) // room between list items so tall inline fractions don't collide #set list(spacing: 1.1em) #set table(stroke: 0.5pt + rgb("#c7ccd3")) #let BLUE = rgb("#183B6F") // brand navy — section bars + example/solution labels (white on navy 11.09:1) #let ORANGE = rgb("#A94509") // brand primary-700 — AA-safe deep orange for TEXT (5.93:1 on white; raw brand #F37021 is 2.94:1 and must never carry text) #let RED = rgb("#DC2626") // brand error-600 #let GREEN = rgb("#059669") // brand success-600 (decoration only; small green text uses green-text #007942) #show heading.where(level: 1): it => block(width: 100%, above: 0pt, below: 16pt, fill: gradient.linear(BLUE, rgb("#2C5AA0")), inset: (x: 14pt, y: 12pt), radius: 3pt, text(fill: white, weight: "bold", size: 19pt, it.body)) #show heading.where(level: 2): it => block(width: 100%, above: 18pt, below: 10pt, fill: BLUE, inset: (x: 10pt, y: 6pt), radius: 2pt, text(fill: white, weight: "bold", size: 12pt, it.body)) #show heading.where(level: 3): it => text(fill: ORANGE, weight: "bold", size: 12.5pt, it.body) #show heading.where(level: 4): it => text(fill: BLUE, weight: "bold", size: 10.5pt, it.body) #let examplebox(label, title, body) = block(width: 100%, breakable: true, fill: rgb("#EFF1F5"), stroke: 0.5pt + rgb("#CFDDF0"), radius: 4pt, inset: 10pt, above: 12pt, below: 12pt)[ #block(below: 6pt)[#box(fill: BLUE, inset: (x: 6pt, y: 2pt), radius: 2pt, text(fill: white, weight: "bold", size: 8.5pt, label)) #h(0.4em) #strong[#title]] #body] // rail = decorative left rule (raw brand token); labelcolor = AA-safe label text shade #let notebox(label, rail, labelcolor, tint, body) = block(width: 100%, breakable: true, fill: tint, stroke: (left: 3pt + rail), inset: (left: 10pt, rest: 8pt), radius: (right: 4pt), above: 11pt, below: 11pt)[ #text(fill: labelcolor, weight: "bold", size: 7.5pt, tracking: 0.5pt)[#upper(label)] #linebreak() #body] #let solutionbox(body) = block(above: 4pt, below: 8pt)[ #text(fill: BLUE, weight: "bold", size: 8.5pt)[Solution] #linebreak() #body] #let figph(msg) = block(width: 100%, height: 60pt, fill: rgb("#f6f7f9"), stroke: (paint: rgb("#c7ccd3"), dash: "dashed"), radius: 4pt, inset: 10pt)[ #align(center + horizon, text(fill: rgb("#889"), style: "italic", size: 9pt, msg))] // Standardize inlined figure sizes: measure the natural CeTZ canvas, then scale to a // consistent envelope (aspect-aware; see build_typst.py FIG_* constants). Unlike the // print preamble, dimensions are FLOORED: in an editor a user can trim a figure to a // degenerate 1-D shape (a bare line), and w/h or tw/w would then divide by zero. #let _STD_W = 3.5 #let _WIDE_W = 5.6 #let _MAX_H = 3.4 #let _ASPECT_WIDE = 2.2 #let _UPSCALE_MAX = 1.15 #let stdfig(body) = context { let m = measure(body) let w = calc.max(m.width / 1in, 0.01) let h = calc.max(m.height / 1in, 0.01) let tw = if w / h > _ASPECT_WIDE { _WIDE_W } else { _STD_W } let s = calc.min(tw / w, _MAX_H / h, _UPSCALE_MAX) align(center, box(scale(x: s * 100%, y: s * 100%, reflow: true, body))) } #show figure: set block(breakable: false) #set figure(gap: 8pt) #show figure.caption: set text(size: 8.5pt, fill: rgb("#555")) == 2.1#h(0.6em)The Span Collapses #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Define the span of a set of vectors as all of their linear combinations. - Visualize the span of two independent vectors as a plane through the origin. - Recognize linear dependence as the collapse of that plane onto a line. ] Take two vectors in space, #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$] and #math.equation(block: false, alt: "𝐯 sub 2")[$𝐯_(2)$]. From them you can build new vectors by scaling and adding: #math.equation(block: false, alt: "u 𝐯 sub 1 plus v 𝐯 sub 2")[$u 𝐯_(1) + v 𝐯_(2)$] for any numbers #math.equation(block: false, alt: "u")[$u$] and #math.equation(block: false, alt: "v")[$v$]. The collection of #emph[everything] you can build this way is called the #strong[span] of #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$] and #math.equation(block: false, alt: "𝐯 sub 2")[$𝐯_(2)$]. Span is the reachable set: if you are allowed to walk any distance along the #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$] direction and any distance along the #math.equation(block: false, alt: "𝐯 sub 2")[$𝐯_(2)$] direction, span is every place you can end up. For most pairs of vectors the span of two vectors is a plane through the origin — two independent directions of travel sweep out a flat two-dimensional sheet. But the word "independent" is carrying weight. The figure below spans a surface by #math.equation(block: false, alt: "𝐯 sub 1 equals open parenthesis 1 , 0.5 , 0.2 close parenthesis")[$𝐯_(1) = ( 1 , 0.5 , 0.2 )$] and a second vector #math.equation(block: false, alt: "𝐯 sub 2")[$𝐯_(2)$] that #emph[moves]: the slider #math.equation(block: false, alt: "a")[$a$] carries #math.equation(block: false, alt: "𝐯 sub 2")[$𝐯_(2)$] from #math.equation(block: false, alt: "open parenthesis 0 , 1 , 0.4 close parenthesis")[$( 0 , 1 , 0.4 )$] at #math.equation(block: false, alt: "a equals 0")[$a = 0$] steadily toward #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$] itself at #math.equation(block: false, alt: "a equals 1")[$a = 1$]. {"camera":{"fov":50,"position":\[6,5,4\],"projection":"perspective","target":\[0,0,0\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":10,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":10,"visible":true},"id":"938020d3-3e84-453f-940c-be2b4581dff7","metadata":{"alt\_text":"A semi-transparent parallelogram-shaped surface through the origin, spanned by two vectors, with a solid red line marking the direction of the first vector. A slider named a slowly rotates the second spanning vector toward the first; as a approaches 1 the surface tilts, narrows, and finally flattens onto the red line, showing the span collapsing from a plane to a line.","created\_at":"2026-08-01T00:00:00.000Z","description":"Book scene: the span of v1 = (1, 0.5, 0.2) and v2(a) = (a, 1 - 0.5a, 0.4 - 0.2a), drawn as the parametric surface u v1 + v v2(a). At a = 0, v2 = (0, 1, 0.4) and the span is a plane; at a = 1, v2 = v1 and the span degenerates to the red line through v1.","tags":\["book","linear-algebra","span","linear-independence"\],"updated\_at":"2026-08-01T00:00:00.000Z"},"objects":\[{"id":"2d03127d-6720-42fb-aff6-6ebdff927f8f","kind":"parameter","label":{"text":"a (0 = independent, 1 = parallel)","visible":true},"max":1,"min":0,"name":"a","step":0.02,"value":0,"visible":true},{"id":"70c05eca-965b-4d92-a5ce-1265fe8867f3","kind":"parametric-surface","label":{"text":"span of v1 and v2(a)","visible":true},"resolution":48,"style":{"colormap":"viridis","doubleSided":true,"opacity":0.65,"wireframe":false,"wireframeColor":"\#000000"},"uDomain":\[-2,2\],"vDomain":\[-2,2\],"visible":true,"xExpr":"u + a\*v","yExpr":"0.5\*u + (1 - 0.5\*a)\*v","zExpr":"0.2\*u + (0.4 - 0.2\*a)\*v"},{"id":"ba930d1c-3e56-42b9-968c-8057f622d3bd","kind":"parametric-curve","label":{"text":"line through v1 = (1, 0.5, 0.2)","visible":true},"samples":100,"style":{"color":"\#ef4444","dash":\[\],"lineWidth":3},"tDomain":\[-3,3\],"visible":true,"xExpr":"t","yExpr":"0.5\*t","zExpr":"0.2\*t"}\],"title":"The span collapses","version":1} The span of #math.equation(block: false, alt: "𝐯 sub 1 equals open parenthesis 1 , 0.5 , 0.2 close parenthesis")[$𝐯_(1) = ( 1 , 0.5 , 0.2 )$] and the moving vector #math.equation(block: false, alt: "𝐯 sub 2 open parenthesis a close parenthesis")[$𝐯_(2) ( a )$]. The red line is the span of #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$] alone. As #math.equation(block: false, alt: "a")[$a$] approaches #math.equation(block: false, alt: "1")[$1$], the second direction dies and the plane collapses onto the line. === Explore the figure + At #math.equation(block: false, alt: "a equals 0")[$a = 0$], orbit the plane. Confirm it passes through the origin — the combination with #math.equation(block: false, alt: "u equals 0")[$u = 0$], #math.equation(block: false, alt: "v equals 0")[$v = 0$] is always reachable. + Find the red line in the plane. Every point of it is a multiple of #math.equation(block: false, alt: "𝐯 sub 1")[$𝐯_(1)$]: the span of one vector, sitting inside the span of two. + Drag #math.equation(block: false, alt: "a")[$a$] slowly toward #math.equation(block: false, alt: "1")[$1$]. Describe what happens to the sheet. At what slider value do you #emph[first] notice it thinning? + Park at exactly #math.equation(block: false, alt: "a equals 1")[$a = 1$]. How much of space is reachable now? What was lost, and what remained? === What collapsed, exactly At #math.equation(block: false, alt: "a equals 1")[$a = 1$] the second vector equals the first, so the combination #math.equation(block: false, alt: "u 𝐯 sub 1 plus v 𝐯 sub 2")[$u 𝐯_(1) + v 𝐯_(2)$] is just #math.equation(block: false, alt: "open parenthesis u plus v close parenthesis 𝐯 sub 1")[$( u + v ) 𝐯_(1)$] — a multiple of a single direction. Two vectors, but only one direction of travel: the span is the red line. We say the pair has become #strong[linearly dependent]: one of the vectors contributes nothing that the other did not already provide. For every #math.equation(block: false, alt: "a")[$a$] strictly less than #math.equation(block: false, alt: "1")[$1$] the two vectors point in genuinely different directions, and the span is a full plane; the #emph[size] of a span is governed not by how many vectors you list but by how many independent directions they contain. Notice also what never changed during the collapse. At every value of #math.equation(block: false, alt: "a")[$a$] the span contained the origin, and at every value it was closed under adding and scaling: combine two reachable points and you get a reachable point. Spans are flat things through the origin — this observation becomes the definition of a subspace two sections from now. #examplebox("Example 1")[When exactly is the pair dependent?][ The moving vector is #math.equation(block: false, alt: "𝐯 sub 2 open parenthesis a close parenthesis equals open parenthesis a , 1 minus 0.5 a , 0.4 minus 0.2 a close parenthesis")[$𝐯_(2) ( a ) = ( a , #h(0.278em) 1 − 0.5 a , #h(0.278em) 0.4 − 0.2 a )$]. Show that #math.equation(block: false, alt: "𝐯 sub 2 open parenthesis a close parenthesis")[$𝐯_(2) ( a )$] is parallel to #math.equation(block: false, alt: "𝐯 sub 1 equals open parenthesis 1 , 0.5 , 0.2 close parenthesis")[$𝐯_(1) = ( 1 , 0.5 , 0.2 )$] only at #math.equation(block: false, alt: "a equals 1")[$a = 1$]. Parallel means #math.equation(block: false, alt: "𝐯 sub 2 open parenthesis a close parenthesis equals c 𝐯 sub 1")[$𝐯_(2) ( a ) = c 𝐯_(1)$] for some scalar #math.equation(block: false, alt: "c")[$c$]. Matching first coordinates forces #math.equation(block: false, alt: "c equals a")[$c = a$]. Matching second coordinates gives #math.equation(block: false, alt: "1 minus 0.5 a equals 0.5 a")[$1 − 0.5 a = 0.5 a$], so #math.equation(block: false, alt: "a equals 1")[$a = 1$] and hence #math.equation(block: false, alt: "c equals 1")[$c = 1$]. Check the third coordinate at #math.equation(block: false, alt: "a equals 1")[$a = 1$]: the formula gives #math.equation(block: false, alt: "0.4 minus 0.2 equals 0.2")[$0.4 − 0.2 = 0.2$], which equals #math.equation(block: false, alt: "c")[$c$] times #math.equation(block: false, alt: "0.2")[$0.2$]. So dependence occurs at exactly one slider position, #math.equation(block: false, alt: "a equals 1")[$a = 1$] — everywhere else the sheet is honestly two-dimensional. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Dependence is a knife-edge event: among all positions of the slider, only a single value flattens the span. That is typical, and it is why numerical software worries about vectors that are #emph[nearly] dependent — the sheet does not vanish gradually, but it becomes uselessly narrow long before #math.equation(block: false, alt: "a")[$a$] reaches #math.equation(block: false, alt: "1")[$1$]. ]