Curvy.

Dessine une courbe à main levée. Curvy rend les formules mathématiques qui la décrivent, classées de la plus simple à la plus précise.

68,4 %
des formules jamais vues retrouvées à R² ≥ 0,99
2,7×
mieux qu'un polynôme hors de la fenêtre observée
31,6 M
paramètres, servis depuis une RTX 3060

Essaie

Dessine une courbe ici, de gauche à droite
Le résultat s'affichera ici.

Comment ça marche

Le modèle ne prédit jamais de valeur numérique. Il prédit un squeletteC · sin(C · x) + C — et les constantes sont ajustées après coup par optimisation. Deviner la forme est un problème de langage ; trouver les nombres est un problème d'optimisation. Deux métiers, deux outils.

nuage de points ──▶ normalisation ──▶ encodeur transformer (ensemble de points) │ cross-attention ▼ décodeur autorégressif │ beam search sous masque d'arité ▼ 8 squelettes candidats │ ajustement des constantes (scipy) ▼ front de Pareto (simplicité, R²) ▼ 3 à 5 formules

Zéro formule invalide

Un masque d'arité interdit à chaque pas tout token qui rendrait l'expression impossible à refermer. Sur 40 000 steps d'entraînement : 0,00 % de sortie mal formée. Par construction, pas par apprentissage.

Le front de Pareto

Simplicité et précision s'opposent. Quand deux critères s'opposent, « le meilleur » n'existe pas — on rend donc les formules qu'aucune autre ne domine sur les deux tableaux, et le choix te revient.

Mesuré, pas affirmé

Chaque chiffre publié vient d'une exécution consignée. Les échecs sont écrits à côté des réussites, et les corrections restent visibles dans le journal.

Ce que ça vaut

Mesuré sur 1 960 formules explicitement exclues de l'entraînement, contre deux concurrents : un polynôme de degré 1 à 8 choisi par validation croisée, et l'oracle — la vraie formule, ses constantes réajustées, qui donne le plafond de la tâche.

OraclePolynômeCurvy
Interpolation — remplir entre les points 0,7910,6690,684
Extrapolation — prolonger au-delà du tracé 0,3600,0690,187
Formules écrites à la main, hors distribution 0,2930,500

En interpolation, un simple np.polyfit fait jeu égal — 0,669 contre 0,684, à l'intérieur de la marge d'erreur de ±2,2 points. Ce n'est pas là que ce projet se justifie, et il serait malhonnête de l'écrire autrement.

La différence est ailleurs. Un polynôme épouse la courbe ; il ne dit pas ce qu'elle est. Dès qu'il faut sortir de la fenêtre dessinée, il s'effondre — sur les 29 formules hors distribution, il prolonge correctement zéro courbe, sans une seule exception. Sur la fonction de Runge, le contre-exemple classique de l'interpolation polynomiale, Curvy la retrouve six fois sur six et le polynôme zéro fois sur six.

Ce que ça ne sait pas faire