← Retour aux demos

Restriction de domaine et fonctions par morceaux

Tracé d'une fonction y = f(x) avec :

  • Restriction de domaine via sur ]a ; b] ou avec a < x <= b (cercles ouverts/fermés aux bornes selon la convention scolaire).
  • Fonctions par morceaux via { expr si cond, ... } ou { expr sur ]a ; b[, ... }. Premier morceau qui matche gagne (convention Desmos / GeoGebra).
  • Bornes réactives dans tous les cas — un slider dans une borne ou une condition recalcule la courbe.

Restriction de domaine

y = x² sur [-2 ; 2]

Restriction par intervalle fermé. Les deux cercles pleins indiquent les bornes incluses.

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = x^2 sur [-2 ; 2]", couleur="bleu")

Bornes ouvertes vs fermées

]−1 ; 1[ produit deux cercles vides (bornes exclues). [-1 ; 1[ mélange : cercle plein à gauche, cercle vide à droite.

-8-6-4-22468-6-4-2246fg
Code DSL
f = courbe("y = x sur ]-1 ; 1[", couleur="bleu")
g = courbe("y = x^2 sur [-1 ; 1[", couleur="rouge")

Forme inégalité — sin(x) avec −3 < x ≤ 3

Forme alternative équivalente à `sur ]-3 ; 3]`. Encadrement composé `a < x <= b` natif.

-8-6-4-22468-6-4-2246f
Code DSL
unite_angle("radians")
f = courbe("y = sin(x) avec -3 < x <= 3", couleur="violet")

Demi-droites — x ≥ 0 et x < 0

Restriction unilatérale. Le cercle apparaît seulement aux bornes finies (pas à l'infini).

-8-6-4-22468-6-4-2246fg
Code DSL
f = courbe("y = x^2 avec x >= 0", couleur="orange")
g = courbe("y = -x^2 avec x < 0", couleur="vert")

Bornes réactives — sliders a et b

Déplace les sliders : la fonction se redessine et les marqueurs aux extrémités suivent.

-8-6-4-22468-6-4-2246f
a -2
b 2
Code DSL
a = slider(min=-5, max=0, valeur=-2)
b = slider(min=0, max=5, valeur=2)
f = courbe("y = x^2 sur [a ; b]", couleur="bleu")

Fonctions par morceaux — forme « si »

|x| par morceaux

La valeur absolue exprimée comme piecewise. Conditions évaluées dans l'ordre — la première qui matche gagne.

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = { -x si x < 0, x si x >= 0 }", couleur="bleu")

Fonction signe — 3 morceaux

sign(x) avec un morceau par cas (négatif, zéro, positif). Saut visible à x = 0 dans le rendu.

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = { -1 si x < 0, 0 si x = 0, 1 si x > 0 }", couleur="rouge")

Encadrement composé — 1 si 0 < x < 5, sinon 0

Chaîne de relations `0 < x < 5` parsée nativement. Le dernier morceau sans `si` est le défaut (otherwise).

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = { 1 si 0 < x < 5, 0 }", couleur="violet")

Fonctions par morceaux — forme « sur »

|x| par intervalles

Forme équivalente à la version `si`, mais avec des intervalles `]−∞ ; 0[` et `[0 ; +∞[` plus parlants pour des élèves.

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = { -x sur ]-infini ; 0[, x^2 sur [0 ; +infini[ }", couleur="bleu")

Fonction en escalier — 3 paliers

Trois paliers constants séparés par deux sauts à x = ±1. Le sampler détecte les discontinuités et split le path.

-8-6-4-22468-6-4-2246f
Code DSL
f = courbe("y = { -1 sur ]-infini ; -1[, 0 sur [-1 ; 1], 1 sur ]1 ; +infini[ }", couleur="orange")

Polynomial par morceaux — paraboles + plateau

x² sur les deux côtés, plateau central. Composition typique en analyse scolaire (raccord continu en x = ±1).

-8-6-4-22468-6-4-2246
Code DSL
f = courbe("y = { x^2 sur [-3 ; -1], 1 sur ]-1 ; 1[, x^2 sur [1 ; 3] }", couleur="vert")

Piecewise réactif

Frontière mobile — slider a

Le slider `a` contrôle la position de la frontière entre les deux branches. La courbe se recompose dynamiquement.

-8-6-4-22468-6-4-2246
a 0
Code DSL
a = slider(min=-3, max=3, valeur=0)
f = courbe("y = { -x si x < a, x si x >= a }", couleur="rouge")

Trois branches symétriques — slider b

Slider sur la borne commune des trois branches. Démontre la combinaison interval form + réactivité.

-8-6-4-22468-6-4-2246
b 2
Code DSL
b = slider(min=0.5, max=4, valeur=2)
f = courbe("y = { -x^2 sur ]-infini ; -b], x^2 sur ]-b ; b[, -x^2 sur [b ; +infini[ }", couleur="violet")

Différentiation symbolique

La dérivée d'un piecewise est calculée branche par branche. tangente() et derivee() fonctionnent donc directement sur des fonctions par morceaux.

Tangentes à |x| — pentes ±1 selon le côté

La tangente en x = -1.5 a pour pente -1 (branche -x), celle en x = 2 a pour pente +1 (branche x). Avant la Phase G, les deux étaient horizontales (placeholder = 0).

-8-6-4-22468-6-4-2246ft1t2
Code DSL
f = courbe("y = { -x si x < 0, x si x >= 0 }", couleur="bleu")
t1 = tangente(f, -1.5, couleur="rouge", trait="tirets")
t2 = tangente(f, 2, couleur="vert", trait="tirets")

Tangentes à un polynomial par morceaux — pentes différentes par branche

Polynomial par morceaux : x² pour x < 1, sinon 2x − 1. En x = -1, la tangente a pour pente 2x = -2 (branche x²). En x = 2, la tangente a pour pente 2 (branche 2x − 1).

-8-6-4-22468-6-4-2246ft1t2
Code DSL
f = courbe("y = { x^2 si x < 1, 2*x - 1 si x >= 1 }", couleur="bleu")
t1 = tangente(f, -1, couleur="rouge", trait="tirets")
t2 = tangente(f, 2, couleur="vert", trait="tirets")

derivee() d'un polynomial par morceaux

f est le piecewise x² pour x < 1, sinon 2x − 1. Sa dérivée f' vaut 2x sur la première branche et 2 sur la seconde. Les deux courbes sont superposées.

-8-6-4-22468-6-4-2246fg
Code DSL
f = courbe("y = { x^2 si x < 1, 2*x - 1 si x >= 1 }", couleur="bleu")
g = derivee(f, couleur="orange")