I think I never got round to this …

]]>search “cohomology” — nothing

search “homology” — nothing

search “gowers” — your profile, no links to your articles

http://www.tricki.org/tricki/articles —> click on “how to use cohomology” —-> 404 <— http://www.tricki.org/article/How_to_use_cohomology

I would start with mozilla MDN and take serious looks at codepen.io.

]]>Yes, you get a coalgebra strucure on homology, which, as you remark, is less familiar.

Cohomology has other advantages, though, which are related to the fact that you get an algebra strucure, rather than a coalgebra structure: essentially, being contravariant, rather than covariant, is more natural (surprising as this might seem at first). For example, functions on spaces are contravariant: they pull-back. The same is true of differential forms (which is why these can be used to compute a version of cohomology — de Rham cohomology — rather than a version of homology). Vector fields, on the other hand, can’t be pushed forward in general (because several points might map to one point, so while you can push forward on individual fibres of the tangent bundle, you can’t pushforward a section of the tangent bundle in general). While there are covariant geometric structures, these are less familiar than functions or forms.

So the familiarity of the ring structure on cohomology is aligned (so to speak) with the familiarity of notions like functions and forms and their contravariant nature. It is these (and other) observations taken together that tend to make cohomology, rather than homology, the default choice in many situations.

]]>The function used to generate this is h(x,y) = x – 0.8 * g(x,y)^5 with g(x,y) = (1-x)^2 (1+x)^4 (1 – y^2)^6.

]]>g[x_, y_] := (1 - x^2) (1 + x^4) (1 - y^2)^6 h[x_, y_] := x - g[x, y]^3 curve[f_, s_] := ContourPlot[f[x, y] == s, {x, -1, 1}, {y, -1, 1}] (* Also try this: Animate[curve[h, s], {s, -1, 0}]*) lst = curve[h, #] & /@ Join[Range[-1, -0.9, 0.001], Range[-0.9, -0.8, 0.005], Range[-0.8, 1, 0.01]]; Export["~/www/curves/gowers-faster.gif", lst]

It should also be possible to animate surfaces this way. Feel free to use the animation however you like. Please copy it to your computer, I won’t keep it forever. And thank you for a very interesting post (as usual)!

]]>h[{x_,y_}]:={((x-1/2)^2+y^2-1)*x,y} curve[f_,s_]:= ContourPlot[f[{x,y}][[1]]==s,{x,-1,1},{y,-1,1}] lst=Table[curve[h,s],{s,-1,1,0.01}]; Export["~/www/curves/curve3.gif",lst]

If someone can suggest a good function to try, I’ll generate the GIFs.

]]>