#set document(title: "5.2 Change of Variables", 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")) == 5.2#h(0.6em)Change of Variables #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Interpret a substitution as a map carrying a square (u, v)-mesh onto a curvilinear mesh, with the Jacobian as the local area scale of its cells. - Compute a Jacobian determinant and use it to convert a double integral. - Recognize the polar r as the Jacobian of one particular map. ] The last section earned one correction factor, the polar #math.equation(block: false, alt: "r")[$r$], by measuring mesh cells. This section is the same idea with the training wheels off. A #strong[change of variables] is a map #math.equation(block: true, alt: "T open parenthesis u , v close parenthesis equals open parenthesis x open parenthesis u , v close parenthesis , y open parenthesis u , v close parenthesis close parenthesis")[$T ( u , v ) = ( x ( u , v ) , y ( u , v ) )$] that carries a simple region in the #math.equation(block: false, alt: "u v")[$u v$]-plane — ideally a square — onto the region you actually care about. Chop the square into a grid and #math.equation(block: false, alt: "T")[$T$] carries the grid along: the image is a curvilinear mesh, and each little square cell lands as a little curvilinear cell whose area has been scaled by some local factor. That factor is the #strong[Jacobian determinant], and the figure puts it under two sliders. {"camera":{"fov":50,"position":\[0.9,3.5,1.0\],"projection":"perspective","target":\[0.75,0,0.8\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":8,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":4,"visible":true},"id":"cb4da80d-e57c-48ba-92cf-5d49e3be2469","metadata":{"alt\_text":"Seen from almost straight overhead, a faint gray wireframe unit square sits in the plane, and over it lies a brightly colored curvilinear quadrilateral: the image of that square under the map T(u, v) = (u + a v, v + b u squared), carrying a mesh of small cells that stretch and shrink from one corner of the region to the other. Slider a shears the top edge sideways and slider b bends the bottom edge into a parabola; setting both sliders to zero makes the colored image coincide with the gray square, and the varying cell sizes elsewhere are the Jacobian made visible.","created\_at":"2026-08-01T00:00:00.000Z","description":"Authored book scene: flat parametric surface (u + a\*v, v + b\*u^2, 0) on the unit square u, v in \[0,1\] with sliders a, b in \[-1, 1\], drawn wireframe over a gray reference copy of the unit square. The mesh cells of the image show the local area scaling of T, i.e. the Jacobian determinant 1 - 2ab u at work.","tags":\["book","calc3","change-of-variables","jacobian","slider"\],"updated\_at":"2026-08-01T00:00:00.000Z"},"objects":\[{"id":"90c68a6a-12f6-4497-8ea3-0a3d0b59348f","kind":"parameter","label":{"text":"a (shear strength)","visible":true},"max":1,"min":-1,"name":"a","step":0.05,"value":0.4,"visible":true},{"id":"1a811736-8d48-41d9-a590-f2b6efc6b117","kind":"parameter","label":{"text":"b (bend strength)","visible":true},"max":1,"min":-1,"name":"b","step":0.05,"value":0.5,"visible":true},{"id":"1a94bfb9-48d3-4b67-b344-96295d2ebca1","kind":"parametric-surface","label":{"text":"image of the unit square: T(u,v) = (u + a v, v + b u^2)","visible":true},"resolution":24,"style":{"colormap":"plasma","doubleSided":true,"opacity":0.85,"wireframe":true,"wireframeColor":"\#1f2937"},"uDomain":\[0,1\],"vDomain":\[0,1\],"visible":true,"xExpr":"u + a\*v","yExpr":"v + b\*u^2","zExpr":"0"},{"id":"b14ed7dc-5bba-4ecc-ad02-5f7f03584c07","kind":"parametric-surface","label":{"text":"the original unit square (for comparison)","visible":true},"resolution":8,"style":{"colormap":"grayscale","doubleSided":true,"opacity":0.3,"wireframe":true,"wireframeColor":"\#9ca3af"},"uDomain":\[0,1\],"vDomain":\[0,1\],"visible":true,"xExpr":"u","yExpr":"v","zExpr":"-0.02"}\],"title":"Change of variables: the unit square under a map T(u, v)","version":1} Seen from nearly overhead: a faint gray wireframe unit square, and over it the brightly colored curvilinear image of that square under #math.equation(block: false, alt: "T open parenthesis u , v close parenthesis equals open parenthesis u plus a v , v plus b u squared close parenthesis")[$T ( u , v ) = ( u + a v , v + b u^(2) )$], carrying a fine mesh of cells. Slider #math.equation(block: false, alt: "a")[$a$] (shear strength, #math.equation(block: false, alt: "minus 1")[$− 1$] to #math.equation(block: false, alt: "1")[$1$], starting at #math.equation(block: false, alt: "0.4")[$0.4$]) skews the square sideways; slider #math.equation(block: false, alt: "b")[$b$] (bend strength, #math.equation(block: false, alt: "minus 1")[$− 1$] to #math.equation(block: false, alt: "1")[$1$], starting at #math.equation(block: false, alt: "0.5")[$0.5$]) bows its bottom edge into a parabola. With both sliders at zero the colored image coincides with the gray square. === Explore + Set both sliders to #math.equation(block: false, alt: "0")[$0$] and confirm the image #emph[is] the unit square, every cell congruent. This is the identity map; its Jacobian should be #math.equation(block: false, alt: "1")[$1$] everywhere. + Raise #math.equation(block: false, alt: "a")[$a$] alone. The square shears sideways into a parallelogram — but look closely at the cells. Are they still all the same size? A shear slides rows past each other without compressing them; predict the Jacobian of a pure shear, then check against the formula below. + Return #math.equation(block: false, alt: "a")[$a$] to #math.equation(block: false, alt: "0")[$0$] and raise #math.equation(block: false, alt: "b")[$b$] alone. The bottom edge bows into a parabola and cells tilt — but do they change #emph[area]? Sliding each column vertically by #math.equation(block: false, alt: "b u squared")[$b u^(2)$] is a shear too, just a vertical one. + Now set the sliders to their starting values #math.equation(block: false, alt: "a equals 0.4")[$a = 0.4$], #math.equation(block: false, alt: "b equals 0.5")[$b = 0.5$], where both effects act at once. The cells are no longer equal: find where in the mesh they are smallest. Is it along the #math.equation(block: false, alt: "u equals 0")[$u = 0$] edge or the #math.equation(block: false, alt: "u equals 1")[$u = 1$] edge of the image? + Push both sliders to #math.equation(block: false, alt: "1")[$1$] and watch the mesh pinch: cells collapse toward zero area along a band in the middle of the region, and beyond it the mesh folds back over itself. The formula below says the Jacobian there passes through zero and changes sign — a warning that #math.equation(block: false, alt: "T")[$T$] has stopped being one-to-one, which honest substitutions must not do on the interior. === The Jacobian is the cell-area scale Near a point #math.equation(block: false, alt: "open parenthesis u , v close parenthesis")[$( u , v )$], the map #math.equation(block: false, alt: "T")[$T$] acts like its linear approximation: the mesh cell with sides #math.equation(block: false, alt: "Δ u")[$Δ u$] and #math.equation(block: false, alt: "Δ v")[$Δ v$] lands as a small parallelogram whose area is #math.equation(block: false, alt: "| J open parenthesis u , v close parenthesis | Δ u Δ v")[$| J ( u , v ) | Δ u Δ v$], where #math.equation(block: true, alt: "J open parenthesis u , v close parenthesis equals the fraction ∂ x over ∂ u the fraction ∂ y over ∂ v minus the fraction ∂ x over ∂ v the fraction ∂ y over ∂ u .")[$J ( u , v ) = frac(∂ x, ∂ u) frac(∂ y, ∂ v) − frac(∂ x, ∂ v) frac(∂ y, ∂ u) .$] Summing function values against these true cell areas and refining gives the change-of-variables formula: #math.equation(block: true, alt: "∬ sub R f open parenthesis x , y close parenthesis d A equals ∬ sub S f open parenthesis T open parenthesis u , v close parenthesis close parenthesis | J open parenthesis u , v close parenthesis | d u d v ,")[$∬_(R) f ( x , y ) d A = ∬_(S) f ( T ( u , v ) ) | J ( u , v ) | d u d v ,$] where #math.equation(block: false, alt: "T")[$T$] carries #math.equation(block: false, alt: "S")[$S$] one-to-one onto #math.equation(block: false, alt: "R")[$R$]. The polar map #math.equation(block: false, alt: "T open parenthesis r , θ close parenthesis equals open parenthesis r cos θ , r sin θ close parenthesis")[$T ( r , θ ) = ( r cos θ , r sin θ )$] is the marquee special case: its Jacobian is #math.equation(block: false, alt: "cos θ times r cos θ minus open parenthesis minus r sin θ close parenthesis times sin θ equals r")[$cos θ · r cos θ − ( − r sin θ ) · sin θ = r$], and the last section's area element falls out of the general machine. #examplebox("Example 1")[The Jacobian of the two-slider map, and the image's area][ For #math.equation(block: false, alt: "T open parenthesis u , v close parenthesis equals open parenthesis u plus a v , v plus b u squared close parenthesis")[$T ( u , v ) = ( u + a v , v + b u^(2) )$], compute the Jacobian determinant, explain what you saw at the sliders' settings in the Explore steps, and find the exact area of the image of the unit square when #math.equation(block: false, alt: "a equals 0.4")[$a = 0.4$], #math.equation(block: false, alt: "b equals 0.5")[$b = 0.5$]. The four partials are #math.equation(block: false, alt: "∂ x / ∂ u equals 1")[$∂ x / ∂ u = 1$], #math.equation(block: false, alt: "∂ x / ∂ v equals a")[$∂ x / ∂ v = a$], #math.equation(block: false, alt: "∂ y / ∂ u equals 2 b u")[$∂ y / ∂ u = 2 b u$], #math.equation(block: false, alt: "∂ y / ∂ v equals 1")[$∂ y / ∂ v = 1$], so #math.equation(block: true, alt: "J open parenthesis u , v close parenthesis equals open parenthesis 1 close parenthesis open parenthesis 1 close parenthesis minus open parenthesis a close parenthesis open parenthesis 2 b u close parenthesis equals 1 minus 2 a b u .")[$J ( u , v ) = ( 1 ) ( 1 ) − ( a ) ( 2 b u ) = 1 − 2 a b u .$] With #math.equation(block: false, alt: "b equals 0")[$b = 0$] (pure horizontal shear) or #math.equation(block: false, alt: "a equals 0")[$a = 0$] (pure vertical shear), #math.equation(block: false, alt: "J equals 1")[$J = 1$] everywhere — shears preserve area, as steps 2 and 3 showed. With #math.equation(block: false, alt: "a equals 0.4")[$a = 0.4$], #math.equation(block: false, alt: "b equals 0.5")[$b = 0.5$] we get #math.equation(block: false, alt: "J equals 1 minus 0.4 u")[$J = 1 − 0.4 u$]: positive on the whole square but smallest at #math.equation(block: false, alt: "u equals 1")[$u = 1$], which is why the cells shrink toward that edge of the image (step 4). And with #math.equation(block: false, alt: "a equals b equals 1")[$a = b = 1$], #math.equation(block: false, alt: "J equals 1 minus 2 u")[$J = 1 − 2 u$] hits zero at #math.equation(block: false, alt: "u equals the fraction 1 over 2")[$u = frac(1, 2)$] — the pinch line of step 5 — and is negative beyond, the algebraic trace of the fold. The image's area is the integral of the scale factor: #math.equation(block: true, alt: "∫ 0 1 ∫ 0 1 open parenthesis 1 minus 0.4 u close parenthesis d u d v equals 1 minus 0.4 times the fraction 1 over 2 equals 0.8 .")[$∫_(0)^(1) ∫_(0)^(1) ( 1 − 0.4 u ) d u d v = 1 − 0.4 · frac(1, 2) = 0.8 .$] The colored region really is 20 percent smaller than the gray square it came from — the mesh told you where the shrinkage lives, and the Jacobian told you exactly how much. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ Every substitution is a map, every map drags a mesh, and the Jacobian is the size-of-cell report, point by point. The polar #math.equation(block: false, alt: "r")[$r$], the spherical #math.equation(block: false, alt: "ρ squared sin φ")[$ρ^(2) sin φ$] you will meet in triple integrals — all of them are this one idea wearing different coordinates. ]