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.
Le modèle ne prédit jamais de valeur numérique. Il prédit un
squelette — C · 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.
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.
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.
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.
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.
| Oracle | Polynôme | Curvy | |
|---|---|---|---|
| Interpolation — remplir entre les points | 0,791 | 0,669 | 0,684 |
| Extrapolation — prolonger au-delà du tracé | 0,360 | 0,069 | 0,187 |
| Formules écrites à la main, hors distribution | — | 0,293 | 0,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.
y = f(x). La démo te le dira au lieu de rendre n'importe
quoi — le mode paramétrique x(t), y(t) est le chantier suivant.