#set document(title: "5.3 Conservative Fields", 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.3#h(0.6em)Conservative Fields #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Compute the circulation of a plane vector field around a closed loop. - Decide conservative-or-not two ways, by exhibiting a potential and by the cross-partials test, and see the verdict in how the arrows meet a loop. - State what being a gradient field buys, path independence and zero circulation. ] A #strong[vector field] assigns an arrow #math.equation(block: false, alt: "๐… open parenthesis x , y close parenthesis equals open parenthesis P , Q close parenthesis")[$๐… ( x , y ) = ( P , Q )$] to every point โ€” a wind map, a force map. The natural integral of a field is #strong[work]: along a curve #math.equation(block: false, alt: "C")[$C$] traced by #math.equation(block: false, alt: "๐ซ open parenthesis t close parenthesis")[$๐ซ ( t )$], #math.equation(block: true, alt: "โˆซ sub C ๐… times d ๐ซ equals โˆซ a b ๐… open parenthesis ๐ซ open parenthesis t close parenthesis close parenthesis times ๐ซ prime open parenthesis t close parenthesis d t ,")[$โˆซ_(C) ๐… ยท d ๐ซ = โˆซ_(a)^(b) ๐… ( ๐ซ ( t ) ) ยท ๐ซ^(โ€ฒ) ( t ) d t ,$] which totals the field's push along your direction of travel. The deepest question you can ask about a field is whether it is somebody's gradient: #math.equation(block: false, alt: "๐… equals โˆ‡ f")[$๐… = โˆ‡ f$] for a #strong[potential] #math.equation(block: false, alt: "f")[$f$]. Such #strong[conservative] fields inherit a fundamental theorem โ€” work equals potential difference, #math.equation(block: false, alt: "f open parenthesis end close parenthesis minus f open parenthesis start close parenthesis")[$f ( "end" ) โˆ’ f ( "start" )$] โ€” so work is path-independent, and around any closed loop it is exactly zero. One loop is therefore a courtroom: the figure puts two fields on trial. {"camera":{"fov":50,"position":\[0.4,8,0.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":"91680c84-cc97-4b90-b335-d91485cc29d3","metadata":{"alt\_text":"A flat carpet of arrows seen from almost straight overhead, crossed by a dark circle of radius 1.5 centered at the origin. The visible field's arrows all point radially outward, brightening from purple to yellow away from the center, so along the dark circle they cross it at right angles everywhere; a second, hidden field can be toggled visible in its place, whose arrows instead circulate counterclockwise and run along the circle rather than across it. Comparing how each field meets the loop is the scene's whole game: crossing everywhere means zero circulation, running along it means circulation that never cancels.","created\_at":"2026-08-01T00:00:00.000Z","description":"Authored book scene: two plane vector fields flattened into a thin z-slab \\u2014 the conservative gradient field (2x, 2y, 0) of f = x^2 + y^2, visible, and the rotational field (-y, x, 0), hidden until toggled \\u2014 plus the closed-loop curve (1.5 cos t, 1.5 sin t, 0). Built for reading circulation around the loop by eye before computing line integrals.","tags":\["book","calc3","vector-field","conservative","line-integral"\],"updated\_at":"2026-08-01T00:00:00.000Z"},"objects":\[{"density":9,"id":"2ba770a6-4960-4f32-ae8e-209836f3527e","kind":"vector-field","label":{"text":"gradient field F = (2x, 2y, 0) \\u2014 conservative","visible":true},"pExpr":"2\*x","qExpr":"2\*y","rExpr":"0","style":{"arrowScale":36,"colorByMagnitude":true,"colormap":"viridis","fixedColor":"\#f59e0b"},"visible":true,"xDomain":\[-2,2\],"yDomain":\[-2,2\],"zDomain":\[-0.05,0.05\]},{"density":9,"id":"a89109d7-b98c-481e-81b7-8c44bfd71081","kind":"vector-field","label":{"text":"rotational field F = (-y, x, 0) \\u2014 not conservative","visible":true},"pExpr":"-y","qExpr":"x","rExpr":"0","style":{"arrowScale":36,"colorByMagnitude":true,"colormap":"viridis","fixedColor":"\#f59e0b"},"visible":false,"xDomain":\[-2,2\],"yDomain":\[-2,2\],"zDomain":\[-0.05,0.05\]},{"id":"5e555c84-a68f-438a-9c8a-d415cfa33d7b","kind":"parametric-curve","label":{"text":"closed loop: circle of radius 1.5","visible":true},"samples":300,"style":{"color":"\#111827","dash":\[\],"lineWidth":4},"tDomain":\[0,6.283185307179586\],"visible":true,"xExpr":"1.5\*cos(t)","yExpr":"1.5\*sin(t)","zExpr":"0"}\],"title":"Conservative or not: two fields and one closed loop","version":1} An overhead view of a flat carpet of arrows crossed by a dark circle of radius #math.equation(block: false, alt: "1.5")[$1.5$] centered at the origin. The visible field #math.equation(block: false, alt: "๐… equals open parenthesis 2 x , 2 y close parenthesis")[$๐… = ( 2 x , 2 y )$] points radially outward everywhere, its arrows brightening from purple to yellow with distance from the center. A second field, #math.equation(block: false, alt: "๐… equals open parenthesis minus y , x close parenthesis")[$๐… = ( โˆ’ y , x )$], hides in the object list; toggled visible in its place, its arrows circulate counterclockwise, running #emph[along] the circle instead of across it. === Explore + Follow the dark circle with your eye. The visible field's arrows cross it at a right angle at every single point โ€” the field has no component along the walk anywhere. Predict the circulation around the loop before computing it. + Hide the radial field and reveal the rotational one with their eye toggles. Now the arrows #emph[run along] the circle: at every point of a counterclockwise walk, the field is at your back. Can contributions like that cancel? Predict this circulation's sign. + Both fields have constant strength on the circle โ€” the arrows along it share one color. Compute the two strengths at radius #math.equation(block: false, alt: "1.5")[$1.5$] by hand and check which field's arrows sit further toward yellow. + The radial field is a gradient: find, by inspection, a function #math.equation(block: false, alt: "f")[$f$] with #math.equation(block: false, alt: "โˆ‡ f equals open parenthesis 2 x , 2 y close parenthesis")[$โˆ‡ f = ( 2 x , 2 y )$], and describe its graph. Walking any closed loop on that surface, why must you end at the height you started? + Try the same for #math.equation(block: false, alt: "open parenthesis minus y , x close parenthesis")[$( โˆ’ y , x )$]: what would #math.equation(block: false, alt: "f sub x equals minus y")[$f_(x) = โˆ’ y$] and #math.equation(block: false, alt: "f sub y equals x")[$f_(y) = x$] demand of the mixed second derivatives #math.equation(block: false, alt: "f sub y x")[$f_(y x)$] and #math.equation(block: false, alt: "f sub x y")[$f_(x y)$]? Clairaut's theorem says those must be equal for any twice-differentiable #math.equation(block: false, alt: "f")[$f$] โ€” conclude what the example below confirms by direct integration. {"expression":"x^2 + y^2","variables":\["x","y"\]} \[2\*x, 2\*y\] Step 4 asks you to find a potential by inspection. This is the check: the gradient of #math.equation(block: false, alt: "f equals x squared plus y squared")[$f = x^(2) + y^(2)$] is exactly the radial field the figure draws, so that field is conservative and the loop integral must vanish. {"functions":\["-y","x"\],"variables":\["x","y"\]} Step 5's argument, computed. If #math.equation(block: false, alt: "open parenthesis minus y , x close parenthesis")[$( โˆ’ y , x )$] were #math.equation(block: false, alt: "โˆ‡ f")[$โˆ‡ f$], this matrix would be #math.equation(block: false, alt: "f")[$f$]'s Hessian โ€” and Clairaut's theorem forces a Hessian to be symmetric. The off-diagonal entries are #math.equation(block: false, alt: "minus 1")[$โˆ’ 1$] and #math.equation(block: false, alt: "1")[$1$]. They differ, so no such #math.equation(block: false, alt: "f")[$f$] exists and the rotational field cannot be conservative, no potential-hunting required. === The verdict, computed both ways For a conservative field the fundamental theorem for line integrals does all the work, and the geometric tell is the one in step 1: a gradient field crosses its own potential's level curves squarely (Chapter 4), so against a loop that happens to be a level curve it musters no push at all. The rotational field fails a cheaper test: comparing cross-partials, #math.equation(block: false, alt: "โˆ‚ Q / โˆ‚ x minus โˆ‚ P / โˆ‚ y equals 1 minus open parenthesis minus 1 close parenthesis equals 2 not equal to 0")[$โˆ‚ Q / โˆ‚ x โˆ’ โˆ‚ P / โˆ‚ y = 1 โˆ’ ( โˆ’ 1 ) = 2 โ‰  0$], while every gradient field must score zero there. But the most honest verdict is a line integral, computed below โ€” and its value is worth keeping: the same number returns in the next section wearing a theorem. #examplebox("Example 1")[Two fields, one loop, two verdicts][ Compute the circulation of #math.equation(block: false, alt: "๐… equals open parenthesis 2 x , 2 y close parenthesis")[$๐… = ( 2 x , 2 y )$] and of #math.equation(block: false, alt: "๐… equals open parenthesis minus y , x close parenthesis")[$๐… = ( โˆ’ y , x )$] counterclockwise around the circle #math.equation(block: false, alt: "๐ซ open parenthesis t close parenthesis equals open parenthesis 1.5 cos t , 1.5 sin t close parenthesis")[$๐ซ ( t ) = ( 1.5 cos t , 1.5 sin t )$], #math.equation(block: false, alt: "t โˆˆ [ 0 , 2 ฯ€ ]")[$t โˆˆ [ 0 , 2 ฯ€ ]$]. The velocity is #math.equation(block: false, alt: "๐ซ prime open parenthesis t close parenthesis equals open parenthesis minus 1.5 sin t , 1.5 cos t close parenthesis")[$๐ซ^(โ€ฒ) ( t ) = ( โˆ’ 1.5 sin t , 1.5 cos t )$]. For the radial field, #math.equation(block: false, alt: "๐… open parenthesis ๐ซ open parenthesis t close parenthesis close parenthesis equals open parenthesis 3 cos t , 3 sin t close parenthesis")[$๐… ( ๐ซ ( t ) ) = ( 3 cos t , 3 sin t )$], so #math.equation(block: true, alt: "๐… times ๐ซ prime equals minus 4.5 sin t cos t plus 4.5 sin t cos t equals 0")[$๐… ยท ๐ซ^(โ€ฒ) = โˆ’ 4.5 sin t cos t + 4.5 sin t cos t = 0$] at every #math.equation(block: false, alt: "t")[$t$]: the integrand is identically zero and the circulation is #math.equation(block: false, alt: "0")[$0$] โ€” perpendicularity, in numbers. Consistently, #math.equation(block: false, alt: "๐… equals โˆ‡ f")[$๐… = โˆ‡ f$] for #math.equation(block: false, alt: "f equals x squared plus y squared")[$f = x^(2) + y^(2)$] (check: #math.equation(block: false, alt: "f sub x equals 2 x")[$f_(x) = 2 x$], #math.equation(block: false, alt: "f sub y equals 2 y")[$f_(y) = 2 y$]), and a closed loop on the bowl #math.equation(block: false, alt: "f")[$f$] ends at its starting height. For the rotational field, #math.equation(block: false, alt: "๐… open parenthesis ๐ซ open parenthesis t close parenthesis close parenthesis equals open parenthesis minus 1.5 sin t , 1.5 cos t close parenthesis")[$๐… ( ๐ซ ( t ) ) = ( โˆ’ 1.5 sin t , 1.5 cos t )$], which is exactly #math.equation(block: false, alt: "๐ซ prime open parenthesis t close parenthesis")[$๐ซ^(โ€ฒ) ( t )$]: the field rides the walk perfectly, and #math.equation(block: true, alt: "๐… times ๐ซ prime equals 2.25 sin squared t plus 2.25 cos squared t equals 2.25 ,")[$๐… ยท ๐ซ^(โ€ฒ) = 2.25 sin^(2) t + 2.25 cos^(2) t = 2.25 ,$] a constant. The circulation is #math.equation(block: false, alt: "2.25 times 2 ฯ€ equals 4.5 ฯ€ not equal to 0")[$2.25 ยท 2 ฯ€ = 4.5 ฯ€ โ‰  0$] โ€” so #math.equation(block: false, alt: "open parenthesis minus y , x close parenthesis")[$( โˆ’ y , x )$] is not conservative, no potential exists, and the cross-partials test's nonzero score of #math.equation(block: false, alt: "2")[$2$] was telling the truth. Note #math.equation(block: false, alt: "2.25")[$2.25$] is the squared radius: this field's circulation grows with the loop, a hint the next section explains. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ One honest loop settles the question one way: nonzero circulation #emph[proves] a field is not conservative. Zero around a single loop proves less โ€” conservative means zero around #emph[every] loop, which is why the potential and the cross-partials test earn their keep. Hold on to #math.equation(block: false, alt: "4.5 ฯ€")[$4.5 ฯ€$]; the next section conjures it from a surface. ]