Why a Bilinear Form Has a New Matrix in a New Basis
A bilinear form assigns a real number to each ordered pair of vectors, linearly in each input. The form itself does not change when we choose a different basis, but the matrix used to calculate its values does. The key is to transform both inputs: one change-of-coordinates matrix acts on the first vector, and another acts on the second. This produces a transformation on both sides of the form’s matrix.
Let \(V\) be a finite-dimensional vector space over \(\mathbb{R}\), and let \(\mathcal{B}=(\mathbf{b}_1,\dots,\mathbf{b}_n)\) be an ordered basis. A bilinear form on \(V\) is a function \(B:V\times V\to\mathbb{R}\) that is linear in each input when the other input is fixed. Its matrix in \(\mathcal{B}\), denoted \(\mathbf{A}_{\mathcal{B}}\), has entry \(B(\mathbf{b}_i,\mathbf{b}_j)\) in row \(i\), column \(j\). Thus, if \([\mathbf{x}]_{\mathcal{B}}\) and \([\mathbf{y}]_{\mathcal{B}}\) are the coordinate columns of \(\mathbf{x}\) and \(\mathbf{y}\), then \(B(\mathbf{x},\mathbf{y})=[\mathbf{x}]_{\mathcal{B}}^{\top}\mathbf{A}_{\mathcal{B}}[\mathbf{y}]_{\mathcal{B}}\).
We will write \(\mathbf{P}\) for this matrix and \(\mathbf{A}_{\mathrm{old}}\), \(\mathbf{A}_{\mathrm{new}}\) for the matrices of the same bilinear form in the old and new bases. The matrix \(\mathbf{P}\) is invertible: its columns are the coordinates of a basis, so they are linearly independent and span the coordinate space. We use this fact when reversing the change of basis.
Deriving the Congruence Rule
Proof. Fix arbitrary \(\mathbf{x},\mathbf{y}\in V\), and set \(\mathbf{x}_{\mathrm{old}}=[\mathbf{x}]_{\mathcal{B}}\), \(\mathbf{y}_{\mathrm{old}}=[\mathbf{y}]_{\mathcal{B}}\), \(\mathbf{x}_{\mathrm{new}}=[\mathbf{x}]_{\mathcal{C}}\), and \(\mathbf{y}_{\mathrm{new}}=[\mathbf{y}]_{\mathcal{C}}\). By the definition of \(\mathbf{P}\), \(\mathbf{x}_{\mathrm{old}}=\mathbf{P}\mathbf{x}_{\mathrm{new}}\) and \(\mathbf{y}_{\mathrm{old}}=\mathbf{P}\mathbf{y}_{\mathrm{new}}\). The old-basis formula for the form gives \(B(\mathbf{x},\mathbf{y})=\mathbf{x}_{\mathrm{old}}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{y}_{\mathrm{old}}=(\mathbf{P}\mathbf{x}_{\mathrm{new}})^{\top}\mathbf{A}_{\mathrm{old}}(\mathbf{P}\mathbf{y}_{\mathrm{new}})=\mathbf{x}_{\mathrm{new}}^{\top}(\mathbf{P}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{P})\mathbf{y}_{\mathrm{new}}\). The new-basis formula also gives \(B(\mathbf{x},\mathbf{y})=\mathbf{x}_{\mathrm{new}}^{\top}\mathbf{A}_{\mathrm{new}}\mathbf{y}_{\mathrm{new}}\). Since these equalities hold for every pair of new coordinate columns, take \(\mathbf{x}_{\mathrm{new}}=\mathbf{e}_i\) and \(\mathbf{y}_{\mathrm{new}}=\mathbf{e}_j\) for each \(i,j\). The \((i,j)\) entries of the two matrices must agree. Hence \(\mathbf{A}_{\mathrm{new}}=\mathbf{P}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{P}\). \(\square\)
The transpose appears because the first coordinate column is written as a row when it forms the scalar \(\mathbf{x}^{\top}\mathbf{A}\mathbf{y}\). The two factors of \(\mathbf{P}\) are both needed because both arguments of \(B\) change coordinates. No symmetry assumption on \(B\) or its matrix is required.
Computing the New Matrix
Worked Example: A Two-Dimensional Change of Basis
Suppose the old-basis matrix and the new basis vectors in old coordinates are \(\mathbf{A}_{\mathrm{old}}=\begin{bmatrix}2&1\\3&4\end{bmatrix}\), \(\mathbf{c}_1=\begin{bmatrix}1\\1\end{bmatrix}\), and \(\mathbf{c}_2=\begin{bmatrix}1\\0\end{bmatrix}\). Find the matrix of the same bilinear form in \(\mathcal{C}=(\mathbf{c}_1,\mathbf{c}_2)\).
Place the new basis vectors in the columns of \(\mathbf{P}\). Then multiply \(\mathbf{A}_{\mathrm{old}}\mathbf{P}\) first:
For example, the first column is \(\begin{bmatrix}2+1\\3+4\end{bmatrix}=\begin{bmatrix}3\\7\end{bmatrix}\), and the second is \(\begin{bmatrix}2\\3\end{bmatrix}\). Now multiply on the left by \(\mathbf{P}^{\top}\):
Check the entries using the definition. The first entry is \(B(\mathbf{c}_1,\mathbf{c}_1)=\begin{bmatrix}1&1\end{bmatrix}\begin{bmatrix}3\\7\end{bmatrix}=10\). The \((1,2)\) entry is \(B(\mathbf{c}_1,\mathbf{c}_2)=\begin{bmatrix}1&1\end{bmatrix}\begin{bmatrix}2\\3\end{bmatrix}=5\); the \((2,1)\) entry is \(B(\mathbf{c}_2,\mathbf{c}_1)=\begin{bmatrix}1&0\end{bmatrix}\begin{bmatrix}3\\7\end{bmatrix}=3\); and the \((2,2)\) entry is \(B(\mathbf{c}_2,\mathbf{c}_2)=\begin{bmatrix}1&0\end{bmatrix}\begin{bmatrix}2\\3\end{bmatrix}=2\). These values reproduce every entry of the computed matrix.
Entry-by-entry checking is especially useful when the matrix is not symmetric. The \((i,j)\) entry records \(B(\mathbf{c}_i,\mathbf{c}_j)\), while the \((j,i)\) entry records \(B(\mathbf{c}_j,\mathbf{c}_i)\). Bilinearity alone does not make those two numbers equal.
Worked Example: A Three-Dimensional Basis Change
Let \(\mathbf{A}_{\mathrm{old}}=\begin{bmatrix}1&0&0\\0&2&0\\0&0&3\end{bmatrix}\), and let the new basis vectors have old coordinates \(\mathbf{c}_1=\begin{bmatrix}1\\0\\0\end{bmatrix}\), \(\mathbf{c}_2=\begin{bmatrix}0\\1\\0\end{bmatrix}\), and \(\mathbf{c}_3=\begin{bmatrix}1\\1\\1\end{bmatrix}\). Find and check the new matrix.
The change-of-basis matrix and the first multiplication are
The columns of this product are \(\mathbf{A}_{\mathrm{old}}\mathbf{c}_1=\begin{bmatrix}1\\0\\0\end{bmatrix}\), \(\mathbf{A}_{\mathrm{old}}\mathbf{c}_2=\begin{bmatrix}0\\2\\0\end{bmatrix}\), and \(\mathbf{A}_{\mathrm{old}}\mathbf{c}_3=\begin{bmatrix}1\\2\\3\end{bmatrix}\). Using \(\mathbf{P}^{\top}=\begin{bmatrix}1&0&0\\0&1&0\\1&1&1\end{bmatrix}\), finish the product:
For a check, the \((3,2)\) entry is \(B(\mathbf{c}_3,\mathbf{c}_2)\). Since \(\mathbf{A}_{\mathrm{old}}\mathbf{c}_2=\begin{bmatrix}0\\2\\0\end{bmatrix}\), this value is \(\begin{bmatrix}1&1&1\end{bmatrix}\begin{bmatrix}0\\2\\0\end{bmatrix}=2\). The \((2,3)\) entry is \(B(\mathbf{c}_2,\mathbf{c}_3)=\begin{bmatrix}0&1&0\end{bmatrix}\begin{bmatrix}1\\2\\3\end{bmatrix}=2\). Both agree with the computed matrix. Its \((3,3)\) entry also checks directly: \(B(\mathbf{c}_3,\mathbf{c}_3)=\begin{bmatrix}1&1&1\end{bmatrix}\begin{bmatrix}1\\2\\3\end{bmatrix}=6\).
Reversing and Composing Changes
Proof. Multiply \(\mathbf{A}_{\mathrm{new}}=\mathbf{P}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{P}\) on the left by \((\mathbf{P}^{-1})^{\top}\) and on the right by \(\mathbf{P}^{-1}\). Since \((\mathbf{P}^{-1})^{\top}\mathbf{P}^{\top}=(\mathbf{P}\mathbf{P}^{-1})^{\top}=\mathbf{I}\) and \(\mathbf{P}\mathbf{P}^{-1}=\mathbf{I}\), the result is \((\mathbf{P}^{-1})^{\top}\mathbf{A}_{\mathrm{new}}\mathbf{P}^{-1}=\mathbf{A}_{\mathrm{old}}\). \(\square\)
For example, in the first worked example, \(\mathbf{P}^{-1}=\begin{bmatrix}0&1\\1&-1\end{bmatrix}\). Reversing the computed matrix gives
To see the intermediate multiplication, the first two factors give \(\begin{bmatrix}3&2\\7&3\end{bmatrix}\), and multiplying that by \(\mathbf{P}^{-1}\) gives \(\begin{bmatrix}2&1\\3&4\end{bmatrix}\), as required.
Changes can also be carried out in stages. If \(\mathbf{P}\) takes coordinates in a second basis to an old basis and \(\mathbf{Q}\) takes coordinates in a third basis to that second basis, then the third-basis coordinates map to the old coordinates by \(\mathbf{P}\mathbf{Q}\). Applying the rule twice gives \(\mathbf{Q}^{\top}(\mathbf{P}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{P})\mathbf{Q}=(\mathbf{P}\mathbf{Q})^{\top}\mathbf{A}_{\mathrm{old}}(\mathbf{P}\mathbf{Q})\), since \((\mathbf{P}\mathbf{Q})^{\top}=\mathbf{Q}^{\top}\mathbf{P}^{\top}\). Thus the direct and staged computations agree.
Common Mistake: Using Only One Change-of-Basis Factor
A common incorrect calculation is \(\mathbf{A}_{\mathrm{new}}=\mathbf{A}_{\mathrm{old}}\mathbf{P}\), which transforms the second input but leaves the first input in old coordinates. For the two-dimensional example, that incorrect rule gives \(\begin{bmatrix}3&2\\7&3\end{bmatrix}\), not the matrix of the form in the new basis. For instance, its \((1,1)\) entry would be \(3\), but the correct value is \(B(\mathbf{c}_1,\mathbf{c}_1)=10\). The correction is to transform the first input as well, giving \(\mathbf{P}^{\top}\mathbf{A}_{\mathrm{old}}\mathbf{P}\).
The inverse matrix belongs in the reverse direction, when recovering the old-basis matrix from the new-basis matrix. It does not replace \(\mathbf{P}\) in the forward rule: \(\mathbf{P}\) was defined by the coordinate equation \([\mathbf{x}]_{\mathrm{old}}=\mathbf{P}[\mathbf{x}]_{\mathrm{new}}\). Before multiplying, check which coordinates the columns of the proposed change-of-basis matrix convert.
As a practical method, first write the new basis vectors in old coordinates, then assemble \(\mathbf{P}\) with those vectors as columns. Compute \(\mathbf{A}_{\mathrm{old}}\mathbf{P}\), then multiply by \(\mathbf{P}^{\top}\) on the left. Finally, check selected entries—or all entries when the matrix is small—using \(B(\mathbf{c}_i,\mathbf{c}_j)\). This last check catches both a transposition error and an incorrectly assembled change-of-basis matrix.
Worked Example: A Scaling and Shear
Let \(\mathbf{A}_{\mathrm{old}}=\begin{bmatrix}0&1\\2&0\end{bmatrix}\), and take \(\mathbf{c}_1=\begin{bmatrix}2\\0\end{bmatrix}\), \(\mathbf{c}_2=\begin{bmatrix}1\\1\end{bmatrix}\). The columns are independent, and the new basis change is \(\mathbf{P}=\begin{bmatrix}2&1\\0&1\end{bmatrix}\). Compute the new matrix:
Check the entries directly. The first column of \(\mathbf{A}_{\mathrm{old}}\mathbf{P}\) is \(\begin{bmatrix}0\\4\end{bmatrix}\), and the second is \(\begin{bmatrix}1\\2\end{bmatrix}\). Therefore \(B(\mathbf{c}_1,\mathbf{c}_1)=\begin{bmatrix}2&0\end{bmatrix}\begin{bmatrix}0\\4\end{bmatrix}=0\), \(B(\mathbf{c}_1,\mathbf{c}_2)=\begin{bmatrix}2&0\end{bmatrix}\begin{bmatrix}1\\2\end{bmatrix}=2\), \(B(\mathbf{c}_2,\mathbf{c}_1)=\begin{bmatrix}1&1\end{bmatrix}\begin{bmatrix}0\\4\end{bmatrix}=4\), and \(B(\mathbf{c}_2,\mathbf{c}_2)=\begin{bmatrix}1&1\end{bmatrix}\begin{bmatrix}1\\2\end{bmatrix}=3\). All four entries agree.
What the Rule Keeps Fixed
The numerical entries depend on the basis, but they continue to encode the same function \(B\). For a particular vector pair, the old coordinates and old matrix give one scalar; the new coordinates and new matrix give the same scalar by the theorem’s calculation. This is why the formula is a coordinate rule rather than a change to the bilinear form.
Keep the order of operations visible: the columns of \(\mathbf{P}\) are new basis vectors in old coordinates; the right factor accounts for the second input; the transpose on the left accounts for the first. The formula requires a change between bases of the same finite-dimensional real space and a bilinear form represented in those bases. It does not require the form to be symmetric.
Check Your Understanding
For each question, identify which basis the coordinates refer to before carrying out any matrix multiplication.
- If \(\mathbf{P}=\begin{bmatrix}1&2\\0&1\end{bmatrix}\) and \(\mathbf{A}_{\mathrm{old}}=\begin{bmatrix}1&0\\3&2\end{bmatrix}\), compute \(\mathbf{A}_{\mathrm{new}}\).
- Explain why the columns of \(\mathbf{P}_{\mathcal{B}\leftarrow\mathcal{C}}\) are the new basis vectors in old coordinates, rather than the reverse.
- For a computed new matrix, what form values do its \((1,2)\) and \((2,1)\) entries represent?
- State the reverse change-of-basis formula and the condition needed to use it.
- Why is \(\mathbf{A}_{\mathrm{old}}\mathbf{P}\) alone not generally the matrix of the form in the new basis?