I've recently started studying vector bundles, and I cannot seem to understand this. I feel as though I am missing some simple, crucial fact.
Suppose we have two vector bundles $E$ and $F$ over the same manifold $M$.
My question is this: If I have a collection of functions $\{ f_x \}_{x\in M}$, where each $f_x : E_x \rightarrow F_x$ is an isomorphism of vector spaces, under what conditions can I define a function $f: E \rightarrow F$ that is a vector-bundle isomorphism?
Clearly I can just define $f$ fibrewise based on the family of $f_x$'s, but how can I ensure that it is a smooth map between $E$ and $F$?
I will start by pointing out that smoothness should not be an issue, as it is a local property. That is, a map $E\to F$ is smooth if and only if it is locally smooth, and the latter is easy to check since every vector bundle is locally trivial. The tricky ingredient in trying to construct a map between two vector bundles is ensuring that the map is well-defined. In other words, that all the local pieces glue together to a global map. This is usually done in one of the following two ways.
$1$- The intrinsic approach: Use intrinsic language to construct and describe the desired map. As an example, let $TM$ and $T^*M$ denote the tangent and cotangent bundles of a manifold $M$, respectively. Let $g$ be a Riemannian metric on $M$. Then we can define $$f:TM\to T^*M,\quad (p,v)\mapsto g_p(v,\cdot).$$This is certainly well-defined. As $f$ is an isomorphism of vector spaces at every $p\in M$, it is an isomorphism of vector bundles. Finally, it is as smooth as the Riemannian metric $g$.
$2$-Gluing local maps: Let $E$ and $F$ be two vector bundles over $M$, and let $(U_\alpha)$ be an open covering of $M$ such that both $E$ and $F$ are trivial over every $U_\alpha$. This means that for every $\alpha$ there are frames $e_{\alpha1},\ldots,e_{\alpha k}$ and $f_{\alpha 1},\ldots,f_{\alpha l}$ of $E$ and $F$ over $U_\alpha$, respectively, and the frames over two intersecting sets $U_\alpha$ and $U_\beta$ are synchronized by transition maps. In order to construct a map $f:E\to F$, one can define $f$ on every $U_\alpha$ in means of the above frames, and make sure that these local definitions agree on every intersection $U_\alpha\cap U_\beta$. As an example, let us construct the same $f:TM\to T^*M$ as above, but using the gluing approach this time:
We take the $U_\alpha$'s to be coordinate charts. On every $U_\alpha$ we have the frame $\partial/\partial x^1,\ldots,\partial/\partial x^n$ of $TM$ and $dx^1,\ldots,dx^n$ of $T^*M$. On every intersection $U_\alpha\cap U_\beta$ we have the transition rules $$\frac{\partial}{\partial y^i}=\frac{\partial x^j}{\partial y^i}\frac{\partial}{\partial x^j},\quad dy^i=\frac{\partial y^i}{\partial x^j}dx^j,$$where the $x^j$'s are coordinates on $U_\alpha$ and the $y^i$'s are coordinates on $U_\beta$. The metric $g$ is given locally by $g=g_{ij}dx^idx^j$, and it also satisfies its own transition rule on every intersection of two charts: $$\left(g_{ij}\right)_\beta=\frac{\partial x^k}{\partial y^i}\frac{\partial x^l}{\partial y^j}\left(g_{kl}\right)_\alpha.$$ On every chart we define the map $f:TM\to T^*M$ by $$\frac{\partial}{\partial x^i}\mapsto g_{ij}dx^j.$$Finally, in order to verify that $f$ is well-defined on the intersections, we compute $$\begin{align}\frac{\partial}{\partial y^i}&=\frac{\partial x^j}{\partial y^i}\frac{\partial}{\partial x^j}\\&\mapsto\frac{\partial x^j}{\partial y^i}(g_{jk})_\alpha dx^k\\&=\frac{\partial x^j}{\partial y^i}\frac{\partial y^p}{\partial x^j}\frac{\partial y^q}{\partial x^k}(g_{pq})_\beta\frac{\partial x^k}{\partial y^r}dy^r\\&=\delta_i^p\delta_r^q(g_{pq})_\beta dy^r\\&=(g_{ir})_\beta dy^r,\end{align}$$ as desired.