import re
# slide = ""
# while 1:
# try:
# slide += input()
# except:
# break
slide = r'''
<s>
<cha>Fonction exponentielle</cha>
<os>
<o>Existence et unicité</o>
<o>Propriétés algébriques</o>
<o>Notation puissance</o>
<o>Fonction exponentielle</o>
</os>
</s>
<s>
<par>1. Fonction exponentielle</par>
</s>
<s>
<ti>1.1 Méthode d'Euler</ti>
<t>
Soit $f$ une fonction dérivable sur $\mathbb{R}$ et vérifiant $f(0)=1$ et $f'(x)=f(x)$ pour tout réel $x$.<br>
En observant, d'après la définition du <e>nombre dérivé</e>, que :
$$\lim_{h \to 0} \frac{f(x+h) - f(x)}{h} = f'(x)= f(x) $$
Suppsosons pour simplifier que $h>0$, cela revient à considérer :
$$f(x+h) -f(x) \approx f(x) \cdot h \Rightarrow f(x) \approx f(x) + f(x) \cdot h = f(x) \cdot(1+h)$$
On obtient successivement (avec $x=0$ puis $x=h$) :
$$f(h) \approx f(0) \cdot 1+h = 1 + h \qquad \qquad f(2h)=f(h+h) \approx f(h) \cdot (1 + h) = (1+h)^2$$
En généralisant cette idée, on trouve :
$$f(nh) \approx (1+h)^n$$
Soit une suite de points de coordonnées $(nh, (1+h)^n)$ puis en remplaçant $h$ par $-h$, les points $(-nh, (1-h)^n)$.<br>
En rejoignant ces points, on obtient une <e>approximation</e> de la solution de notre problème.
</t>
</s>
<s>
<ti>1.1 Existence et unicité</ti>
<d>
<t>
<n>Il <e>existe</e> une <e>unique</e> fonction $f$</n><n>dérivable sur $\mathbb{R}$</n><n> telle que $f(0)=1$ et :</n>
<n>
$$
f^{\prime}=f
$$
</n>
<n>Cette fonction est appelée fonction </n><n><e>exponentielle</e></n><n> et est notée $\exp$.</n><br>
<n>Ainsi, pour tout réel $x$,</n> :
<ul>
<li>
<t><n>$\exp (0)=1$</n></t>
</li>
<li>
<t>
$\exp^{\prime}(x)=\exp (x)$
</t>
</li>
</ul>
</t>
</d>
<rq/>
<t>
L'existence de la fonction exponentielle est admise, mais peut être conjecturée à l'aide de la méthode d'Euler.
</t>
</s>
<s>
<ti>1.2 Non nullité</ti>
<p>
<t>
Pour tout réel $x$, on a :
$$\exp (x) \times \exp (-x)=1$$
En conséquence, pour tout réel $x, \exp (x) \neq 0$.
</t>
</p>
</s>
<s>
<pr/>
<t>
On définit la fonction $h$ pour tout réel $x$ par $h(x)=\exp (x) \times \exp (-x)$.<br>
La fonction exponentielle étant dérivable sur $\mathbb{R}, h$ est aussi dérivable sur $\mathbb{R}$, et pour tout réel $x$, on a :
$$
h^{\prime}(x)=\exp ^{\prime}(x) \times \exp (-x)+\exp (x) \times\left(-\exp ^{\prime}(-x)\right)
$$
Or par définition de la fonction exponentielle, $\exp ^{\prime}=\exp$.<br>
Donc $h^{\prime}(x)=\exp (x) \times \exp (-x)-\exp (x) \times \exp (-x)$, soit $h^{\prime}(x)=0$ sur $\mathbb{R}$.<br>
La fonction $h$ est donc constante sur $\mathbb{R}$.<br>
Or $h(0)=\exp (0) \times \exp (0)=1 \times 1=1$, car $\exp (0)=1$ par définition.<br>
Ainsi, pour tout réel $x, h(x)=1$, c'est-à-dire $\exp (x) \times \exp (-x)=1$.<br>
De plus, s'il existait un réel $x$ tel que $\exp (x)=0$, on aurait $h(x)=0$, ce qui est impossible. On en déduit que pour tout réel $x, \exp (x) \neq 0$.
</t>
</s>
<s>
<par>2. Propriétés algébriques</par>
</s>
<s>
<p>
<t>
Pour tous réels $x$ et $y$ et pour tout entier relatif $n$, on a :
<ul>
<li>
<t> $\exp (-x)=\frac{1}{\exp (x)}$</t>
</li>
<li>
<t>$\exp (x+y)=\exp (x) \times \exp (y)$</t>
</li>
<li>
<t>
$\exp (x-y)=\frac{\exp (x)}{\exp (y)}$
</t>
</li>
<li>
<t>
$\exp (n x)=(\exp (x))^n$
</t>
</li>
</ul>
</t>
</p>
</s>
<s>
<pr/>
<t>
Démonstration de $\exp (x+y)=\exp (x) \times \exp (y)$.<br>
Soit $y$ un réel. On définit la fonction $h$ sur $\mathbb{R}$ par $h(x)=\exp (x+y) \times \exp (-x)$.<br>
Pour tout réel $x$, on a :
$$
h^{\prime}(x)=1 \times \exp (x+y) \times \exp (-x)+\exp (x+y) \times(-1) \times \exp (-x)=0
$$
La fonction $h$ est donc constante sur $\mathbb{R}$. Or $h(0)=\exp (y)$.
Ainsi pour tout réel $x, h(x)=\exp (y)$.<br>
On en déduit que, pour tout réel $x, \exp (x+y) \times \exp (-x)=\exp (y)$.<br>
C'est-à-dire $\exp (x+y)=\frac{1}{\exp (-x)} \times \exp (y)$.
Or $\exp (-\boldsymbol{x})=\frac{1}{\exp (\boldsymbol{x})}$ d'après (1). <br>
D'où : $\exp (x+y)=\exp (x) \exp (y)$.
</t>
</s>
<s>
<ex/>
<ul>
<li>
<t>
Montrons l'égalité :
$$\frac{1-\exp(-x)}{1+\exp(-x)}=\frac{\exp(x)-1}{\exp(x)+1}$$
En effet, en <e>multipliant</e> numérateur et dénominateur par $\textcolor{blue}{\exp(x)}$, on a :
$$\frac{(1-\exp(-x))\textcolor{blue}{\exp(x)}}{1+\exp(-x)\textcolor{blue}{\exp(x)}}=\frac{\textcolor{blue}{\exp(x)}-\textcolor{blue}{\exp(x)}\exp(x)}{\textcolor{blue}{\exp(x)}+\textcolor{blue}{\exp(x)}\exp(x)}=\frac{\exp(x)-1}{\exp(x)+1}$$
</t>
</li>
<li>
<t>
Développer et réduire : $A=(\exp(x) +\exp(-x))^2-(\exp(x)-\exp(-x))^2$ :
$$A= \exp(2x) +2 \textcolor{blue}{\exp(x)\exp(-x)}+ \exp(-2x)-(\exp(2x) -2 \textcolor{blue}{\exp(x)\exp(-x)}+ \exp(-2x))=2-(-2)=4 $$
</t>
</li>
</ul>
</s>
<s>
<par>2. Notation puissance</par>
</s>
<s>
<ti>2.1 Définition du nombre $e$</ti>
<d>
<t>
L'image de $1$ par la fonction exponentielle est notée $e$. Ainsi :
$$\exp (1)=e$$
</t>
</d>
<rq/>
<t>
Les propriétés algébriques vues précédemment permettent d'écrire que, pour tout entier relatif $n$, on a :
$$\exp (n)=\exp (1 \times n)=(\exp (1))^n=e^n$$
D'autre part, la fonction exponentielle possède les mêmes propriétés algébriques que les fonctions <e>puissances</e>.<br>
Par exemple, pour tous entiers $n$ et $m$ :
$$
e^{n+m}=e^n \times e^m
$$
</t>
<rq/>
<t>
Par convention, on décide de noter pour tout réel $x: \exp (x)=e^x$.
</t>
</s>
<s>
<p>
<t>
Avec la notation ci-dessus, on a pour tous réels $x$ et $y$ et pour tout entier relatif $n$ :
<ul>
<li>
<t>$e^{-x}=\frac{1}{e^x}$</t>
</li>
<li>
<t>$e^{x+y}=e^x \times e^y$</t>
</li>
<li>
<t>$e^{x-y}=\frac{e^x}{e^y}$</t>
</li>
<li>
<t>$e^{n x}=\left(e^x\right)^n$</t>
</li>
</ul>
</t>
</p>
</s>
<s>
<ti>2.3 Lien avec les suites géométriques</ti>
<p>
<t>
Pour tout réel $a$, la suite ( $e^{n a}$ ) est une suite géométrique.
</t>
</p>
<pr/>
<t>
Soit $a$ un réel, on définit la suite $(u_n)$ par $u_n=e^{n a}$.<br>
Pour tout entier naturel $n$
$$u_{n+1}=e^{(n+1) a}=e^{n a+a}=e^{n a} \times e^a=u_n \times e^a$$
On en déduit que la suite ( $u_n$ ) est une suite <e>géométrique</e> de raison $e^a$ et de premier terme $u_0=e^0=1$.
</t>
</s>
<s>
<ex/>
<t>
La population en millions d'hvabitants du Royaume-Uni peut être modélisé entre 2004 et 2018 par l'expression suivante :
$$f(t)=59,77 e^{0,0074 t}$
où $t$ désigne le nombre d'années écoulées depuis janvier 2004.<br>
Déterminons le taux d'augmentation annuel et mensuel à 0,01 % près:
<ol>
<li>
<t>
Pour le taux annuel, calculons :
$$\frac{f(t+1)}{f(t)}=\frac{59,77 e^{0,0074 (t+1)}}{59,77 e^{0,0074 t}}=\frac{59,77 e^{0,0074 t} e^{0,0074}}{59,77 e^{0,0074 t}}=e^{0,0074}\approx 1,00742$$
Ce qui correspond à une augmentation de 0,74 %.
</t>
</li>
<li>
<t>
Pour le taux mensuel, calculons :
$$\frac{f(t+\frac{1}{12})}{f(t)}=\frac{59,77 e^{0,0074 (t+\frac{1}{12})}}{59,77 e^{0,0074 t}}=\frac{59,77 e^{0,0074 t} e^{0,0074 \times \frac{1}{12}}}{59,77 e^{0,0074 t}}=e^{0,0074}\approx 1,00742$$
Soit une augmentation de 0,6 %.
</t>
</li>
</ol>
</t>
</s>
<s>
<ex/>
<t>
En musique, le rapport d'octave est 2, les fréquences sont données par :
<table>
<thead>
<tr>
<th><strong>Note</strong></th>
<th>do</th>
<th>do♯</th>
<th>ré</th>
<th>mi♭</th>
<th>mi</th>
<th>fa</th>
<th>fa♯</th>
<th>sol</th>
<th>sol♯</th>
<th>la</th>
<th>si♭</th>
<th>si</th>
<th>do</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Fréquence</strong></td>
<td>264</td>
<td>275</td>
<td>297</td>
<td>317</td>
<td>330</td>
<td>352</td>
<td>371</td>
<td>396</td>
<td>412</td>
<td>440</td>
<td>475</td>
<td>495</td>
<td>528</td>
</tr>
</tbody></table>
Retrouvons la fréquence du <e>la</e>, en supposoant que la fréquence d'un note dans l'octave est donnée par :
$$f(x)=264 e^{a x}$$
où $a$ est un réel à déterminer.
Observons que :
$$\frac{f(x+12)}{f(x)} =2$$
Ainsi :
$$\frac{264 e^{a(x+12)}}{264 e^{ax}} = 2 \Rightarrow e^{12 a} = 2 $$
A l'aide de la calculatrice, on voit que l'unique antécédent de 2 par la fonction exponentielle est environ $x \approx 0,693$.
Cela montre que $12a=x$ puis $a= \frac{x}{12} \approx 0,05777$.
La fréquence du <e>la</e> est donc :
$$f(9)=264 e^{0,05777 \times 9} \approx 440$$
</t>
</s>
<s>
<par>3. Etude de la fonction exponentielle</par>
</s>
<s>
<ti>3.1 Signe et sens de variation</ti>
<p>
<t>
La fonction exponentielle est strictement positive sur $\mathbb{R}$.
Ainsi pour tout réel $x$, on a $e^x>0$.
</t>
</p>
<pr/>
<t>
Pour tout réel $x$, on peut écrire $e^x=e^{2 \times \frac{x}{2}}=\left(e^{\frac{x}{2}}\right)^2$.<br>
Le carré $\mathrm{d}^{\prime}$ un nombre réel étant toujours positif, on en déduit que pour tout réel $x, e^x \geqslant 0$.<br>
De plus, on sait que pour tout réel $x, e^x \neq 0$. On a donc $e^x>0$.
</t>
</s>
<s>
<ti>3.2 Stricte croissance</ti>
<p>
<t>
La fonction exponentielle est <e>strictement croissante</e> sur $\mathbb{R}$.
</t>
</p>
<pr/>
<t>
Par définition, on sait que pour tout réel $x$:
$$\exp'(x)=\exp (x)$$
Or, la fonction exponentielle est strictement positive sur $\mathbb{R}$.<br>
Ainsi la fonction exponentielle est strictement croissante sur $\mathbb{R}$.
</t>
</s>
<s>
<rq/>
<t>
Ce résultat permet de résoudre des équations et des inéquations.<br>
Pour tous réels $a$ et $b$ :
</t>
<ul>
<li>
<t>$e^a=e^b \Leftrightarrow a=b$</t>
</li>
<li>
<t>$e^a < e^b \Leftrightarrow a < b$</t>
</li>
</ul>
</s>
<s>
<ti>3.2 Représentation graphique</ti>
<p>
<t>
Allure de la représentation graphique
</t>
</p>
<rq/>
<ul>
<li>
<t>La courbe $\mathscr{C}_{\text {exp }}$ passe par les points de coordonnées $(0 ; 1)$ et $( 1 ; e )$.</t>
</li>
<li>
<t>La courbe $\mathscr{C}_{\text {exp }}$ est entièrement située au-dessus de l'axe des abscisses et ne le coupe jamais.</t>
</li>
</ul>
</s>
<s>
<ti>3.3 Dérivée de la fonction $x \mapsto \exp (a x+b)$</ti>
<p>
<t>
Soient $a$ et $b$ deux réels.
La fonction $f$ définie sur $\mathbb{R}$ par $f(x)=e^{a x+b}$ est dérivable sur $\mathbb{R}$.<br>
De plus, pour tout réel $x$:
$$f^{\prime}(x)=a \times e^{a x+b}$$
</t>
</p>
<pr/>
<t>
Comme $f(x)=\exp (a x+b)$, d'après les formules qui permettent de dériver $g(x+b)$, la fonction $f$ est dérivable sur $\mathbb{R}$ et, pour tout réel $x, f^{\prime}(x)=a \times \exp ^{\prime}(a x+b)=a \times \exp (a x+b)$.
</t>
</s>
<s>
<ex/>
<t>
Etude de la fonction définie sur $\mathbb{R}$ par :
$$f(x)=e^{2x}-2x$$
On observe que $f$ est dérivable sur $\mathbb{R}$ et vérifie :
$$f'(x)=2e^{2x} -2 = 2(e^{2x} - 1) \geq 0 \iff e^{2x} \geq 1 \iff 2x \geq 0 \iff x \geq 0$$
Ainsi, la fonction $f$ est croissante sur $[0;+\infty[$ et décroissante sur $]-\infty;0]$.
Elle admet un minimum en $x=0$ qui vaut $f(0)=e^0-0=1$
</t>
</s>
'''
def make_code(code_str):
lines = code_str.split('\n')
n = len(lines)
sep = '|'.join(f"1-{i}" if i> 1 else "1" for i in range(1, n + 1))
return f'<div class="text-2xl text-left font-bold mb-8 mt-8">Implémentation Python</div>\n<pre><code data-line-numbers="{sep}" class="language-python">{code_str}</code></pre>'
def make_text(txt):
txt = re.sub(r"(<e>(?:.|\s)+?<\/e>)", lambda x: f'<span class="emph">{x.group(1)[3:-4]}</span>', txt)
txt = re.sub(r"(<n>(?:.|\s)+?<\/n>)", lambda x: f'<span class="fragment fade-in">{x.group(1)[3:-4]}</span>', txt)
return txt
def to_fragments(txt):
return re.sub(r"(<t>(?:.|\s)+?<\/t>)", lambda x: f'<div class="text-left">{make_text(x.group(1)[3:-4])}</div>', txt)
def make_objs(t):
return re.sub(r"(<o>(?:.|\s)+?<\/o>)", lambda x: f'<li class="flex items-center fragment fade-right"><span class="w-6 h-6 rounded bg-blue-500 text-white mr-3 flex items-center justify-center">✓</span><div>{x.group(0)[3:-4]}</div></li>', t)
def make_title(t):
t = re.sub(r"(<cha>(?:.|\s)+?<\/cha>)", lambda x: f'<div class ="border-[#A5D7FB] border-t-2 border-b-0 border-l-0 border-r-0 mb-24"></div><div class="font-extrabold text-black text-6xl mb-32 fragment fade-up">{x.group(0)[5:-6]}</div>\n', t)
fmt = '''<div class="display block bg-blue-50 border p-8 mt-12 border-blue-200 border-t-2 border-b-2 border-r-0 border-l-0 h-40 mx-auto fragment fade-up">
<div class="text-xl flex justify-center text-center items-center -mt-14 px-20 mx-64 py-2 rounded-xl bg-blue-500 text-white font-bold">Objectifs du chapitre</div>
<ul class="ml-24 text-lg font-semibold mt-12 pt-8 list-inside list-none space-y-1 columns-2">'''
t = re.sub(r"(<os>(?:.|\s)+?<\/os>)", lambda x: f'''{fmt}{make_objs(x.group(0)[4:-5])}</ul>\n</div>''', t)
return f'<section>{t}<div class="mt-24 flex items-center justify-center"><img width="300" src="/images/ornament1.svg" alt="ornament-down"></div></section>'
def make_section(section):
# proofs, remarks and examples
section = section.replace("<pr/>", '<div class="text-left text-orange-500 font-bold mb-2 fragment fade-in">Preuve</div>')
section = section.replace("<rq/>", '<div class="text-left text-orange-500 font-bold mb-2 fragment fade-in">Remarque</div>')
section = section.replace("<ex/>", '<div class="text-left text-green-500 font-bold mb-2 fragment fade-in">Exemple</div>')
section = section.replace("<li>", '<li class="fragment fade-in">')
# paragraphs
section = re.sub(r"(<par>(?:.|\s)+?<\/par>)", lambda x: f'<div class="text-5xl font-black text-sky-600">{x.group(1)[5:-6]}</div>', section)
# title
section = re.sub(r"(<ti>(?:.|\s)+?<\/ti>)", lambda x: f'<div class="text-3xl text-left font-bold text-sky-600 mb-4 fragment fade-in">{x.group(1)[4:-5]}</div>', section)
# defs
section = re.sub(r"(<d>(?:.|\s)+?<\/d>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-green-50 border-green-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-green-600 font-bold">Définition</div>{to_fragments(x.group(1)[3:-4])}</div>', section)
# props
section = re.sub(r"(<p>(?:.|\s)+?<\/p>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-blue-50 border-blue-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-blue-600 font-bold">Proposition</div>{to_fragments(x.group(1)[3:-4])}</div>', section)
# theos
section = re.sub(r"(<the>(?:.|\s)+?<\/the>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-red-50 border-red-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-red-600 font-bold">Théorème</div>{to_fragments(x.group(1)[5:-6])}</div>', section)
# simple txts
section = to_fragments(section)
# python snippet
section = re.sub(r"(<py>(?:.|\s)+?<\/py>)", lambda x: make_code(x.group(0)[4:-5].strip()), section)
return section
def make_slide(slide):
title, *sections = re.findall(r"(?<=<s>)(?:.|\s)+?(?=<\/s>)", slide)
slides = '\n\n'.join(f"<section>{make_section(section)}</section>" for section in sections)
return f"{make_title(title)}\n\n{slides}"
html = make_slide(slide)
print(html)
To embed this program on your website, copy the following code and paste it into your website's HTML: