コード例 #1
0
def pythagore4(fileExercices, fileCorrections):
    """En connaissant les longueurs des 3 côtés d'un triangle, montrer qu'il est rectangle."""
    
    a = random.randint(1, 15)
    b = random.randint(1, 15)
    c = sqrt(a ** 2 + b ** 2)
    ac = a**2
    bc = b**2
    cc = c**2
    sumSq = ac + bc
    c = round(c, 3)

    main = r'''\exo{Théorème de Pythagore}%
ABC est un triangle.\\%
AB = \{a} cm.\\%
AC = \{b} cm.\\%
BC = \{c} cm.\\%
ABC est-il rectangle ? (Si les valeurs sont juste à 1 chiffre après la virgule, cela sera suffisant).\\%
'''
    mainC = r'''\cor{Théorème de Pythagore}%
BC est le plus grand côté.\\%
BC$^2$ = \{c}$^2$\\%
BC$^2$ = \{cc}\\%
AB$^2$ + AC$^2$ = \{ac} + \{bc}\\%
AB$^2$ + AC$^2$ = \{sumSq}\\%
'''
    if sumSq != cc:
        mainC += r'''\`{A} 1 chiffre après la virgule près, on a :\\%
'''
    mainC += r'''BC$^2$ = AB$^2$ + AC$^2$\\%
Donc, d'après la réciproque du théorème de Pythagore ABC est rectangle en B.\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #2
0
def cosinus6(fileExercices, fileCorrections):
    """Calculez les mesures manquantes à partir de deux mesures données."""
    
    AC = random.randint(5, 30)
    theta = random.randint(10, 80)
    alpha = 90 - theta
    thetaR = theta * 2 * pi / 360
    alphaR = pi / 2 - thetaR
    CH = AC * cos(thetaR)
    BC = round(CH / cos(alphaR), 2)
    BH = BC * cos(thetaR)
    
    main = r'''
\exo{Mesures manquantes}%
\begin{minipage}{0.6\textwidth}%
ABC est le triangle ci-contre.\\%
AC = \{AC} cm et l'angle $\alpha$ mesure \{alpha}°\\%
Combien mesure BH ?\\%
\end{minipage}%
\begin{minipage}{0.3\textwidth}%
\includegraphics[width = \textwidth]{imagesQuatrieme/PythagoreDoubleTriangleA.png}%
\end{minipage}\\%
'''
    mainC = r'''\cor{Mesures manquantes}%
La somme des angles dans un triangle mesurant 180°, l'angle $\theta$ mesure \{theta}°\\%
cos($\theta$)=$\dfrac{CH}{AC}$\\%
Donc, CH = AC $\times$ cos($\theta$) $\simeq$ \{CH} cm\\%
cos($\alpha$)=$\dfrac{CB}{CH}$\\%
Donc, BC = $\dfrac{CH}{cos(\theta)} \simeq$ \{BC} cm\\%
cos($\theta$)=$\dfrac{BC}{BH}$\\%
Donc, BH = $\dfrac{BC}{cos(\theta)} \simeq$ \{BH} cm\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #3
0
def positionPlanetes(fileExercices, fileCorrections):
    """Exo sur l'ordre des planètes."""
    planetes = [("Mercure", 1), ("Venus", 2), ("Terre", 3), ("Mars", 4), ("Jupiter", 5), ("Saturne", 6), ("Uranus", 7), ("Neptune", 8)]
    planete1 = random.choice(planetes)
    planetes.remove(planete1)
    planete2 = random.choice(planetes)
    planetes.remove(planete2)
    planete3 = random.choice(planetes)

    planetesOrd = [planete1, planete2, planete3]
    planetesOrd.sort(key=lambda planet: planet[1])

    main = r'''\titledquestion{L'ordre des planètes : }
Rangez, du plus proche au plus éloigné du Soleil, ces différentes planètes :\\
\{planete1[0]}, \{planete2[0]} et \{planete3[0]}.
\tabComp{D4}
\begin{solutionordottedlines}[2cm]
En partant du Soleil, la planète \{planete1[0]} est la \{planete1[1]}$^{\text{ième}}$ planète, la planète \{planete2[0]} la \{planete2[1]}$^{\text{ième}}$ et la planète \{planete3[0]} 
la \{planete3[1]}$^{\text{ième}}$. Nous avons donc l'ordre suivant : \{planetesOrd[0][0]}, \{planetesOrd[1][0]} puis \{planetesOrd[2][0]}. 
\end{solutionordottedlines}
'''
    mainC = '''
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #4
0
def cosinus4(fileExercices, fileCorrections):
    """Calcul de la longueur de l'hypoténuse d'un triangle en connaissant l'angle (beta) et le côté adjacent."""
    
    a = random.randint(5, 30)
    b = random.randint(10, 80)
    br = b * 2 * pi / 360
    
    c = round(a / cos(br), 2)
    
    main = r'''
\exo{Cosinus}%
\begin{minipage}{0.6\textwidth}%
ABC est le triangle ci-contre.\\%
BC = \{a} cm et l'angle $\beta$ mesure \{b}\textdegree\\%
Combien mesure AB ?\\%
\end{minipage}%
\begin{minipage}{0.3\textwidth}%
\includegraphics[width = \textwidth]{imagesQuatrieme/triangleRectangle.png}%
\end{minipage}\\%
'''
    mainC = r'''\cor{Cosinus}%
cos($\beta$)=$\dfrac{BC}{AB}$\\%
Donc, AC = $\dfrac{AB}{cos(\beta)}$\\%
AC $\simeq$ \{c} cm\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #5
0
def tableauDeSigneBasique(fileExercices, fileCorrections):
    main = r'''Tracez le tableau de signe de :
'''
    # mainC = tableauSigne(3, [(2, 3), (-2, 2), (1, -1), (7, -2), (1, 7), (-3, 4), (6, -1), (12, 1), (-9, 2)])
    mainC = tableauSigne(3, [(2, 3), (-2, 2), (1, -1)])
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #6
0
def tableauDeSigneUn2(fileExercices, fileCorrections):
    """Tableau de signe simple avec une seule expression du premier degré ax+b < 0"""

    VAnnul = 1 / 3
    a, b = 0, 0

    while VAnnul != round(VAnnul, 3):
        a1 = random.randint(2, 6)
        a2 = random.randint(-6, -2)
        a = np.random.choice([a1, a2])
        b1 = random.randint(1, 6)
        b2 = random.randint(-6, -1)
        b = np.random.choice([b1, b2])
        bAbs = abs(b)
        VAnnul = -b / a

    posNeg = 'négative'
    negPos = 'positive'
    posNegM = 'négatif'
    if a > 0:
        posNeg = 'positive'
        negPos = 'négative'
        posNegM = 'négatif'

    if b > 0:
        signB = ' + '
    else:
        signB = ' - '
    if a > 0:
        signA = ' + '
        signMA = ' - '
    else:
        signA = ' - '
        signMA = ' + '

    main = r'''\exo{Tableau de Signes}%
\begin{enumerate}%' + '\n'
\item Tracez le tableau de signes de la fonction $f$ définie par : $f(x) = \{a}x \{signB} \{bAbs}$%
\item En déduire les valeurs pour lesquelles $f(x) < 0$%
\end{enumerate}%
'''
    mainC = r'''\cor{Tableau de Signes}%
\begin{enumerate}%
\item La valeur de $x$ pour laquelle $f(x) = 0$ est \{VAnnul}.\\%
Le coefficient devant $x$ est \{posNegM}, donc la fonction sera \{posNeg} après \{VAnnul}
et \{negPos} avant.\\
On a donc le tableau de signes suivant :\\%
'''
    mainC += tableauSigneAffine(a, b)
    if a > 0:
        mainC += r'''\item On peut en déduire que $f(x) < 0$ pour $x\in\interval[open]{-\infty}{\{VAnnul}}$%
'''
    else:
        mainC += r'''\item On peut en déduire que $f(x) < 0$ pour $x\in\interval[open]{\{VAnnul}}{+\infty}$
'''
    mainC += r'''\end{enumerate}%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #7
0
def phasesLune(fileExercices, fileCorrections):

    phases = random.choice(["premier quartier", "dernier quartier"])
    eclipses = random.choice(["Soleil", "Lune"])
    moment = "nuit"
    phaseEclipse = "pleine Lune"
    if eclipses == "Soleil":
        moment = "journée"
        phaseEclipse = "nouvelle Lune"


    main = r'''\titledquestion{Le système Terre - Lune - Soleil : }
\begin{parts}
\part Faites un dessin de la Lune lors de la phase "\{phases}" (en "blanc" pour la partie visible et en noir ou bleu pour la partie non visible).\\
\begin{solution}[2cm]
\begin{center}'''

    if phases == "premier quartier":
        main += r'''\includegraphics[height = 2cm]{cinquiemes/Mouvement/images/PQ.png}
'''
    else :
        main += r'''\includegraphics[height = 2cm]{cinquiemes/Mouvement/images/DQ.png}
'''

    main += r'''
\end{center}
\end{solution}

\part Expliquez, avec vos propres mots et à l'aide d'un schéma, pourquoi nous voyons la Lune de cette manière.\\
\begin{minipage}{0.4\textwidth}
\begin{solutionordottedlines}[7.3cm]
Comme montré sur le schéma ci-contre, lorsque la Lune est dans la phase de \{phases}, nous voyons, depuis la Terre, une partie de la face éclairée 
de la Lune et une partie de la face non éclairée, ce qui nous apparaît donc être un quartier de Lune.
\end{solutionordottedlines}
\end{minipage}
\begin{minipage}{0.6\textwidth}
\begin{solutionorbox}[7.3cm]
\includegraphics[width = \textwidth]{cinquiemes/Mouvement/images/cycle.png}
\end{solutionorbox}
\end{minipage}

\part Durant quelle phase de la Lune peut-on voir une éclipse de \{eclipses} ? (Justifiez)\\
\begin{solutionordottedlines}[2cm]
D'après le schéma de la question précédente, une éclipse de \{eclipses} est visible seulement durant la \{phaseEclipse}.
\end{solutionordottedlines}

\part Cela se passe-t-il la journée ou la nuit ? (Justifiez)\\
\begin{solutionordottedlines}[1.5cm]
D'après le schéma et la réponse de la question précédente, une éclipse de \{eclipses} doit forcément se produire la \{moment}. En effet, un astre doit être visible pour être éclipsé.
\end{solutionordottedlines}
\end{parts}

\tabComp{D4}{D1}
'''
    mainC = '''
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #8
0
def distancesLatitudesLongitudes(fileExercices, fileCorrections):
    """Exo calcul distance entre points dont on connaît les coordonnées GPS."""
    latitudeA = random.randint(600, 900)/10
    latitudeB = random.randint(1, 299) / 10
    longitudeA = random.randint(1, 300) / 10
    longitudeB = random.randint(600, 900) / 10
    difLat = round(latitudeA - latitudeB, 1)
    rayonTerre = 6370
    circonferenceTerre = floor(2*pi*rayonTerre)
    rayonParallele = floor(rayonTerre * cos(latitudeB*pi/180))
    circonferenceParallele = floor(circonferenceTerre * cos(latitudeB*pi/180))
    distanceAB = floor(difLat*circonferenceTerre/360)
    difLong = round(longitudeB - longitudeA, 1)
    distanceBC = floor(difLong * circonferenceParallele / 360)

    main = r'''\titledquestion{Distances sur Terre : }
Nous ne connaissons que les coordonnées GPS de trois points (A, B et C) sur la Terre. En utilisant les données 
ci-dessous, répondez aux questions suivantes.\\
\textbf{DONNÉES : A(\{latitudeA}$^{\circ}$N; \{longitudeA}$^{\circ}$E), 
B(\{latitudeB}$^{\circ}$N; \{longitudeA}$^{\circ}$E), 
C(\{latitudeB}$^{\circ}$N; \{longitudeB}$^{\circ}$E). \\
Rayon de la Terre : R$_T$= 6370~km. Longueur d'un méridien L$_m$= 40023~km.\\}
\begin{parts}
\part Placez les villes A, B et C sur la carte ci-dessous :
\begin{center}
\includegraphics[width = 0.8\textwidth]{enseignementScientifique1ere/LaFormeDeLaTerre/GeodesieNB.png}
\end{center}

\part Quelle est la distance entre les points A et B ? Justifier votre réponse.
\begin{solutionordottedlines}[4cm]
Les villes A et B sont sur le même méridien. La longueur du méridien est de $2 \times \pi \times \text{R}_T \simeq$ 
\{circonferenceTerre}~km. La différence de latitude entre les villes A et B est de \{difLat}$^{\circ}$. En faisant une 
règle de 3, on trouve une distance d'environ \{distanceAB}~km.
\end{solutionordottedlines}

\part Calculer la longueur du parallèle \{latitudeB}$^{\circ}$N :
\begin{solutionordottedlines}[5cm]
Le parallèle \{latitudeB}$^{\circ}$N a une longueur égale à $L_p = L_m \times \text{cos}(\{latitudeB}^{\circ}) \simeq \{circonferenceParallele}$ km.
\end{solutionordottedlines}

\part Quelle est la distance entre les points B et C ? Justifier votre réponse.
\begin{solutionordottedlines}[5cm]
Les villes B et C sont sur le même parallèle. Le rayon du parallèle \{latitudeB}$^{\circ}$N est de 
$\text{R}_p = \text{R}_T \times \text{cos}(\{latitudeB}) \simeq \{rayonParallele}~km$. La longueur du parallèle est donc 
de $2 \times \pi \times \text{R}_p \simeq$ \{circonferenceParallele}~km. La différence de longitude entre les villes 
B et C est de \{difLong}$^{\circ}$. En faisant une règle de 3, on trouve une distance d'environ \{distanceBC}~km.
\end{solutionordottedlines}




\end{parts}
'''

    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #9
0
def EnergieOuPuissance(fileExercices, fileCorrections):
    """Calcul de l'énergie rayonnée par une étoile pendant une certaine durée en connaissant la puissance rayonnée par l'étoile."""
    exposant = random.randint(21, 24)
    coeff = round(random.uniform(1.2, 9.8), 1)
    P = coeff * 10**exposant  #puissance rayonnée par l'étoile
    pT = fonctionsSimplifiantes.notation_scientifique(P, 1)
    t = random.choice([
        60, 3600, 3600 * 24
    ])  #temps en seconde pendant lequel on veut connaître l'énergie rayonnée
    E = P * t
    eT = fonctionsSimplifiantes.notation_scientifique(E, 1)
    etoile = random.choice([
        'Sirius', 'Achernar', 'Rigal', ' Mira', 'Crucis', 'Altair',
        'Beltelgeux', 'Vega', 'Antares', 'R. Hydrae', 'Canopus', 'Arcturus',
        'Capella'
    ])
    duree = 'minute'
    unune = 'Une'
    if t == 3600:
        duree = 'heure'
        unune = 'Une'
    elif t == 3600 * 24:
        duree = 'jour'
        unune = 'Un'
    main = r'''
%Premier exercice
\titledquestion{Énergie ou puissance : }
L'étoile \{etoile} rayonne une puissance de $\{pT}~\si{W}$.
\begin{parts}
\part[5] Calculer l'énergie, $\Delta E$, rayonnée par \{etoile} chaque \{duree}.\\
\textbf{\underline{DONNEE} :} \{unune} \{duree} = \{t} secondes.
\begin{solutionordottedlines}[4cm]
\{etoile} rayonne une puissance de $\{pT}~\si{\watt}$. On sait que l'énergie rayonnée, $\Delta E$, 
par un objet rayonnant une puissance $P$ durant un intervalle de temps $\Delta t$ est obtenue par la formule 
$\Delta E = P \times \Delta t$. Donc, chaque seconde, elle rayonne une énergie 
$\Delta E = \{pT}~\si{\watt} \times 1~\si{\second} = \{pT}~\si{\joule}$. 
Chaque \{duree}, l'énergie rayonnée par \{etoile} sera donc égale à 
$\Delta E = \{pT}~\si{\joule} \times \{t} \simeq \{eT}~\si{\joule}$
\end{solutionordottedlines}
\part[5] En déduire la masse perdue par \{etoile} chaque \{duree}.\\
\textbf{\underline{DONNEE} :} $\Delta E = \Delta m \times c^2$.
\begin{solutionordottedlines}[4cm]
Chaque \{duree}, \{etoile} rayonne $\{eT}~\si{\joule}$. La relation d'Einstein $\Delta E = \Delta m \times c^2$, 
que l'on peut aussi écrire $\Delta m = \dfrac{\Delta E}{c^2}$ nous permet de calculer la masse perdue par 
l'étoile \{etoile} chaque \{duree}.\\
Chaque \{duree} la perte de masse $\Delta m = \dfrac{\{eT}~\si{\joule}}{(300000~\si{\km \per \second})^2}= 
\dfrac{\{eT}~\si{\joule}}{(3\times 10^8~\si{\meter \per \second})^2}$. 
Soit $\Delta m \simeq \{notation_scientifique((P*t)/(3*10**8),1)}~\si{\kilogram}$
\end{solutionordottedlines}
\end{parts}
'''
    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #10
0
def triangulation(fileExercices, fileCorrections):
    """Exo calcul distance entre points dont on connaît les coordonnées GPS."""
    angleA = random.randint(51, 70)
    angleBa = random.randint(30, 50)
    angleCa = 180 - angleA - angleBa
    angleBb = random.randint(51, 70)
    angleCb = random.randint(30, 50)
    angleD = 180 - angleCb - angleBb
    AB = random.randint(11, 19)
    BC = round(AB * sin(angleA * pi / 180) / sin(angleCa * pi / 180), 1)
    CD = round(BC * sin(angleBb * pi / 180) / sin(angleD * pi / 180), 1)

    main = r'''\titledquestion{Mesure par triangulation : }
La but de cet exercice est de calculer la longueur de CD en ayant au préalable mesuré la 
longueur AB et en ayant toutes les mesures d'angles nécessaires.

\begin{minipage}{0.33\textwidth}
\includegraphics[width = 0.9\textwidth]{enseignementScientifique1ere/LaFormeDeLaTerre/ABCD.png}
\end{minipage}
\begin{minipage}{0.33\textwidth}
Données :\\
$\widehat{\mathrm{CAB}} = \{angleA}^{\circ}$\\
$\widehat{\mathrm{ABC}} = \{angleBa}^{\circ}$\\
$\widehat{\mathrm{CBD}} = \{angleBb}^{\circ}$\\
$\widehat{\mathrm{BCD}} = \{angleCb}^{\circ}$\\
AB = \{AB}~km\\

\end{minipage}
\begin{minipage}{0.33\textwidth}
\includegraphics[width = 0.9\textwidth]{enseignementScientifique1ere/LaFormeDeLaTerre/loiSinus.png}
\end{minipage}
\begin{parts}
\part Calculez les valeurs des angles $\widehat{\mathrm{ACB}}$ et $\widehat{\mathrm{CDB}}$.
\begin{solutionordottedlines}[4cm]
$\widehat{\mathrm{ACB}} = \{angleCa}^{\circ}$\\
$\widehat{\mathrm{CDB}} = \{angleD}^{\circ}$\\
\end{solutionordottedlines}

\part En utilisant la loi des sinus, calculez la longueur BC.
\begin{solutionordottedlines}[4cm]
BC = \{BC}~km.
\end{solutionordottedlines}

\part En utilisant la loi des sinus, calculez maintenant la longueur CD.
\begin{solutionordottedlines}[4cm]
CD = \{CD}~km.
\end{solutionordottedlines}
\end{parts}
'''

    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #11
0
def eratosthene(fileExercices, fileCorrections):
    """Exo calcul circonférence à partir de l'angle entre deux points et de leur distance."""
    planete = random.choice(["Arcas", "Orbitar", "Intercrus", "Fafnir", "Helvetios", "Aldébaran", "Cancri",
                             "Chamelopardis", "Fomalhaut", "Gliese", "Smertrios", "Ogme"])
    distance = random.randint(600, 3000)
    ombre = random.randint(500, 899)
    ombre = ombre/1000
    angle = atan(ombre)*360/(2*pi)
    angle = round(angle, 2)
    circonference = floor(360*distance/angle)

    main = r'''\titledquestion{Méthode d'Ératosthène : }
Sur la planète \{planete}, deux villes sont le long d'un même méridien. Dans la première ville nommée A, le Soleil 
éclaire le fond d'un puit lors du solstice d'été à midi. Sur cette même planète, mais dans une autre ville, B, 
plus au Nord, un bâton de 1~m de haut fait une ombre sur le sol d'une longueur de \{ombre}~m.
\begin{parts}
\part Faire un schéma représentant la situation décrite dans l'exercice.
\begin{solutionorbox}[11cm]
\begin{center}
\includegraphics[width = 0.75\textwidth]{enseignementScientifique1ere/LaFormeDeLaTerre/eratosthene.png}
\end{center}
\end{solutionorbox}

\part L'angle entre les rayons du Soleil et le bâton planté dans le sol est de \{angle}$^{\circ}$.\\
Placez cet angle sur le schéma.\\





\part En déduire l'angle entre la ville A, le centre de la Terre et la ville B. Justifiez

\begin{solutionordottedlines}[2cm]
Les rayons du Soleil étant parallèles, l'angle entre la ville A, le centre de la Terre et la ville B est égal à 
l'angle entre les rayons du Soleil et le bâton planté dans le sol, soit \{angle}$^{\circ}$.
\end{solutionordottedlines}

\part Sachant que la distance entre A et B est de \{distance}~km, en déduire la circonférence de la 
planète \{planete}.\\
\begin{solutionordottedlines}[2cm]
Sachant qu'un tour complet représente 360$^{\circ}$, que la distance entre les villes est de \{distance}~km 
et qu'un angle de \{angle}$^{\circ}$ est formé par 
$\widehat{\mathrm{AOB}}$, une règle de 3 nous permet de conclure que la circonférence de \{planete} est 
d'environ \{circonference}~km.\\
\end{solutionordottedlines}

\end{parts}
'''

    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #12
0
def vitessePlanete(fileExercices, fileCorrections):

    planete = random.choice(["Arcas", "Orbitar", "Intercrus", "Fafnir", "Helvetios", "Aldébaran", "Cancri", "Chamelopardis", "Fomalhaut", "Gliese", "Smertrios", "Ogme"])
    rayon = random.randint(100, 1500)
    periodeAn = random.randint(2, 60)
    periodeJour = random.randint(35, 249)
    duree = periodeAn*365.25 + periodeJour
    distance = 2*pi*rayon
    distance = round(distance, 5)
    vitesse1 = round(distance/duree, 5)
    vitesse2 = round(vitesse1*1000000/24, 5)

    main = r'''\titledquestion{Vitesse d'une planète : }
La planète \{planete} se trouve à une distance moyenne de son étoile de \{rayon} millions de km. Sa période de révolution est de \{periodeAn} ans et \{periodeJour} jours.

\begin{parts}
\part Rappelez la définition d'une révolution.\\
\begin{solutionordottedlines}[2cm]
Mouvement orbital périodique d'un corps céleste, en particulier d'une planète ou d'un satellite, autour d'un autre d'une plus grande masse. Dans notre cas, d'une planète autour de son soleil.
\end{solutionordottedlines}

\part Quelle distance parcourt \{planete} au cours d'une révolution ?\\
\begin{solutionordottedlines}[5cm]
Les planètes ont des orbites quasi circulaire. La distance parcourue correspond donc au périmètre du cercle. Ce cercle a pour rayon la distance séparant la planète à son soleil.
On a donc $\text{rayon} = \{rayon} \text{ millions de km}$. Et la distance parcourue est donc de :\\
$\text{Distance} = 2 \times \pi \times \text{rayon} = 2 \times \pi \times \{rayon} \simeq \{distance} \text{ millions de km}$.
\end{solutionordottedlines}

\part Quelle est la période, en jour de la révolution de \{planete} ?\\
\begin{solutionordottedlines}[5cm]
On nous dit que sa période de révolution est de \{periodeAn} ans et \{periodeJour} jours. On a donc une durée de :\\
$\text{Durée} = \{periodeAn} \text{ ans} + \{periodeJour} \text{ jours} = \{periodeAn} \times \textcolor{red}{365,25 \text{ jours}} + \{periodeJour} \text{ jours} = \{duree} \text{ jours}$. 
\end{solutionordottedlines}

\part En déduire la vitesse en km/h de la planète \{planete} lors de son déplacement autour de son soleil.\\
\begin{solutionordottedlines}[5cm]
Nous savons que la vitesse se calcule grâce à la formule $\text{vitesse} = \dfrac{\text{Distance}}{\text{Durée}}$. On a donc, pour notre planète :\\
$\text{Vitesse} = \dfrac{\{distance} \text{ millions de km}}{\{duree} \text{ jours}} = \dfrac{\{vitesse1}~\text{\textcolor{red}{millions} de km}}{\textcolor{red}{\text{jour}}}$.\\  
Soit $\text{Vitesse} =\dfrac{\{vitesse1} \times \text{\textcolor{red}{ 1 000 000} de km}}{\textcolor{red}{24~\text{h}}} \simeq \{vitesse2} \dfrac{\text{km}}{\text{h}} $. 
\end{solutionordottedlines}
\end{parts}

\tabComp{D4}{D1}
'''
    mainC = '''
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #13
0
ファイル: exosSeconde.py プロジェクト: gmartrou/exoAleatLatex
def exercice(fileExercices, fileCorrections):
    """Description de l'exercice."""

    # Définition des variables.

    # Fin des variables.

    # Enoncé de l'exercice.
    main = r'''\exo{Nom de l'exercice}
'''
    # Fin de l'énoncé.

    # Fichier texte de la correction.
    mainC = r'''\cor{Nom de l'exercice}
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #14
0
def vecteursParall2(fileExercices, fileCorrections):
    """Exo vecteur (prouver qu'il ne s'agit pas d'un parallèlogramme)"""

    xA = random.randint(-5, -1)
    yA = random.randint(-5, -1)
    xB = random.randint(-5, -1)
    yB = random.randint(1, 5)
    xC = random.randint(1, 5)
    yC = random.randint(1, 5)
    xD = xA + xC - xB
    yD = yA + yC - yB

    perturbation = [-2, -1, 1, 2]
    xD += np.random.choice(perturbation)
    yD += np.random.choice(perturbation)

    xBA = xA - xB
    yBA = yA - yB
    xCD = xD - xC
    yCD = yD - yC

    main = r'''\exo{Vecteurs et parallèlogrammes.}%
Dans le plan muni d'un repère $\left( {{\mathrm{O}};\vec{\imath},
\vec{\jmath}} \right)$, on considère les points $A\left(\{xA}; \{yA}\right)$, $B\left(\{xB}; \{yB}
\right)$, $C\left(\{xC}; \{yC}\right)$ et $D\left(\{xD}; \{yD}\right)$.\\%
Le quadrilatère ABCD est-il un parallèlogramme ?%
'''
    mainC = r'''\cor{Vecteurs et parallèlogrammes.}%
'''
    mainC = fonctionsSimplifiantes.repereDebut(mainC, -6, -8, 9, 6)
    mainC += r'''\path[draw, red] (\{xA}, \{yA})  coordinate [label= left:$A$] (A) --
(\{xB}, \{yB})  coordinate [label=above:$B$] (B) -- (\{xC}, \{yC})  coordinate [label=right:$C$] (C) --
(\{xD}, \{yD})  coordinate [label=right:$D$] (D) -- cycle;%
'''
    mainC = fonctionsSimplifiantes.repereFin(mainC)
    mainC += r'''$\coordv{BA}{x_A - x_B}{y_A - y_B}$. Donc, $\coordv{BA}{\{xA} - (\{xB})}{\{yA} - \{yB}}$.
Ainsi, $\coordv{BA}{\{xBA}}{\{yBA}}$\\%

$\coordv{CD}{x_D - x_C}{y_D - y_C}$. Donc, $\coordv{CD}{\{xD} - \{xC}}{\{yD} - \{yC}}$.
Ainsi, $\coordv{CD}{\{xCD}}{\{yCD}}$\\%

$\vv{BA} \neq \vv{CD}$, donc, ABCD n'est pas un parallèlogramme.%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #15
0
def conducteurIsolant(fileExercices, fileCorrections):
    """Exo sur """
    materiaux = ["règle en fer", "cannette en aluminium", "paille en plastique", "table en bois",
                 "règle en plastique", "boîte en carton", "règle en aluminium"]
    materiau = random.choice(materiaux)

    main = r'''\titledquestion{À quoi peut bien servir ce circuit ?}
Le schéma ci-dessous représente un circuit créé par un élève pour tester les matériaux qui l'entourent.

\begin{center}
\includegraphics[width = 0.8\textwidth]{cinquiemes/Energie/testConductivite.png}
\end{center}

\tabComp{D4}
\begin{parts}
\part Qu'est-ce que cet élève veut tester avec son circuit ?
\begin{solutionordottedlines}[2cm]
Il veut tester si les matériaux sont conducteurs ou isolant.
\end{solutionordottedlines}

\part Quel dipôle, qu'il est préférable de placer dans tous les circuits, n'a pas été placé dans ce circuit ?
\begin{solutionordottedlines}[2cm]
Il manque l'interrupteur dans ce circuit.
\end{solutionordottedlines}

\part À quoi servirait ce dipôle ?
\begin{solutionordottedlines}[2cm]
Il sert à éviter les court-circuit, c'est une mesure de sécurité.
\end{solutionordottedlines}

\part Que se passerait-il si on plaçait, pour la tester, une \{materiau} ?
\begin{solutionordottedlines}[2cm]
\end{solutionordottedlines}

\part Qu'est ce que cela nous apprend sur la \{materiau} ?
\begin{solutionordottedlines}[2cm]
\end{solutionordottedlines}
\end{parts}
'''
    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #16
0
def equation3(fileExercices, fileCorrections):
    """Exercice type de calcul du nombre d'enfants et d'adultes en fonction
    de la recette d'une salle de spectacle."""
    
    nP = random.randint(100, 400)   # Nombre de personnes.
    nA = random.randint(1, nP - 1)  # Nombre d'adultes.
    nE = int(nP - nA)               # Nombre d'enfants.
    pE = random.randint(2, 7)       # Prix de la place enfant.
    pA = random.randint(8, 13)      # Prix de la place adulte.
    rE = int(nE*pE)                 # Recette due aux enfants.
    rA = int(nA*pA)                 # Recette due aux adultes.
    tot = pE * nE + pA * nA         # Recette totale.
    totA = pA * nP                  # Recette totale si seulement des adultes étaient présents.
    peMpa = pE - pA
    totMtota = tot - totA
    
    main = r'''\exo{Résolution d'équation}%
\{nP} personnes vont à un spectacle.\\%
Les adultes payent \{pA} € la place et les enfants \{pE} €.\\%
La recette de la salle est de \{tot} €.\\%
Combien d'enfants étaient présents ?\\%
'''
    mainC = r'''\cor{Résolution d'équation}%
Notons $x$:"Le nombre d'enfants"\\%
Notons $y$:"Le nombre d'adultes"\\%
On a les deux équations suivantes : %
\begin{equation*}%
\begin{cases}%
x + y = \{nP}\\%
\{pE}x + \{pA} y = \{tot}%
\end{cases}%
\end{equation*}%
On remplace $y$ par \{nP} - $x$ (Cela permet de garder seulement l'inconnue que l'on cherche)\\%
$\{pE} x + \{pA}(\{nP} - x) = \{tot}$\\%
On développe : $\{pE} x + \{pA} \times \{nP} - \{pA} x = \{tot}$\\%
$\{peMpa} x + \{totA} = \{tot}$\\%
On retire \{totA} de chaque côté : $\{peMpa} x = \{totMtota}$\\%
On divise par \{peMpa} de chaque côté : $x = \dfrac{\{totMtota}}{\{peMpa}}$\\%
$x = \{nE}$\\%
Il y avait \{nE} enfants présents.\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #17
0
def pythagore5(fileExercices, fileCorrections):
    """En connaissant les longueurs des 3 côtés d'un triangle, dire s'il est ou non rectangle (en
    général, il ne l'est pas)."""
    
    a = random.randint(1, 15)
    b = random.randint(1, 15)
    if random.random() > 0.5:
        c = sqrt(a ** 2 + b ** 2) + random.random()
    else:
        c = sqrt(a ** 2 + b ** 2) - random.random()
    c = round(c, 3)
    ac = a**2
    bc = b**2
    cc = c**2
    sumSq = ac + bc
    
    main = r'''\exo{Théorème de Pythagore}%
ABC est un triangle.\\%
AB = \{a} cm.\\%
AC = \{b} cm.\\%
BC = \{c} cm.\\%
ABC est-il rectangle ? (Si les valeurs sont juste \`{a} 1 chiffre après la virgule, c'est bon)\\%
'''
    mainC = r'''\cor{Théorème de Pythagore}%
BC est le plus grand côté.\\%
BC$^2$ = \{c}$^2$\\%
BC$^2$ = \{cc}\\%
AB$^2$ + AC$^2$ = \{ac} + \{bc}\\%
AB$^2$ + AC$^2$ = \{sumSq}\\%
'''
    
    if sumSq == c**2:
        mainC += r'''\`{A} 1 chiffre après la virgule près, on a :\\%
BC$^2$ = AB$^2$ + AC$^2$\\%
Donc, d'après la réciproque du théorème de Pythagore ABC est rectangle en B.\\%
'''
    else:
        mainC += r'''On a :\\%
BC$^2$ $\neq$ AB$^2$ + AC$^2$\\%
Donc, d'après la contraposée du théorème de Pythagore ABC n'est pas rectangle.\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #18
0
def centraleElectrique(fileExercices, fileCorrections):
    """Exo sur la construction d'une chaîne d'énergie d'une centrale électrique classique."""
    energies = ["pétrole", "gaz naturel", "charbon"]
    energie = random.choice(energies)
    energies.remove(energie)

    main = r'''\titledquestion{Une centrale classique : }
Le schéma ci-dessous représente le fonctionnement d'une centrale électrique classique. Son combustible est le 
\textbf{\{energie}}. 

\begin{center}
\includegraphics[width = 0.4\textwidth]{cinquiemes/Energie/centraleThermique.png}
\end{center}

\tabComp{D4}
\begin{parts}
\part Construis une chaîne d'énergie en y plaçant les 4 formes d'énergie et les 3 convertisseurs appropriés 
correspondants au fonctionnement de la centrale électrique classique fonctionnant au \{energie}.
\begin{solutionorbox}[5cm]
Cela signifie que le \{energie} peut être trouvé tel quel dans la nature.
\end{solutionorbox}

\part Le \{energie} est une source d'énergie primaire. Qu'est-ce que cela signifie ?
\begin{solutionordottedlines}[2cm]
Cela signifie que le \{energie} peut être trouvé tel quel dans la nature.
\end{solutionordottedlines}

\part Citez deux sources d'énergie primaire renouvelables.
\begin{solutionordottedlines}[2cm]
Soleil et vent.
\end{solutionordottedlines}

\part Citez deux sources d'énergie primaire non renouvelables (autre que le \{energie}).
\begin{solutionordottedlines}[2cm]
Le \{energies[0]} et le \{energies[1]} sont des sources d'énergie primaire renouvelables.
\end{solutionordottedlines}
\end{parts}
'''
    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #19
0
ファイル: exosSeconde.py プロジェクト: gmartrou/exoAleatLatex
def exerciceDemo(fileExercices, fileCorrections):
    """Description de l'exercice."""

    # Définition des variables.
    a = 2
    b = 3
    # Fin des variables.

    # Enoncé de l'exercice.
    main = r'''\exo{Exo démo}
J'ai achété \{a} pommes et\{b} poires.
Combien ai-je acheté de fruits ?
'''
    # Fin de l'énoncé.

    # Fichier texte de la correction.
    mainC = r'''\cor{Nom de l'exercice}
J'ai acheté \{a}+\{b} = \{a+b} fruits.
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #20
0
def tableauDeSigneUn1(fileExercices, fileCorrections):
    """Tableau de signe simple avec une seule expression du premier degré ax+b <= 0"""
    a, b = -1, -1

    while a in [-1, 0, 1] or b == 0 or -b / a != round(-b / a, 3):
        a = random.randint(-6, 6)
        b = random.randint(-6, 6)

    posNeg = 'négative'
    negPos = 'positive'
    posNegM = 'négatif'
    if a > 0:
        posNeg = 'positive'
        negPos = 'négative'
        posNegM = 'positif'

    main = r'''\exo{Tableau de Signes}%
\begin{enumerate}%' + '\n'
\item Tracez le tableau de signes de la fonction $f$ définie par : $f(x) = \{a}x \{signT(b)} \{abs(b)}$%
\item En déduire les valeurs pour lesquelles $f(x) \leq 0$%
\end{enumerate}%
'''
    mainC = r'''\cor{Tableau de Signes}%
\begin{enumerate}%
\item La valeur de $x$ pour laquelle $f(x) = 0$ est \{-b/a}.\\%
Le coefficient devant $x$ est \{posNegM}, donc la fonction sera \{posNeg} après \{-b/a}
et \{negPos} avant.\\
On a donc le tableau de signes suivant :\\%
'''
    mainC += tableauSigneAffine(a, b)
    if a > 0:
        mainC += r'''\item On peut en déduire que $f(x) \leq 0$ pour $x\in\interval[open  left]{-\infty}{\{-b/a}}$%
'''
    else:
        mainC += r'''\item On peut en déduire que $f(x) \leq 0$ pour $x\in\interval[open right]{\{-b/a}}{+\infty}$
'''
    mainC += r'''\end{enumerate}%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #21
0
def puissance3(fileExercices, fileCorrections):
    """Calcul de division de puissances de 10."""
    
    a = random.randint(-30, 30)
    b = random.randint(-30, 30)
    aMb = a - b
    bText = str(b)
    if b < 0:
        bText = '(' + str(b) + r')'
    
    main = r'''\exo{Puissances}%
Faites le calcul suivant (le résultat doit être sous forme d'une puissance de 10).\\
\begin{center}%
$\dfrac{10^{\{a}}}{10^{\{b}}}=$\\%
\end{center}%
'''
    mainC = r'''\cor{Puissances}%
\begin{center}%
$\dfrac{10^{\{a}}}{10^{\{b}}}= 10^{\{a} - \{bText}} = 10^{\{aMb}}$
\end{center}%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #22
0
def pythagore2(fileExercices, fileCorrections):
    """Calculer la longueur de l'hypoténuse en connaissant les deux autres longueurs."""
    
    a = random.randint(1, 15)
    b = random.randint(1, 15)
    ac = a**2
    bc = b**2
    sumSq = ac + bc
    sqSum = sqrt(sumSq)
    ro = round(sqSum, 2)

    main = r'''\exo{Théorème de Pythagore}%
\begin{minipage}{0.6\textwidth}%
ABC est le triangle ci-contre.\\%
AB = \{a} cm.\\%
AC = \{b} cm.\\%
Combien mesure BC ?%
\end{minipage}%
\begin{minipage}{0.3\textwidth}%
\includegraphics[width = \textwidth]{imagesQuatrieme/triangle_rectangle1.png}%
\end{minipage}%
'''

    mainC = r'''\cor{Théorème de Pythagore}%
ABC est un triangle rectangle en A.\\%
Donc, d'après le théorème de Pythagore :\\%
BC$^2$ = AB$^2$ + AC$^2$\\%
BC$^2$ = \{ac} + \{bc}\\%
BC$^2$ = \{sumSq}\\%
BC = $\sqrt{\{sumSq}}$ cm\\%
'''
    if sumSq == ro:
        mainC += r'''BC = \{sqSum} cm\\%
'''
    else:
        mainC += r'''BC $\simeq$ \{sqSum} cm\\%
'''
    localV = locals()
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, localV)
コード例 #23
0
def pythagore3(fileExercices, fileCorrections):
    """En connaissant la longueur de l'hypoténuse et d'un autre côté, trouver la longueur du troisième côté."""
    
    a = random.randint(1, 10)
    b = random.randint(a + 1, 15)
    ac = a**2
    bc = b**2
    di = bc - ac
    sqDi = sqrt(di)
    ro = round(sqDi, 2)

    main = r'''\exo{Théorème de Pythagore}%
\begin{minipage}{0.6\textwidth}%
ABC est le triangle ci-contre.\\%
AB = \{a} cm\\%
BC = \{b} cm.\\%
Combien mesure AC ?\\%
\end{minipage}%
\begin{minipage}{0.3\textwidth}%
\includegraphics[width = \textwidth]{imagesQuatrieme/triangle_rectangle1.png}%
\end{minipage}%
'''

    mainC = r'''\cor{Théorème de Pythagore}%
ABC est un triangle rectangle en A.\\%
Donc, d'après le théorème de Pythagore :\\%
BC$^2$ = AB$^2$ + AC$^2$\\%
\{bc} = \{ac} + AC$^2$\\%
AC$^2$ = \{bc} - \{ac}\\%
AC$^2$ = \{di}\\%
AC = $\sqrt{\{di}}$ cm\\%
'''
    if sqDi == ro:
        mainC += r'''AC = \{di} cm
'''
    else:
        mainC += r'''AC $\simeq$ \{ro} cm\\%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #24
0
def tempEtoile(fileExercices, fileCorrections):
    etoile = random.choice([
        'Sirius', 'Achernar', 'Rigal', ' Mira', 'Crucis', 'Altair',
        'Beltelgeux', 'Vega', 'Antares', 'R. Hydrae', 'Canopus', 'Arcturus'
    ])
    main = r'''
\titledquestion{Température d'une étoile : }
Dans les documents ci-après, les sept premiers graphiques donnent l'émission énergétique émise en fonction de la longueur d'onde (en \si{\nm}) pour des corps noirs à différentes températures. Le huitième graphique représente l'irradiance spectrale en fonction de la longueur d'onde (en \si{\um}) de différentes étoiles.\\
\textbf{\underline{DONNEE} :} 1 \si{\um} = 1 000 \si{\nm}

\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/4k5k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/1k14k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/3k4k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/6k10k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/11k15k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/5k6k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/2k3k.pdf}\\
\includegraphics[width=\textwidth]{enseignementScientifique1ere/LeSoleil/plankLaw/Stars.png}\\

\begin{parts}
\part[5] À partir des documents, donner la température de l'étoile \{etoile}. Vous ferez cela en justifiant toutes les étapes de votre raisonnement et en traçant tout ce qui est nécessaire sur les graphiques.\\
\begin{solutionordottedlines}[5cm]
À partir du huitième graphique, on remarque que la longueur d'onde correspondant au maximum d'intensité, $\lambda_{max}$, est d'environ $1,5~\si{\um}$, soit $\lambda_{max} \simeq 1 500~\si{\nm}$.\\
En se basant sur le cinquième graphique, on remarque que cela correspond à un corps à une température d'environ 2000~\si{\kelvin}.
\end{solutionordottedlines}

\part[5] En utilisant la loi de Wien, calculer la température de l'étoile \{etoile}. Comparez ces deux valeurs. \\
\textbf{Rappel :} $\lambda_{max} = \dfrac{k}{T}$ avec $k = 2,898 \times 10^{-3}~\si{\meter \kelvin}$.\\
\begin{solutionordottedlines}[4cm]
On sait que $\lambda_{max} \simeq 1 500~\si{\nm}$ et, d'après la loi de Wien $k = \lambda_{max} \times T$ que l'on peut aussi écrire $T = \dfrac{k}{\lambda_{max}} \simeq \dfrac{2,898 \times 10^{-3}~\si{\meter \kelvin}}{1 500~\si{\nm}} \simeq \dfrac{2,898 \times 10^{-3}~\si{\meter \kelvin}}{1 500 \times 10^{-9}~\si{\meter}} \simeq 2415~\si{\kelvin}$. On a une valeur proche de ce que l'on a trouvé grâce au graphique.
\end{solutionordottedlines}
\end{parts}
'''
    mainC = '''
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #25
0
def circuitSerieDerivation(fileExercices, fileCorrections):
    """Exo sur la construction d'un circuit en série puis en dérivation avec les mêmes composants."""
    composants = [("une DEL (à placer en sens passant)", "la DEL"), ("une lampe", "la lampe"),
                  ("un moteur", "le moteur")]
    composants1 = random.choice(composants)
    composant1 = composants1[0]
    comp1 = composants1[1]
    composants.remove(composants1)
    composants2 = random.choice(composants)
    composant2 = composants2[0]
    comp2 = composants2[1]
    composants.remove(composants2)
    composants3 = random.choice(composants)
    composant3 = composants3[0]
    comp3 = composants3[1]

    main = r'''\titledquestion{Circuit série : }
Vous disposez d'un nombre illimité de fils de connexion, d'une pile, d'\{composant1} et d'\{composant2} :\\

\tabComp{D4}

\begin{parts}
\part Faites un schéma (en utilisant une règle et un crayon à papier) d'un circuit en série comportant tous 
les dipôles à votre disposition.
\begin{solutionorbox}[5cm]
\end{solutionorbox}

\part Que se passe-t-il pour \{comp2} si \{comp1} cesse de fonctionner ?
\begin{solutionordottedlines}[2cm]
Le circuit étant un circuit série, les autres dipôles cessent de fonctionner. 
\end{solutionordottedlines}

\part Que se passerait-il pour \{comp1} et \{comp2} si on permutait les bornes du générateur ?
\begin{solutionordottedlines}[4cm]
\end{solutionordottedlines}
\end{parts}

\titledquestion{Circuit parallèle : }
Vous disposez d'un nombre illimité de fils de connexion, d'une pile, d'\{composant1}, d'\{composant2} et 
d'\{composant3}.

\tabComp{D4}

\begin{parts}
\part Faites un schéma (en utilisant une règle et un crayon à papier) d'un circuit en dérivation comportant tous 
les dipôles à votre disposition dans deux boucles. Les indications suivantes doivent être respectées :
\begin{itemize}
\item On veut avoir \{comp1} et \{comp2} branchés en série.
\item On veut avoir \{comp3} et \{comp1} branchés en dérivation.
\item L'interrupteur doit contrôler seulement \{comp3}.
\end{itemize}
\begin{solutionorbox}[5cm]
\end{solutionorbox}

\part Que se passe-t-il pour \{comp2} et \{comp3} si \{comp1} cesse de fonctionner ?
\begin{solutionordottedlines}[2cm]
On a \{comp1} et \{comp2} branchés en série donc \{comp2} cesse de fonctionner. On a
 \{comp3} et \{comp1} branchés en dérivation donc \{comp3} ccontinue de fonctionner.
\end{solutionordottedlines}

\part Que se passerait-il pour \{comp1}, \{comp3} et \{comp2} si on permutait les bornes du générateur ?
\begin{solutionordottedlines}[4cm]
\end{solutionordottedlines}

\end{parts}
\medskip
\medskip
\medskip

\tabComp{D1}
'''
    mainC = '''
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #26
0
def fonctionsHomographiqueTrace(fileExercices, fileCorrections):
    """Tracé d'une fonction homographique."""

    a, b, c, d = 0, 0, 0, 0

    while a * d - b * c == 0 or round(d / c, 3) != d / c or round(a / c,
                                                                  3) != a / c:
        a1 = random.randint(2, 6)
        a2 = random.randint(-6, -2)
        a = np.random.choice([a1, a2])
        b1 = random.randint(1, 6)
        b2 = random.randint(-6, -1)
        b = np.random.choice([b1, b2])
        c1 = random.randint(2, 6)
        c2 = random.randint(-6, -2)
        c = np.random.choice([c1, c2])
        d1 = random.randint(1, 6)
        d2 = random.randint(-6, -1)
        d = np.random.choice([d1, d2])

    main = r'''\exo{Tracé d'une fonction homographique}%
Soit $f$ la fonction définie sur $\R$ par $f(x) = \dfrac{\{a}x \{signE(b)}}{\{c}x \{signE(d)}}$.
\medskip%
\begin{enumerate}%
\item Justifier que $f$ est une fonction homographique.%
\item Quel est l'ensemble de définition de $f$ ?%
\item Tracer la courbe représentative de $f$ dans le plan muni d'un repère.%
\end{enumerate}%
'''
    mainC = r'''\cor{Tracé d'une fonction homographique}
\medskip%
\begin{enumerate}%
\item $f(x) = \dfrac{\{a}x \{signE(b)}}{\{c}x \{signE(d)}}$.
La fonction $f$ est une fonction du type $f(x) = \dfrac{a x + b}{c x + d}$ avec a = \{a}, b = \{b}, c = \{c} et
d = \{d} et $ad - bc = \{a*d - b*c} \neq 0$ donc $f$ est bien une fonction homographique.%
\item La fonction n'est pas définie lorsque le dénominateur s'annule car il est interdit de diviser par 0.\\
Or, $\{c} x \{signE(d)} = 0 => x = \{-d/c}$. $f$ est donc définie sur $\R \setminus \lbrace{\{-d/c}}\rbrace$.
\item $f$ est donc définie sur $\R \setminus \lbrace{\{-d/c}}\rbrace$, on sait donc que la fonction aura pour
tangente verticale la droite d'équation $x = \{-d/c}$.\\
Pour des valeurs "très grandes" ou "très petites" de $x$, les coefficients "b" et "d" n'auront pas d'impact
sur la valeur de la fonction et celle-ci tendra vers une valeur constante, $\dfrac{a}{c} = \dfrac{\{a}}{\{c}} = \{a/c}$.\\
La fonction aura donc pour tangente horizontale la droite d'équation $y = \{a/c}$.\\
'''
    if a * d - b * c > 0:
        mainC += r'''Comme $ad - bc = \{a*d - b*c} > 0$, la fonction est croissante.\\
'''
    else:
        mainC += r'''Comme $ad - bc = \{a*d - b*c} < 0$, la fonction est décroissante.\\
'''
    mainC += r'''La fonction $f$ peut donc être représentée par la courbe suivante :
\end{enumerate}
'''
    ymin = int(a / c) - 6
    ymax = int(a / c) + 6
    xmin = int(-d / c) - 6
    xmax = int(-d / c) + 6
    mainC = fonctionsSimplifiantes.repereDebut(mainC, xmin, ymin, xmax, ymax)
    mainC += r'''\addplot[color=red,domain=\{-10}:\{10}, samples=300]{(\{a}*x \{signE(b)})/(\{c}*x \{signE(d)})};
\addplot[dashed, color=blue,domain=\{-10}:\{10}] coordinates {(\{-d/c}, \{ymin})(\{-d/c}, \{ymax})};
\addplot[dashed, color=blue,domain=\{-10}:\{10}, samples=300]{\{a/c}};
'''
    mainC = fonctionsSimplifiantes.repereFin(mainC)
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #27
0
def fonctionsSecondDegreTrace(fileExercices, fileCorrections):
    """Tracé d'une fonction du second degré en utilisant les formes canoniques, factorisées et développées."""

    a, al, beSa = 0, 0, 0

    while -2 * a * al == 0 or a * beSa + a * al**2 == 0 or abs(a * beSa) > 30:
        a1 = random.randint(2, 6)
        a2 = random.randint(-6, -2)
        a = np.random.choice([a1, a2])
        b1 = random.randint(1, 6)
        b2 = random.randint(-6, -1)
        al = np.random.choice([b1, b2])
        beSa = np.random.choice([-1, -4, -9, -16, -25, -36])

    sBeSa = int(sqrt(-beSa))
    be = int(a * beSa)
    b = int(-2 * a * al)
    c = int(be + a * al**2)
    de = int(al + sqrt(-beSa))
    ga = int(al - sqrt(-beSa))

    xmin = -10
    ymin = -10
    xmax = 10
    ymax = 10

    signB, signC = ' + ', ' + '
    absB, absC = b, c
    if b < 0:
        signB = r' - '
        absB = abs(b)
    if c < 0:
        signC = r' - '
        absC = abs(c)
    signBe = ' + '
    signMAl, signAl = ' - ', ' + ',
    signMDe, signDe = ' - ', ' + ',
    signMGa, signGa = ' - ', ' + ',
    absAl, absBe, absDe, absGa = al, be, de, ga
    if al < 0:
        signAl = r' - '
        signMAl = r' + '
        absAl = abs(al)
    if de < 0:
        signDe = r' - '
        signMDe = r' + '
        absDe = abs(de)
    if ga < 0:
        signGa = r' - '
        signMGa = r' + '
        absGa = abs(ga)
    if be < 0:
        signBe = r' - '
        absBe = abs(be)

    main = r'''\exo{Tracé d'une fonction de degré 2}%
Soit $f$ la fonction définie sur $\R$ par $f(x) = \{a}x^2 \{signB} \{absB}x \{signC} \{absC}$.
\medskip%
\begin{enumerate}%
\item Tracer la courbe représentative de $f$ dans le plan muni d'un repère.%
\end{enumerate}%
'''
    mainC = r'''\cor{Tracé d'une fonction de degré 2}
\medskip%
\begin{enumerate}%
\item $f(x) = \{a}x^2 \{signE(b)}x \{signE(c)}$.\\
On factorise par \{a} : $f(x) = \{a}[x^2 \{signE(b/a)} x \{signE(c/a)}]$\\
'''
    if b / a > 0:
        mainC += r'''On remarque que $\{int(b/a)} = 2 \times \{int(b/(2*a))}$.
'''
    else:
        mainC += r'''On remarque que $\{int(b/a)} = 2 \times (\{int(b/(2*a))})$.
'''
    mainC += r'''Donc $x^2 \{signE(b/a)} x \{signE(c/a)}$ est une expression proche de $(x \{signOpE(al)})^2$.\\
En développant, on remarque que $(x \{signOpE(al)})^2 = x^2 \{signOpE(2*al)}x \{signE(al**2)}$.\\
Donc $(x \{signOpE(al)})^2 \{signE(c/a - al**2)} = x^2 \{signE(b/a)} x \{signE(c/a)}$.\\
Ainsi, $f(x) = \{a}[(x \{signOpE(al)})^2 \{signE(c/a - al**2)}] = \{a}(x \{signMAl} \{absAl})^2 \{signBe} \{absBe}$.\\
'''
    if al > 0:
        mainC += r'''La forme canonique de $f(x)$ est donc $f(x) = \{a}(x \{signMAl} \textcolor{red}{\{absAl}})^2
\textcolor{red}{\{signBe} \{absBe}}$.\\'''
    else:
        mainC += r'''La forme canonique de $f(x)$ est donc $f(x) = \{a}(x \{signMAl} \{absAl})^2 \{signBe} \{absBe} =
\{a}(x - (\textcolor{red}{- \{absAl}}))^2 \textcolor{red}{\{signBe} \{absBe}}$.\\
'''
    mainC += r'''Le sommet de la parabole est donc le point S(\textcolor{red}{\{al}}; \textcolor{red}{\{be}}).\\

On remarque que $\{-beSa} = \{sBeSa}^2$, on peut donc utiliser l'identité remarquable $a^2 - b^2 = (a-b)(a+b)$.\\
Soit, $f(x) = \{a}[(x \{signOpE(al)})^2 \{signE(beSa)}] = \{a}[(x \{signOpE(al)})^2 - \{sBeSa}^2] =
\{a}(x \{signOpE(al)} \{signOpE(sBeSa)})(x \{signOpE(al)} \{signE(sBeSa)}) =
\{a}(x \{signOpE(al+sBeSa)})(x \{signOpE(al-sBeSa)})$.\\
La forme factorisée de f(x) est donc $f(x) = \{a}(x \{signMDe} \{absDe})(x \{signMGa} \{absGa})$.\\
La fonction f \textcolor{red}{s'annule} donc en $x = \textcolor{blue}{\{de}}$ et en $x = \textcolor{blue}{\{ga}}$.\\
La parabole passe donc par les points A(\textcolor{blue}{\{de}}; \textcolor{red}{0})
 et B(\textcolor{blue}{\{ga}}; \textcolor{red}{0}).\\
'''
    if a > 0:
        mainC += r'''Comme $\{a}>0$, la parabole est "contente", elle sera décroissante puis croissante.\\
'''
    else:
        mainC += r'''Comme $\{a}<0$, la parabole est "triste", elle sera croissante puis décroissante.\\
'''
    mainC += r'''La fonction f peut donc être représentée par la courbe suivante :
\end{enumerate}
'''
    mi = min(de, ga)
    ma = max(de, ga)
    if a < 0:
        mainC = fonctionsSimplifiantes.repereDebut(mainC, min(mi - 2, -10),
                                                   -10, max(ma + 2, 10),
                                                   max(be + 2, 10))
    else:
        mainC = fonctionsSimplifiantes.repereDebut(mainC, min(mi - 2, -10),
                                                   min(be - 2, -10),
                                                   max(ma + 2, 10), 10)
    # mainC = fonctionsSimplifiantes.repereDebut(mainC, xmin, ymin, xmax, ymax)
    mainC += r'''\addplot[color=red,domain=\{mi - 2}:\{ma + 2}, samples=300]{\{a}*x*x \{signE(b)}*x \{signE(c)}};
\node[blue, cross=3pt] at (\{de}, 0) {};\\
\node[blue, cross=3pt] at (\{ga}, 0) {};\\
\node[blue, cross=3pt] at (\{al}, \{be}) {};\\
\node[text=blue, right] at (\{de}, 0) {A};\\
\node[text=blue, right] at (\{ga}, 0) {B};\\
\node[text=blue, right] at (\{al}, \{be}) {S};\\
'''
    mainC = fonctionsSimplifiantes.repereFin(mainC)
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())
コード例 #28
0
def pileOuFace(fileExercices, fileCorrections):
    """Exercice type de statistique/probabilité"""

    elPerLign = 10
    n = random.randint(20, 50)
    nLign = (n - 1) // elPerLign + 1
    listePrenoms = ['Paul', 'Pierre', 'Marie', 'Margot', 'Fanny',
                    'Jean', 'Julie', 'Adrien', 'Thomas', 'Suzanne', 'Philippe']
    nomA = np.random.choice(listePrenoms)
    listePrenoms.remove(nomA)
    nomB = np.random.choice(listePrenoms)
    fP = 0
    nP = 0
    nF = 0
    compteur = 0

    main = r'''\exo{Pile ou Face ?}%
Deux amis, \{nomA} et \{nomB} jouent à "Pile ou Face". Ils ont effectué les \{n} lancers suivants :\\%
\begin{center}
\begin{tabular}{|*{\{elPerLign}}{c|}}
'''
    for i in range(nLign):
        main += r'''\hline
'''
        for j in range(i*elPerLign, min((i+1)*elPerLign, n)):
            pOf = np.random.choice([r'pile', r'face'])
            if pOf == 'pile':
                nP += 1
            else:
                nF += 1
            if (j+1) % elPerLign == 0:
                pOf += r'''\\%
'''
            else:
                pOf += r'&'
            main += pOf
        fP = nP/n   # Fréquence d'apparition des piles
        fF = nF/n   # Fréquence d'apparition des faces
        pP = n/2
    if (j + 1) % elPerLign != 0:
        for j in range((elPerLign - 1) - (n % elPerLign)):
            main += r'&'
        main += r'''\\
'''
    main += r'''
\hline%
'''
    main += r'''\end{tabular}
\end{center}
\{nomA} affirme que le fréquence statistique d'apparition des piles est plus importantes que la probabilité 
théorique. Est-ce vrai ?
'''
    eq = '='
    if fP != round(fP, 3):
        fP = round(fP, 3)
        eq = '\simeq'
    mainC = r'''\cor{Pile ou Face ?}%
\{nomA} a effectué \{n} lancés. Comme pour chaque lancé il y a une chance sur deux que ce soit un pile, le 
nombre de piles théorique est de 0.5. Cependant, la fréquence statististique d'apparition est  
de $\dfrac{\{nP}}{\{n}} \{eq} \{fP}$.\\
'''
    if fP > 0.5:
        mainC += r'''$\{fP} > 0.5$, on a donc bien une fréquence statistique supérieure à la probabilité théorique.\\
\{nomA} a bien raison.
'''
    else:
        mainC += r'''$\{fP} \leq 0.5$, on a donc une fréquence statistique inférieure ou égale à la probabilité théorique.\\
\{nomA} a tord.
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #29
0
def statsClasse(fileExercices, fileCorrections):
    """Exercice type de statistique/probabilité en comparant 2 classes"""

    elPerLign = 10
    n = random.randint(20, 30)
    nLign = (n - 1) // elPerLign + 1
    fP = 0
    nP = 0
    nF = 0
    compteur = 0

    main = r'''\exo{Homogénéité des classes.}%
Deux classes, A et B, composées chacune de \{n} élèves ont effectué un devoir de Mathématiques. Les notes obtenues 
sont les suivantes.\\%

\begin{minipage}{0.45\textwidth}
\begin{center}
Classe A :\\
\medskip
\begin{tabular}{|*{\{elPerLign}}{c|}}
'''
    notes1 = []
    for i in range(nLign):
        main += r'''\hline
'''
        for j in range(i*elPerLign, min((i+1)*elPerLign, n)):
            note = random.randint(0, 10)
            notes1.append(note)
            note = str(note)
            if (j+1) % elPerLign == 0:
                note += r'''\\%
'''
            else:
                note += r'&'
            main += note
        moyenne1 = np.mean(notes1)   # Fréquence d'apparition des piles
        mediane1 = np.median(notes1)   # Fréquence d'apparition des faces
        etendue1 = np.max(notes1) - np.min(notes1)
    if (j + 1) % elPerLign != 0:
        for j in range((elPerLign - 1) - (n % elPerLign)):
            main += r'&'
        main += r'''\\
'''
    main += r'''
\hline%
'''
    main += r'''\end{tabular}
\end{center}
\end{minipage}%
\begin{minipage}{0.45\textwidth}
\begin{center}
Classe B :\\
\medskip
\begin{tabular}{|*{\{elPerLign}}{c|}}
'''
    notes2 = []
    for i in range(nLign):
        main += r'''\hline
'''
        for j in range(i*elPerLign, min((i+1)*elPerLign, n)):
            note = random.randint(0, 10)
            notes2.append(note)
            note = str(note)
            if (j+1) % elPerLign == 0:
                note += r'''\\%
'''
            else:
                note += r'&'
            main += note
        moyenne2 = np.mean(notes2)   # Fréquence d'apparition des piles
        mediane2 = np.median(notes2)   # Fréquence d'apparition des faces
        etendue2 = np.max(notes2) - np.min(notes2)
    if (j + 1) % elPerLign != 0:
        for j in range((elPerLign - 1) - (n % elPerLign)):
            main += r'&'
        main += r'''\\
'''
    main += r'''
\hline%
'''
    main += r'''\end{tabular}
\end{center}
\end{minipage}%
\medskip
\begin{enumerate}
\item Calculer la moyenne, médiane et étendue de la classe A.
\item Calculer la moyenne, médiane et étendue de la classe B.
\item Comparez, si possible, les classes A et B.
\end{enumerate}
'''
    moy1, med1, et1, moy2, med2, et2 = moyenne1, mediane1, etendue1, moyenne2, mediane2, etendue2
    if moy1 == round(moy1, 3):
        moy1 = ' = ' + str(moy1)
    else:
        moy1 = ' \simeq ' + str(round(moy1, 3))
    if moy2 == round(moy2, 3):
        moy2 = ' = ' + str(moy2)
    else:
        moy2 = ' \simeq ' + str(round(moy2, 3))
    if med1 == round(med1, 3):
        med1 = ' = ' + str(med1)
    else:
        med1 = ' \simeq ' + str(round(med1, 3))
    if med2 == round(med2, 3):
        med2 = ' = ' + str(med2)
    else:
        med2 = ' \simeq ' + str(round(med2, 3))
    if et1 == round(et1, 3):
        et1 = ' = ' + str(et1)
    else:
        et1 = ' \simeq ' + str(round(et1, 3))
    if et2 == round(et2, 3):
        et2 = ' = ' + str(et2)
    else:
        et2 = ' \simeq ' + str(round(et2, 3))
    moyenne1, moyenne2 = round(moyenne1, 3), round(moyenne2, 3)
    mediane1, mediane2 = round(mediane1, 3), round(mediane2, 3)
    etendue1, etendue2 = round(etendue1, 3), round(etendue2, 3)

    mainC = r'''\cor{Homogénéité des classes.}%
\begin{enumerate}
\item Pour la classe A, la moyenne vaut $m_A \{moy1}$, la médiane $med_A \{med1}$ et l'étendue $E_A \{et1}$.\\ 
L'écart entre la moyenne et la médiane est \{abs(round(moyenne1 - mediane1, 3))}.
\item Pour la classe B, la moyenne vaut $m_B \{moy2}$, la médiane $med_B \{med2}$ et l'étendue $E_B \{et2}$.\\
L'écart entre la moyenne et la médiane est \{abs(round(moyenne2 - mediane2, 3))}.
'''
    if abs(moyenne1 - mediane1) < abs(moyenne2 - mediane2):
        if etendue1 < etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est inférieur à celui de la classe B et 
l'étendue de la classe A est inférieure à celle de la classe B donc la classe A est plus homogène que la classe B.
'''
        elif etendue1 > etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est inférieur à celui de la classe B mais 
l'étendue de la classe A est supérieure à celle de la classe B donc on ne peut pas comparer les classes.
'''
        else:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est inférieur à celui de la classe B et 
l'étendue de la classe A est égale à celle de la classe B donc la classe A est plus homogène que la B.
'''
    elif abs(moyenne1 - mediane1) > abs(moyenne2 - mediane2):
        if etendue1 > etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est supérieur à celui de la classe B et 
l'étendue de la classe A est supérieure à celle de la classe B donc la classe A est moins homogène que 
la classe B.
'''
        elif etendue1 < etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est supérieur à celui de la classe B mais 
l'étendue de la classe A est inférieure à celle de la classe B donc on ne peut pas comparer les classes.
'''
        else:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est supérieur à celui de la classe B et 
l'étendue de la classe A est égale à celle de la classe B donc la classe B est plus homogène que la A.
'''
    else :
        if etendue1 > etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est égal à celui de la classe B et 
l'étendue de la classe A est supérieure à celle de la classe B donc la classe A est moins homogène que 
la classe B.
'''
        elif etendue1 < etendue2:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est égal à celui de la classe B mais 
l'étendue de la classe A est inférieure à celle de la classe B donc la classe A est plus homogène 
que la classe B.
'''
        else:
            mainC += r'''\item L'écart moyenne/médiane de la classe A est égal à celui de la classe B et 
l'étendue de la classe A est égale à celle de la classe B donc les classes ne sont pas comparables.
'''
    mainC += r'''
\end{enumerate}
'''

    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices, fileCorrections, locals())
コード例 #30
0
def tableauDeSigneDeux4(fileExercices, fileCorrections):
    """Tableau de signe pour une expression du second degré
    produit de deux expressions du premier degré). f(x)>0"""

    VAnnul1 = 1 / 3
    VAnnul2 = 1 / 3
    a, b, c, d = 0, 0, 0, 0
    signB, signD = ' - ', ' - '
    while VAnnul1 != round(VAnnul1, 3) or VAnnul2 != round(VAnnul2, 3):
        a1 = random.randint(2, 6)
        a2 = random.randint(-6, -2)
        a = np.random.choice([a1, a2])
        b1 = random.randint(1, 6)
        b2 = random.randint(-6, -1)
        b = np.random.choice([b1, b2])
        VAnnul1 = -b / a
        c1 = random.randint(2, 6)
        c2 = random.randint(-6, -2)
        c = np.random.choice([c1, c2])
        d1 = random.randint(1, 6)
        d2 = random.randint(-6, -1)
        d = np.random.choice([d1, d2])
        VAnnul2 = -d / c
    if b > 0:
        signB = ' + '
    if d > 0:
        signD = ' + '

    absB = abs(b)
    absD = abs(d)

    posNegA = 'négative'
    negPosA = 'positive'
    posNegMA = 'négatif'
    if a > 0:
        posNegA = 'positive'
        negPosA = 'négative'
        posNegMA = 'positif'

    posNegC = 'négative'
    negPosC = 'positive'
    posNegMC = 'négatif'
    if c > 0:
        posNegC = 'positive'
        negPosC = 'négative'
        posNegMC = 'positif'

    if a > 0:
        signA = ' + '
        signMA = ' - '
    else:
        signA = ' - '
        signMA = ' + '
    if c > 0:
        signC = ' + '
        signMC = ' - '
    else:
        signC = ' - '
        signMC = ' + '
    if signA == signC:
        signFD = ' + '
        signFM = ' - '
    else:
        signFD = ' - '
        signFM = ' + '

    main = r'''\exo{Tableau de Signes}%
\begin{enumerate}%
\item Tracez le tableau de signes de la fonction $f$ définie par : $f(x) = (\{a}x \{signB} \{absB})(\{c} x \{signD}
\{absD})$%
\item En déduire les valeurs pour lesquelles $f(x) > 0$%
\end{enumerate}%
'''
    mainC = r'''\cor{Tableau de Signes}%
\begin{enumerate}%
\item La valeur de $x$ pour laquelle $\{a} x \{signB} \{absB} = 0$ est \{VAnnul1}.\\%
Le coefficient devant $x$ est \{posNegMA}, donc $\{a} x \{signB} \{absB}$ sera \{posNegA} après \{VAnnul1}
et \{negPosA} avant.\\%

La valeur de $x$ pour laquelle $\{c} x \{signD} \{absD} = 0$ est \{VAnnul2}.\\%
Le coefficient devant $x$ est \{posNegMC}, donc $\{c} x \{signD} \{absD}$ sera \{posNegC} après \{VAnnul2}
et \{negPosC} avant.\\%

On a donc le tableau de signes suivant :\\%
\begin{center}%
\begin{tikzpicture}%
'''
    if VAnnul1 < VAnnul2:
        mainC += r'''\tkzTabInit{$x$ / 1 , $\{a} x \{signB} \{absB}$ /1,
$\{c} x \{signD} \{absD}$ /1, $f(x)$ / 1}{$-\infty$, $\{VAnnul1}$, $\{VAnnul2}$, $+\infty$}%
\tkzTabLine{, \{signMA}, z, \{signA}, t,\{signA}}%
\tkzTabLine{, \{signMC}, t, \{signMC}, z,\{signC}}%
\tkzTabLine{, \{signFD}, z, \{signFM}, z,\{signFD}}%
\end{tikzpicture}%
\end{center}%
'''
        if a * c > 0:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour
$x\in\interval[open]{-\infty}{\{VAnnul1}} \cup \interval[open]{\{VAnnul2}}{+\infty}$%
'''
        else:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour
$x\in\interval[open]{\{VAnnul1}}{\{VAnnul2}}$%
'''
    elif VAnnul2 < VAnnul1:
        mainC += r'''\tkzTabInit{$x$ / 1 , $\{a} x \{signB} \{absB}$ /1,
$\{c} x \{signD} \{absD}$ /1, $f(x)$ / 1}{$-\infty$, $\{VAnnul2}$, $\{VAnnul1}$, $+\infty$}%
\tkzTabLine{, \{signMA}, t, \{signMA}, z,\{signA}}%
\tkzTabLine{, \{signMC}, z, \{signC}, t,\{signC}}%
\tkzTabLine{, \{signFD}, z, \{signFM}, z,\{signFD}}%
\end{tikzpicture}%
\end{center}%
'''
        if a * c > 0:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour
$x\in\interval[open]{-\infty}{\{VAnnul2}} \cup \interval[open]{\{VAnnul1}}{+\infty}$%
'''
        else:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour $x\in\interval[open]{\{VAnnul1}}{\{VAnnul2}}$%
'''

    else:
        mainC += r'''\tkzTabInit{$x$ / 1 , $\{a}x\{signB}\{absB}$ /1,
$\{c}x\{signD}\{absD}$ /1, $f(x)$ / 1}{$-\infty$, $\{VAnnul1}$, $+\infty$}%
\tkzTabLine{, \{signMA}, z,\{signA}}%
\tkzTabLine{, \{signMC}, z,\{signC}}%
\tkzTabLine{, \{signFD}, z,\{signFD}}%
\end{tikzpicture}%
\end{center}%
'''
        if a * c > 0:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour $x\neq \{VAnnul1}$%
'''
        else:
            mainC += r'''\item On peut en déduire que $f(x) > 0$ pour $x=\emptyset$%
'''
    mainC += r'''\end{enumerate}%
'''
    return fonctionsSimplifiantes.endExercice(main, mainC, fileExercices,
                                              fileCorrections, locals())