$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

Courbe de Bolzano

La fonction de Bolzano est un exemple de fonction continue sur $[0,1]$ qui n'est dérivable en aucun point. Elle est construite de la façon suivante : on part du segment joignant le point $(0,0)$ au point $(1,1).$ On coupe ce segment en 3, on joint le point $(0,0)$ au point $(1/3,2/3),$ le point $(1/3,2/3)$ au point $(2/3,1/3),$ puis le point $(2/3,1/3)$ au point $(1,1).$ Remarquons que $(1/3,2/3)$ a l'abscisse du point situé au tiers du segment initial et l'ordonnée du point situé au deux-tiers.

On recommence ensuite avec chacun des 3 segments, et on itère cette construction. On définit ainsi une suite de fonctions $(f_n)$ qui converge simplement vers une fonction $f$ qui est continue et nulle part dérivable. Les dessins ci-dessous donnent les premières étapes de la construction.

Ces images ont été produites avec le code Python suivant (un bon exemple de programmation par récursivité) :

import matplotlib.pyplot as plt

def tiers(A,B):
    xA, yA=A
    xB, yB=B
    dx=xB-xA
    dy=yB-yA
    xM=xA+1/3*dx
    xN=xA+2/3*dx
    yM=yA+2/3*dy
    yN=yA+1/3*dy
    return (xM,yM), (xN, yN)

def Bolzano(A,B,n):
  if (n==1):
    plt.plot([A[0],B[0]],[A[1],B[1]],color='k')
  else:
    C,D=tiers(A,B)
    Bolzano(A,C,n-1)
    Bolzano(C,D,n-1)
    Bolzano(D,B,n-1)
 
Bolzano((0,0),(1,1),7)

plt.show()

Cet exemple de Bolzano date de 1834. Plus tard, c'est Weierstrass qui popularisa les exemples de fonctions continues nulle part dérivables.
Consulter aussi
Recherche alphabétique
Recherche thématique