A numerical technique that uses different function spaces for trial (solution) and test (weighting) functions to solve differential equations weakly.