
Fonction dérivable
Concept history
A revision trail for this concept page.
Revision 6453
10/2/2026, 10:42:48 PM · FiniteField
Concept marked usable
statusStubUsable
Revision 6442
10/2/2026, 4:57:58 PM · SalixBabylonica
Updated aliases
aliasesNoneDérivable
Revision 4974
9/15/2026, 8:03:18 AM · Ancient Tree
Concept created
##### Définition formelle
Soit $f:I\to\mathbb R$, où $I$ est un intervalle de $\mathbb R$.
On dit que $f$ est **dérivable sur $I$** si elle est [[Dérivée en un point|dérivable en tout point]] de $I$.
*Déplacer $a$ (en orange) dans l'animation suivante pour voir la tangente se déplacer*.
```jsxgraph
{
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jsxgraph@1.13.1/distrib/jsxgraph.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.47/dist/katex.min.css">
<style>
#derivee-value,
#derivee-tangente {
color-scheme: light dark;
font-family: system-ui, sans-serif;
}
#derivee-tangente {
width: 100%;
height: clamp(300px, 60vw, 440px);
position: relative;
overflow: hidden;
background: transparent;
border: 0;
touch-action: none;
}
#derivee-tangente svg {
display: block;
}
#derivee-tangente .JXGinfobox {
display: none !important;
}
#derivee-value {
display: block;
text-align: center;
color: var(--foreground, light-dark(#202020, #eeeeee));
padding: 12px 0 4px;
min-height: 48px;
}
#derivee-value .katex {
font-size: 1.65em;
}
#derivee-value .katex-display {
margin: 0;
}
#derivee-tangente .JXGtext {
color: var(--foreground, light-dark(#202020, #eeeeee)) !important;
font: inherit !important;
}
</style>
<!-- Formule LaTeX pré-rendue : aucun script KaTeX nécessaire. -->
<output id="derivee-value" aria-live="off" aria-label="Dérivée en a : -0,74">
<span class="katex-display">
<span class="katex">
<span class="katex-html" aria-hidden="true">
<span class="base">
<span class="strut" style="height:1.0519em;vertical-align:-0.25em;"></span>
<span class="mord">
<span class="mord mathnormal" style="margin-right:0.1076em;">f</span>
<span class="msupsub">
<span class="vlist-t">
<span class="vlist-r">
<span class="vlist" style="height:0.8019em;">
<span style="top:-3.113em;margin-right:0.05em;">
<span class="pstrut" style="height:2.7em;"></span>
<span class="sizing reset-size6 size3 mtight">
<span class="mord mtight">
<span class="mord mtight">′</span>
</span>
</span>
</span>
</span>
</span>
</span>
</span>
</span>
<span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mclose">)</span>
<span class="mspace" style="margin-right:0.2778em;"></span>
<span class="mrel">=</span>
<span class="mspace" style="margin-right:0.2778em;"></span>
</span>
<span class="base">
<span class="strut" style="height:0.8389em;vertical-align:-0.1944em;"></span>
<span class="enclosing" id="derivee-number">−0,74</span>
</span>
</span>
</span>
</span>
</output>
<div
id="derivee-tangente"
aria-label="Déplacer le point sur la courbe pour faire évoluer la tangente, sa projection sur l’axe et la valeur de la dérivée."
></div>
<script>
(async () => {
const root = document.getElementById('derivee-tangente');
if (!root || root.dataset.initialized) return;
root.dataset.initialized = 'loading';
// Chargement de JSXGraph avec un CDN de secours.
const loadScript = src => new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.crossOrigin = 'anonymous';
script.onload = resolve;
script.onerror = () => {
script.remove();
reject(new Error('Impossible de charger JSXGraph.'));
};
document.head.appendChild(script);
});
if (!window.JXG?.JSXGraph) {
try {
await loadScript(
'https://cdn.jsdelivr.net/npm/jsxgraph@1.13.1/distrib/jsxgraphcore.js'
);
} catch {
await loadScript(
'https://unpkg.com/jsxgraph@1.13.1/distrib/jsxgraphcore.js'
);
}
}
if (!root.isConnected) return;
// Attendre que le conteneur ait une taille.
if (!root.clientWidth || !root.clientHeight) {
await new Promise(resolve => {
const observer = new ResizeObserver(() => {
if (root.clientWidth && root.clientHeight) {
observer.disconnect();
resolve();
}
});
observer.observe(root);
});
}
const board = window.JXG.JSXGraph.initBoard(root.id, {
boundingbox: [-3.4, 3.1, 3.4, -1.7],
axis: false,
grid: false,
showCopyright: false,
showNavigation: false,
showInfobox: false,
pan: { enabled: false },
zoom: { enabled: false, wheel: false, pinch: false },
resize: { enabled: true },
keepaspectratio: false
});
const colors = {
curve: 'var(--viz-series-1, light-dark(#3399ff, #70b8ff))',
tangent: 'var(--viz-series-2, light-dark(#ff8833, #ffad70))',
text: 'var(--foreground, light-dark(#202020, #eeeeee))',
axis: 'var(--muted-foreground, light-dark(#888888, #a0a0a0))',
background: 'var(--background, light-dark(#ffffff, #181818))'
};
// Axes.
const axisStyle = {
strokeColor: colors.axis,
strokeWidth: 1,
fixed: true,
highlight: false,
withLabel: false,
lastArrow: { type: 2, size: 7 },
layer: 1
};
board.create('segment', [[-3.25, 0], [3.25, 0]], axisStyle);
board.create('segment', [[0, -1.55], [0, 2.95]], axisStyle);
const textStyle = {
fixed: true,
highlight: false,
strokeColor: colors.text,
anchorX: 'middle',
anchorY: 'middle',
layer: 9
};
board.create('text', [
3.18,
() => -19 / board.unitY,
'<i>x</i>'
], textStyle);
board.create('text', [
() => 16 / board.unitX,
2.85,
'<i>y</i>'
], textStyle);
// Fonction : modifier cette ligne pour changer la courbe.
const f = x => 0.12 * x * x * x - 0.8 * x + 0.7;
const curve = board.create('functiongraph', [f, -3.15, 3.15], {
strokeColor: colors.curve,
strokeWidth: 3,
fixed: true,
highlight: false,
withLabel: false
});
// Point déplaçable sur la courbe.
const point = board.create('glider', [0.4, f(0.4), curve], {
name: '',
withLabel: false,
showInfobox: false,
size: 7,
strokeWidth: 3,
strokeColor: colors.tangent,
fillColor: colors.background,
highlightStrokeColor: colors.tangent,
highlightFillColor: colors.tangent,
precision: {
touch: 28,
touchMax: 40,
mouse: 14,
pen: 18
},
layer: 9
});
// Projection sur l’axe des abscisses.
const projection = board.create('point', [() => point.X(), 0], {
name: '',
withLabel: false,
size: 2,
fixed: true,
highlight: false,
showInfobox: false,
strokeColor: colors.text,
fillColor: colors.text,
layer: 7
});
board.create('segment', [point, projection], {
dash: 2,
strokeWidth: 1.5,
strokeColor: colors.axis,
fixed: true,
highlight: false,
withLabel: false,
layer: 3
});
board.create('text', [
() => point.X(),
() => -20 / board.unitY,
'<i>a</i>'
], {
...textStyle,
cssStyle: `background:${colors.background};padding:0 3px;`
});
// Tangente calculée automatiquement par JSXGraph.
const tangent = board.create('tangent', [point], {
strokeColor: colors.tangent,
strokeWidth: 2,
fixed: true,
highlight: false,
withLabel: false,
layer: 5
});
// Valeur de f'(a), arrondie à deux décimales.
const slopeValue = document.getElementById('derivee-value');
const numberValue = document.getElementById('derivee-number');
let previousValue;
const updateSlope = () => {
const slope = tangent.getSlope();
const value = (Math.abs(slope) < 0.005 ? 0 : slope).toFixed(2);
if (value === previousValue) return;
previousValue = value;
numberValue.textContent = value.replace('.', ',').replace('-', '−');
slopeValue.dataset.value = value;
slopeValue.setAttribute(
'aria-label',
'Dérivée en a : ' + value.replace('.', ',')
);
};
board.on('update', updateSlope);
updateSlope();
point.rendNode.style.cursor = 'grab';
point.on('down', () => {
point.rendNode.style.cursor = 'grabbing';
});
point.on('up', () => {
point.rendNode.style.cursor = 'grab';
});
root.dataset.initialized = 'ready';
})().catch(error => {
const root = document.getElementById('derivee-tangente');
if (root) {
root.dataset.initialized = 'error';
root.setAttribute('role', 'alert');
root.textContent = error.message;
}
});
</script>
}
```