En mathématiques, et plus précisément en géométrie algébrique, le calcul de Schubert est une technique introduite à la fin du par Hermann Schubert pour résoudre des problèmes de dénombrement en géométrie projective. C'est un précurseur de plusieurs théories plus modernes, comme celle des classes caractéristiques, et ses aspects algorithmiques font toujours l'objet de recherches ; la systématisation et la justification de ce calcul est l'objet du quinzième problème de Hilbert. Une construction moderne du calcul de Schubert associe à la grassmannienne (la variété algébrique des sous-espaces vectoriels de dimension k d'un espace vectoriel V de dimension n, appelés k-plans dans la suite de cet article) son , et décrit ce dernier par un ensemble de générateurs ayant une signification géométrique. Pour un drapeau complet avec et un -uple d'entiers avec, on définit l'ensemble des cycles de Schubert (appelés également cellules de Schubert lorsqu'on s'intéresse à l'homologie cellulaire plutôt qu'à l'anneau de Chow) par :Les classes ne dépendant pas du drapeau, on peut les écrire ; on les appelle les classes de Schubert. On démontre que ces classes engendrent l'anneau de Chow, et, dans cette présentation, c'est la associée qu'on appelle le calcul de Schubert. Pour une suite donnée , la classe de Schubert est simplement notée (ou même ). Les classes correspondant à un seul entier, , sont appelées des classes spéciales. La formule de Giambeli ci-dessous montre que toutes les classes de Schubert sont engendrées par les classes spéciales. L'explication des contraintes numériques de la définition vient de ce qu'un -plan générique sera d'intersection nulle avec les pour et que vaudra pour , d'après la formule de Grassmann. L'ordre partiel défini sur les -uples par pour tout définit l'inclusion des cycles de Schubert : . On définit la codimension d'un cycle de Schubert (ou de la classe de Schubert associée ) par la formule , laquelle est stable pour l'inclusion des grassmanniennes, c'est-à-dire que l'application définie en ajoutant à chaque -plan le vecteur supplémentaire (obtenant un -plan) vérifie (en appliquant à chaque élément de ).