Bilinear & Quadratic Forms

bilinear form

A bilinear form is a machine B that eats two vectors and returns a scalar, B(u, v), and is linear in each slot separately. Linear in the first slot means B(a*u1 + b*u2, v) = a*B(u1, v) + b*B(u2, v); linear in the second slot is the mirror statement with v. The word 'bilinear' just means 'linear twice over' — fix one input and you get an ordinary linear functional in the other. The dot product is the friendly first example: B(u, v) = <u, v>.

Once you fix a basis e_1, ..., e_n, a bilinear form is completely captured by a single matrix. Set B_ij = B(e_i, e_j); then for any vectors written in coordinates as columns u and v you get the clean formula B(u, v) = u^T B v. Multiplying out u^T B v really does reproduce the double sum sum_i sum_j u_i B_ij v_j, so the n-by-n matrix B holds all the information there is.

The catch — and it is the heart of this whole field — is that B depends on the basis you chose. Change basis by an invertible matrix P (new = old times P) and the matrix becomes P^T B P, not P^-1 B P. That P^T-not-P^-1 is what separates forms from operators: a linear operator transforms by similarity, a bilinear form transforms by congruence. Confusing the two is the classic Vol II mistake.

Keep B general for a moment: an arbitrary bilinear form need not be symmetric or skew. Every such B splits uniquely into a symmetric part and an alternating part, S(u,v) = (B(u,v)+B(v,u))/2 and A(u,v) = (B(u,v)-B(v,u))/2, at least when 2 is invertible in the field. The symmetric part is the only one a quadratic form can see, which is why symmetric forms get all the attention.

B(u, v) = u^T B v, B_ij = B(e_i, e_j)

Every bilinear form on F^n is u^T B v for a unique matrix B once a basis is fixed.

Watch the transformation law: operators change by P^-1 B P (similarity), forms change by P^T B P (congruence). If your field used the wrong one, your invariants will be wrong too.

Also called
bilinear functiontwo-form (loosely)