1. A method of updating a simulation of physical objects in an interactive computer environment having a processor, a memory and a display, the method comprising: generating a set of representations of objects in said interactive computer environment; partitioning said set of representations into a plurality of subsets such that objects in any given set interact only with other objects in that set; generating a system of linear equations A*Δv=b for the vector Δv of velocity changes to be applied to each object over a time interval h, in which A is a block-sparse matrix and b is a vector, and A and b are calculated from known attributes of the objects; applying a biconjugate gradient algorithm to solve A*Δv=b for the vector Δv of velocity changes applied to each object, wherein a single matrix-vector multiplication routine is called once per iteration to perform two matrix-vector multiplications, one involving A and the other involving the transpose of A, to determine the value of two vectors used to update the residuals used in the biconjugate gradient algorithm; applying the vector of velocity changes to determine a next state of the simulated objects; and converting said simulated objects to a visual representation comprising pixel data for display.